From 7f46ef3efbe0a5a740126ee45fa14d8d375d5c5d Mon Sep 17 00:00:00 2001 From: Garcia Date: Wed, 23 May 2018 13:43:00 +0200 Subject: [PATCH 01/72] Start TTCN-3 development --- docker/Dockerfile | 8 ++- etc/AtsNg112/AtsNg112.cfg | 5 +- ttcn/AtsNg112/AtsNg112_TestCases.ttcn | 67 ++++++++++++++++++- .../LibEmcom/LibNg112/LibNg112_Templates.ttcn | 3 - .../LibNg112/LibNg112_TestSystem.ttcn | 12 ---- .../LibNg112/LibNg112_TypesAndValues.ttcn | 3 - ttcn/TestCodec/TestCodec_Register.ttcn | 37 +++++++--- 7 files changed, 103 insertions(+), 32 deletions(-) delete mode 100644 ttcn/LibEmcom/LibNg112/LibNg112_Templates.ttcn delete mode 100644 ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn delete mode 100644 ttcn/LibEmcom/LibNg112/LibNg112_TypesAndValues.ttcn diff --git a/docker/Dockerfile b/docker/Dockerfile index 69120a4..8ab0c3c 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -87,10 +87,14 @@ RUN echo "docker-titan" > /etc/hostname \ && ./build_titan.bash \ && cd /home/stf549 \ && . /home/stf549/devenv.bash \ - && cd /home/stf549/dev/STF549_Ng112/scripts + && cd /home/stf549/dev/STF549_Ng112/scripts \ + && ./update_emcom_project.bash \ + && ls -ltr /home/stf549/dev/STF549_Ng112 \ + && cd /home/stf549/dev/STF549_Ng112/etsi_emcom/src/AtsNg112/objs \ + && ../bin/ng112.bash -CMD ["/bin/bash"] +CMD ["/bin/bash", "-c", "su - stf549"] # That's all Floks diff --git a/etc/AtsNg112/AtsNg112.cfg b/etc/AtsNg112/AtsNg112.cfg index 6076fb2..c97f4cc 100644 --- a/etc/AtsNg112/AtsNg112.cfg +++ b/etc/AtsNg112/AtsNg112.cfg @@ -19,8 +19,8 @@ LogEventTypes:= Yes [TESTPORT_PARAMETERS] # In this section you can specify parameters that are passed to Test Ports. -system.sipPort.params := "SIP/UDP(dst_ip=192.168.1.250,dst_port=5060,src_ip=192.168.1.253,src_port=5060)/ETH(mac_src=080027d2b658,mac_dst=90fd61e61902,eth_type=0800)/PCAP(mac_src=080027d2b658,nic=eth1,filter=and udp port 12345)" -#system.pemeaPort.params := "PEMEA/HTTP/TCP(debug=1,server=httpbin.org,port=80,use_ssl=0)" +system.SIPP.params := "SIP/UDP(dst_ip=192.168.1.250,dst_port=5060,src_ip=192.168.1.253,src_port=5060)/ETH(mac_src=080027d2b658,mac_dst=90fd61e61902,eth_type=0800)/PCAP(mac_src=080027d2b658,nic=eth1,filter=and udp port 12345)" +system.httpPort.params := "HTTP/TCP(debug=1,server=httpbin.org,port=80,use_ssl=0)" [DEFINE] # In this section you can create macro definitions, @@ -46,6 +46,7 @@ system.sipPort.params := "SIP/UDP(dst_ip=192.168.1.250,dst_port=5060,src_ip=192. [EXECUTE] # In this section you can specify what parts of your test suite you want to execute. #AtsNg112_TestCases.TC_1 +AtsNg112_TestCases.TC_2 [GROUPS] # In this section you can specify groups of hosts. These groups can be used inside the diff --git a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn index f2ba7d8..c7e3332 100644 --- a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn +++ b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn @@ -11,7 +11,16 @@ */ module AtsNg112_TestCases { - // LibCommon + // Libcommon + import from LibCommon_Time all; + import from LibCommon_VerdictControl all; + import from LibCommon_Sync all; + + // LibHttp + import from LibItsHttp_TypesAndValues all; + import from LibItsHttp_Functions all; + import from LibItsHttp_Templates all; + import from LibItsHttp_TestSystem all; // LibSip import from LibSip_Interface all; @@ -19,7 +28,9 @@ module AtsNg112_TestCases { // LibNg112 import from LibNg112_TypesAndValues all; import from LibNg112_Templates all; + import from LibNg112_Functions all; import from LibNg112_TestSystem all; + import from LibNg112_Pics all; testcase TC_1() runs on SipComponent system TestAdapter { @@ -29,4 +40,58 @@ module AtsNg112_TestCases { unmap(self:SIPP, system:SIPP); } + /** + * @desc "IUT successfully processes all mandatory HTTP headers when it receives a HTTP POST request" + * @reference + "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", + "https://tools.ietf.org/html/rfc5985" + */ + testcase TC_LIS_HTTP_POST_BV_01() runs on HttpComponent system TestAdapter { + // Local variables + var HeaderLines v_headers; + + // Test control + if ((not PICS_HTTP_POST_REQUEST) or (not PICS_LOCATION_HELD)) { + log("*** " & testcasename() & ": PICS_HTTP_POST_REQUEST and PICS_LOCATION_HELD required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_01_http_up(); + + // Test adapter configuration + + // Preamble + f_init_default_headers_list(v_headers); + httpPort.send( + m_http_request( + m_http_request_get( + PICS_LISP_URI, + v_headers + ))); + f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success); + + // Test body + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_response + ) { + tc_ac.stop; + log("*** " & testcasename() & ": PASS: Security protocol version set to 3 ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_LIS_HTTP_POST_BV_01 + } // End of module AtsNg112_TestCases diff --git a/ttcn/LibEmcom/LibNg112/LibNg112_Templates.ttcn b/ttcn/LibEmcom/LibNg112/LibNg112_Templates.ttcn deleted file mode 100644 index 6efbfe4..0000000 --- a/ttcn/LibEmcom/LibNg112/LibNg112_Templates.ttcn +++ /dev/null @@ -1,3 +0,0 @@ -module LibNg112_Templates { - -} // End of module LibNg112_Templates diff --git a/ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn b/ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn deleted file mode 100644 index a46a9af..0000000 --- a/ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn +++ /dev/null @@ -1,12 +0,0 @@ -module LibNg112_TestSystem { - - // LibCommon - - // LibSip - import from LibSip_Interface all; - - type component TestAdapter { - port SipPort SIPP; - } - -} // End of module LibNg112_TestSystem diff --git a/ttcn/LibEmcom/LibNg112/LibNg112_TypesAndValues.ttcn b/ttcn/LibEmcom/LibNg112/LibNg112_TypesAndValues.ttcn deleted file mode 100644 index 6ae23cd..0000000 --- a/ttcn/LibEmcom/LibNg112/LibNg112_TypesAndValues.ttcn +++ /dev/null @@ -1,3 +0,0 @@ -module LibNg112_TypesAndValues { - -} // End of module LibNg112_TypesAndValues diff --git a/ttcn/TestCodec/TestCodec_Register.ttcn b/ttcn/TestCodec/TestCodec_Register.ttcn index 706aa51..7173446 100644 --- a/ttcn/TestCodec/TestCodec_Register.ttcn +++ b/ttcn/TestCodec/TestCodec_Register.ttcn @@ -26,8 +26,8 @@ module TestCodec_Register { // TestCodec import from TestCodec_TestAndSystem all; - testcase register_request_1() runs on TCType system TCType { - var bitstring v_raw_message := oct2bit('4d455353414745207369703a757365723140657473692e6f7267205349502f322e300d0a43616c6c2d49443a2031373731353939344031302e3130302e342e31310d0a436f6e74656e742d4c656e6774683a20300d0a437365713a2032303130204d4553534147450d0a46726f6d3a203c7369703a494d533155454074657374657473692e6f72673a353036303e3b7461673d36373638373036300d0a4d61782d466f7277617264733a2037300d0a502d4368617267696e672d46756e6374696f6e2d4164647265737365733a206363663d3139322e312e312e313b6563663d3139322e312e312e320d0a502d4368617267696e672d566563746f723a20696369642d76616c75653d3132336162633b696369642d67656e6572617465642d61743d3139322e312e312e31303b6f7269672d696f693d74657374657473692e6f72670d0a546f3a203c7369703a757365723140657473692e6f72673e0d0a5669613a205349502f322e302f5544502031302e3130302e342e31313a353036303b6272616e63683d7a39684734624b34333731323138300d0a0d0a'O); + testcase tc_register_request_1() runs on TCType system TCType { + var bitstring v_raw_message := oct2bit('5245474953544552207369703a657473692e6f7267205349502f322e300d0a417574686f72697a6174696f6e3a2044696765737420757365726e616d653d22757365723140657473692e6f7267222c7265616c6d3d22657473692e6f7267222c7572693d227369703a657473692e6f7267222c6e6f6e63653d22222c726573706f6e73653d22220d0a43616c6c2d49443a20343834393639354031302e3130302e342e310d0a436f6e746163743a203c7369703a75736572314031302e3130302e342e313a353036303e3b657870697265733d333630300d0a436f6e74656e742d4c656e6774683a20300d0a437365713a20313030302052454749535445520d0a46726f6d3a2022455453492054657374657222203c7369703a757365723140657473692e6f72673e3b7461673d31383930383431310d0a4d61782d466f7277617264733a2037300d0a537570706f727465643a20706174680d0a546f3a2022455453492054657374657222203c7369703a757365723140657473692e6f72673e0d0a5669613a205349502f322e302f5544502031302e3130302e342e313a353036303b6272616e63683d7a39684734624b33373539353139350d0a0d0a'O); var REGISTER_Request v_dec_msg; var integer v_result := fx_dec_REGISTER_Request (v_raw_message, v_dec_msg); @@ -36,13 +36,27 @@ module TestCodec_Register { } else { setverdict(fail, "Decode failure"); } - } // End of testcase register_request_1 + } // End of testcase tc_register_request_1 - testcase register_request_2() runs on TCType system TCType { - var REGISTER_Request v_org_msg := valueof(m_REGISTER_Dummy); - var bitstring v_enc_msg := fx_enc_REGISTER_Request (v_org_msg); + testcase tc_register_request_2() runs on TCType system TCType { var REGISTER_Request v_dec_msg; - var integer v_result := fx_dec_REGISTER_Request (v_enc_msg, v_dec_msg); + var REGISTER_Request v_org_msg := valueof( + m_REGISTER_Request_Base( + m_SipUrl_Anonymous, + -, -, + { fieldName := FROM_E, addressField := { addrSpecUnion := m_SipUrl_Anonymous }, fromParams := omit }, + { fieldName := TO_E, addressField := { addrSpecUnion := m_SipUrl_Anonymous }, toParams := omit }, + { fieldName := VIA_E, viaBody := { + { + sentProtocol := { protocolName := "abcdefghij", protocolVersion := "a", transport := "a" }, + sentBy := { host := "hostnamehost", portField:= 10 }, + viaParams := omit + } + } + } + )); + var bitstring v_enc_msg := fx_enc_REGISTER_Request (v_org_msg); + var integer v_result := fx_dec_REGISTER_Request (v_enc_msg, v_dec_msg); if (v_result == 0) { if (match(v_dec_msg, v_org_msg)) { @@ -53,6 +67,11 @@ module TestCodec_Register { } else { setverdict(fail, "Decode failure"); } - } // End of testcase register_request_2 + } // End of testcase tc_register_request_2 + + control { + execute(tc_register_request_1()); + execute(tc_register_request_2()); + } -} // End of module AtsNg112_TestCases +} // End of module TestCodec_Register -- GitLab From d4291f488159799e8d2249f1cfc5fa270d597d3a Mon Sep 17 00:00:00 2001 From: Garcia Date: Thu, 24 May 2018 07:55:14 +0200 Subject: [PATCH 02/72] Add TTCN-3 LibNg112 module --- .../LibNg112/ttcn/LibNg112_Functions.ttcn | 56 ++++ .../LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn | 18 ++ .../LibNg112/ttcn/LibNg112_Templates.ttcn | 24 ++ .../LibNg112/ttcn/LibNg112_TestSystem.ttcn | 16 ++ .../ttcn/LibNg112_TypesAndValues.ttcn | 3 + ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd | 136 ++++++++++ .../urn_ietf_params_xml_ns_geopriv_held.ttcn | 241 ++++++++++++++++++ 7 files changed, 494 insertions(+) create mode 100644 ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn create mode 100644 ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn create mode 100644 ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn create mode 100644 ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn create mode 100644 ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn create mode 100644 ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd create mode 100644 ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn new file mode 100644 index 0000000..b004fa9 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn @@ -0,0 +1,56 @@ +module LibNg112_Functions { + + // Libcommon + import from LibCommon_Time all; + import from LibCommon_VerdictControl all; + import from LibCommon_Sync all; + + // LibHttp + import from LibItsHttp_TestSystem all; + + // LibNg112 + import from LibNg112_TypesAndValues all; + import from LibNg112_TestSystem all; + + group preambles { + + function f_cf_01_http_up() runs on HttpComponent { + + // Map ports + map(self:httpPort, system:httpPort); + + // Connect + f_connect4SelfOrClientSync(); + activate(a_cf_01_http_down()); + + } // End of function f_cf_01_http_up + + /** + * @desc Default handling cf01 de-initialisation. + */ + altstep a_cf_01_http_down() runs on HttpComponent { + [] a_shutdown() { + f_cf_01_http_down(); + log("*** a_cf_01_http_down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); + stop; + } + } // End of altstep a_cf_01_http_down + + } // End of group preambles + + group postambles { + + function f_cf_01_http_down() runs on HttpComponent { + + // Unmap ports + unmap(self:httpPort, system:httpPort); + + // Disconnect ports + f_disconnect4SelfOrClientSync(); + } // End of function f_cf_01_http_down + + } // End of group postambles + + + +} // End of module LibNg112_Functions diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn new file mode 100644 index 0000000..a85c249 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn @@ -0,0 +1,18 @@ +module LibNg112_Pics { + + /** + * @desc + */ + modulepar boolean PICS_HTTP_POST_REQUEST := true; + + /** + * @desc + */ + modulepar boolean PICS_LOCATION_HELD := true; + + /** + * @desc + */ + modulepar charstring PICS_LISP_URI := "http://www.lisp.com"; + +} // End of module LibNg112_Pics diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn new file mode 100644 index 0000000..153a4fa --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn @@ -0,0 +1,24 @@ +module LibNg112_Templates { + + // RFC5985 Held + import from XSD all; + import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all + with { + extension "File:./RFC5985_held.xsd"; + } + + // LibNg112 + + group rfc5985_held { + + template LocationResponseType mw_locationResponse_dummy( + template ReturnLocationType p_locationUriSet := *, + template LocationResponseType.elem_list p_elem_list := * + ) := { + locationUriSet := p_locationUriSet, + elem_list := p_elem_list + } // End of template mw_locationResponse_dummy + + } // End of group rfc5985_held + +} // End of module LibNg112_Templates diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn new file mode 100644 index 0000000..70f855d --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn @@ -0,0 +1,16 @@ +module LibNg112_TestSystem { + + // LibCommon + + // LibHttp + import from LibItsHttp_TestSystem all; + + // LibSip + import from LibSip_Interface all; + + type component TestAdapter { + port SipPort SIPP; + port HttpPort httpPort; + } // End of component TestAdapter + +} // End of module LibNg112_TestSystem diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn new file mode 100644 index 0000000..6ae23cd --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn @@ -0,0 +1,3 @@ +module LibNg112_TypesAndValues { + +} // End of module LibNg112_TypesAndValues diff --git a/ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd b/ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd new file mode 100644 index 0000000..67ff3e5 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd @@ -0,0 +1,136 @@ + + + + + This document (RFC 5985) defines HELD messages. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn new file mode 100644 index 0000000..1ab0a90 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn @@ -0,0 +1,241 @@ +/******************************************************************************* +* Copyright (c) 2000-2018 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R4A +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: urn_ietf_params_xml_ns_geopriv_held.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Wed May 23 07:57:48 2018 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - RFC5985_held.xsd +// /* xml version = "1.0" */ +// /* targetnamespace = "urn:ietf:params:xml:ns:geopriv:held" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module urn_ietf_params_xml_ns_geopriv_held { + + +import from XSD all; + + +import from http_www_w3_org_XML_1998_namespace all; + + +const XSD.Boolean c_defaultForEmpty_1 := false; + + +/* This document (RFC 5985) defines HELD messages. */ + + +/* Return Location */ + + +type record ReturnLocationType +{ + XSD.DateTime expires, + record length(1 .. infinity) of XSD.AnyURI locationURI_list +} +with { + variant "name as uncapitalized"; + variant (expires) "attribute"; + variant (locationURI_list) "untagged"; + variant (locationURI_list[-]) "name as 'locationURI'"; +}; + + +/* responseTime Type */ + + +type union ResponseTimeType +{ + enumerated { + emergencyRouting, + emergencyDispatch + } alt_, + XSD.NonNegativeInteger alt_1 (0 .. infinity) +} +with { + variant "name as uncapitalized"; + variant "useUnion"; + variant (alt_) "name as ''"; + variant (alt_1) "name as ''"; +}; + + +/* Location Type */ + + +type union LocationTypeBase +{ + enumerated { + any_ + } alt_, + LocationTypeList alt_1 length(1 .. infinity) +} +with { + variant "name as uncapitalized"; + variant "useUnion"; + variant (alt_) "name as ''"; + variant (alt_) "text 'any_' as 'any'"; + variant (alt_1) "name as ''"; +}; + + +type record of enumerated +{ + civic, + geodetic, + locationURI +} LocationTypeList +with { + variant "name as uncapitalized"; + variant "list"; +}; + + +type record LocationTypeType +{ + XSD.Boolean exact optional, + LocationTypeBase base +} +with { + variant "name as uncapitalized"; + variant (exact) "defaultForEmpty as c_defaultForEmpty_1"; + variant (exact) "attribute"; + //variant (exact) "text 'true' as '1'"; + //variant (exact) "text 'false' as '0'"; + variant (base) "untagged"; +}; + + +/* Message Definitions */ + + +type record BaseRequestType +{ + ResponseTimeType responseTime optional, + record of XSD.String attr optional +} +with { + variant "name as uncapitalized"; + variant (responseTime) "attribute"; + variant (attr) "anyAttributes"; +}; + + +type record ErrorType +{ + XSD.Token code, + record of XSD.String attr optional, + record of ErrorMsgType message_list, + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (code) "attribute"; + variant (attr) "anyAttributes"; + variant (message_list) "untagged"; + variant (message_list[-]) "name as 'message'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:geopriv:held'"; +}; + + +type record ErrorMsgType +{ + Lang lang optional, + record of XSD.String attr optional, + XSD.Token base +} +with { + variant "name as uncapitalized"; + variant (lang) "namespace as 'http://www.w3.org/XML/1998/namespace' prefix 'xml'"; + variant (lang) "attribute"; + variant (attr) "anyAttributes"; + variant (base) "untagged"; +}; + + +type ErrorType Error +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +/* Location Response */ + + +type record LocationResponseType +{ + ReturnLocationType locationUriSet optional, + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:geopriv:held'"; +}; + + +type LocationResponseType LocationResponse +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +/* Location Request */ + + +type record LocationRequestType +{ + ResponseTimeType responseTime optional, + record of XSD.String attr optional, + LocationTypeType locationType optional, + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (responseTime) "attribute"; + variant (attr) "anyAttributes"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:geopriv:held'"; +}; + + +type LocationRequestType LocationRequest +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'urn:ietf:params:xml:ns:geopriv:held' prefix 'held'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} -- GitLab From 8d2d7d382d929092b471b64472f519b68f3d2ea0 Mon Sep 17 00:00:00 2001 From: Yann Garcia Date: Thu, 24 May 2018 07:58:55 +0200 Subject: [PATCH 03/72] Update README.md --- ttcn/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ttcn/README.md b/ttcn/README.md index 7710d17..cd7a33a 100644 --- a/ttcn/README.md +++ b/ttcn/README.md @@ -7,3 +7,4 @@ This folder will contain the TTCN-3 files. This Abstract Test Suite requires the following TTCN-3 libraries to be compiled properly: - The ETSI TTCN-3 Common Library, accessible [here](https://oldforge.etsi.org/svn/LibCommon/tags/v1.4.0/ttcn "LibSip") - The ETSI TTCN-3 SIP Library, accessible [here](https://oldforge.etsi.org/svn/LibSip/trunk "ETSI LibSip") +- The ETSI TTCN-3 HTTP Library, accessible [here](https://oldforge.etsi.org/svn/LibIts/branches/STF525/ttcn/Http "ETSI LibSip") -- GitLab From 9abe57f37369b781e3e3813d0d1a7ef4f996c2a9 Mon Sep 17 00:00:00 2001 From: Yann Garcia Date: Thu, 24 May 2018 07:59:27 +0200 Subject: [PATCH 04/72] Update README.md --- ttcn/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ttcn/README.md b/ttcn/README.md index cd7a33a..dd0d5ff 100644 --- a/ttcn/README.md +++ b/ttcn/README.md @@ -7,4 +7,4 @@ This folder will contain the TTCN-3 files. This Abstract Test Suite requires the following TTCN-3 libraries to be compiled properly: - The ETSI TTCN-3 Common Library, accessible [here](https://oldforge.etsi.org/svn/LibCommon/tags/v1.4.0/ttcn "LibSip") - The ETSI TTCN-3 SIP Library, accessible [here](https://oldforge.etsi.org/svn/LibSip/trunk "ETSI LibSip") -- The ETSI TTCN-3 HTTP Library, accessible [here](https://oldforge.etsi.org/svn/LibIts/branches/STF525/ttcn/Http "ETSI LibSip") +- The ETSI TTCN-3 HTTP Library, accessible [here](https://oldforge.etsi.org/svn/LibIts/branches/STF525/ttcn/Http "ETSI LibItsHttp") -- GitLab From b47788346872dba27f30c3ad10361d20a2660b37 Mon Sep 17 00:00:00 2001 From: Garcia Date: Fri, 25 May 2018 12:17:01 +0200 Subject: [PATCH 05/72] Add missing TTCN-3 files --- ttcn/AtsNg112/AtsNg112_TestCases.ttcn | 11 +++-- ttcn/AtsNg112/AtsNg112_TestControl.ttcn | 16 +++++++ .../LibNg112/ttcn/LibNg112_Templates.ttcn | 12 +++++ .../ttcn/LibNg112_TypesAndValues.ttcn | 13 ++++- ttcn/TestCodec/TestCodec_Invite.ttcn | 48 +++++++++++++++++++ 5 files changed, 95 insertions(+), 5 deletions(-) create mode 100644 ttcn/AtsNg112/AtsNg112_TestControl.ttcn create mode 100644 ttcn/TestCodec/TestCodec_Invite.ttcn diff --git a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn index c7e3332..7992150 100644 --- a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn +++ b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn @@ -69,16 +69,19 @@ module AtsNg112_TestCases { m_http_request( m_http_request_get( PICS_LISP_URI, - v_headers - ))); + v_headers, + m_http_message_body_xml( + )))); f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success); // Test body tc_ac.start; alt { [] httpPort.receive( - mw_http_response - ) { + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml + ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Security protocol version set to 3 ***"); f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); diff --git a/ttcn/AtsNg112/AtsNg112_TestControl.ttcn b/ttcn/AtsNg112/AtsNg112_TestControl.ttcn new file mode 100644 index 0000000..76b44d0 --- /dev/null +++ b/ttcn/AtsNg112/AtsNg112_TestControl.ttcn @@ -0,0 +1,16 @@ +module AtsNg112_TestControl { + + // LibNg112 + import from LibNg112_Pics all; + + // AtsNg112 + import from AtsNg112_TestCases all; + + // Test Execution + control { + if (PICS_HTTP_POST_REQUEST and PICS_LOCATION_HELD) { + execute(TC_LIS_HTTP_POST_BV_01()); + } + } // End of 'control' statement + +} // End of module AtsNg112_TestControl diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn index 153a4fa..2a9fe1f 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn @@ -11,6 +11,18 @@ module LibNg112_Templates { group rfc5985_held { + template (omit) LocationRequestType m_locationRequest( + template (value) LocationRequestType.elem_list p_elem_list, + template (omit) ResponseTimeType p_responseTime := omit, + template (omit) LocationRequestType.attr p_attr := omit, + template (omit) LocationTypeType p_locationType := omit + ) := { + responseTime := p_responseTime, + attr := p_attr, + locationType := p_locationType, + elem_list := p_elem_list + } // End of template m_locationRequest + template LocationResponseType mw_locationResponse_dummy( template ReturnLocationType p_locationUriSet := *, template LocationResponseType.elem_list p_elem_list := * diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn index 6ae23cd..9512e74 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn @@ -1,3 +1,14 @@ module LibNg112_TypesAndValues { - + + type set of charstring XmlNs; + + type set of charstring XmlItems; + + type record xml_item { + charstring name, + XmlNs ns, + charstring uri, + XmlItems elem_list + } // End of type xml_item + } // End of module LibNg112_TypesAndValues diff --git a/ttcn/TestCodec/TestCodec_Invite.ttcn b/ttcn/TestCodec/TestCodec_Invite.ttcn new file mode 100644 index 0000000..21fca89 --- /dev/null +++ b/ttcn/TestCodec/TestCodec_Invite.ttcn @@ -0,0 +1,48 @@ +/** + * @author ETSI / STF549 + * @version $URL:$ + * $ID:$ + * @desc This module provides the codec validation test cases. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * @see ETSI TS 103 478 + */ +module TestCodec_Invite { + + // LibCommon + + // LibSip + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + import from LibSip_EncdecDeclarations all; + + // LibNg112 + import from LibNg112_TypesAndValues all; + import from LibNg112_Templates all; + import from LibNg112_TestSystem all; + + // TestCodec + import from TestCodec_TestAndSystem all; + + testcase tc_invite_request_1() runs on TCType system TCType { + var bitstring v_raw_message := oct2bit('494e56495445207369703a757365723140657473692e6f7267205349502f322e300d0a43616c6c2d49443a2037343239323933324031302e3130302e342e31310d0a436f6e746163743a203c7369703a494d533155454031302e3130302e342e35303a353036303e0d0a436f6e74656e742d4c656e6774683a203134360d0a436f6e74656e742d547970653a206170706c69636174696f6e2f7364700d0a437365713a203230323020494e564954450d0a46726f6d3a203c7369703a494d533155454074657374657473692e6f72673a353036303e3b7461673d35303638393734350d0a4d61782d466f7277617264733a2037300d0a502d4368617267696e672d566563746f723a20696369642d76616c75653d3132336162633b696369642d67656e6572617465642d61743d3139322e312e312e31303b6f7269672d696f693d74657374657473692e6f72670d0a546f3a203c7369703a757365723140657473692e6f72673e0d0a5669613a205349502f322e302f5544502031302e3130302e342e31313a353036303b6272616e63683d7a39684734624b393236383135300d0a0d0a763d300d0a6f3d766f69636573657373696f6e203330303030203020494e204950342031302e3130302e342e35300d0a733d566f6963652053657373696f6e0d0a633d494e204950342031302e3130302e342e35300d0a623d41533a36340d0a743d3020300d0a6d3d617564696f2038353030205254502f4156502034350d0a613d7274706d61703a343520455453490d0a'O); + var INVITE_Request v_dec_msg; + var integer v_result := fx_dec_INVITE_Request (v_raw_message, v_dec_msg); + + if (v_result == 0) { + setverdict(pass, "Decode match"); + } else { + setverdict(fail, "Decode failure"); + } + } // End of testcase tc_invite_request_1 + + testcase tc_invite_request_2() runs on TCType system TCType {} // End of testcase tc_invite_request_2 + + control { + execute(tc_invite_request_1()); + execute(tc_invite_request_2()); + } + +} // End of module TestCodec_Invite -- GitLab From 60014b2ce39395f516c125c7bf011ae9ed197dfe Mon Sep 17 00:00:00 2001 From: Yann Garcia Date: Mon, 28 May 2018 13:46:46 +0200 Subject: [PATCH 06/72] Add standard & RFC links --- README.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1a0c822..cb82f53 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,19 @@ -NG112 +# NG112 + +## Introduction This repositories contains the test specifications and test adapter code. -Contact information +## Contact information Email at cti_support at etsi dot org -License +## License Unless specified otherwise, the content of this repository and the files contained are released under the ETSI Software License. See the attached LICENSE file or visit https://forge.etsi.org/etsi-software-license + +## Standard links +- Next Generation 112 Long Term Definition, accessible [here](http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf) + +## RFC links +- RFC 5985 - HELD, accessible [here](https://tools.ietf.org/html/rfc5985) +- RFC 6155 - Use of Device Identity in HTTP-Enabled Location Delivery (HELD), accessible [here](https://tools.ietf.org/html/rfc6155) -- GitLab From f7888a7c9f2581df631038d03e77a54d6fded808 Mon Sep 17 00:00:00 2001 From: Yann Garcia Date: Tue, 29 May 2018 07:26:54 +0200 Subject: [PATCH 07/72] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index cb82f53..4d7281d 100644 --- a/README.md +++ b/README.md @@ -17,3 +17,7 @@ https://forge.etsi.org/etsi-software-license ## RFC links - RFC 5985 - HELD, accessible [here](https://tools.ietf.org/html/rfc5985) - RFC 6155 - Use of Device Identity in HTTP-Enabled Location Delivery (HELD), accessible [here](https://tools.ietf.org/html/rfc6155) +- RFC 3863 - Presence Information Data Format (PIDF), accessible [here](https://tools.ietf.org/html/rfc3863) +- RFC 4119 - A Presence-based GEOPRIV Location Object Format, accessible [here](https://tools.ietf.org/html/rfc4119) + +NOTE All draft can be found in the 'IETF XML Registry', accessible [here](https://www.iana.org/assignments/xml-registry/xml-registry.xhtml) -- GitLab From 87228d7b2b6e637d89c1a33ee4a4bf84f0c334b1 Mon Sep 17 00:00:00 2001 From: Yann Garcia Date: Tue, 29 May 2018 07:30:26 +0200 Subject: [PATCH 08/72] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 4d7281d..34e4d04 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ https://forge.etsi.org/etsi-software-license - Next Generation 112 Long Term Definition, accessible [here](http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf) ## RFC links +- RFC 5222 - LoST: A Location-to-Service Translation Protocol, accessible [here](https://tools.ietf.org/html/rfc5222) - RFC 5985 - HELD, accessible [here](https://tools.ietf.org/html/rfc5985) - RFC 6155 - Use of Device Identity in HTTP-Enabled Location Delivery (HELD), accessible [here](https://tools.ietf.org/html/rfc6155) - RFC 3863 - Presence Information Data Format (PIDF), accessible [here](https://tools.ietf.org/html/rfc3863) -- GitLab From b505f2b2540798b06e050ea2f973e874fedf895c Mon Sep 17 00:00:00 2001 From: Garcia Date: Tue, 29 May 2018 08:18:45 +0200 Subject: [PATCH 09/72] Add new XSD/TTCN-3 files --- .project | 12 + docs/AtsNg112/o2.cfg | 0 docs/TestCodec/o2.cfg | 0 etc/TestCodec/TestCodec.cfg | 65 +++++ logs/STF549_ng112.yann-FSCOM-hc.log | 120 ++++++++ logs/STF549_ng112.yann-FSCOM-mtc.log | 68 +++++ representations.aird | 1 - scripts/ng112.bash | 241 ++++++++++++++++ scripts/testcodec_generate_makefile.bash | 241 ++++++++++++++++ scripts/update_emcom_project.bash | 98 +++++-- ttcn/AtsNg112/AtsNg112_TestCases.ttcn | 19 +- .../LibNg112/ttcn/LibNg112_Pixits.ttcn | 8 + .../LibNg112/ttcn/LibNg112_Templates.ttcn | 114 +++++--- ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd | 87 ++++++ .../LibNg112/xsd/RFC4119_geopriv10.xsd | 47 +++ .../xsd/RFC4119_geopriv10_basic_policy.xsd | 31 ++ .../xsd/RFC4119_geopriv10_civiloc.xsd | 47 +++ ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd | 268 +++++++++--------- .../LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd | 108 +++++++ .../urn_ietf_params_xml_ns_geopriv_held.ttcn | 5 +- ...rn_ietf_params_xml_ns_geopriv_held_id.ttcn | 242 ++++++++++++++++ .../xsd/urn_ietf_params_xml_ns_pidf.ttcn | 172 +++++++++++ ...urn_ietf_params_xml_ns_pidf_geopriv10.ttcn | 117 ++++++++ ...ams_xml_ns_pidf_geopriv10_basicPolicy.ttcn | 88 ++++++ ...params_xml_ns_pidf_geopriv10_civicLoc.ttcn | 92 ++++++ ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd | 117 ++++++++ 26 files changed, 2212 insertions(+), 196 deletions(-) create mode 100644 docs/AtsNg112/o2.cfg create mode 100644 docs/TestCodec/o2.cfg create mode 100644 etc/TestCodec/TestCodec.cfg create mode 100644 logs/STF549_ng112.yann-FSCOM-hc.log create mode 100644 logs/STF549_ng112.yann-FSCOM-mtc.log create mode 100644 scripts/ng112.bash create mode 100644 scripts/testcodec_generate_makefile.bash create mode 100644 ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn create mode 100644 ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd create mode 100644 ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd create mode 100644 ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd create mode 100644 ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd create mode 100644 ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd create mode 100644 ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn create mode 100644 ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn create mode 100644 ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn create mode 100644 ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn create mode 100644 ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn create mode 100644 ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd diff --git a/.project b/.project index d9fcf2f..fc1332f 100644 --- a/.project +++ b/.project @@ -15,4 +15,16 @@ org.eclipse.titan.designer.core.TITANNature org.eclipse.titan.log.viewer.TitanLogProject + + + ccsrc/Protocols/Tcp/Abstract_Socket.cc + 1 + C:/Users/yann/Documents/wireshark/cygwin64/home/yann/frameworks/titan/titan.core/performance_test/SIPApplibPerfTest/src/Abstract_Socket.cc + + + ccsrc/Protocols/Tcp/Abstract_Socket.hh + 1 + C:/Users/yann/Documents/wireshark/cygwin64/home/yann/frameworks/titan/titan.core/performance_test/SIPApplibPerfTest/src/Abstract_Socket.hh + + diff --git a/docs/AtsNg112/o2.cfg b/docs/AtsNg112/o2.cfg new file mode 100644 index 0000000..e69de29 diff --git a/docs/TestCodec/o2.cfg b/docs/TestCodec/o2.cfg new file mode 100644 index 0000000..e69de29 diff --git a/etc/TestCodec/TestCodec.cfg b/etc/TestCodec/TestCodec.cfg new file mode 100644 index 0000000..98a05fe --- /dev/null +++ b/etc/TestCodec/TestCodec.cfg @@ -0,0 +1,65 @@ +[MODULE_PARAMETERS] +# This section shall contain the values of all parameters that are defined in your TTCN-3 modules. + +LibCommon_Time.PX_TAC := 10.0 + +[LOGGING] +# In this section you can specify the name of the log file and the classes of events +# you want to log into the file or display on console (standard error). + +LogFile := "../logs/%e.%h-%r.%s" +FileMask := LOG_ALL | USER | DEBUG | MATCHING +ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING +#FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP +#ConsoleMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP +LogSourceInfo := Stack +LogEntityName:= Yes +LogEventTypes:= Yes +#TimeStampFormat := DateTime + +[TESTPORT_PARAMETERS] +# In this section you can specify parameters that are passed to Test Ports. +system.sipPort.params := "SIP/UDP(dst_ip=192.168.1.250,dst_port=5060,src_ip=192.168.1.253,src_port=5060)/ETH(mac_src=080027d2b658,mac_dst=90fd61e61902,eth_type=0800)/PCAP(mac_src=080027d2b658,nic=eth1,filter=and udp port 12345)" +#system.pemeaPort.params := "PEMEA/HTTP/TCP(debug=1,server=httpbin.org,port=80,use_ssl=0)" + +[DEFINE] +# In this section you can create macro definitions, +# that can be used in other configuration file sections except [INCLUDE] and [ORDERED_INCLUDE]. + +[INCLUDE] +# To use configuration settings given in other configuration files, +# the configuration files just need to be listed in this section, with their full or relative pathnames. + +[ORDERED_INCLUDE] +# To use configuration settings given in other configuration files, +# the configuration files just need to be listed in this section, with their full or relative pathnames. + +[EXTERNAL_COMMANDS] +# This section can define external commands (shell scripts) to be executed by the ETS +# whenever a control part or test case is started or terminated. + +#BeginTestCase := "" +#EndTestCase := "" +#BeginControlPart := "" +#EndControlPart := "" + +[EXECUTE] +# In this section you can specify what parts of your test suite you want to execute. +TestCodec_Register.tc_register_request_1 +#TestCodec_Register.tc_register_request_2 +#TestCodec_Register.tc_invite_request_2 +#TestCodec_Register.tc_invite_request_2 + +[GROUPS] +# In this section you can specify groups of hosts. These groups can be used inside the +# [COMPONENTS] section to restrict the creation of certain PTCs to a given set of hosts. + +[COMPONENTS] +# This section consists of rules restricting the location of created PTCs. + +[MAIN_CONTROLLER] +# The options herein control the behavior of MC. +KillTimer := 10.0 +LocalAddress := 127.0.0.1 +TCPPort := 12000 +NumHCs := 1 diff --git a/logs/STF549_ng112.yann-FSCOM-hc.log b/logs/STF549_ng112.yann-FSCOM-hc.log new file mode 100644 index 0000000..3d4006f --- /dev/null +++ b/logs/STF549_ng112.yann-FSCOM-hc.log @@ -0,0 +1,120 @@ +17:01:30.500422 EXECUTOR - TTCN-3 Host Controller started on yann-FSCOM. Version: CRL 113 200/6 R4A. +17:01:30.500422 EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error +17:01:30.500422 EXECUTOR - Maximum number of open file descriptors: 256, FD_SETSIZE = 64 +17:01:30.500422 WARNING - Warning: The address of MC was set to a local IP address. This may cause incorrect behavior if a HC from a remote host also connects to MC. +17:01:30.500422 EXECUTOR - The address of MC was set to 127.0.0.1:0. +17:01:30.541424 EXECUTOR - The local IP address of the control connection to MC is 127.0.0.1. +17:01:30.541424 EXECUTOR - Connected to MC. +17:01:30.542424 EXECUTOR - This host supports UNIX domain sockets for local communication. +17:01:30.550425 EXECUTOR - Processing configuration data received from MC. +17:01:30.556425 EXECUTOR - Module LibCommon_Sync has the following parameters: { PX_TSYNC_TIME_LIMIT := 120.000000, PX_TSHUT_DOWN_TIME_LIMIT := 120.000000 } +17:01:30.556425 EXECUTOR - Module LibCommon_Time has the following parameters: { PX_TDONE := 120.000000, PX_TAC := 10.000000, PX_TNOAC := 10.000000, PX_TWAIT := 120.000000, PX_LOOP := 1.000000 } +17:01:30.556425 EXECUTOR - Module LibSip_PIXITS has the following parameters: { PX_SIP_SDP_USER_NAME := "voicesession", PX_SIP_SDP_SESSION_ID := "30000", PX_SIP_SDP_DYN := "0", PX_SIP_SDP_B_MODIFIER := "AS", PX_SIP_SDP_B_BANDWIDTH := 64, PX_SIP_SDP_ENCODING := "PCMU", PX_SIP_SDP_CLOCKRATE := "8000", PX_MB_LENGTH_FROM_ENCVAL := true, PX_USE_FX_FOR_XML_LENGTH := false, PX_SIP_TRANSPORT := "UDP", PX_SIP_REGISTRATION := false, PX_AUTH_ALGORITHM := "AKAv1-MD5", PX_SIP_REGISTER_AUTHENTICATION_ENABLED := true, PX_SIP_INVITE_AUTHENTICATION_ENABLED := false, PX_SIP_TWAIT := 30.000000, PX_SIP_TACK := 8.000000, PX_SIP_TRESP := 15.000000, PX_SIP_TNOACT := 1.000000, PX_SIP_MIME_BOUNDARY := "boundary1" } +17:01:30.556425 EXECUTOR - Initializing module AtsNg112_TestCases. +17:01:30.556425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_TypesAndValues. +17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_TypesAndValues finished. +17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Templates. +17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Templates finished. +17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_TestSystem. +17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0 Initializing module LibItsHttp_TestSystem. +17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/Http/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Sync. +17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/Http/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon/LibCommon_Sync.ttcn:0 Initializing module LibCommon_AbstractData. +17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/Http/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon/LibCommon_Sync.ttcn:0->../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initializing module LibCommon_BasicTypesAndValues. +17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/Http/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon/LibCommon_Sync.ttcn:0->../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initialization of module LibCommon_BasicTypesAndValues finished. +17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/Http/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_AbstractData finished. +17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/Http/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon/LibCommon_Sync.ttcn:0 Initializing module LibCommon_VerdictControl. +17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/Http/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_VerdictControl finished. +17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/Http/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Sync finished. +17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/Http/LibItsHttp_TestSystem.ttcn:0 Initializing module LibItsHttp_TypesAndValues. +17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/Http/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibItsHttp_TypesAndValues finished. +17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0 Initialization of module LibItsHttp_TestSystem finished. +17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0 Initializing module LibSip_Interface. +17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_SIPTypesAndValues. +17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0 Initializing module LibSip_MessageBodyTypes. +17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SDPTypes. +17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn:0 Initializing module LibSip_Common. +17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn:0 Initialization of module LibSip_Common finished. +17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SDPTypes finished. +17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SimpleMsgSummaryTypes. +17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SimpleMsgSummaryTypes finished. +17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_XMLTypes. +17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_resource_lists. +17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/urn_ietf_params_xml_ns_resource_lists.ttcn:0 Initializing module http_www_w3_org_XML_1998_namespace. +17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/urn_ietf_params_xml_ns_resource_lists.ttcn:0->../ttcn/LibSip/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initializing module XSD. +17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/urn_ietf_params_xml_ns_resource_lists.ttcn:0->../ttcn/LibSip/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../ttcn/LibSip/xsd/XSD.ttcn:0 Initializing module UsefulTtcn3Types. +17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/urn_ietf_params_xml_ns_resource_lists.ttcn:0->../ttcn/LibSip/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../ttcn/LibSip/xsd/XSD.ttcn:0 Initialization of module UsefulTtcn3Types finished. +17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/urn_ietf_params_xml_ns_resource_lists.ttcn:0->../ttcn/LibSip/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initialization of module XSD finished. +17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/urn_ietf_params_xml_ns_resource_lists.ttcn:0 Initialization of module http_www_w3_org_XML_1998_namespace finished. +17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_resource_lists finished. +17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_xcap. +17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_ietf_params_xml_ns_common_policy. +17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_ietf_params_xml_ns_common_policy finished. +17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_oma_xml_xdm_common_policy. +17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_oma_xml_xdm_common_policy finished. +17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_xcap finished. +17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_mcid. +17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_mcid finished. +17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module NoTargetNamespace. +17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module NoTargetNamespace finished. +17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_3gpp_ns_cw_1_0. +17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_3gpp_ns_cw_1_0 finished. +17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_conference_info. +17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_conference_info finished. +17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_pstn. +17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_pstn finished. +17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_comm_div_info. +17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_comm_div_info finished. +17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_reginfo. +17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_reginfo finished. +17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf. +17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf finished. +17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10. +17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy. +17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy finished. +17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10 finished. +17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_XMLTypes finished. +17:01:30.561426 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0 Initialization of module LibSip_MessageBodyTypes finished. +17:01:30.561426 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_SIPTypesAndValues finished. +17:01:30.561426 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_PIXITS. +17:01:30.561426 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initializing module LibCommon_DataStrings. +17:01:30.561426 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initialization of module LibCommon_DataStrings finished. +17:01:30.561426 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_PIXITS finished. +17:01:30.561426 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0 Initialization of module LibSip_Interface finished. +17:01:30.561426 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_TestSystem finished. +17:01:30.561426 EXECUTOR - Initialization of module AtsNg112_TestCases finished. +17:01:30.561426 EXECUTOR - Initializing module LibCommon_TextStrings. +17:01:30.561426 EXECUTOR - Initialization of module LibCommon_TextStrings finished. +17:01:30.561426 EXECUTOR - Initializing module LibCommon_Time. +17:01:30.561426 EXECUTOR - Initialization of module LibCommon_Time finished. +17:01:30.561426 EXECUTOR - Initializing module LibItsHttp_Templates. +17:01:30.561426 EXECUTOR - Initialization of module LibItsHttp_Templates finished. +17:01:30.561426 EXECUTOR - Initializing module LibSip_EncdecDeclarations. +17:01:30.561426 EXECUTOR ../ttcn/LibSip/ttcn/LibSip_EncdecDeclarations.ttcn:0 Initializing module LibSip_SMSTypesAndValues. +17:01:30.561426 EXECUTOR ../ttcn/LibSip/ttcn/LibSip_EncdecDeclarations.ttcn:0 Initialization of module LibSip_SMSTypesAndValues finished. +17:01:30.561426 EXECUTOR - Initialization of module LibSip_EncdecDeclarations finished. +17:01:30.561426 EXECUTOR - Initializing module LibSip_Library. +17:01:30.561426 EXECUTOR ../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_SMSTemplates. +17:01:30.561426 EXECUTOR ../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn:0 Initializing module LibSip_SMSFunctions. +17:01:30.562426 EXECUTOR ../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn:0 Initialization of module LibSip_SMSFunctions finished. +17:01:30.562426 EXECUTOR ../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_SMSTemplates finished. +17:01:30.562426 EXECUTOR ../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_Steps. +17:01:30.563426 EXECUTOR ../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Steps.ttcn:0 Initializing module LibSip_Templates. +17:01:30.565426 EXECUTOR ../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Steps.ttcn:0 Initialization of module LibSip_Templates finished. +17:01:30.565426 EXECUTOR ../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_Steps finished. +17:01:30.565426 EXECUTOR - Initialization of module LibSip_Library finished. +17:01:30.565426 EXECUTOR - Initializing module PreGenRecordOf. +17:01:30.566426 EXECUTOR - Initialization of module PreGenRecordOf finished. +17:01:30.566426 EXECUTOR - Initializing module TestCodec_Invite. +17:01:30.566426 EXECUTOR ../ttcn/TestCodec/TestCodec_Invite.ttcn:0 Initializing module TestCodec_TestAndSystem. +17:01:30.566426 EXECUTOR ../ttcn/TestCodec/TestCodec_Invite.ttcn:0 Initialization of module TestCodec_TestAndSystem finished. +17:01:30.566426 EXECUTOR - Initialization of module TestCodec_Invite finished. +17:01:30.566426 EXECUTOR - Initializing module TestCodec_Register. +17:01:30.566426 EXECUTOR - Initialization of module TestCodec_Register finished. +17:01:30.566426 EXECUTOR - Initializing module TitanLoggerApi. +17:01:30.566426 EXECUTOR - Initialization of module TitanLoggerApi finished. +17:01:30.566426 EXECUTOR - Configuration data was processed successfully. +17:01:31.665489 EXECUTOR - MTC was created. Process id: 9252. +17:01:41.163032 PARALLEL - MTC finished. Process statistics: { process id: 9252, terminated by a signal, signal number: 6 (Aborted), core dump was created, user time: 0.000000 s, system time: 0.140000 s, maximum resident set size: 10284, integral resident set size: 0, page faults not requiring physical I/O: 0, page faults requiring physical I/O: 2626, swaps: 0, block input operations: 0, block output operations: 0, messages sent: 0, messages received: 0, signals received: 2, voluntary context switches: 0, involuntary context switches: 0 } +17:01:41.167032 EXECUTOR - Exit was requested from MC. Terminating HC. +17:01:41.169032 EXECUTOR - Disconnected from MC. +17:01:41.169032 EXECUTOR - TTCN-3 Host Controller finished. diff --git a/logs/STF549_ng112.yann-FSCOM-mtc.log b/logs/STF549_ng112.yann-FSCOM-mtc.log new file mode 100644 index 0000000..ca7da03 --- /dev/null +++ b/logs/STF549_ng112.yann-FSCOM-mtc.log @@ -0,0 +1,68 @@ +17:01:31.694490 EXECUTOR - TTCN-3 Main Test Component started on yann-FSCOM. Version: CRL 113 200/6 R4A. +17:01:31.694490 EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error +17:01:31.768495 EXECUTOR - Connected to MC. +17:01:31.806497 EXECUTOR - Executing test case TC_2 in module AtsNg112_TestCases. +17:01:31.807497 TESTCASE ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:35(testcase:TC_2) Test case TC_2 started. +17:01:31.807497 PARALLEL ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:35(testcase:TC_2) Initializing variables, timers and ports of component type LibItsHttp_TestSystem.HttpComponent inside testcase TC_2. +17:01:31.807497 PORTEVENT ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:35(testcase:TC_2) Port syncPort was started. +17:01:31.807497 PORTEVENT ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:35(testcase:TC_2) Port syncSendPort was started. +17:01:31.807497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:35(testcase:TC_2) >>> HttpPort::user_start +17:01:31.807497 PORTEVENT ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:35(testcase:TC_2) Port httpPort was started. +17:01:31.807497 PARALLEL ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:35(testcase:TC_2) Component type LibItsHttp_TestSystem.HttpComponent was initialized. +17:01:31.807497 PARALLEL ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Mapping port mtc:httpPort to system:httpPort. +17:01:31.814497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) HttpPort::set_parameter: params=HTTP/TCP(debug=1,server=httpbin.org,port=80,use_ssl=0) +17:01:31.814497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) >>> HttpPort::user_map: httpPort +17:01:31.814497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) HttpPort::user_map: HTTP/TCP(debug=1,server=httpbin.org,port=80,use_ssl=0) +17:01:31.814497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) >>> params::convert: HTTP/TCP(debug=1,server=httpbin.org,port=80,use_ssl=0) +17:01:31.815497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) params::convert: 4 - debug=1, - debug - 1 - , +17:01:31.815497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) params::convert: 4 - server=httpbin.org, - server - httpbin.org - , +17:01:31.816497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) params::convert: 4 - port=80, - port - 80 - , +17:01:31.816497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) params::convert: 4 - use_ssl=0) - use_ssl - 0) - +17:01:31.816497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) <<< params::convert +17:01:31.816497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) >>> layer_stack_builder::create_layer_stack: HTTP/TCP(debug=1,server=httpbin.org,port=80,use_ssl=0) +17:01:31.817497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) layer_stack_builder::create_layer_stack: 5 - HTTP/ - HTTP - - +17:01:31.817497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) layer_stack_builder::create_layer_stack: Create layer HTTP, +17:01:31.817497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) >>> http_layer::http_layer: HTTP, +17:01:31.817497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) layer_stack_builder::create_layer_stack: Setup layers for HTTP +17:01:31.817497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) layer_stack_builder::create_layer_stack: 5 - TCP(debug=1,server=httpbin.org,port=80,use_ssl=0) - TCP - (debug=1,server=httpbin.org,port=80,use_ssl=0) - debug=1,server=httpbin.org,port=80,use_ssl=0 +17:01:31.817497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) layer_stack_builder::create_layer_stack: Create layer TCP, debug=1,server=httpbin.org,port=80,use_ssl=0 +17:01:31.817497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) >>> tcp_layer::tcp_layer: TCP, debug=1,server=httpbin.org,port=80,use_ssl=0 +17:01:31.817497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) >>> params::convert: debug=1,server=httpbin.org,port=80,use_ssl=0 +17:01:31.819497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) params::convert: 4 - debug=1, - debug - 1 - , +17:01:31.819497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) params::convert: 4 - server=httpbin.org, - server - httpbin.org - , +17:01:31.819497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) params::convert: 4 - port=80, - port - 80 - , +17:01:31.819497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) params::convert: 4 - use_ssl=0 - use_ssl - 0 - +17:01:31.819497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) <<< params::convert +17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) params::log +17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) (debug, 1) +17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) (port, 80) +17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) (server, httpbin.org) +17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) (use_ssl, 0) +17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: entering SSL_Socket::parameter_set(server, httpbin.org) +17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: leaving SSL_Socket::parameter_set(server, httpbin.org) +17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: entering Abstract_Socket::parameter_set(server, httpbin.org) +17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: leaving Abstract_Socket::parameter_set(server, httpbin.org) +17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: entering SSL_Socket::parameter_set(port, 80) +17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: leaving SSL_Socket::parameter_set(port, 80) +17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: entering Abstract_Socket::parameter_set(port, 80) +17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: leaving Abstract_Socket::parameter_set(port, 80) +17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: entering SSL_Socket::parameter_set(use_connection_ASPs, yes) +17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: leaving SSL_Socket::parameter_set(use_connection_ASPs, yes) +17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: entering Abstract_Socket::parameter_set(use_connection_ASPs, yes) +17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: leaving Abstract_Socket::parameter_set(use_connection_ASPs, yes) +17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: entering SSL_Socket::parameter_set(server_backlog, 1024) +17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: leaving SSL_Socket::parameter_set(server_backlog, 1024) +17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: entering Abstract_Socket::parameter_set(server_backlog, 1024) +17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: leaving Abstract_Socket::parameter_set(server_backlog, 1024) +17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: entering Abstract_Socket::map_user() +17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: leaving Abstract_Socket::map_user() +17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: Abstract_Socket::open_client_connection(remoteAddr: httpbin.org/80, localAddr: UNSPEC/UNSPEC) called +17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: Abstract_Socket::get_host_id called +17:01:31.921503 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: The address set to httpbin.org[34.236.164.47] +17:01:31.921503 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: **** DEPRECATED FUNCTION CALLED: Abstract_Socket::open_client_connection(const struct sockaddr_in & new_remote_addr, const struct sockaddr_in & new_local_addr). USE open_client_connection(const char* remoteHostname, const char* remoteServicename, const char* localHostname, const char* localServicename) INSTEAD! **** +17:01:31.921503 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: Remote address: 34.236.164.47:80 +17:01:31.921503 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: Connecting to server from address 0.0.0.0:0 +17:01:37.346814 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: Abstract_Socket::peer_list_add_peer: Adding client 5 to peer list +17:01:37.346814 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: Abstract_Socket::peer_list_get_last_peer: Finding last peer of the peer array +17:01:37.346814 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: Abstract_Socket::peer_list_get_last_peer: No active peer found +17:01:37.346814 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: Abstract_Socket::peer_list_resize_list: Resizing to 6 diff --git a/representations.aird b/representations.aird index cfa7928..abc5d34 100644 --- a/representations.aird +++ b/representations.aird @@ -1,7 +1,6 @@ model.tdl - test_purposes/lis.tplan2 diff --git a/scripts/ng112.bash b/scripts/ng112.bash new file mode 100644 index 0000000..3f15dbb --- /dev/null +++ b/scripts/ng112.bash @@ -0,0 +1,241 @@ +#!/bin/bash +#set -e +set -vx + +function f_exit { + cd ${CURPWD} + + unset TTCN_FILES + unset CC_FILES + unset CFG_FILES + unset EXECUTABLE + echo $1 + exit $2 +} + +function f_usage { + echo "build.bash: This script import from External Disk the " + echo "Optional arguments:" + echo " prof: Generate a makefile including profiling options (e.g. ./build.bash prof)" + exit 0 +} + +clear + +if [ "$1" == "help" ] +then + f_usage +fi + +ATS_NAME=Ng112 + +#CURPWD=`pwd` +if [ ! "${PWD##*/}" == "objs" ] +then + cd ../objs + if [ ! $? == 0 ] + then + echo "Please move to PROJECT/obj directory" + exit 1 + fi +fi +# Remove everything +rm -fr ../objs/*.hh +rm -fr ../objs/*.cc +rm -fr ../objs/*.log +rm -fr ../objs/*.o +rm -fr ../objs/Makefile + +# Remove useless files +find .. -type f -name "*~" -exec rm {} \; +find .. -type f -name "*.bak" -exec rm {} \; +find .. -type f -name "*.log" -exec rm {} \; + +# Build XSD files if any and put them in objs directory +#XSD_PATH=${PATH_DEV_EMCOM}/xsd +XSD_PATH=${PATH_DEV_EMCOM}/null # Do not use xsd2ttcn for now, need to fix issues first +if [ -d ${XSD_PATH} ] +then + XSD_FILES=`find ${XSD_PATH} -name '*.xsd'` + + if [ "${OSTYPE}" == "cygwin" ] + then + xsd2ttcn.exe ${XSD_FILES} + else + xsd2ttcn ${XSD_FILES} + fi + if [ "$?" != "0" ] + then + f_exit "Failed to generate XSD source code" 2 + fi + XSD_FILES=`find . -name '*.ttcn'` +fi + +REFERENCES="LibCommon LibHttp LibEmcom/LibNg112 LibSip" +for i in ${REFERENCES} +do + # TTCN code + for j in `find ${PATH_DEV_EMCOM}/src/$i/ttcn -type f -name "*.ttcn"`; + do + ln -sf $j ../ttcn/`basename $j` + done + # Include source code + files=`find ${PATH_DEV_EMCOM}/src/$i/include -type f` + if [ "${files}" != " " ] + then + for j in ${files}; + do + ln -sf $j ../include/`basename $j` + done + fi + # CC source code + files=`find ${PATH_DEV_EMCOM}/src/$i/src -type f` + if [ "${files}" != " " ] + then + for j in ${files}; + do + ln -sf $j ../src/`basename $j` + done + fi +done + +# Generate the list of the TTCN-3 files +TTCN_FILES=`find .. -name '*.ttcn*'` + +# Start ATS generation - Step 1 +if [ "${OSTYPE}" == "cygwin" ] +then + rm ../bin/*.exe ../lib/*.dll + compiler.exe -e -f -g -l -L -M -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log + if [ "$?" == "1" ] + then + f_exit "Failed to compile ATS" 4 + fi +else + compiler -e -f -g -l -L -M -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log + if [ "$?" == "1" ] + then + f_exit "Failed to generate ATS source code" 6 + fi +fi + +# Sart ATS generation - Step 2 +# Create working variables +CC_FILES=`find ../src -name '*.c*'` +FWK_FILES=`find ${PATH_DEV_EMCOM}/framework/ -name '*.c*'` +CFG_FILES=`find ../etc -name '*.cfg'` + +# Sart ATS generation - Step 3 +if [ "${OSTYPE}" == "cygwin" ] +then + ttcn3_makefilegen.exe -d -f -g -m -M -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log + if [ "$?" == "1" ] + then + f_exit "Failed to compile ATS" 5 + fi +else + ttcn3_makefilegen -d -f -g -m -M -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log + if [ "$?" == "1" ] + then + f_exit "Failed to generate ATS source code" 7 + fi +fi + +# Bug xsd2ttcn +for i in ${XSD_FILES} +do + VARIANT='s/ variant (\[\-\]) ;//g' + sed --in-place "${VARIANT}" $i +done + +# Remove port skeletons to use src/ +for i in `ls ../include/*.hh` +do + if [ -f ./`basename $i` ] + then + rm ./`basename $i` + fi +done +for i in `ls ../src/*.cc` +do + if [ -f ./`basename $i` ] + then + rm ./`basename $i` + fi +done + +# Check if Makefile was generated +if [ ! -f ./Makefile ] +then + f_exit "Failed to generate ATS source code" 8 +fi + +# Patch ATS generated files +#./bin/patch.bash 2>&1 3>&1 | tee --append build.log +# Add compiler/linker options +# -DASN_DISABLE_OER_SUPPORT is required for CAMCodec and DENMCodec +if [ "$1" == "prof" ] +then + if [ "${OSTYPE}" == "cygwin" ] + then + CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -D_XOPEN_SOURCE=700 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector/g' + else + CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector/g' + fi + LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fstack-check -fstack-protector/g' +else + if [ "${OSTYPE}" == "cygwin" ] + then + CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector/g' + else + CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -DAS_USE_SSL -pthread -fstack-check -fstack-protector/g' + fi + LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fstack-check -fstack-protector/g' +fi +ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_EMCOM)/include -I$(PATH_DEV_EMCOM)/framework/include -I../include -I../../LibEmcom/Common/include -I../../LibEmcom/LibPemea/include -I$(HOME_INC) -I.' +ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lpcap -lstdc++fs -lssl/g' +sed --in-place "${CXXFLAGS_DEBUG_MODE}" ./Makefile +sed --in-place "${LDFLAGS_DEBUG_MODE}" ./Makefile +sed --in-place "${ADD_INCLUDE}" ./Makefile +sed --in-place "${ADD_LIBRARIES}" ./Makefile +# Update COMPILER_FLAGS +COMPILER_FLAGS='s/COMPILER_FLAGS = /COMPILER_FLAGS = -e -O /g' +sed --in-place "${COMPILER_FLAGS}" ./Makefile +# Update clean clause +CLEAN_LINE='s/$(RM) $(EXECUTABLE)/$(RM) ..\/bin\/$(EXECUTABLE) ..\/src\/*.o/g' +sed --in-place "${CLEAN_LINE}" ./Makefile +# Move binary file command +EXECUTABLE=MyExample +MV_CMD='s/all: $(TARGET) ;/all: $(TARGET) ; @if [ -f ..\/objs\/$(EXECUTABLE) ]; then mv ..\/objs\/$(EXECUTABLE) ..\/bin; fi ;/g' +sed --in-place "${MV_CMD}" ./Makefile +# Add run command +ADD_HOST='/PLATFORM = /aHOST=127.0.0.1' +ADD_PORT='/PLATFORM = /aPORT=12000' +sed --in-place "${ADD_PORT}" ./Makefile +sed --in-place "${ADD_HOST}" ./Makefile +ADD_RUN_LINE_1='$arun: all' +ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile +ADD_RUN_LINE_1='$arun_d: all' +ADD_RUN_LINE_2='$a\\t@gdb --args $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile +ADD_RUN_LINE_1='$arun_v: all' +ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --track-fds=yes --run-cxx-freeres=yes $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile +# Add gendoc entry +ADD_RUN_LINE_1='$agendoc: ../docs/o2.cfg' +ADD_RUN_LINE_2='$a\\tdoxygen ../docs/o2.cfg' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile + +# Build all +make all 2>&1 3>&1 | tee --append build.log +if [ "$?" == "1" ] +then + f_exit "Failed to generate ATS source code" 9 +fi +../bin/Ats${ATS_NAME} -v +f_exit "Build done successfully" 0 diff --git a/scripts/testcodec_generate_makefile.bash b/scripts/testcodec_generate_makefile.bash new file mode 100644 index 0000000..329b7fc --- /dev/null +++ b/scripts/testcodec_generate_makefile.bash @@ -0,0 +1,241 @@ +#!/bin/bash +#set -e +#set -vx + +function f_exit { + cd ${CURPWD} + + unset TTCN_FILES + unset CC_FILES + unset CFG_FILES + unset EXECUTABLE + echo $1 + exit $2 +} + +function f_usage { + echo "build.bash: This script import from External Disk the " + echo "Optional arguments:" + echo " prof: Generate a makefile including profiling options (e.g. ./build.bash prof)" + exit 0 +} + +clear + +if [ "$1" == "help" ] +then + f_usage +fi + +ATS_NAME=TestCodec + +#CURPWD=`pwd` +if [ ! "${PWD##*/}" == "objs" ] +then + cd ../objs + if [ ! $? == 0 ] + then + echo "Please move to PROJECT/obj directory" + exit 1 + fi +fi +# Remove everything +rm -fr ../objs/*.hh +rm -fr ../objs/*.cc +rm -fr ../objs/*.log +rm -fr ../objs/*.o +rm -fr ../objs/Makefile + +# Remove useless files +find .. -type f -name "*~" -exec rm {} \; +find .. -type f -name "*.bak" -exec rm {} \; +find .. -type f -name "*.log" -exec rm {} \; + +# Build XSD files if any and put them in objs directory +#XSD_PATH=${PATH_DEV_EMCOM}/xsd +XSD_PATH=${PATH_DEV_EMCOM}/null # Do not use xsd2ttcn for now, need to fix issues first +if [ -d ${XSD_PATH} ] +then + XSD_FILES=`find ${XSD_PATH} -name '*.xsd'` + + if [ "${OSTYPE}" == "cygwin" ] + then + xsd2ttcn.exe ${XSD_FILES} + else + xsd2ttcn ${XSD_FILES} + fi + if [ "$?" != "0" ] + then + f_exit "Failed to generate XSD source code" 2 + fi + XSD_FILES=`find . -name '*.ttcn'` +fi + +REFERENCES="LibCommon LibHttp LibEmcom/LibNg112 LibSip" +for i in ${REFERENCES} +do + # TTCN code + for j in `find ${PATH_DEV_EMCOM}/src/$i/ttcn -type f -name "*.ttcn"`; + do + ln -sf $j ../ttcn/`basename $j` + done + # Include source code + files=`find ${PATH_DEV_EMCOM}/src/$i/include -type f` + if [ "${files}" != " " ] + then + for j in ${files}; + do + ln -sf $j ../include/`basename $j` + done + fi + # CC source code + files=`find ${PATH_DEV_EMCOM}/src/$i/src -type f` + if [ "${files}" != " " ] + then + for j in ${files}; + do + ln -sf $j ../src/`basename $j` + done + fi +done + +# Generate the list of the TTCN-3 files +TTCN_FILES=`find .. -name '*.ttcn*'` + +# Start ATS generation - Step 1 +if [ "${OSTYPE}" == "cygwin" ] +then + rm ../bin/*.exe ../lib/*.dll + compiler.exe -e -f -g -l -L -M -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log + if [ "$?" == "1" ] + then + f_exit "Failed to compile ATS" 4 + fi +else + compiler -e -f -g -l -L -M -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log + if [ "$?" == "1" ] + then + f_exit "Failed to generate ATS source code" 6 + fi +fi + +# Sart ATS generation - Step 2 +# Create working variables +CC_FILES=`find ../src -name '*.c*'` +FWK_FILES=`find ${PATH_DEV_EMCOM}/framework/ -name '*.c*'` +CFG_FILES=`find ../etc -name '*.cfg'` + +# Sart ATS generation - Step 3 +if [ "${OSTYPE}" == "cygwin" ] +then + ttcn3_makefilegen.exe -d -f -g -m -M -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log + if [ "$?" == "1" ] + then + f_exit "Failed to compile ATS" 5 + fi +else + ttcn3_makefilegen -d -f -g -m -M -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log + if [ "$?" == "1" ] + then + f_exit "Failed to generate ATS source code" 7 + fi +fi + +# Bug xsd2ttcn +for i in ${XSD_FILES} +do + VARIANT='s/ variant (\[\-\]) ;//g' + sed --in-place "${VARIANT}" $i +done + +# Remove port skeletons to use src/ +for i in `ls ../include/*.hh` +do + if [ -f ./`basename $i` ] + then + rm ./`basename $i` + fi +done +for i in `ls ../src/*.cc` +do + if [ -f ./`basename $i` ] + then + rm ./`basename $i` + fi +done + +# Check if Makefile was generated +if [ ! -f ./Makefile ] +then + f_exit "Failed to generate ATS source code" 8 +fi + +# Patch ATS generated files +#./bin/patch.bash 2>&1 3>&1 | tee --append build.log +# Add compiler/linker options +# -DASN_DISABLE_OER_SUPPORT is required for CAMCodec and DENMCodec +if [ "$1" == "prof" ] +then + if [ "${OSTYPE}" == "cygwin" ] + then + CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -D_XOPEN_SOURCE=700 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector/g' + else + CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector/g' + fi + LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fstack-check -fstack-protector/g' +else + if [ "${OSTYPE}" == "cygwin" ] + then + CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector/g' + else + CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -DAS_USE_SSL -pthread -fstack-check -fstack-protector/g' + fi + LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fstack-check -fstack-protector/g' +fi +ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_EMCOM)/include -I$(PATH_DEV_EMCOM)/framework/include -I../include -I../../LibEmcom/Common/include -I../../LibEmcom/LibPemea/include -I$(HOME_INC) -I.' +ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lstdc++fs -lssl/g' +sed --in-place "${CXXFLAGS_DEBUG_MODE}" ./Makefile +sed --in-place "${LDFLAGS_DEBUG_MODE}" ./Makefile +sed --in-place "${ADD_INCLUDE}" ./Makefile +sed --in-place "${ADD_LIBRARIES}" ./Makefile +# Update COMPILER_FLAGS +COMPILER_FLAGS='s/COMPILER_FLAGS = /COMPILER_FLAGS = -e -O /g' +sed --in-place "${COMPILER_FLAGS}" ./Makefile +# Update clean clause +CLEAN_LINE='s/$(RM) $(EXECUTABLE)/$(RM) ..\/bin\/$(EXECUTABLE) ..\/src\/*.o/g' +sed --in-place "${CLEAN_LINE}" ./Makefile +# Move binary file command +EXECUTABLE=MyExample +MV_CMD='s/all: $(TARGET) ;/all: $(TARGET) ; @if [ -f ..\/objs\/$(EXECUTABLE) ]; then mv ..\/objs\/$(EXECUTABLE) ..\/bin; fi ;/g' +sed --in-place "${MV_CMD}" ./Makefile +# Add run command +ADD_HOST='/PLATFORM = /aHOST=127.0.0.1' +ADD_PORT='/PLATFORM = /aPORT=12000' +sed --in-place "${ADD_PORT}" ./Makefile +sed --in-place "${ADD_HOST}" ./Makefile +ADD_RUN_LINE_1='$arun: all' +ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile +ADD_RUN_LINE_1='$arun_d: all' +ADD_RUN_LINE_2='$a\\t@gdb --args $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile +ADD_RUN_LINE_1='$arun_v: all' +ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --track-fds=yes --run-cxx-freeres=yes $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile +# Add gendoc entry +ADD_RUN_LINE_1='$agendoc: ../docs/o2.cfg' +ADD_RUN_LINE_2='$a\\tdoxygen ../docs/o2.cfg' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile + +# Build all +make all 2>&1 3>&1 | tee --append build.log +if [ "$?" == "1" ] +then + f_exit "Failed to generate ATS source code" 9 +fi +../bin/Ats${ATS_NAME} -v +f_exit "Build done successfully" 0 diff --git a/scripts/update_emcom_project.bash b/scripts/update_emcom_project.bash index 93c18c8..6f889e8 100644 --- a/scripts/update_emcom_project.bash +++ b/scripts/update_emcom_project.bash @@ -8,13 +8,40 @@ set -vx # TODO Use git clone in temporary directory OLDPWD=`pwd` -cd ${HOME}/dev/STF549_ng112 # Execution path RUN_PATH="${0%/*}" -SRC_EMCOM_PATH=${HOME}/dev/STF549_ng112 -PATH_DEV_EMCOM=`pwd`/../etsi_emcom +UNAME=`uname -n` +if [ "${UNAME}" == "Ubuntu64" ] +then # Win7 Virtualbox Ubuntu 16.04 + CHOWN_USER_GROUP=yann:yann + SRC_EMCOM_PATH=/media/sf_F_DRIVE/FSCOM/ETSI/EMCOM/STF549/workspace_titan/STF549_ng112 +elif [ "${UNAME}" == "ubuntu-xenial" ] +then # Vqgrant xenial-ubuntu + CHOWN_USER_GROUP=ubuntu:ubuntu + SRC_EMCOM_PATH=/media/sf_F_DRIVE/FSCOM/ETSI/EMCOM/STF549/workspace_titan/STF549_ng112 +elif [ "${UNAME}" == "vagrant" ] +then # Vagrant xenial-ubuntu + CHOWN_USER_GROUP=vagrant:vagrant + SRC_EMCOM_PATH=/media/sf_F_DRIVE/FSCOM/ETSI/EMCOM/STF549/workspace_titan/STF549_ng112 +elif [ "${UNAME}" == "vagrant-prov" ] +then # Vagrant ubuntu 16.04 with provisioner script to automate ITS project build & test + CHOWN_USER_GROUP=vagrant:vagrant +# CHOWN_USER_GROUP=ubuntu:ubuntu + SRC_EMCOM_PATH=${HOME}/tmp/STF549_ng112 +elif [ "${UNAME}" == "yann-FSCOM" ] +then # Win7 cygwin64 + CHOWN_USER_GROUP=yann:None + SRC_EMCOM_PATH=/cygdrive/f/FSCOM/ETSI/EMCOM/STF549/workspace_titan/STF549_ng112 +else # docket-titan + CHOWN_USER_GROUP=root:root + SRC_EMCOM_PATH=${HOME}/tmp/STF549_ng112 +fi +if [ "${PATH_DEV_EMCOM}" == "" ] +then + PATH_DEV_EMCOM=`pwd`/../etsi_emcom +fi if [ -d ${PATH_DEV_EMCOM} ] then @@ -22,6 +49,7 @@ then then mv ${HOME}/tmp/emcom.tar.bz2 ${HOME}/tmp/emcom.tar.`date +'%Y%m%d'`.bz2 fi + find ${PATH_DEV_EMCOM} -name "*.o" -exec rm {} \; tar jcvf ${HOME}/tmp/emcom.tar.bz2 ${PATH_DEV_EMCOM} rm -fr ${PATH_DEV_EMCOM} fi @@ -95,7 +123,7 @@ echo 'Update TTCN-3 files' TTCN_3_ORG_PATH=${SRC_EMCOM_PATH}/ttcn TTCN_3_DST_PATH=${PATH_DEV_EMCOM}/src CC_SRC_PATH=${SRC_EMCOM_PATH}/ccsrc -TTCN_3_ATS_LIST='AtsNg112' +TTCN_3_ATS_LIST='AtsNg112 TestCodec' for i in ${TTCN_3_ATS_LIST} do if [ ! -d ${TTCN_3_DST_PATH}/$i ] @@ -117,9 +145,12 @@ do mkdir -p ${TTCN_3_DST_PATH}/$i/docs ${TTCN_3_DST_PATH}/$i/src ${TTCN_3_DST_PATH}/$i/include ${TTCN_3_DST_PATH}/$i/ttcn ${TTCN_3_DST_PATH}/$i/xsd fi cp ${TTCN_3_ORG_PATH}/$i/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn - # Update CC files - if [ "$i" == "LibNg112" ] + # Update files + if [ "$i" == "LibEmcom/LibNg112" ] then + cp ${TTCN_3_ORG_PATH}/$i/ttcn/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn + cp ${TTCN_3_ORG_PATH}/$i/xsd/*.xsd ${TTCN_3_DST_PATH}/$i/xsd + cp ${TTCN_3_ORG_PATH}/$i/xsd/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src fi @@ -128,7 +159,15 @@ do cp ${TTCN_3_ORG_PATH}/$i/ttcn/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn cp ${TTCN_3_ORG_PATH}/$i/xsd/*.xsd ${TTCN_3_DST_PATH}/$i/xsd cp ${TTCN_3_ORG_PATH}/$i/xsd/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn - cp ${CC_SRC_PATH}/EncDec/LibSip_Encdec.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/EncDec/$i/*_Encdec.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/Ports/$i/*.hh ${TTCN_3_DST_PATH}/$i/include + cp ${CC_SRC_PATH}/Ports/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include + cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + fi + if [ "$i" == "LibHttp" ] + then + cp ${TTCN_3_ORG_PATH}/$i/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn cp ${CC_SRC_PATH}/Ports/$i/*.hh ${TTCN_3_DST_PATH}/$i/include cp ${CC_SRC_PATH}/Ports/$i/*.cc ${TTCN_3_DST_PATH}/$i/src cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include @@ -137,33 +176,40 @@ do done # Generate Bison parsers is any -cd ${FWK_DST_PATH}/src -if [ "${FWK_DIR_LIST_Y}" != "" ] -then - for i in ${FWK_DIR_LIST_Y} - do - BASE_NAME=$(basename "$i" .y) - bison -dv -p${BASE_NAME}_ -b${BASE_NAME}_ ${BASE_NAME}.y #--defines=../include/${BASE_NAME}.h -o${BASE_NAME}.c - done -fi -if [ "${FWK_DIR_LIST_L}" != "" ] -then - for i in ${FWK_DIR_LIST_L} - do - BASE_NAME=$(basename "$i" .l) - flex -Cfr -8 -Bvpp -P${BASE_NAME}_ ${BASE_NAME}.l # -o${BASE_NAME}_flex.c ${BASE_NAME}.l - done - mv ${BASE_NAME}_.tab.h ../include -fi -cd - +#cd ${FWK_DST_PATH}/src +#if [ "${FWK_DIR_LIST_Y}" != "" ] +#then +# for i in ${FWK_DIR_LIST_Y} +# do +# BASE_NAME=$(basename "$i" .y) +# bison -dv -p${BASE_NAME}_ -b${BASE_NAME}_ ${BASE_NAME}.y #--defines=../include/${BASE_NAME}.h -o${BASE_NAME}.c +# done +#fi +#if [ "${FWK_DIR_LIST_L}" != "" ] +#then +# for i in ${FWK_DIR_LIST_L} +# do +# BASE_NAME=$(basename "$i" .l) +# flex -Cfr -8 -Bvpp -P${BASE_NAME}_ ${BASE_NAME}.l # -o${BASE_NAME}_flex.c ${BASE_NAME}.l +# done +# mv ${BASE_NAME}_.tab.h ../include +#fi +#cd - # Apply patches PATH_PATCHES=`pwd`/etsi_emcom_patches if [ -d ${PATH_PATCHES} ] then + # Update Ng112 cp ${PATH_PATCHES}/ng112.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin cp ${PATH_PATCHES}/../run_mtc.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin cp ${PATH_PATCHES}/../run_ptcs.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin + cp ${PATH_PATCHES}/../run_all.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin + # Update TestCodec + cp ${PATH_PATCHES}/testcodec_generate_makefile.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin + cp ${PATH_PATCHES}/../run_mtc.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin + cp ${PATH_PATCHES}/../run_ptcs.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin + cp ${PATH_PATCHES}/../run_all.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin fi # Set rights diff --git a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn index 7992150..79d7846 100644 --- a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn +++ b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn @@ -11,6 +11,13 @@ */ module AtsNg112_TestCases { + // RFC5985 Held + import from XSD all; + import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all + with { + extension "File:./RFC5985_held.xsd"; + } + // Libcommon import from LibCommon_Time all; import from LibCommon_VerdictControl all; @@ -18,6 +25,7 @@ module AtsNg112_TestCases { // LibHttp import from LibItsHttp_TypesAndValues all; + import from LibItsHttp_XmlMessageBodyTypes all; import from LibItsHttp_Functions all; import from LibItsHttp_Templates all; import from LibItsHttp_TestSystem all; @@ -31,6 +39,7 @@ module AtsNg112_TestCases { import from LibNg112_Functions all; import from LibNg112_TestSystem all; import from LibNg112_Pics all; + import from LibNg112_Pixits all; testcase TC_1() runs on SipComponent system TestAdapter { @@ -65,12 +74,17 @@ module AtsNg112_TestCases { // Preamble f_init_default_headers_list(v_headers); + f_remove_headears_list({ c_header_accept}, v_headers); httpPort.send( m_http_request( m_http_request_get( PICS_LISP_URI, v_headers, m_http_message_body_xml( + XmlBody: { locationRequest := valueof(m_locationRequest( + m_device({PX_DEVICE_URI}).elem_list, + m_locationTypeType(m_locationTypeBase_all))) + } )))); f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success); @@ -80,8 +94,9 @@ module AtsNg112_TestCases { [] httpPort.receive( mw_http_response( mw_http_response_ok( - mw_http_message_body_xml - ))) { + mw_http_message_body_xml( + XmlBody: { locationResponse := mw_locationResponse_dummy } + )))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Security protocol version set to 3 ***"); f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn new file mode 100644 index 0000000..0e928cd --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn @@ -0,0 +1,8 @@ +module LibNg112_Pixits { + + /** + * @desc + */ + modulepar charstring PX_DEVICE_URI := "sip:user@example.net;gr=kjh29x97us97d"; + +} // End of module LibNg112_Pixits diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn index 2a9fe1f..d4c8e25 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn @@ -1,36 +1,86 @@ module LibNg112_Templates { + + // RFC5985 Held + import from XSD all; + import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all + with { + extension "File:./RFC5985_held.xsd"; + } + import from urn_ietf_params_xml_ns_geopriv_held_id language "XSD" all + with { + extension "RFC6155_held_id.xsd"; + } + + // LibNg112 + + group rfc5985_held { - // RFC5985 Held - import from XSD all; - import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all - with { - extension "File:./RFC5985_held.xsd"; - } - - // LibNg112 - - group rfc5985_held { - - template (omit) LocationRequestType m_locationRequest( - template (value) LocationRequestType.elem_list p_elem_list, - template (omit) ResponseTimeType p_responseTime := omit, - template (omit) LocationRequestType.attr p_attr := omit, - template (omit) LocationTypeType p_locationType := omit - ) := { - responseTime := p_responseTime, - attr := p_attr, - locationType := p_locationType, - elem_list := p_elem_list - } // End of template m_locationRequest - - template LocationResponseType mw_locationResponse_dummy( - template ReturnLocationType p_locationUriSet := *, - template LocationResponseType.elem_list p_elem_list := * - ) := { - locationUriSet := p_locationUriSet, - elem_list := p_elem_list - } // End of template mw_locationResponse_dummy - - } // End of group rfc5985_held + template (omit) LocationRequest m_locationRequest( + in template (value) LocationRequestType.elem_list p_elem_list, + in template (omit) LocationTypeType p_locationType := omit, + in template (omit) ResponseTimeType p_responseTime := omit, + in template (omit) LocationRequestType.attr p_attr := omit + ) := { + responseTime := p_responseTime, + attr := p_attr, + locationType := p_locationType, + elem_list := p_elem_list + } // End of template m_locationRequest + template LocationResponseType mw_locationResponse_dummy( + template ReturnLocationType p_locationUriSet := *, + template LocationResponseType.elem_list p_elem_list := * + ) := { + locationUriSet := p_locationUriSet, + elem_list := p_elem_list + } // End of template mw_locationResponse_dummy + + + + + + template (omit) LocationTypeType m_locationTypeType( + in template (value) LocationTypeBase p_base, + in template (omit) XSD.Boolean p_exact := omit + ) := { + exact := p_exact, + base := p_base + } // End of template m_locationTypeType + + template (value) LocationTypeBase m_locationTypeBase_civic := { + alt_1 := { + civic + } + } // End of template m_locationTypeBase_civic + + template (value) LocationTypeBase m_locationTypeBase_geodetic := { + alt_1 := { + geodetic + } + } // End of template m_locationTypeBase_geodetic + + template (value) LocationTypeBase m_locationTypeBase_all := { + alt_1 := { + geodetic, civic + } + } // End of template m_locationTypeBase_all + + } // End of group rfc5985_held + + group rfc6155_held_id { + + template (value) Device m_device( + in template (value) Device.elem_list p_elem_list + ) := { + elem_list := p_elem_list + } // End of template m_device + + template (present) Device mw_device( + template (present) DeviceIdentity.elem_list p_elem_list := ? + ) := { + elem_list := p_elem_list + } // End of template mw_device + + } // End of group rfc6155_held_id + } // End of module LibNg112_Templates diff --git a/ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd b/ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd new file mode 100644 index 0000000..050ecc0 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This attribute may be used on any element within an optional + PIDF extension to indicate that the corresponding element must + be understood by the PIDF processor if the enclosing optional + element is to be handled. + + + + diff --git a/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd b/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd new file mode 100644 index 0000000..472b3ed --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd b/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd new file mode 100644 index 0000000..7aecbde --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd b/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd new file mode 100644 index 0000000..a037487 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd b/ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd index 67ff3e5..3e78dea 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd +++ b/ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd @@ -1,136 +1,136 @@ - - - This document (RFC 5985) defines HELD messages. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:held="urn:ietf:params:xml:ns:geopriv:held" + xmlns:xml="http://www.w3.org/XML/1998/namespace" elementFormDefault="qualified" + attributeFormDefault="unqualified"> + + + This document (RFC 5985) defines HELD messages. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd b/ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd new file mode 100644 index 0000000..4568987 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd @@ -0,0 +1,108 @@ + + + + + +HELD Device Identity + + +This document defines Device identity elements for HELD. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn index 1ab0a90..b24c6d3 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn @@ -14,7 +14,7 @@ // References: // Rev: // Prodnr: -// Updated: Wed May 23 07:57:48 2018 +// Updated: Tue May 29 08:00:31 2018 // Contact: http://ttcn.ericsson.se // //////////////////////////////////////////////////////////////////////////////// @@ -109,6 +109,9 @@ type record of enumerated locationURI } LocationTypeList with { + variant ([-]) ; + variant ([-]) ; + variant ([-]) ; variant "name as uncapitalized"; variant "list"; }; diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn new file mode 100644 index 0000000..c33612e --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn @@ -0,0 +1,242 @@ +/******************************************************************************* +* Copyright (c) 2000-2018 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R4A +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: urn_ietf_params_xml_ns_geopriv_held_id.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Tue May 29 08:00:31 2018 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - RFC6155_held_id.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "urn:ietf:params:xml:ns:geopriv:held:id" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module urn_ietf_params_xml_ns_geopriv_held_id { + + +import from XSD all; + + +/* This document defines Device identity elements for HELD. */ + + +type DeviceIdentity Device +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type record DeviceIdentity +{ + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement"; +}; + + +type QnameList RequiredIdentifiers +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type record of XSD.QName QnameList +with { + variant "name as uncapitalized"; + variant "list"; +}; + + +type IpAddress Ip +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type record IpAddress +{ + XSD.Token v (pattern "[\da-fA-F]"), + XSD.Token base +} +with { + variant "name as uncapitalized"; + variant (v) "attribute"; + variant (base) "untagged"; +}; + + +type MacAddress Mac +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type XSD.Token MacAddress (pattern "[\da-fA-F]#(2)(-[\da-fA-F]#(2))#(5)((-[\da-fA-F]#(2))#(2))#(0,1)") +with { + variant "name as uncapitalized"; +}; + + +type PortNumber Udpport +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type PortNumber Tcpport +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type PortNumber Sctpport +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type PortNumber Dccpport +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type XSD.NonNegativeInteger PortNumber (0 .. 65535) +with { + variant "name as uncapitalized"; +}; + + +type NaiType Nai +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type XSD.Token NaiType (pattern "([\^\\]|\\[\dA-Fa-f]#(2))* (@([A-Za-z\d]([A-Za-z\d\-]*[A-Za-z\d])*.)+ [A-Za-z\d]([A-Za-z\d\-]*[A-Za-z\d])*)#(0,1)") +with { + variant "name as uncapitalized"; +}; + + +type XSD.AnyURI Uri +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type XSD.Token Fqdn +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type XSD.HexBinary Duid +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type E164 Msisdn +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type E164 Imsi +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type Digit15 Imei +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type Digit10 Min +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type E164 Mdn +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type XSD.Token Digits (pattern "[\d]+") +with { + variant "name as uncapitalized"; +}; + + +type XSD.Token E164 (pattern "[\d]+") length(6 .. 15) +with { + variant "name as uncapitalized"; +}; + + +type XSD.Token Digit15 (pattern "[\d]+") length(0 .. 15) +with { + variant "name as uncapitalized"; +}; + + +type XSD.Token Digit10 (pattern "[\d]+") length(10) +with { + variant "name as uncapitalized"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'urn:ietf:params:xml:ns:geopriv:held:id' prefix 'id'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn new file mode 100644 index 0000000..117f4bc --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn @@ -0,0 +1,172 @@ +/******************************************************************************* +* Copyright (c) 2000-2018 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R4A +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: urn_ietf_params_xml_ns_pidf.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Tue May 29 08:00:31 2018 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - RFC3863_pidf.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "urn:ietf:params:xml:ns:pidf" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module urn_ietf_params_xml_ns_pidf { + + +import from XSD all; + + +import from http_www_w3_org_XML_1998_namespace all; + + +const XSD.Boolean c_defaultForEmpty_1 := false; + + +/* This import brings in the XML language attribute xml:lang */ + + +type Presence_1 Presence +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type record Presence_1 +{ + XSD.AnyURI entity, + record of Tuple tuple_list, + record of Note note_list, + record of XSD.String elem_list +} +with { + variant "name as 'presence'"; + variant (entity) "attribute"; + variant (tuple_list) "untagged"; + variant (tuple_list[-]) "name as 'tuple'"; + variant (note_list) "untagged"; + variant (note_list[-]) "name as 'note'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:pidf'"; +}; + + +type record Tuple +{ + XSD.ID id, + Status status, + record of XSD.String elem_list, + Contact contact optional, + record of Note note_list, + XSD.DateTime timestamp optional +} +with { + variant "name as uncapitalized"; + variant (id) "attribute"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:pidf'"; + variant (note_list) "untagged"; + variant (note_list[-]) "name as 'note'"; +}; + + +type record Status +{ + Basic basic optional, + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:pidf'"; +}; + + +type enumerated Basic +{ + closed, + open +} +with { + variant "name as uncapitalized"; +}; + + +type record Contact +{ + Qvalue priority optional, + XSD.AnyURI base +} +with { + variant "name as uncapitalized"; + variant (priority) "attribute"; + variant (base) "untagged"; +}; + + +type record Note +{ + Lang lang optional, + XSD.String base +} +with { + variant "name as uncapitalized"; + variant (lang) "namespace as 'http://www.w3.org/XML/1998/namespace' prefix 'xml'"; + variant (lang) "attribute"; + variant (base) "untagged"; +}; + + +type XSD.Decimal Qvalue +with { + variant "name as uncapitalized"; +}; + + +/* Global Attributes */ + + +/* This attribute may be used on any element within an optional */ +/* PIDF extension to indicate that the corresponding element must */ +/* be understood by the PIDF processor if the enclosing optional */ +/* element is to be handled. */ +type XSD.Boolean MustUnderstand +with { + variant "defaultForEmpty as c_defaultForEmpty_1"; + variant "name as uncapitalized"; + variant "attribute"; + //variant "text 'true' as '1'"; + //variant "text 'false' as '0'"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'urn:ietf:params:xml:ns:pidf' prefix 'tns'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn new file mode 100644 index 0000000..fe430f9 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn @@ -0,0 +1,117 @@ +/******************************************************************************* +* Copyright (c) 2000-2018 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R4A +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: urn_ietf_params_xml_ns_pidf_geopriv10.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Tue May 29 08:00:31 2018 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - RFC4119_geopriv10.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "urn:ietf:params:xml:ns:pidf:geopriv10" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module urn_ietf_params_xml_ns_pidf_geopriv10 { + + +import from XSD all; + + +import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy all; + + +import from http_www_w3_org_XML_1998_namespace all; + + +/* This import brings in the XML language attribute xml:lang */ + + +type Geopriv_1 Geopriv +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type record Geopriv_1 +{ + LocInfoType location_info, + LocPolicyType usage_rules, + LocMethod method optional, + LocProvidedBy provided_by optional, + record of XSD.String elem_list +} +with { + variant "name as 'geopriv'"; + variant (location_info) "name as 'location-info'"; + variant (usage_rules) "name as 'usage-rules'"; + variant (provided_by) "name as 'provided-by'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:pidf:geopriv10'"; +}; + + +type record LocInfoType +{ + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:pidf:geopriv10'"; +}; + + +type record LocMethod +{ + Lang lang optional, + XSD.String base +} +with { + variant "name as uncapitalized"; + variant (lang) "namespace as 'http://www.w3.org/XML/1998/namespace' prefix 'xml'"; + variant (lang) "attribute"; + variant (base) "untagged"; +}; + + +type record LocProvidedBy +{ + record length(1 .. infinity) of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:pidf:geopriv10'"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'urn:ietf:params:xml:ns:pidf:geopriv10' prefix 'tns'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn new file mode 100644 index 0000000..b389f5e --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn @@ -0,0 +1,88 @@ +/******************************************************************************* +* Copyright (c) 2000-2018 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R4A +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Tue May 29 08:00:31 2018 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - RFC4119_geopriv10_basic_policy.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "urn:ietf:params:xml:ns:pidf:geopriv10:basicPolicy" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy { + + +import from XSD all; + + +import from http_www_w3_org_XML_1998_namespace all; + + +/* This import brings in the XML language attribute xml:lang */ + + +type record LocPolicyType +{ + XSD.Boolean retransmission_allowed optional, + XSD.DateTime retention_expiry optional, + XSD.AnyURI external_ruleset optional, + Notewell note_well optional, + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (retransmission_allowed) "name as 'retransmission-allowed'"; + //variant (retransmission_allowed) "text 'true' as '1'"; + //variant (retransmission_allowed) "text 'false' as '0'"; + variant (retention_expiry) "name as 'retention-expiry'"; + variant (external_ruleset) "name as 'external-ruleset'"; + variant (note_well) "name as 'note-well'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:pidf:geopriv10:basicPolicy'"; +}; + + +type record Notewell +{ + Lang lang optional, + XSD.String base +} +with { + variant "name as uncapitalized"; + variant (lang) "namespace as 'http://www.w3.org/XML/1998/namespace' prefix 'xml'"; + variant (lang) "attribute"; + variant (base) "untagged"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'urn:ietf:params:xml:ns:pidf:geopriv10:basicPolicy' prefix 'tns'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn new file mode 100644 index 0000000..487476c --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn @@ -0,0 +1,92 @@ +/******************************************************************************* +* Copyright (c) 2000-2018 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R4A +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Tue May 29 08:00:31 2018 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - RFC4119_geopriv10_civiloc.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "urn:ietf:params:xml:ns:pidf:geopriv10:civicLoc" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc { + + +import from XSD all; + + +type record CivicAddress +{ + XSD.String country optional, + XSD.String a1 optional, + XSD.String a2 optional, + XSD.String a3 optional, + XSD.String a4 optional, + XSD.String a5 optional, + XSD.String a6 optional, + XSD.String pRD optional, + XSD.String pOD optional, + XSD.String sTS optional, + XSD.String hNO optional, + XSD.String hNS optional, + XSD.String lMK optional, + XSD.String lOC optional, + XSD.String fLR optional, + XSD.String nAM optional, + XSD.String pC optional, + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (a1) "name as capitalized"; + variant (a2) "name as capitalized"; + variant (a3) "name as capitalized"; + variant (a4) "name as capitalized"; + variant (a5) "name as capitalized"; + variant (a6) "name as capitalized"; + variant (pRD) "name as capitalized"; + variant (pOD) "name as capitalized"; + variant (sTS) "name as capitalized"; + variant (hNO) "name as capitalized"; + variant (hNS) "name as capitalized"; + variant (lMK) "name as capitalized"; + variant (lOC) "name as capitalized"; + variant (fLR) "name as capitalized"; + variant (nAM) "name as capitalized"; + variant (pC) "name as capitalized"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:pidf:geopriv10:civicLoc'"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'urn:ietf:params:xml:ns:pidf:geopriv10:civicLoc' prefix 'tns'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} diff --git a/ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd b/ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd new file mode 100644 index 0000000..d662b42 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd @@ -0,0 +1,117 @@ + + + + + + + See http://www.w3.org/XML/1998/namespace.html and + http://www.w3.org/TR/REC-xml for information about this namespace. + + This schema document describes the XML namespace, in a form + suitable for import by other schema documents. + + Note that local names in this namespace are intended to be defined + only by the World Wide Web Consortium or its subgroups. The + following names are currently defined in this namespace and should + not be used with conflicting semantics by any Working Group, + specification, or document instance: + + base (as an attribute name): denotes an attribute whose value + provides a URI to be used as the base for interpreting any + relative URIs in the scope of the element on which it + appears; its value is inherited. This name is reserved + by virtue of its definition in the XML Base specification. + + lang (as an attribute name): denotes an attribute whose value + is a language code for the natural language of the content of + any element; its value is inherited. This name is reserved + by virtue of its definition in the XML specification. + + space (as an attribute name): denotes an attribute whose + value is a keyword indicating what whitespace processing + discipline is intended for the content of the element; its + value is inherited. This name is reserved by virtue of its + definition in the XML specification. + + Father (in any context at all): denotes Jon Bosak, the chair of + the original XML Working Group. This name is reserved by + the following decision of the W3C XML Plenary and + XML Coordination groups: + + In appreciation for his vision, leadership and dedication + the W3C XML Plenary on this 10th day of February, 2000 + reserves for Jon Bosak in perpetuity the XML name + xml:Father + + + + + This schema defines attributes and an attribute group + suitable for use by + schemas wishing to allow xml:base, xml:lang or xml:space attributes + on elements they define. + + To enable this, such a schema must import this schema + for the XML namespace, e.g. as follows: + <schema . . .> + . . . + <import namespace="http://www.w3.org/XML/1998/namespace" + schemaLocation="http://www.w3.org/2001/03/xml.xsd"/> + + Subsequently, qualified reference to any of the attributes + or the group defined below will have the desired effect, e.g. + + <type . . .> + . . . + <attributeGroup ref="xml:specialAttrs"/> + + will define a type which will schema-validate an instance + element with any of those attributes + + + + In keeping with the XML Schema WG's standard versioning + policy, this schema document will persist at + http://www.w3.org/2001/03/xml.xsd. + At the date of issue it can also be found at + http://www.w3.org/2001/xml.xsd. + The schema document at that URI may however change in the future, + in order to remain compatible with the latest version of XML Schema + itself. In other words, if the XML Schema namespace changes, the version + of this document at + http://www.w3.org/2001/xml.xsd will change + accordingly; the version at + http://www.w3.org/2001/03/xml.xsd will not change. + + + + + + In due course, we should install the relevant ISO 2- and 3-letter + codes as the enumerated possible values . . . + + + + + + + + + + + + + + + See http://www.w3.org/TR/xmlbase/ for + information about this attribute. + + + + + + + + + + -- GitLab From 47510d229ac5d5079695639c238d1ab4377eb2d1 Mon Sep 17 00:00:00 2001 From: Garcia Date: Tue, 29 May 2018 08:39:05 +0200 Subject: [PATCH 10/72] Add new XSD/TTCN-3 files --- .../LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn | 3 --- 1 file changed, 3 deletions(-) diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn index b24c6d3..716d64d 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn @@ -109,9 +109,6 @@ type record of enumerated locationURI } LocationTypeList with { - variant ([-]) ; - variant ([-]) ; - variant ([-]) ; variant "name as uncapitalized"; variant "list"; }; -- GitLab From f895599b51cfdf18ed85ac961ced3870e3225f13 Mon Sep 17 00:00:00 2001 From: Garcia Date: Wed, 30 May 2018 15:28:21 +0200 Subject: [PATCH 11/72] Add new XSD/TTCN-3 files --- ttcn/AtsNg112/AtsNg112_TestCases.ttcn | 19 +- .../LibNg112/ttcn/LibNg112_Pixits.ttcn | 8 + .../LibNg112/ttcn/LibNg112_Templates.ttcn | 114 +++++--- ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd | 87 ++++++ .../LibNg112/xsd/RFC4119_geopriv10.xsd | 47 +++ .../xsd/RFC4119_geopriv10_basic_policy.xsd | 31 ++ .../xsd/RFC4119_geopriv10_civiloc.xsd | 47 +++ ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd | 268 +++++++++--------- .../LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd | 108 +++++++ .../urn_ietf_params_xml_ns_geopriv_held.ttcn | 5 +- ...rn_ietf_params_xml_ns_geopriv_held_id.ttcn | 242 ++++++++++++++++ .../xsd/urn_ietf_params_xml_ns_pidf.ttcn | 172 +++++++++++ ...urn_ietf_params_xml_ns_pidf_geopriv10.ttcn | 117 ++++++++ ...ams_xml_ns_pidf_geopriv10_basicPolicy.ttcn | 88 ++++++ ...params_xml_ns_pidf_geopriv10_civicLoc.ttcn | 92 ++++++ 15 files changed, 1276 insertions(+), 169 deletions(-) create mode 100644 ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn create mode 100644 ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd create mode 100644 ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd create mode 100644 ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd create mode 100644 ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd create mode 100644 ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd create mode 100644 ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn create mode 100644 ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn create mode 100644 ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn create mode 100644 ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn create mode 100644 ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn diff --git a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn index 7992150..79d7846 100644 --- a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn +++ b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn @@ -11,6 +11,13 @@ */ module AtsNg112_TestCases { + // RFC5985 Held + import from XSD all; + import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all + with { + extension "File:./RFC5985_held.xsd"; + } + // Libcommon import from LibCommon_Time all; import from LibCommon_VerdictControl all; @@ -18,6 +25,7 @@ module AtsNg112_TestCases { // LibHttp import from LibItsHttp_TypesAndValues all; + import from LibItsHttp_XmlMessageBodyTypes all; import from LibItsHttp_Functions all; import from LibItsHttp_Templates all; import from LibItsHttp_TestSystem all; @@ -31,6 +39,7 @@ module AtsNg112_TestCases { import from LibNg112_Functions all; import from LibNg112_TestSystem all; import from LibNg112_Pics all; + import from LibNg112_Pixits all; testcase TC_1() runs on SipComponent system TestAdapter { @@ -65,12 +74,17 @@ module AtsNg112_TestCases { // Preamble f_init_default_headers_list(v_headers); + f_remove_headears_list({ c_header_accept}, v_headers); httpPort.send( m_http_request( m_http_request_get( PICS_LISP_URI, v_headers, m_http_message_body_xml( + XmlBody: { locationRequest := valueof(m_locationRequest( + m_device({PX_DEVICE_URI}).elem_list, + m_locationTypeType(m_locationTypeBase_all))) + } )))); f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success); @@ -80,8 +94,9 @@ module AtsNg112_TestCases { [] httpPort.receive( mw_http_response( mw_http_response_ok( - mw_http_message_body_xml - ))) { + mw_http_message_body_xml( + XmlBody: { locationResponse := mw_locationResponse_dummy } + )))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Security protocol version set to 3 ***"); f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn new file mode 100644 index 0000000..0e928cd --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn @@ -0,0 +1,8 @@ +module LibNg112_Pixits { + + /** + * @desc + */ + modulepar charstring PX_DEVICE_URI := "sip:user@example.net;gr=kjh29x97us97d"; + +} // End of module LibNg112_Pixits diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn index 2a9fe1f..d4c8e25 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn @@ -1,36 +1,86 @@ module LibNg112_Templates { + + // RFC5985 Held + import from XSD all; + import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all + with { + extension "File:./RFC5985_held.xsd"; + } + import from urn_ietf_params_xml_ns_geopriv_held_id language "XSD" all + with { + extension "RFC6155_held_id.xsd"; + } + + // LibNg112 + + group rfc5985_held { - // RFC5985 Held - import from XSD all; - import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all - with { - extension "File:./RFC5985_held.xsd"; - } - - // LibNg112 - - group rfc5985_held { - - template (omit) LocationRequestType m_locationRequest( - template (value) LocationRequestType.elem_list p_elem_list, - template (omit) ResponseTimeType p_responseTime := omit, - template (omit) LocationRequestType.attr p_attr := omit, - template (omit) LocationTypeType p_locationType := omit - ) := { - responseTime := p_responseTime, - attr := p_attr, - locationType := p_locationType, - elem_list := p_elem_list - } // End of template m_locationRequest - - template LocationResponseType mw_locationResponse_dummy( - template ReturnLocationType p_locationUriSet := *, - template LocationResponseType.elem_list p_elem_list := * - ) := { - locationUriSet := p_locationUriSet, - elem_list := p_elem_list - } // End of template mw_locationResponse_dummy - - } // End of group rfc5985_held + template (omit) LocationRequest m_locationRequest( + in template (value) LocationRequestType.elem_list p_elem_list, + in template (omit) LocationTypeType p_locationType := omit, + in template (omit) ResponseTimeType p_responseTime := omit, + in template (omit) LocationRequestType.attr p_attr := omit + ) := { + responseTime := p_responseTime, + attr := p_attr, + locationType := p_locationType, + elem_list := p_elem_list + } // End of template m_locationRequest + template LocationResponseType mw_locationResponse_dummy( + template ReturnLocationType p_locationUriSet := *, + template LocationResponseType.elem_list p_elem_list := * + ) := { + locationUriSet := p_locationUriSet, + elem_list := p_elem_list + } // End of template mw_locationResponse_dummy + + + + + + template (omit) LocationTypeType m_locationTypeType( + in template (value) LocationTypeBase p_base, + in template (omit) XSD.Boolean p_exact := omit + ) := { + exact := p_exact, + base := p_base + } // End of template m_locationTypeType + + template (value) LocationTypeBase m_locationTypeBase_civic := { + alt_1 := { + civic + } + } // End of template m_locationTypeBase_civic + + template (value) LocationTypeBase m_locationTypeBase_geodetic := { + alt_1 := { + geodetic + } + } // End of template m_locationTypeBase_geodetic + + template (value) LocationTypeBase m_locationTypeBase_all := { + alt_1 := { + geodetic, civic + } + } // End of template m_locationTypeBase_all + + } // End of group rfc5985_held + + group rfc6155_held_id { + + template (value) Device m_device( + in template (value) Device.elem_list p_elem_list + ) := { + elem_list := p_elem_list + } // End of template m_device + + template (present) Device mw_device( + template (present) DeviceIdentity.elem_list p_elem_list := ? + ) := { + elem_list := p_elem_list + } // End of template mw_device + + } // End of group rfc6155_held_id + } // End of module LibNg112_Templates diff --git a/ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd b/ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd new file mode 100644 index 0000000..050ecc0 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This attribute may be used on any element within an optional + PIDF extension to indicate that the corresponding element must + be understood by the PIDF processor if the enclosing optional + element is to be handled. + + + + diff --git a/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd b/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd new file mode 100644 index 0000000..472b3ed --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd b/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd new file mode 100644 index 0000000..7aecbde --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd b/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd new file mode 100644 index 0000000..a037487 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd b/ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd index 67ff3e5..3e78dea 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd +++ b/ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd @@ -1,136 +1,136 @@ - - - This document (RFC 5985) defines HELD messages. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:held="urn:ietf:params:xml:ns:geopriv:held" + xmlns:xml="http://www.w3.org/XML/1998/namespace" elementFormDefault="qualified" + attributeFormDefault="unqualified"> + + + This document (RFC 5985) defines HELD messages. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd b/ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd new file mode 100644 index 0000000..4568987 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd @@ -0,0 +1,108 @@ + + + + + +HELD Device Identity + + +This document defines Device identity elements for HELD. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn index 1ab0a90..b24c6d3 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn @@ -14,7 +14,7 @@ // References: // Rev: // Prodnr: -// Updated: Wed May 23 07:57:48 2018 +// Updated: Tue May 29 08:00:31 2018 // Contact: http://ttcn.ericsson.se // //////////////////////////////////////////////////////////////////////////////// @@ -109,6 +109,9 @@ type record of enumerated locationURI } LocationTypeList with { + variant ([-]) ; + variant ([-]) ; + variant ([-]) ; variant "name as uncapitalized"; variant "list"; }; diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn new file mode 100644 index 0000000..c33612e --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn @@ -0,0 +1,242 @@ +/******************************************************************************* +* Copyright (c) 2000-2018 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R4A +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: urn_ietf_params_xml_ns_geopriv_held_id.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Tue May 29 08:00:31 2018 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - RFC6155_held_id.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "urn:ietf:params:xml:ns:geopriv:held:id" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module urn_ietf_params_xml_ns_geopriv_held_id { + + +import from XSD all; + + +/* This document defines Device identity elements for HELD. */ + + +type DeviceIdentity Device +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type record DeviceIdentity +{ + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement"; +}; + + +type QnameList RequiredIdentifiers +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type record of XSD.QName QnameList +with { + variant "name as uncapitalized"; + variant "list"; +}; + + +type IpAddress Ip +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type record IpAddress +{ + XSD.Token v (pattern "[\da-fA-F]"), + XSD.Token base +} +with { + variant "name as uncapitalized"; + variant (v) "attribute"; + variant (base) "untagged"; +}; + + +type MacAddress Mac +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type XSD.Token MacAddress (pattern "[\da-fA-F]#(2)(-[\da-fA-F]#(2))#(5)((-[\da-fA-F]#(2))#(2))#(0,1)") +with { + variant "name as uncapitalized"; +}; + + +type PortNumber Udpport +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type PortNumber Tcpport +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type PortNumber Sctpport +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type PortNumber Dccpport +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type XSD.NonNegativeInteger PortNumber (0 .. 65535) +with { + variant "name as uncapitalized"; +}; + + +type NaiType Nai +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type XSD.Token NaiType (pattern "([\^\\]|\\[\dA-Fa-f]#(2))* (@([A-Za-z\d]([A-Za-z\d\-]*[A-Za-z\d])*.)+ [A-Za-z\d]([A-Za-z\d\-]*[A-Za-z\d])*)#(0,1)") +with { + variant "name as uncapitalized"; +}; + + +type XSD.AnyURI Uri +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type XSD.Token Fqdn +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type XSD.HexBinary Duid +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type E164 Msisdn +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type E164 Imsi +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type Digit15 Imei +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type Digit10 Min +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type E164 Mdn +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type XSD.Token Digits (pattern "[\d]+") +with { + variant "name as uncapitalized"; +}; + + +type XSD.Token E164 (pattern "[\d]+") length(6 .. 15) +with { + variant "name as uncapitalized"; +}; + + +type XSD.Token Digit15 (pattern "[\d]+") length(0 .. 15) +with { + variant "name as uncapitalized"; +}; + + +type XSD.Token Digit10 (pattern "[\d]+") length(10) +with { + variant "name as uncapitalized"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'urn:ietf:params:xml:ns:geopriv:held:id' prefix 'id'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn new file mode 100644 index 0000000..117f4bc --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn @@ -0,0 +1,172 @@ +/******************************************************************************* +* Copyright (c) 2000-2018 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R4A +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: urn_ietf_params_xml_ns_pidf.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Tue May 29 08:00:31 2018 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - RFC3863_pidf.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "urn:ietf:params:xml:ns:pidf" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module urn_ietf_params_xml_ns_pidf { + + +import from XSD all; + + +import from http_www_w3_org_XML_1998_namespace all; + + +const XSD.Boolean c_defaultForEmpty_1 := false; + + +/* This import brings in the XML language attribute xml:lang */ + + +type Presence_1 Presence +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type record Presence_1 +{ + XSD.AnyURI entity, + record of Tuple tuple_list, + record of Note note_list, + record of XSD.String elem_list +} +with { + variant "name as 'presence'"; + variant (entity) "attribute"; + variant (tuple_list) "untagged"; + variant (tuple_list[-]) "name as 'tuple'"; + variant (note_list) "untagged"; + variant (note_list[-]) "name as 'note'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:pidf'"; +}; + + +type record Tuple +{ + XSD.ID id, + Status status, + record of XSD.String elem_list, + Contact contact optional, + record of Note note_list, + XSD.DateTime timestamp optional +} +with { + variant "name as uncapitalized"; + variant (id) "attribute"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:pidf'"; + variant (note_list) "untagged"; + variant (note_list[-]) "name as 'note'"; +}; + + +type record Status +{ + Basic basic optional, + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:pidf'"; +}; + + +type enumerated Basic +{ + closed, + open +} +with { + variant "name as uncapitalized"; +}; + + +type record Contact +{ + Qvalue priority optional, + XSD.AnyURI base +} +with { + variant "name as uncapitalized"; + variant (priority) "attribute"; + variant (base) "untagged"; +}; + + +type record Note +{ + Lang lang optional, + XSD.String base +} +with { + variant "name as uncapitalized"; + variant (lang) "namespace as 'http://www.w3.org/XML/1998/namespace' prefix 'xml'"; + variant (lang) "attribute"; + variant (base) "untagged"; +}; + + +type XSD.Decimal Qvalue +with { + variant "name as uncapitalized"; +}; + + +/* Global Attributes */ + + +/* This attribute may be used on any element within an optional */ +/* PIDF extension to indicate that the corresponding element must */ +/* be understood by the PIDF processor if the enclosing optional */ +/* element is to be handled. */ +type XSD.Boolean MustUnderstand +with { + variant "defaultForEmpty as c_defaultForEmpty_1"; + variant "name as uncapitalized"; + variant "attribute"; + //variant "text 'true' as '1'"; + //variant "text 'false' as '0'"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'urn:ietf:params:xml:ns:pidf' prefix 'tns'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn new file mode 100644 index 0000000..fe430f9 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn @@ -0,0 +1,117 @@ +/******************************************************************************* +* Copyright (c) 2000-2018 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R4A +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: urn_ietf_params_xml_ns_pidf_geopriv10.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Tue May 29 08:00:31 2018 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - RFC4119_geopriv10.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "urn:ietf:params:xml:ns:pidf:geopriv10" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module urn_ietf_params_xml_ns_pidf_geopriv10 { + + +import from XSD all; + + +import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy all; + + +import from http_www_w3_org_XML_1998_namespace all; + + +/* This import brings in the XML language attribute xml:lang */ + + +type Geopriv_1 Geopriv +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type record Geopriv_1 +{ + LocInfoType location_info, + LocPolicyType usage_rules, + LocMethod method optional, + LocProvidedBy provided_by optional, + record of XSD.String elem_list +} +with { + variant "name as 'geopriv'"; + variant (location_info) "name as 'location-info'"; + variant (usage_rules) "name as 'usage-rules'"; + variant (provided_by) "name as 'provided-by'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:pidf:geopriv10'"; +}; + + +type record LocInfoType +{ + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:pidf:geopriv10'"; +}; + + +type record LocMethod +{ + Lang lang optional, + XSD.String base +} +with { + variant "name as uncapitalized"; + variant (lang) "namespace as 'http://www.w3.org/XML/1998/namespace' prefix 'xml'"; + variant (lang) "attribute"; + variant (base) "untagged"; +}; + + +type record LocProvidedBy +{ + record length(1 .. infinity) of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:pidf:geopriv10'"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'urn:ietf:params:xml:ns:pidf:geopriv10' prefix 'tns'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn new file mode 100644 index 0000000..b389f5e --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn @@ -0,0 +1,88 @@ +/******************************************************************************* +* Copyright (c) 2000-2018 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R4A +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Tue May 29 08:00:31 2018 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - RFC4119_geopriv10_basic_policy.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "urn:ietf:params:xml:ns:pidf:geopriv10:basicPolicy" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy { + + +import from XSD all; + + +import from http_www_w3_org_XML_1998_namespace all; + + +/* This import brings in the XML language attribute xml:lang */ + + +type record LocPolicyType +{ + XSD.Boolean retransmission_allowed optional, + XSD.DateTime retention_expiry optional, + XSD.AnyURI external_ruleset optional, + Notewell note_well optional, + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (retransmission_allowed) "name as 'retransmission-allowed'"; + //variant (retransmission_allowed) "text 'true' as '1'"; + //variant (retransmission_allowed) "text 'false' as '0'"; + variant (retention_expiry) "name as 'retention-expiry'"; + variant (external_ruleset) "name as 'external-ruleset'"; + variant (note_well) "name as 'note-well'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:pidf:geopriv10:basicPolicy'"; +}; + + +type record Notewell +{ + Lang lang optional, + XSD.String base +} +with { + variant "name as uncapitalized"; + variant (lang) "namespace as 'http://www.w3.org/XML/1998/namespace' prefix 'xml'"; + variant (lang) "attribute"; + variant (base) "untagged"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'urn:ietf:params:xml:ns:pidf:geopriv10:basicPolicy' prefix 'tns'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn new file mode 100644 index 0000000..487476c --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn @@ -0,0 +1,92 @@ +/******************************************************************************* +* Copyright (c) 2000-2018 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R4A +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Tue May 29 08:00:31 2018 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - RFC4119_geopriv10_civiloc.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "urn:ietf:params:xml:ns:pidf:geopriv10:civicLoc" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc { + + +import from XSD all; + + +type record CivicAddress +{ + XSD.String country optional, + XSD.String a1 optional, + XSD.String a2 optional, + XSD.String a3 optional, + XSD.String a4 optional, + XSD.String a5 optional, + XSD.String a6 optional, + XSD.String pRD optional, + XSD.String pOD optional, + XSD.String sTS optional, + XSD.String hNO optional, + XSD.String hNS optional, + XSD.String lMK optional, + XSD.String lOC optional, + XSD.String fLR optional, + XSD.String nAM optional, + XSD.String pC optional, + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (a1) "name as capitalized"; + variant (a2) "name as capitalized"; + variant (a3) "name as capitalized"; + variant (a4) "name as capitalized"; + variant (a5) "name as capitalized"; + variant (a6) "name as capitalized"; + variant (pRD) "name as capitalized"; + variant (pOD) "name as capitalized"; + variant (sTS) "name as capitalized"; + variant (hNO) "name as capitalized"; + variant (hNS) "name as capitalized"; + variant (lMK) "name as capitalized"; + variant (lOC) "name as capitalized"; + variant (fLR) "name as capitalized"; + variant (nAM) "name as capitalized"; + variant (pC) "name as capitalized"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:pidf:geopriv10:civicLoc'"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'urn:ietf:params:xml:ns:pidf:geopriv10:civicLoc' prefix 'tns'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} -- GitLab From 70fb09df2b10792def49d487e64991151da48691 Mon Sep 17 00:00:00 2001 From: Garcia Date: Wed, 30 May 2018 15:45:52 +0200 Subject: [PATCH 12/72] Add new XSD/TTCN-3 files --- etc/TestCodec/TestCodec.cfg | 5 +- scripts/update_emcom_project.bash | 1 + ttcn/AtsNg112/AtsNg112_TestCases.ttcn | 16 ++--- .../urn_ietf_params_xml_ns_geopriv_held.ttcn | 3 - ttcn/TestCodec/TestCodec_HttpRequest.ttcn | 63 +++++++++++++++++++ ttcn/TestCodec/TestCodec_HttpResponse.ttcn | 62 ++++++++++++++++++ 6 files changed, 138 insertions(+), 12 deletions(-) create mode 100644 ttcn/TestCodec/TestCodec_HttpRequest.ttcn create mode 100644 ttcn/TestCodec/TestCodec_HttpResponse.ttcn diff --git a/etc/TestCodec/TestCodec.cfg b/etc/TestCodec/TestCodec.cfg index 98a05fe..9e0c189 100644 --- a/etc/TestCodec/TestCodec.cfg +++ b/etc/TestCodec/TestCodec.cfg @@ -45,10 +45,13 @@ system.sipPort.params := "SIP/UDP(dst_ip=192.168.1.250,dst_port=5060,src_ip=192. [EXECUTE] # In this section you can specify what parts of your test suite you want to execute. -TestCodec_Register.tc_register_request_1 +#TestCodec_Register.tc_register_request_1 #TestCodec_Register.tc_register_request_2 #TestCodec_Register.tc_invite_request_2 #TestCodec_Register.tc_invite_request_2 +TestCodec_HttpRequest.tc_http_get_1 +TestCodec_HttpResponse.tc_http_200_ok_1 + [GROUPS] # In this section you can specify groups of hosts. These groups can be used inside the diff --git a/scripts/update_emcom_project.bash b/scripts/update_emcom_project.bash index 6f889e8..d1b495d 100644 --- a/scripts/update_emcom_project.bash +++ b/scripts/update_emcom_project.bash @@ -168,6 +168,7 @@ do if [ "$i" == "LibHttp" ] then cp ${TTCN_3_ORG_PATH}/$i/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn + cp ${CC_SRC_PATH}/EncDec/$i/*_Encdec.cc ${TTCN_3_DST_PATH}/$i/src cp ${CC_SRC_PATH}/Ports/$i/*.hh ${TTCN_3_DST_PATH}/$i/include cp ${CC_SRC_PATH}/Ports/$i/*.cc ${TTCN_3_DST_PATH}/$i/src cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include diff --git a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn index 79d7846..8a7acf2 100644 --- a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn +++ b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn @@ -41,13 +41,13 @@ module AtsNg112_TestCases { import from LibNg112_Pics all; import from LibNg112_Pixits all; - testcase TC_1() runs on SipComponent system TestAdapter { - - map(self:SIPP, system:SIPP); - - - unmap(self:SIPP, system:SIPP); - } +// testcase TC_1() runs on SipComponent system TestAdapter { +// +// map(self:SIPP, system:SIPP); +// +// +// unmap(self:SIPP, system:SIPP); +// } /** * @desc "IUT successfully processes all mandatory HTTP headers when it receives a HTTP POST request" @@ -74,7 +74,7 @@ module AtsNg112_TestCases { // Preamble f_init_default_headers_list(v_headers); - f_remove_headears_list({ c_header_accept}, v_headers); + f_remove_headears_list({ c_header_accept }, v_headers); httpPort.send( m_http_request( m_http_request_get( diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn index b24c6d3..716d64d 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn @@ -109,9 +109,6 @@ type record of enumerated locationURI } LocationTypeList with { - variant ([-]) ; - variant ([-]) ; - variant ([-]) ; variant "name as uncapitalized"; variant "list"; }; diff --git a/ttcn/TestCodec/TestCodec_HttpRequest.ttcn b/ttcn/TestCodec/TestCodec_HttpRequest.ttcn new file mode 100644 index 0000000..85a56ec --- /dev/null +++ b/ttcn/TestCodec/TestCodec_HttpRequest.ttcn @@ -0,0 +1,63 @@ +/** + * @author ETSI / STF549 + * @version $URL:$ + * $ID:$ + * @desc This module provides the codec validation test cases. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * @see ETSI TS 103 478 + */ +module TestCodec_HttpRequest { + + // LibCommon + + // LibHttp + import from LibItsHttp_TypesAndValues all; + import from LibItsHttp_XmlMessageBodyTypes all; + import from LibItsHttp_Functions all; + import from LibItsHttp_Templates all; + import from LibItsHttp_TestSystem all; + import from LibItsHttp_EncdecDeclarations all; + + // TestCodec + import from TestCodec_TestAndSystem all; + + testcase tc_http_get_1() runs on TCType system TCType { + var bitstring v_raw_message := oct2bit('504f5354202f6c69732f6170692f68656c6420485454502f312e310d0a486f73743a207270693a383037310d0a436f6e74656e742d547970653a206170706c69636174696f6e2f68656c642b786d6c3b636861727365743d7574662d380d0a436f6e74656e742d4c656e6774683a203239370d0a0d0a3c3f786d6c2076657273696f6e3d22312e30223f3e0d0a3c6c6f636174696f6e5265717565737420786d6c6e733d2275726e3a696574663a706172616d733a786d6c3a6e733a67656f707269763a68656c642220786d6c6e733a6e73323d2275726e3a696574663a706172616d733a786d6c3a6e733a67656f707269763a68656c643a6964223e0d0a093c6e73323a6465766963653e0d0a20202020093c6e73323a7572693e74656c3a2b3433363530313233343536373c2f6e73323a7572693e0d0a202020203c2f6e73323a6465766963653e0d0a093c6c6f636174696f6e547970652065786163743d2274727565223e0d0a202020200967656f64657469630d0a093c2f6c6f636174696f6e547970653e0d0a3c2f6c6f636174696f6e526571756573743e0d0a'O); + var charstring v_expected_xml_body := oct2str('3C3F786D6C2076657273696F6E3D22312E30223F3E0D0A3C6C6F636174696F6E5265717565737420786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C642220786D6C6E733A6E73323D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C643A6964223E0D0A093C6E73323A6465766963653E0D0A20202020093C6E73323A7572693E74656C3A2B3433363530313233343536373C2F6E73323A7572693E0D0A202020203C2F6E73323A6465766963653E0D0A093C6C6F636174696F6E547970652065786163743D2274727565223E0D0A202020200967656F64657469630D0A093C2F6C6F636174696F6E547970653E0D0A3C2F6C6F636174696F6E526571756573743E'O); + var bitstring v_enc_raw_message; + var template (present) HttpMessage v_expected_msg := { request := { method := "POST", uri := "/lis/api/held", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "rpi:8071" } }, { header_name := "Content-Type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-Length", header_value := { "297" } } }, body := { xml_body := { raw := ?/*v_expected_xml_body*/ } } } }; + var HttpMessage v_dec_msg; + var integer v_result; + + v_result := decvalue(v_raw_message, v_dec_msg); + if (v_result == 0) { + if (match(v_dec_msg, v_expected_msg)) { + setverdict(pass, "Decode match"); + } else { + setverdict(fail, "Mismatch values"); + } + } else { + setverdict(fail, "Decode failure"); + } + + v_enc_raw_message := encvalue(v_dec_msg); + if (not isbound(v_enc_raw_message)) { + setverdict(fail, "Encoding failed!"); + } else { + if (match(v_enc_raw_message, v_raw_message)) { + setverdict(pass, "Encode match"); + } else { + setverdict(fail, "Encoding mismatch"); + } + } + + } // End of testcase tc_http_get_1 + + control { + execute(tc_http_get_1()); + } + +} // End of module TestCodec_HttpRequest diff --git a/ttcn/TestCodec/TestCodec_HttpResponse.ttcn b/ttcn/TestCodec/TestCodec_HttpResponse.ttcn new file mode 100644 index 0000000..e0a1d78 --- /dev/null +++ b/ttcn/TestCodec/TestCodec_HttpResponse.ttcn @@ -0,0 +1,62 @@ +/** + * @author ETSI / STF549 + * @version $URL:$ + * $ID:$ + * @desc This module provides the codec validation test cases. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * @see ETSI TS 103 478 + */ +module TestCodec_HttpResponse { + + // LibCommon + + // LibHttp + import from LibItsHttp_TypesAndValues all; + import from LibItsHttp_XmlMessageBodyTypes all; + import from LibItsHttp_Functions all; + import from LibItsHttp_Templates all; + import from LibItsHttp_TestSystem all; + import from LibItsHttp_EncdecDeclarations all; + + // TestCodec + import from TestCodec_TestAndSystem all; + + testcase tc_http_200_ok_1() runs on TCType system TCType { + var bitstring v_raw_message := oct2bit('485454502f312e3120323030200d0a582d436f6e74656e742d547970652d4f7074696f6e733a206e6f736e6966660d0a582d5853532d50726f74656374696f6e3a20313b206d6f64653d626c6f636b0d0a43616368652d436f6e74726f6c3a206e6f2d63616368652c206e6f2d73746f72652c206d61782d6167653d302c206d7573742d726576616c69646174650d0a507261676d613a206e6f2d63616368650d0a457870697265733a20300d0a436f6e74656e742d547970653a206170706c69636174696f6e2f68656c642b786d6c3b636861727365743d5554462d380d0a436f6e74656e742d4c656e6774683a20313030340d0a446174653a205475652c203239204d617920323031382031333a32383a353920474d540d0a0d0a3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e0a3c6c6f636174696f6e526573706f6e736520786d6c6e733d2275726e3a696574663a706172616d733a786d6c3a6e733a67656f707269763a68656c64223e0a202020203c70726573656e636520656e746974793d22707265733a67787074697874696d6870306c66372220786d6c6e733d2275726e3a696574663a706172616d733a786d6c3a6e733a70696466223e0a20202020202020203c7475706c652069643d2239676d646972636671616a796c7931223e0a2020202020202020202020203c7374617475733e0a202020202020202020202020202020203c67656f7072697620786d6c6e733d2275726e3a696574663a706172616d733a786d6c3a6e733a706964663a67656f707269763130223e0a20202020202020202020202020202020202020203c6c6f636174696f6e2d696e666f3e0a2020202020202020202020202020202020202020202020203c67733a436972636c6520786d6c6e733a676d6c3d22687474703a2f2f7777772e6f70656e6769732e6e65742f676d6c22207372734e616d653d2275726e3a6f67633a6465663a6372733a455053473a3a343332362220786d6c6e733a67733d22687474703a2f2f7777772e6f70656e6769732e6e65742f706964666c6f2f312e30223e0a202020202020202020202020202020202020202020202020202020203c676d6c3a706f733e34382e323135333837392031362e323930333c2f676d6c3a706f733e0a202020202020202020202020202020202020202020202020202020203c67733a72616469757320756f6d3d2275726e3a6f67633a6465663a756f6d3a455053473a3a39303031223e32332e3630303030303338313436393732373c2f67733a7261646975733e0a2020202020202020202020202020202020202020202020203c2f67733a436972636c653e0a20202020202020202020202020202020202020203c2f6c6f636174696f6e2d696e666f3e0a20202020202020202020202020202020202020203c75736167652d72756c65732f3e0a20202020202020202020202020202020202020203c6d6574686f643e6770733c2f6d6574686f643e0a202020202020202020202020202020203c2f67656f707269763e0a2020202020202020202020203c2f7374617475733e0a2020202020202020202020203c74696d657374616d703e323031372d30322d31395431303a35353a30302b30303a30303c2f74696d657374616d703e0a20202020202020203c2f7475706c653e0a202020203c2f70726573656e63653e0a3c2f6c6f636174696f6e526573706f6e73653e0a'O); + var bitstring v_enc_raw_message; + var template (present) HttpMessage v_expected_msg := { request := { method := "POST", uri := "/lis/api/held", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "rpi:8071" } }, { header_name := "Content-Type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-Length", header_value := { "297" } } }, body := { xml_body := { raw := ?/*v_expected_xml_body*/ } } } }; + var HttpMessage v_dec_msg; + var integer v_result; + + v_result := decvalue(v_raw_message, v_dec_msg); + if (v_result == 0) { + if (match(v_dec_msg, v_expected_msg)) { + setverdict(pass, "Decode match"); + } else { + setverdict(fail, "Mismatch values"); + } + } else { + setverdict(fail, "Decode failure"); + } + + v_enc_raw_message := encvalue(v_dec_msg); + if (not isbound(v_enc_raw_message)) { + setverdict(fail, "Encoding failed!"); + } else { + if (match(v_enc_raw_message, v_raw_message)) { + setverdict(pass, "Encode match"); + } else { + setverdict(fail, "Encoding mismatch"); + } + } + + } // End of testcase tc_http_200_ok_1 + + control { + execute(tc_http_200_ok_1()); + } + +} // End of module TestCodec_HttpResponse -- GitLab From 3625b55aeb832f37144e9e0f529a0fafb4f2cc3b Mon Sep 17 00:00:00 2001 From: Garcia Date: Wed, 30 May 2018 18:03:17 +0200 Subject: [PATCH 13/72] Create TTCN-3 tests for HTTP codec --- ttcn/TestCodec/TestCodec_HttpResponse.ttcn | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/ttcn/TestCodec/TestCodec_HttpResponse.ttcn b/ttcn/TestCodec/TestCodec_HttpResponse.ttcn index e0a1d78..702f50a 100644 --- a/ttcn/TestCodec/TestCodec_HttpResponse.ttcn +++ b/ttcn/TestCodec/TestCodec_HttpResponse.ttcn @@ -27,7 +27,7 @@ module TestCodec_HttpResponse { testcase tc_http_200_ok_1() runs on TCType system TCType { var bitstring v_raw_message := oct2bit('485454502f312e3120323030200d0a582d436f6e74656e742d547970652d4f7074696f6e733a206e6f736e6966660d0a582d5853532d50726f74656374696f6e3a20313b206d6f64653d626c6f636b0d0a43616368652d436f6e74726f6c3a206e6f2d63616368652c206e6f2d73746f72652c206d61782d6167653d302c206d7573742d726576616c69646174650d0a507261676d613a206e6f2d63616368650d0a457870697265733a20300d0a436f6e74656e742d547970653a206170706c69636174696f6e2f68656c642b786d6c3b636861727365743d5554462d380d0a436f6e74656e742d4c656e6774683a20313030340d0a446174653a205475652c203239204d617920323031382031333a32383a353920474d540d0a0d0a3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e0a3c6c6f636174696f6e526573706f6e736520786d6c6e733d2275726e3a696574663a706172616d733a786d6c3a6e733a67656f707269763a68656c64223e0a202020203c70726573656e636520656e746974793d22707265733a67787074697874696d6870306c66372220786d6c6e733d2275726e3a696574663a706172616d733a786d6c3a6e733a70696466223e0a20202020202020203c7475706c652069643d2239676d646972636671616a796c7931223e0a2020202020202020202020203c7374617475733e0a202020202020202020202020202020203c67656f7072697620786d6c6e733d2275726e3a696574663a706172616d733a786d6c3a6e733a706964663a67656f707269763130223e0a20202020202020202020202020202020202020203c6c6f636174696f6e2d696e666f3e0a2020202020202020202020202020202020202020202020203c67733a436972636c6520786d6c6e733a676d6c3d22687474703a2f2f7777772e6f70656e6769732e6e65742f676d6c22207372734e616d653d2275726e3a6f67633a6465663a6372733a455053473a3a343332362220786d6c6e733a67733d22687474703a2f2f7777772e6f70656e6769732e6e65742f706964666c6f2f312e30223e0a202020202020202020202020202020202020202020202020202020203c676d6c3a706f733e34382e323135333837392031362e323930333c2f676d6c3a706f733e0a202020202020202020202020202020202020202020202020202020203c67733a72616469757320756f6d3d2275726e3a6f67633a6465663a756f6d3a455053473a3a39303031223e32332e3630303030303338313436393732373c2f67733a7261646975733e0a2020202020202020202020202020202020202020202020203c2f67733a436972636c653e0a20202020202020202020202020202020202020203c2f6c6f636174696f6e2d696e666f3e0a20202020202020202020202020202020202020203c75736167652d72756c65732f3e0a20202020202020202020202020202020202020203c6d6574686f643e6770733c2f6d6574686f643e0a202020202020202020202020202020203c2f67656f707269763e0a2020202020202020202020203c2f7374617475733e0a2020202020202020202020203c74696d657374616d703e323031372d30322d31395431303a35353a30302b30303a30303c2f74696d657374616d703e0a20202020202020203c2f7475706c653e0a202020203c2f70726573656e63653e0a3c2f6c6f636174696f6e526573706f6e73653e0a'O); var bitstring v_enc_raw_message; - var template (present) HttpMessage v_expected_msg := { request := { method := "POST", uri := "/lis/api/held", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "rpi:8071" } }, { header_name := "Content-Type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-Length", header_value := { "297" } } }, body := { xml_body := { raw := ?/*v_expected_xml_body*/ } } } }; + var template (present) HttpMessage v_expected_msg := { response := { version_major := 1, version_minor := 1, statuscode := 200, statustext := "", header := { { header_name := "X-Content-Type-Options", header_value := { "nosniff" } }, { header_name := "X-XSS-Protection", header_value := { "1; mode=block" } }, { header_name := "Cache-Control", header_value := { "no-cache, no-store, max-age=0, must-revalidate" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Expires", header_value := { "0" } }, { header_name := "Content-Type", header_value := { "application/held+xml;charset=UTF-8" } }, { header_name := "Content-Length", header_value := { "1004" } }, { header_name := "Date", header_value := { "Tue, 29 May 2018 13:28:59 GMT" } } }, body := { xml_body := { raw := ?/*v_expected_xml_body*/ } } } }; var HttpMessage v_dec_msg; var integer v_result; @@ -46,7 +46,19 @@ module TestCodec_HttpResponse { if (not isbound(v_enc_raw_message)) { setverdict(fail, "Encoding failed!"); } else { - if (match(v_enc_raw_message, v_raw_message)) { + // Raw HTTP response does not end with CRLF ==> Content-Length are different + var bitstring v1 := substr(v_enc_raw_message, 0, 240 * 8); // Byte #240..244: 31303034 + var bitstring v2 := substr(v_raw_message, 0, 240 * 8); // Byte #240..244: 31303035 + if (match(v1, v2)) { + setverdict(pass, "Encode match"); + } else { + setverdict(fail, "Encoding mismatch"); + } + v1 := substr(v_enc_raw_message, 244 * 8, lengthof(v_enc_raw_message) - (244 + 2) * 8); + v2 := substr(v_raw_message, 244 * 8, lengthof(v_raw_message) - (244 + 1) * 8); + log("v1=", bit2oct(v1)); + log("v2=", bit2oct(v2)); + if (match(v1, v2)) { setverdict(pass, "Encode match"); } else { setverdict(fail, "Encoding mismatch"); -- GitLab From 0035ae546a3cc8e995adf2a336043f18c82fff32 Mon Sep 17 00:00:00 2001 From: Garcia Date: Thu, 31 May 2018 10:34:37 +0200 Subject: [PATCH 14/72] Add TestAdapter/Codecs --- ccsrc/Framework/include/codec.hh | 64 +++ ccsrc/Framework/include/converter.hh | 356 +++++++++++++++ ccsrc/Framework/include/layer.hh | 144 ++++++ ccsrc/Framework/include/layer_factory.hh | 114 +++++ .../Framework/include/layer_stack_builder.hh | 67 +++ ccsrc/Framework/include/loggers.hh | 289 ++++++++++++ ccsrc/Framework/include/params.hh | 85 ++++ ccsrc/Framework/include/t_layer.hh | 72 +++ ccsrc/Framework/src/converter.cc | 135 ++++++ ccsrc/Framework/src/layer_factory.cc | 71 +++ ccsrc/Framework/src/loggers.cc | 4 + ccsrc/Framework/src/params.cc | 89 ++++ ccsrc/Ports/LibHttp/HttpPort.cc | 113 +++++ ccsrc/Ports/LibHttp/HttpPort.hh | 46 ++ ccsrc/Protocols/ETH/ethernet_layer.cc | 82 ++++ ccsrc/Protocols/ETH/ethernet_layer.hh | 48 ++ ccsrc/Protocols/ETH/ethernet_layer_factory.hh | 45 ++ ccsrc/Protocols/Http/http_codec.cc | 418 ++++++++++++++++++ ccsrc/Protocols/Http/http_codec.hh | 59 +++ ccsrc/Protocols/Http/http_layer.cc | 94 ++++ ccsrc/Protocols/Http/http_layer.hh | 82 ++++ ccsrc/Protocols/Http/http_layer_factory.hh | 45 ++ ccsrc/Protocols/Pcap/pcap_layer.cc | 264 +++++++++++ ccsrc/Protocols/Pcap/pcap_layer.hh | 73 +++ ccsrc/Protocols/Pcap/pcap_layer_factory.hh | 49 ++ ccsrc/Protocols/Tcp/tcp_layer.cc | 177 ++++++++ ccsrc/Protocols/Tcp/tcp_layer.hh | 99 +++++ ccsrc/Protocols/Tcp/tcp_layer_factory.hh | 44 ++ ccsrc/Protocols/UDP/udp_layer.cc | 125 ++++++ ccsrc/Protocols/UDP/udp_layer.hh | 97 ++++ ccsrc/Protocols/UDP/udp_layer_factory.hh | 44 ++ etc/AtsNg112/AtsNg112.cfg | 2 +- etc/TestCodec/TestCodec.cfg | 15 +- testdata/SIP_ACK_Request.pcap | Bin 0 -> 645 bytes testdata/SIP_BYE_Request.pcap | Bin 0 -> 714 bytes testdata/SIP_INVITE_Request.pcap | Bin 0 -> 653 bytes testdata/SIP_INVITE_Request_sdp.pcap | Bin 0 -> 650 bytes testdata/SIP_MESSAGE_Request.pcap | Bin 0 -> 492 bytes testdata/SIP_REGISTER_Request.pcap | Bin 0 -> 528 bytes testdata/SIP_STATUS_100trying.pcap | Bin 0 -> 599 bytes testdata/SIP_STATUS_200ok.pcap | Bin 0 -> 893 bytes ttcn/TestCodec/TestCodec_HttpPort.ttcn | 62 +++ 42 files changed, 3567 insertions(+), 6 deletions(-) create mode 100644 ccsrc/Framework/include/codec.hh create mode 100644 ccsrc/Framework/include/converter.hh create mode 100644 ccsrc/Framework/include/layer.hh create mode 100644 ccsrc/Framework/include/layer_factory.hh create mode 100644 ccsrc/Framework/include/layer_stack_builder.hh create mode 100644 ccsrc/Framework/include/loggers.hh create mode 100644 ccsrc/Framework/include/params.hh create mode 100644 ccsrc/Framework/include/t_layer.hh create mode 100644 ccsrc/Framework/src/converter.cc create mode 100644 ccsrc/Framework/src/layer_factory.cc create mode 100644 ccsrc/Framework/src/loggers.cc create mode 100644 ccsrc/Framework/src/params.cc create mode 100644 ccsrc/Ports/LibHttp/HttpPort.cc create mode 100644 ccsrc/Ports/LibHttp/HttpPort.hh create mode 100644 ccsrc/Protocols/ETH/ethernet_layer.cc create mode 100644 ccsrc/Protocols/ETH/ethernet_layer.hh create mode 100644 ccsrc/Protocols/ETH/ethernet_layer_factory.hh create mode 100644 ccsrc/Protocols/Http/http_codec.cc create mode 100644 ccsrc/Protocols/Http/http_codec.hh create mode 100644 ccsrc/Protocols/Http/http_layer.cc create mode 100644 ccsrc/Protocols/Http/http_layer.hh create mode 100644 ccsrc/Protocols/Http/http_layer_factory.hh create mode 100644 ccsrc/Protocols/Pcap/pcap_layer.cc create mode 100644 ccsrc/Protocols/Pcap/pcap_layer.hh create mode 100644 ccsrc/Protocols/Pcap/pcap_layer_factory.hh create mode 100644 ccsrc/Protocols/Tcp/tcp_layer.cc create mode 100644 ccsrc/Protocols/Tcp/tcp_layer.hh create mode 100644 ccsrc/Protocols/Tcp/tcp_layer_factory.hh create mode 100644 ccsrc/Protocols/UDP/udp_layer.cc create mode 100644 ccsrc/Protocols/UDP/udp_layer.hh create mode 100644 ccsrc/Protocols/UDP/udp_layer_factory.hh create mode 100644 testdata/SIP_ACK_Request.pcap create mode 100644 testdata/SIP_BYE_Request.pcap create mode 100644 testdata/SIP_INVITE_Request.pcap create mode 100644 testdata/SIP_INVITE_Request_sdp.pcap create mode 100644 testdata/SIP_MESSAGE_Request.pcap create mode 100644 testdata/SIP_REGISTER_Request.pcap create mode 100644 testdata/SIP_STATUS_100trying.pcap create mode 100644 testdata/SIP_STATUS_200ok.pcap create mode 100644 ttcn/TestCodec/TestCodec_HttpPort.ttcn diff --git a/ccsrc/Framework/include/codec.hh b/ccsrc/Framework/include/codec.hh new file mode 100644 index 0000000..ce09607 --- /dev/null +++ b/ccsrc/Framework/include/codec.hh @@ -0,0 +1,64 @@ +/*! + * \file codec.hh + * \brief Header file for ITS abstract codec definition. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "params.hh" + +class OCTETSTRING; //! Declare TITAN class +class CHARSTRING; //! Declare TITAN class +class BITSTRING; //! Declare TITAN class + +/*! + * \class codec + * \brief This class provides the interface for all ITS codecs, include UT and AC codecs + * \abstract + */ +template +class codec +{ +protected: + params* _params; //! Reference to params stack + // \todo Use smart pointer std::unique_ptr + +public: //! \publicsection + /*! + * \fn codec(); + * \brief Default constructor + * \todo Remove logs + */ + explicit codec() : _params(nullptr) { }; + /*! + * \fn ~codec(); + * \brief Default destructor + * \virtual + * \todo Remove logs + */ + virtual ~codec() { }; + /*! + * \fn int encode(const TPDUEnc& msg, OCTETSTRING& data); + * \brief Encode typed message into an octet string + * \param[in] p_message The typed message to be encoded + * \param[out] p_data The encoding result + * \return 0 on success, -1 otherwise + * \pure + */ + virtual int encode(const TPDUEnc& p_message, OCTETSTRING& p_data) = 0; + /*! + * \fn int decode(const OCTETSTRING& p_, TPDUDec& p_message, params* p_params = NULL); + * \brief Encode typed message into an octet string format + * \param[in] p_data The message in its octet string + * \param[out] p_message The decoded typed message + * \return 0 on success, -1 otherwise + * \pure + */ + virtual int decode(const OCTETSTRING& p_, TPDUDec& p_message, params* p_params = NULL) = 0; +}; // End of class codec + diff --git a/ccsrc/Framework/include/converter.hh b/ccsrc/Framework/include/converter.hh new file mode 100644 index 0000000..5d67984 --- /dev/null +++ b/ccsrc/Framework/include/converter.hh @@ -0,0 +1,356 @@ +/*! + * \file converter.hh + * \brief Helper class for types converter. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include // LONG_MAX, LLONG_MAX +#include // time_t, struct tm, difftime, time, mktime + +/*! + * \class converter + * \brief This class provide a set of methods for types conversions + * \remark Singleton pattern + */ +class converter { + + /*! + * \brief Unique static object reference of this class + */ + static converter * instance; + + /*! + * \brief Default private ctor + */ + converter() {}; + /*! + * \brief Default private dtor + */ + ~converter() { + if (instance != NULL) { + delete instance; + instance = NULL; + } + }; + +public: /*! \publicsection */ + /*! + * \brief Public accessor to the single object reference + */ + inline static converter & get_instance() { + if (instance == NULL) instance = new converter(); + return *instance; + }; + +public: + /*! + * \enum endian_t + * \brief Endianess style + */ + typedef enum { + big_endian, + little_endian + } endian_t; + +public: + /*! + * \brief Convert a Binary Coded Decimal value into a binary value + * \param[in] p_value The BDC value + * \return The binary value + * \inline + */ + inline uint8_t bcd_to_bin(const uint8_t p_value) { + return ((p_value / 16 * 10) + (p_value % 16)); + }; + + /*! + * \brief Convert a binary value into a Binary Coded Decimal value + * \param[in] p_value The binary value + * \return The BCD value + * \inline + */ + inline uint8_t bin_to_bcd(const uint8_t p_value) { + return ((p_value / 10 * 16) + (p_value % 10)); + }; + + /*! + * \brief Swap two bytes length value (e.g. 0xCAFE becomes 0xFECA) + * \param[in] p_value The value to swap + * \return The swapped value + * \inline + */ + uint16_t swap(const uint16_t p_value); + inline int16_t swap(const int16_t p_value) { + return static_cast(swap(static_cast(p_value))); + }; + /*! + * \brief Swap four bytes length value (used for littel endian / big endian) + * \param[in] p_value The value to swap + * \return The swapped value + */ + uint32_t swap(const uint32_t p_value); + inline int32_t swap(const int32_t p_value) { + return static_cast(swap(static_cast(p_value))); + }; + + /*! + * \brief Convert a string into an hexadecimal string + * \param[in] p_value The string value + * \return The hexadecimal value + */ + std::string string_to_hexa(const std::string & p_value); + /*! + * \brief Convert a bytes array int32_t an hexadecimal string + * \param[in] p_value The bytes array value + * \return The hexadecimal value + */ + std::string bytes_to_hexa(const std::vector & p_value); + /*! + * \brief Convert an hexadecimal string into a bytes array + * \param[in] p_value The hexadecimal value + * \return The bytes array value + */ + std::vector hexa_to_bytes(const std::string & p_value); + + /*! + * \brief Convert a time in time_t format into a string formated according to RFC 822, 1036, 1123, 2822 + * \param[in] p_time The time to convert in time_t format + * \return The time string formated + * \see http://www.unixtimestamp.com/ + * @code + * std::string result = time_to_string(1489755780); + * result.compare("Fri, 17 Mar 2017 13:03:00 +0000") == 0 // When time zone is set to UTC + * @endcode + * \remark Use commands 1) timedatectl to change your machine timezone (e.g. sudo timedatectl set-timezone UTC to change machine timezone to UTC, 2) timedatectl list-timezones to get the list of the timezones) + */ + std::string time_to_string(const time_t p_time); + /*! + * \brief Convert a time in struct tm format into a string formated according to RFC 822, 1036, 1123, 2822 + * \param[in] p_time The time to convert in struct tm format + * \return The time string formated + * \see http://www.unixtimestamp.com/ + */ + std::string time_to_string(const struct tm & p_time); + + /*! + * \brief Convert a 16-bits integer (int16_t) into a bytes array + * \param[in] p_value The 16-bits integer value + * \param[in] p_endianess Endianess style. Default: big_endian + * \return The bytes array value + */ + inline std::vector short_to_bytes(const int16_t p_value, const endian_t p_endianess = big_endian) const { + std::vector result(sizeof(short), 0x00); + for (int i = sizeof(short) - 1; i >= 0; i--) { + int offset = (sizeof(short) - 1 - i) * 8; + result[i] = static_cast((p_value >> offset) & 0xFF); + } // End of 'for' statement + return result; + }; // End of short_to_bytes + + /*! + * \brief Convert a bytes array into a 16-bits integer (int16_t) + * \param[in] p_value The bytes array + * \param[in] p_endianess Endianess style. Default: big_endian + * \return The 16-bits integer on success, SHRT_MAX on error (wrong bytes array size) + */ + inline int16_t bytes_to_short(const std::vector & p_value, const endian_t p_endianess = big_endian) const { + // Sanity check + if (p_value.size() > sizeof(short)) { + return SHRT_MAX; + } + int16_t value = 0; + for (size_t i = 0; i < p_value.size(); i++) { + value = (value << 8) + (p_value[i] & 0xff); + } // End of 'for' statement + return value; + }; // End of bytes_to_short + + /*! + * \brief Convert a 32-bits integer (int32_t) into a bytes array + * \param[in] p_value The 32-bits integer value + * \param[in] p_endianess Endianess style. Default: big_endian + * \return The bytes array value + */ + inline std::vector int_to_bytes(const int32_t p_value, const endian_t p_endianess = big_endian) const { + /*uint8_t bytes[sizeof(p_value)]; + std::copy( + static_cast(static_cast(&p_value)), + static_cast(static_cast(&p_value)) + sizeof(p_value), + bytes + ); + std::vector result(bytes, bytes + sizeof(bytes) / sizeof(uint8_t));*/ + std::vector result(sizeof(int), 0x00); + for (int i = sizeof(int) - 1; i >= 0; i--) { + int offset = (sizeof(int) - 1 - i) * 8; + result[i] = static_cast((p_value >> offset) & 0xFF); + } // End of 'for' statement + return result; + }; // End of int_to_bytes + + /*! + * \brief Convert a bytes array into a 32-bits integer (int32_t) + * \param[in] p_value The bytes array + * \param[in] p_endianess Endianess style. Default: big_endian + * \return The 32-bits integer on success, LONG_MAX on error (wrong bytes array size) + */ + inline int32_t bytes_to_int(const std::vector & p_value, const endian_t p_endianess = big_endian) const { + // Sanity check + if (p_value.size() > sizeof(int)) { + return INT_MAX; + } + int32_t value = 0; + for (size_t i = 0; i < p_value.size(); i++) { + value = (value << 8) + (p_value[i] & 0xff); + } // End of 'for' statement + return value; + // return *((int *)(&p_value[0])); + }; // End of bytes_to_int + + /*! + * \brief Convert a 64-bits integer (int64_t) into a bytes array + * \param[in] p_value The 64-bits integer value + * \param[in] p_endianess Endianess style. Default: big_endian + * \return The bytes array value + */ + inline std::vector long_to_bytes(const int64_t p_value, const endian_t p_endianess = big_endian) const { + /*uint8_t bytes[sizeof(p_value)]; + std::copy( + static_cast(static_cast(&p_value)), + static_cast(static_cast(&p_value)) + sizeof(p_value), + bytes + ); + std::vector result(bytes, bytes + sizeof(bytes) / sizeof(uint8_t));*/ + std::vector result(sizeof(int64_t), 0x00); + for (int i = sizeof(int64_t) - 1; i >= 0; i--) { + int offset = (sizeof(int64_t) - 1 - i) * 8; + result[i] = static_cast((p_value >> offset) & 0xFF); + } // End of 'for' statement + return result; + }; // End of long_to_bytes + + /*! + * \brief Convert a bytes array into a 64-bits integer (int64_t) + * \param[in] p_value The bytes array + * \param[in] p_endianess Endianess style. Default: big_endian + * \return The 64-bits integer on success, LLONG_MAX on error (wrong bytes array size) + */ + inline int64_t bytes_to_long(const std::vector & p_value, const endian_t p_endianess = big_endian) const { + // Sanity check + if (p_value.size() > sizeof(int64_t)) { + return LLONG_MAX; + } + int64_t value = 0; + for (size_t i = 0; i < p_value.size(); i++) { + value = (value << 8) + (p_value[i] & 0xff); + } // End of 'for' statement + return value; + // return *((long *)(&p_value[0])); + }; // End of bytes_to_long + + /*! + * \brief Convert a float value into a bytes array + * \param[in] p_value The float value + * \return The bytes array value + */ + inline std::vector float_to_bytes(const float p_value) const { + uint8_t bytes[sizeof(p_value)]; + std::copy( + static_cast(static_cast(&p_value)), + static_cast(static_cast(&p_value)) + sizeof(p_value), + bytes + ); + std::vector result(bytes, bytes + sizeof(bytes) / sizeof(uint8_t)); + return result; + }; // End of float_to_long + + /*! + * \brief Convert a bytes array into a float + * \param[in] p_value The bytes array + * \return The float value + */ + inline float bytes_to_float(const std::vector & p_value) const { + return *((float *)(&p_value[0])); + }; // End of bytes_to_float + + /*! + * \brief Convert a string into a bytes array + * \param[in] p_value The string value + * \return The bytes array value + */ + inline std::vector string_to_bytes(const std::string & p_value) const { + return std::vector(p_value.begin(), p_value.end()); + }; // End of string_to_bytes + + /*! + * \brief Convert a bytes array into a string + * \param[in] p_value The bytes array value + * \return The string value + */ + inline std::string bytes_to_string(const std::vector & p_value) const { + return std::string(p_value.begin(), p_value.end()); + }; // End of bytes_to_string + +public: + /*! + * \brief Convert a string into an integer + * \param[in] p_value The string value + * \return The integer value + */ + inline int32_t string_to_int(const std::string & p_value) const { + return std::stoi(p_value); + //return atoi(p_value.c_str()); + }; // End of string_to_int + + /*! + * \brief Convert an integer into a string + * \param[in] p_value The integer value + * \return The string value + */ + inline std::string int_to_string(const int32_t & p_value) const { + std::ostringstream ss; + ss << p_value; + return ss.str(); + }; // End of string_to_bytes + +public: + + /*! + * \brief Returns a copy of the string, with leading and trailing special characters omitted + * \param[in] p_value The string value + * \param[in] p_trim_chars The special characters to be omitted. Default: ' ' and TAB + * \return The new string value + */ + std::string trim(const std::string& p_value, const std::string& p_trim_chars = " \t"); + + /*! + * \brief Convert the provided string into a list of arguments + * \param[in] p_value The string value + * \return The arguments list + * \code{.cc} + * std::string str = "--host localhost --port 12345 --duration -1"; + * std::vector tokens = converter::get_instance().split_arguments_line(str); + * std::clog << "Tokens: " << std::endl; + * for (auto it = tokens.begin(); it != tokens.end(); ++it) { + * std::clog << " " << *it << std::endl; + * } + * \endcode + */ + std::vector split_arguments_line(const std::string & p_value); + +}; // End of class converter diff --git a/ccsrc/Framework/include/layer.hh b/ccsrc/Framework/include/layer.hh new file mode 100644 index 0000000..abd4eae --- /dev/null +++ b/ccsrc/Framework/include/layer.hh @@ -0,0 +1,144 @@ +/*! + * \file layer.hh + * \brief Header file for ITS abstract protocol layer definition. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include +#include +#include +#include + +#include "params.hh" + +class OCTETSTRING; //! Forward declaration of TITAN class +class BITSTRING; //! Forward declaration of TITAN class +class CHARSTRING; //! Forward declaration of TITAN class +class INTEGER; //! Forward declaration of TITAN class + +/*! + * \class layer + * \brief This class provides basic description of an ITS protocol layer + */ +class layer { + std::vector upperLayers; //! List of the upper protocol layers + std::vector lowerLayers; //! List of the lower protocol layers + +protected: + std::string type; //! Type description, it indicates the protocol type (e.g. CAM, DENM, GN, ETH, PCAP...) + +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the layer class + */ + explicit layer() : upperLayers(), lowerLayers(), type(std::string("")) { }; + + /*! + * \brief Specialized constructor + * Create a new instance of the layer class with its type description + * \param[in] p_type The port type name (e.g. GN for the GeoNetworking layer) + * \remark This constructor is called by the layer factory + * \see layer_factory + */ + explicit layer(const std::string& p_type) : upperLayers(), lowerLayers(), type(std::string(p_type.begin(), p_type.end())) { }; + + /*! + * \brief Default destructor + * \todo Remove logs + */ + virtual ~layer() { + // Double linked list, only remove layers in lowerLayers from the lowest one + std::for_each(lowerLayers.rbegin(), lowerLayers.rend(), [](layer* it) { delete it; } ); + lowerLayers.clear(); + upperLayers.clear(); + }; + + /*! + * \fn void delete_layer(); + * \brief Delete this layer + * \todo To be implemented + */ + void delete_layer() { }; + +public: //! \publicsection + /*! + * \inline + * \fn void add_upper_layer(layer* p_layer); + * \brief Add a new layer in the list of the upper layer + * \param[in] p_layer The layer protocol to be removed + */ + inline void add_upper_layer(layer* p_layer) { + if (p_layer != NULL) { + upperLayers.push_back(p_layer); + p_layer->lowerLayers.push_back(this); + }; + }; + + /*! + * \fn void remove_upper_layer(layer* p_layer); + * \brief Remove the specified upper layer protocol from the list of the upper layer + * \param[in] p_layer The layer protocol to be removed + * \todo To be implemented + */ + void remove_upper_layer(layer* p_layer) { }; + + /*! + * \virtual + * \fn void send_data(OCTETSTRING& data, params& params); + * \brief Send bytes formated data to the lower layers + * \param[in] p_data The data to be sent + * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters + * \todo Remove the logs + * \virtual + */ + virtual void send_data(OCTETSTRING& p_data, params& p_params) { }; + + /*! + * \virtual + * \fn void receive_data(OCTETSTRING& data, params& params); + * \brief Receive bytes formated data from the lower layers + * \param[in] p_data The bytes formated data received + * \param[in] p_params Some lower layers parameters values when data was received + * \todo Remove the logs + * \virtual + */ + virtual void receive_data(OCTETSTRING& p_data, params& p_params) { } + + /*! + * \inline + * \fn const std::string& to_string(); + * \brief Remove the specified upper layer protocol from the list of the upper layer + * \param[in] The layer protocol to be removed + */ + inline const std::string& to_string() const { return type; }; + +protected: //! \protectedsection + inline void to_all_layers(std::vector&layers, OCTETSTRING& data, params& params) { + for (std::vector::const_iterator it = layers.cbegin(); it != layers.cend(); ++it) { + layer* p = *it; + p->receive_data(data, params); // FIXME BUG I + } // End of 'for' statement + }; + + inline void receive_to_all_layers(OCTETSTRING& data, params& params) { + for (std::vector::const_iterator it = upperLayers.cbegin(); it != upperLayers.cend(); ++it) { + layer* p = *it; + p->receive_data(data, params); + } // End of 'for' statement + }; + + inline void send_to_all_layers(OCTETSTRING& data, params& params) { + for (std::vector::const_iterator it = lowerLayers.cbegin(); it != lowerLayers.cend(); ++it) { + layer* p = *it; + p->send_data(data, params); + } // End of 'for' statement + }; +}; // End of class layer + diff --git a/ccsrc/Framework/include/layer_factory.hh b/ccsrc/Framework/include/layer_factory.hh new file mode 100644 index 0000000..c66fdc3 --- /dev/null +++ b/ccsrc/Framework/include/layer_factory.hh @@ -0,0 +1,114 @@ +/*! + * \file layer_factory.hh + * \brief Header file for ITS abstract protocol layer definition. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include +#include +#include +#include + +#include "layer.hh" + +/*! + * \class layer_factory + * \brief This class provides a factory class to create layer class instances + * \abstract + */ +class layer_factory { +public: //! \publicsection + /*! + * \fn codec(); + * \brief Default constructor + */ + layer_factory() {}; + /*! + * \fn layer* create_layer(const std::string & type, const std::string & param); + * \brief Create the layers stack based on the provided layers stack description (cf. remark) + * \param[in] p_type The provided layers stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + * \remark The description below introduces layers stack in case of ITS project: + * CAM layer + * next_header : btpA|btpB (overwrite BTP.type) + * header_type : tsb|gbc + * header_sub_type : sh (single hop) + * DENM layer + * next_header : btpA|btpB (overwrite BTP.type) + * header_type : tsb|gbc + * BTP layer + * type : btpA|btpB + * destination port: dst_port + * source port : src_port + * device_mode : Set to 1 if the layer shall encapsulate upper layer PDU + * GN layer + * its_aid : ITS AID as defined by ETSI TS 102 965 V1.2.1. Default: 141 + * ll_address : GeoNetworking address of the Test System + * latitude : latitude of the Test System + * longitude : longitude of the Test System + * beaconing : Set to 1 if GnLayer shall start beaconing + * Beaconing timer expiry : expiry (ms) + * device_mode : Set to 1 if the layer shall encapsulate upper layer PDU + * secured_mode : Set to 1 if message exchanges shall be signed + * encrypted_mode : Set to 1 if message exchanges shall be encrypted + * NOTE: For signed & encrypted message exchanges, both secured_mode and encrypted_mode shall be set to 1 + * certificate : Certificate identifier the Test Adapter shall use + * secure_db_path : Path to the certificates and keys storage location + * hash : Hash algorithm to be used when secured mode is set + * Authorized values are SHA-256 or SHA-384 + * Default: SHA-256 + * signature : Signature algorithm to be used when secured mode is set + * Authorized values are NISTP-256, BP-256 and BP-384 + * Default: NISTP-256 + * cypher : Cyphering algorithm to be used when secured mode is set + * Ethernet layer + * mac_src :Source MAC address + * mac_bc :Broadcast address + * eth_type : Ethernet type + * Commsignia layer + * mac_src : Device MAC address, used to discard packets + * To indicate no filering, use the value 000000000000 + * mac_bc : Broadcast address + * eth_type : Ethernet type, used to discard packets + * target_host : Device address + * target_port : Device port + * source_port : Test System port + * interface_id: Interface id, used to discard packets + * tx_power : TX power (dB) + * UDP layer (IP/UDP based on Pcap) + * dst_ip : destination IPv4 address (aa.bb.cc.dd) + * dst_port: destination port + * src_ip : source IPv4 address (aa.bb.cc.dd) + * src_port: source port + * Pcap layer + * mac_src : Source MAC address, used to exclude from capture the acket sent by the Test System + * filter : Pcap filter (compliant with tcpdump syntax) + * E.g. filter=and ether src 04e548000001 + * Online mode: + * nic: Local NIC + * If set, online mode is used + * Offline mode (nic is present but not set): + * file : File to read + * frame_offset: Frame offset, used to skip packets with frame number < frame_offset + * time_offset : Time offset, used to skip packets with time offset < time_offset + * save_mode : 1 to save sent packet, 0 otherwise + * Here are some examples: + * GeoNetworking multiple component case: + * NodeB.geoNetworkingPort.params := "GN(ll_address=04e548000001,latitude=43551050,longitude=10298730,beaconing=0,expiry=1000,its_aid=141)/COMMSIGNIA(mac_src=04e548000001,mac_bc=FFFFFFFFFFFF,eth_type=8947,target_host=10.200.1.101,target_port=7942,source_port=7943,its_aid=141,interface_id=2,tx_power=-32)/UDP(dst_ip=192.168.56.1,dst_port=12346,src_ip=192.168.156.4,src_port=12345)/ETH(mac_src=04e548000001,mac_dst=0A0027000011,eth_type=0800)/PCAP(mac_src=04e548000001,file=/home/vagrant/TriesAndDelete/etsi_its/testdata/TC_AUTO_IOT_DENM_RWW_BV_01_short.pcap,filter=and (udp port 30000 or udp port 7943))" +NodeC.geoNetworkingPort.params := "GN(ll_address=70b3d5791b48,latitude=43551050,longitude=10298730,beaconing=0,expiry=1000,its_aid=141)/COMMSIGNIA(mac_src=70b3d5791b48,mac_bc=FFFFFFFFFFFF,eth_type=8947,target_host=10.200.1.101,target_port=7942,source_port=7943,its_aid=141,interface_id=2,tx_power=-32)/UDP(dst_ip=192.168.56.1,dst_port=12346,src_ip=192.168.156.4,src_port=12345)/ETH(mac_src=70b3d5791b48,mac_dst=0A0027000011,eth_type=0800)/PCAP(mac_src=70b3d5791b48,file=/home/vagrant/TriesAndDelete/etsi_its/testdata/TC_AUTO_IOT_DENM_RWW_BV_01_short.pcap,filter=and (udp port 30000 or udp port 7943))" + * NodeB.geoNetworkingPort.params := "GN(ll_address=04e548000001,latitude=43551050,longitude=10298730,beaconing=0,expiry=1000,its_aid=141)/ETH(mac_src=04e548000001,mac_dst=0A0027000011,eth_type=0800)/PCAP(mac_src=04e548000001,file=/home/vagrant/TriesAndDelete/etsi_its/testdata/TC_AUTO_IOT_DENM_RWW_BV_01.pcap,filter=and ether src 04e548000001)" +#NodeC.geoNetworkingPort.params := "GN(ll_address=70b3d5791b48,latitude=43551050,longitude=10298730,beaconing=0,expiry=1000,its_aid=141)/ETH(mac_src=70b3d5791b48,mac_dst=0A0027000011,eth_type=0800)/PCAP(mac_src=70b3d5791b48,file=/home/vagrant/TriesAndDelete/etsi_its/testdata/TC_AUTO_IOT_DENM_RWW_BV_01.pcap,filter=and ether src 70b3d5791b48)" + * UpperTester port based on UDP + * system.utPort.params := "UT_GN/UDP(dst_ip=192.168.1.1,dst_port=12346,src_ip=192.168.156.4,src_port=12345)/ETH(mac_src=026f8338c1e5,mac_dst=0A0027000011,eth_type=0800)/PCAP(mac_src=0800275c4959,nic=enp0s8,filter=and udp port 12346)" + * \pure + */ + virtual layer* create_layer(const std::string & p_type, const std::string & p_params) = 0; +}; // End of class layer_factory + diff --git a/ccsrc/Framework/include/layer_stack_builder.hh b/ccsrc/Framework/include/layer_stack_builder.hh new file mode 100644 index 0000000..7d3a000 --- /dev/null +++ b/ccsrc/Framework/include/layer_stack_builder.hh @@ -0,0 +1,67 @@ +/*! + * \file layer_stack_builder.hh + * \brief Header file for ITS protocol stack builder. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "layer_factory.hh" + +/*! + * \class layer_stack_builder + * \brief This class provides a factory class to create Layer class instances + */ +class layer_stack_builder { +private: //! \privatesection + typedef std::map LayerFactoryMap; + + static layer_stack_builder * _instance; //! Smart pointer to the unique instance of the logger framework + std::map _layer_factories; //! The list of the registered \see t_layer factories + + /*! + * \brief Default constructor + * Create a new instance of the layer_stack_builder class + * \private + */ + layer_stack_builder(); // can not be created manually +public: //! \publicsection + /*! + * \fn layer_stack_builder* get_instance(); + * \brief Accessor for the unique instance of the logger framework + * \static + */ + static layer_stack_builder* get_instance(); + + /*! + * \fn void register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory); + * \brief Add a new layer factory + * \param[in] p_type The layer identifier (e.g. GN for the GeoNetworking layer...) + * \param[in] p_layer_factory A reference to the \see layer_factory + * \static + */ + static void register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory); + +private: //! \privatesection + /*! + * \fn void _register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory); + * \brief Add a new layer factory + * \param[in] p_type The layer identifier (e.g. GN for the GeoNetworking layer...) + * \param[in] p_layer_factory A reference to the \see layer_factory + */ + void _register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory); + +public: //! \publicsection + /*! + * \fn layer* create_layer_stack(const char* p_layer_stack_description); + * \brief Add a new layer factory + * \param[in] p_layer_stack_description A textual description of the layer to create + * \return The created layer object on success, nullptr otherwise + */ + layer* create_layer_stack(const char* p_layer_stack_description); +}; // End of class layer_stack_builder + diff --git a/ccsrc/Framework/include/loggers.hh b/ccsrc/Framework/include/loggers.hh new file mode 100644 index 0000000..6f252f5 --- /dev/null +++ b/ccsrc/Framework/include/loggers.hh @@ -0,0 +1,289 @@ +/*! + * \file loogers.hh + * \brief Header file for the logger framework. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include +#include +#include +#include +#include + +/** +class Base_Type; +class OCTETSTRING; +class TTCN_Buffer; +class TTCN_Logger; +enum TTCN_Logger::Severity; +extern void TTCN_error(const char *err_msg, ...) __attribute__ ((__format__ (__printf__, 1, 2), __noreturn__)); +extern void TTCN_error_begin(const char *err_msg, ...) __attribute__ ((__format__ (__printf__, 1, 2))); +extern void TTCN_error_end() __attribute__ ((__noreturn__)); +void TTCN_warning(const char *warning_msg, ...) __attribute__ ((__format__ (__printf__, 1, 2))); +extern void TTCN_warning_begin(const char *warning_msg, ...) __attribute__ ((__format__ (__printf__, 1, 2))); +extern void TTCN_warning_end(); +**/ + +using namespace std; // Required for isnan() +#include + +/*! + * \class loggers + * \brief This class provides basic functionalities for an ITS dictionary + * \implements Singleton pattern + * \todo Remove reference to TTCN3.hh + */ +class loggers { +private: //! \privatesection + static std::unique_ptr _instance; //! Smart pointer to the unique instance of the logger framework + std::map _times; //! Timer used to measure execution time between calls to methods \loggers::set_start_time and \loggers::set_stop_time + + /*! + * \brief Default constructor + * Create a new instance of the loggers class + * \private + */ + explicit loggers() : _times() { }; + + inline void log_time_exec(const char *p_fmt, ...); + +public: //! \publicsection + /*! + * \brief Default destructor + */ + virtual ~loggers() {}; + + /*! + * \fn static loggers& get_instance(); + * \brief Accessor for the unique instance of the logger framework + * \inline + */ + static inline loggers& get_instance() { return *_instance.get(); }; + + /*! + * \fn void log_to_hexa(const char *p_prompt, const TTCN_Buffer& buffer); + * \brief Hexa dump of the \see TTCN_Buffer buffer + * \param[in] p_prompt Label of the log to be produced + * \param[in] buffer The TTCN_Buffer buffer to dump + * \inline + */ + inline void log_to_hexa(const char *p_prompt, const TTCN_Buffer& buffer); + /*! + * \fn void log_to_hexa(const char *p_prompt, const OCTETSTRING& msg); + * \brief Hexa dump of the \see OCTETSTRING buffer + * \param[in] p_prompt Label of the log to be produced + * \param[in] msg The OCTETSTRING buffer to dump + * \inline + */ + inline void log_to_hexa(const char *p_prompt, const OCTETSTRING& msg); + /*! + * \fn void log_to_hexa(const char *p_prompt, const unsigned char* msg, const size_t msg_size); + * \brief Hexa dump of the provided buffer + * \param[in] p_prompt Label of the log to be produced + * \param[in] msg The buffer to dump + * \inline + */ + inline void log_to_hexa(const char *p_prompt, const unsigned char* msg, const size_t msg_size); + /*! + * \fn void log_msg(const char *p_prompt, const Base_Type& p_type); + * \brief Debug log of TITAN data structures + * \param[in] p_prompt Label of the log to be produced + * \param[in] msg The TITAN data structure to log + * \inline + */ + inline void log_msg(const char *p_prompt, const Base_Type& p_type); + /*! + * \fn void log(const char *p_fmt, ...); + * \brief Debug message based on printf-compliant formatting message + * \param[in] p_fmt The printf-compliant format of the message to log + * \param[in] ... The arguments + * \inline + */ + inline void log(const char *p_fmt, ...); + + /*! + * \fn void user_msg(const char *p_prompt, const Base_Type& p_type); + * \brief User message of TITAN data structures + * \param[in] p_prompt Label of the log to be produced + * \param[in] msg The TITAN data structure to log + * \inline + */ + inline void user_msg(const char *p_prompt, const Base_Type& p_type); + /*! + * \fn void user(const char *p_fmt, ...); + * \brief User message based on printf-compliant formatting message + * \param[in] p_fmt The printf-compliant format of the message to log + * \param[in] ... The arguments + * \inline + */ + inline void user(const char *p_fmt, ...); + + /*! + * \fn void user_msg(const char *p_prompt, const Base_Type& p_type); + * \brief Warning message of TITAN data structures + * \param[in] p_prompt Label of the log to be produced + * \param[in] msg The TITAN data structure to log + * \inline + */ + inline void warning_msg(const char *p_prompt, const Base_Type& p_type); + /*! + * \fn void user(const char *p_fmt, ...); + * \brief Warning message based on printf-compliant formatting message + * \param[in] p_fmt The printf-compliant format of the message to log + * \param[in] ... The arguments + * \inline + */ + inline void warning(const char *p_fmt, ...); + + /*! + * \fn void user(const char *p_fmt, ...); + * \brief Error message based on printf-compliant formatting message + * \param[in] p_fmt The printf-compliant format of the message to log + * \param[in] ... The arguments + * \inline + */ + inline void error(const char *p_fmt, ...); + + /*! + * \fn void set_start_time(std::string& p_time_key); + * \brief Start execution time measurement + * \param[in] p_time_key A timer identifier (any string) + * \inline + */ + inline void set_start_time(std::string& p_time_key); + /*! + * \fn void set_stop_time(std::string& p_time_key, float& p_time); + * \brief Stop execution time measurement + * \param[in] p_time_key The timer identifier provided while calling \see loggers::set_start_time method + * \param[out] p_time The execution time measured in milliseconds + * \inline + */ + inline void set_stop_time(std::string& p_time_key, float& p_time); +}; // End of class loggers + +void loggers::log_to_hexa(const char *p_prompt, const TTCN_Buffer & buffer) +{ + TTCN_Logger::begin_event(TTCN_Logger::DEBUG_UNQUALIFIED); + TTCN_Logger::log_event_str(p_prompt); + buffer.log(); + TTCN_Logger::end_event(); +} + +void loggers::log_to_hexa(const char *p_prompt, const OCTETSTRING& msg) +{ + TTCN_Logger::begin_event(TTCN_Logger::DEBUG_UNQUALIFIED); + TTCN_Logger::log_event_str(p_prompt); + TTCN_Logger::log_event("Size: %d,\nMsg: ", msg.lengthof()); + + for(int i = 0; i < msg.lengthof(); i++) { + TTCN_Logger::log_event(" %02x", ((const unsigned char*)msg)[i]); + } + TTCN_Logger::log_event("\n"); + TTCN_Logger::end_event(); +} + +void loggers::log_to_hexa(const char *p_prompt, const unsigned char* msg, const size_t msg_size) +{ + TTCN_Logger::begin_event(TTCN_Logger::DEBUG_UNQUALIFIED); + TTCN_Logger::log_event_str(p_prompt); + for(size_t i = 0; i < msg_size; i++) { + TTCN_Logger::log_event(" %02x", *(msg + i)); + } + TTCN_Logger::log_event("\n"); + TTCN_Logger::end_event(); +} + +void loggers::log_msg(const char *p_prompt, const Base_Type& p_type) +{ + TTCN_Logger::begin_event(TTCN_Logger::DEBUG_UNQUALIFIED); + TTCN_Logger::log_event_str(p_prompt); + p_type.log(); + TTCN_Logger::end_event(); +} + +void loggers::log(const char *p_fmt, ...) +{ + TTCN_Logger::begin_event(TTCN_Logger::DEBUG_UNQUALIFIED); + va_list args; + va_start(args, p_fmt); + TTCN_Logger::log_event_va_list(p_fmt, args); + va_end(args); + TTCN_Logger::end_event(); +} + +void loggers::user_msg(const char *p_prompt, const Base_Type& p_type) +{ + TTCN_Logger::begin_event(TTCN_Logger::USER_UNQUALIFIED); + TTCN_Logger::log_event_str(p_prompt); + p_type.log(); + TTCN_Logger::end_event(); +} + +void loggers::user(const char *p_fmt, ...) +{ + TTCN_Logger::begin_event(TTCN_Logger::USER_UNQUALIFIED); + va_list args; + va_start(args, p_fmt); + TTCN_Logger::log_event_va_list(p_fmt, args); + va_end(args); + TTCN_Logger::end_event(); +} + +void loggers::warning(const char *p_fmt, ...) +{ + TTCN_Logger::begin_event(TTCN_Logger::WARNING_UNQUALIFIED); + va_list args; + va_start(args, p_fmt); + TTCN_Logger::log_event_va_list(p_fmt, args); + va_end(args); + TTCN_Logger::end_event(); +} + +void loggers::warning_msg(const char *p_prompt, const Base_Type& p_type) +{ + TTCN_Logger::begin_event(TTCN_Logger::WARNING_UNQUALIFIED); + TTCN_Logger::log_event_str(p_prompt); + p_type.log(); + TTCN_Logger::end_event(); +} + +void loggers::error(const char *p_fmt, ...) +{ + va_list args; + va_start(args, p_fmt); + TTCN_error(p_fmt, args); + va_end(args); +} + +void loggers::set_start_time(std::string& p_time_key) +{ + _times[p_time_key] = std::clock(); +} + +void loggers::set_stop_time(std::string& p_time_key, float& p_time) +{ + std::map::iterator it = _times.find(p_time_key); + if (it != loggers::_times.end()) { + p_time = (std::clock() - _times[p_time_key]) * 1000.0 / CLOCKS_PER_SEC; // in milliseconds + _times.erase(it); + loggers::get_instance().log_time_exec("%s: Execution duration: %f ms", p_time_key.c_str(), p_time); + + } +} + +void loggers::log_time_exec(const char *p_fmt, ...) +{ + TTCN_Logger::begin_event(TTCN_Logger::EXECUTOR_RUNTIME); + va_list args; + va_start(args, p_fmt); + TTCN_Logger::log_event_va_list(p_fmt, args); + va_end(args); + TTCN_Logger::end_event(); +} + diff --git a/ccsrc/Framework/include/params.hh b/ccsrc/Framework/include/params.hh new file mode 100644 index 0000000..bcff3fd --- /dev/null +++ b/ccsrc/Framework/include/params.hh @@ -0,0 +1,85 @@ +/*! + * \file params.hh + * \brief Header file for the parameter dictionary. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include +#include + + /*! + * \class params + * \brief This class provides basic functionalities for an ITS dictionary + * \implements std::map + */ +class params : public std::map { +public: //! \publicsection + // TODO Use static constexpr (see commsignia_layer.hh) + static const std::string& debug; //! Set to 1 to enable the debug mode + + static const std::string& loopback; + + static const std::string& mac_src; //! Source MAC address parameter name + static const std::string& mac_dst; //! Destination MAC address parameter name + static const std::string& mac_bc; //! Broadcast MAC address parameter name + static const std::string& eth_type; //! Ethernet type parameter name + static const std::string& nic; //! Network Interface Card parameter name + static const std::string& latitude; //! Test system Latitude parameter name + static const std::string& longitude; //! Test system Longitude parameter name + + static const std::string& server; //! HTTP server address (e.g. www.etsi.org) + static const std::string& port; //! Commsignia HTTP server port. Default: 80 + static const std::string& use_ssl; //! Set to 1 to use SSL to communicate with the HTTP server. Default: false + + static const std::string& sip_url; + static const std::string& sip_version; + static const std::string& payload; //! UpperLayer Payload parameter name + + /*! + * \brief Default constructor + * Create a new instance of the params class + */ + params() : std::map() {}; + /*! + * \brief Copy constructor + * Clone an existing instance of a params object + * \param[in] p_params An existing instance of a params object + */ + explicit params(const params& p_params) : std::map(p_params.begin(), p_params.end()) { }; + + /*! + * \brief Default destructor + */ + virtual ~params() { }; + + /*! + * \fn void log() const; + * \brief Provides a dump of the content of this instance + */ + void log() const; + /*! + * \fn void log() const; + * \brief Provides a dump of the content of this instance + */ + void log(); + /*! + * \fn void reset(); + * \brief Reset the content of this instance + */ + void reset(); + + /*! + * \static + * \fn void convert(params& p_param, const std::string& p_parameters); + * \brief Create a new instance of a params object by converting a list of ITS parameters in string format (t1=v1,T2=(v0,v1v2)...) + * \return a new instance of a params object + */ + static void convert(params& p_param, const std::string p_parameters); +}; // End of class params + diff --git a/ccsrc/Framework/include/t_layer.hh b/ccsrc/Framework/include/t_layer.hh new file mode 100644 index 0000000..8e355a9 --- /dev/null +++ b/ccsrc/Framework/include/t_layer.hh @@ -0,0 +1,72 @@ +/*! + * \file t_layer.hh + * \brief Header file for ITS abstract protocol layer definition. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "layer.hh" + +/*! + * \class t_layer + * \brief This class provides basic description of an ITS port protocol layer. + * A port protocol layer is the final layer which provides the access to the physical communication channel + * A port protocol layer derives from both a layer class and a template port class + */ +template class t_layer : public layer { + typedef std::vector TPortList; + typedef typename std::vector::iterator TPortListIterator; + + TPortList upperPorts; //! The list of the upper ports + +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the t_layer class + * \todo Remove logs + */ + explicit t_layer() : layer(), upperPorts() { }; + + /*! + * \brief Specialized constructor + * Create a new instance of the layer class with its type description + * \param[in] p_type The port type name (e.g. TCP for the TCP sockect based layer) + * \remark This constructor is called by the layer factory + * \see layer_factory + */ + explicit t_layer(const std::string& p_type) : layer(p_type), upperPorts() { }; + /*! + * \inline + * \fn void add_upper_port(TPort * p_port); + * \brief Add a new upper port layer + * \todo To be done + */ + inline void add_upper_port(TPort * p_port) { upperPorts.push_back(p_port); }; + /*! + * \fn void remove_upper_port(TPort*); + * \brief Remove the specified upper layer port protocol from the list of the upper layers + * \param[in] p_layer The layer protocol to be removed + */ + void remove_upper_port(TPort*); + +protected: //! \protectedsection + /*! + * \inline + * \fn void to_all_upper_ports(const TMessage& m, const params& param); + * \brief Forward the message to all available upper port layers + * \param[in] p_message The message to be forwarded + * \param[in] p_params Some lower layers parameters values when data was received + */ + template + inline void to_all_upper_ports(const TMessage& p_message, const params& p_params) { + for(TPortListIterator it=upperPorts.begin(); itreceiveMsg(p_message, p_params); + } + } +}; // End of class t_layer + diff --git a/ccsrc/Framework/src/converter.cc b/ccsrc/Framework/src/converter.cc new file mode 100644 index 0000000..84bef6d --- /dev/null +++ b/ccsrc/Framework/src/converter.cc @@ -0,0 +1,135 @@ +#include "converter.hh" + +converter * converter::instance = NULL; + +uint16_t converter::swap(const uint16_t p_value) { + uint8_t *ptr = (uint8_t *)&p_value; + return (ptr[0] << 8) | ptr[1]; +} + +uint32_t converter::swap(const uint32_t p_value) { + uint8_t *ptr = (uint8_t *)&p_value; + return (ptr[0] << 24) | (ptr[1] << 16) | (ptr[2] << 8) | ptr[3]; +} + +std::string converter::string_to_hexa(const std::string & p_value) { + static const char * const lut = "0123456789ABCDEF"; + + std::string input(p_value); + std::for_each( + input.begin(), + input.end(), + [](char & c) { + c = std::toupper(c); + } + ); + + std::string output; + uint32_t length = p_value.length(); + output.reserve(2 * length); + for (uint32_t i = 0; i < length; ++i) { + const uint8_t c = input[i]; + output.push_back(lut[c >> 4]); + output.push_back(lut[c & 15]); + } // End of 'for' statement + + return output; +} + +std::string converter::bytes_to_hexa(const std::vector & p_value) { + std::ostringstream oss; + oss << std::setfill('0'); + std::for_each( + p_value.begin(), + p_value.end(), + [&oss](uint8_t ch) { + oss << std::hex + << std::setw(2) + << static_cast(ch); + } + ); + return oss.str(); +} + +std::vector converter::hexa_to_bytes(const std::string & p_value) { + static const char * const lut = "0123456789ABCDEF"; + + // Sanity check + std::vector output; + if (p_value.length() & 1) { + return output; + } + + std::string input(p_value); + std::for_each( + input.begin(), + input.end(), + [](char & c) { + c = std::toupper(c); + } + ); + + output.reserve(p_value.length() / 2); + for (uint32_t i = 0; i < p_value.length(); i += 2) { + char msbDigit = input[i]; + const char *msbIndex = std::lower_bound(lut, lut + 16, msbDigit); + if (*msbIndex != msbDigit) { + output.clear(); + return output; + } + char lsbDigit = input[i + 1]; + const char* lsbIndex = std::lower_bound(lut, lut + 16, lsbDigit); + if (*lsbIndex != lsbDigit) { + output.clear(); + return output; + } + output.push_back(((msbIndex - lut) << 4) | (lsbIndex - lut)); + } // End of 'for' statement + + return output; +} + +std::string converter::time_to_string(const time_t p_time) { + struct tm * t = std::localtime(&p_time); + return time_to_string(*t); +} + +std::string converter::time_to_string(const struct tm & p_time) { + char buffer[64] = { 0 }; + // Format: RFC 822, 1036, 1123, 2822 + std::strftime(buffer, 64, "%a, %d %b %Y %H:%M:%S %z", &p_time); + return std::string(buffer); +} + +std::string converter::trim(const std::string& str, const std::string& whitespace) { + size_t strBegin = str.find_first_not_of(whitespace); + if (strBegin == std::string::npos) + return ""; // no content + + size_t strEnd = str.find_last_not_of(whitespace); + size_t strRange = strEnd - strBegin + 1; + + return str.substr(strBegin, strRange); +} + +std::vector converter::split_arguments_line(const std::string & p_value) { + std::vector output; + std::string line = trim(p_value); + if (!line.empty() && (line[0] == '-')) { // Valid command line + size_t current = 0; + size_t next = (size_t)-1; + size_t pos = 0; + do { + if (line[pos + 1] == '-') { // -- + current = pos + 2; + } else { + current = pos + 1; + } + next = line.find("-", current); + std::string str(line.substr(pos, next - pos)); + output.push_back(str); + pos = next; + } while (next != std::string::npos); + } // else, invalid command line + return output; +} diff --git a/ccsrc/Framework/src/layer_factory.cc b/ccsrc/Framework/src/layer_factory.cc new file mode 100644 index 0000000..33f24fe --- /dev/null +++ b/ccsrc/Framework/src/layer_factory.cc @@ -0,0 +1,71 @@ +#include +#include + +#include "layer_stack_builder.hh" + +#include "loggers.hh" + +layer_stack_builder* layer_stack_builder::_instance = NULL; + +// static functions +layer_stack_builder * layer_stack_builder::get_instance() +{ + return _instance ? _instance : _instance = new layer_stack_builder(); +} + +void layer_stack_builder::register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory) +{ + layer_stack_builder::get_instance()->_register_layer_factory(p_type, p_layer_factory); +} + +// member functions +layer_stack_builder::layer_stack_builder() +{ +} + +void layer_stack_builder::_register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory) +{ + _layer_factories[p_type] = p_layer_factory; +} + +layer* layer_stack_builder::create_layer_stack(const char* p_layer_stack_description) +{ + loggers::get_instance().log(">>> layer_stack_builder::create_layer_stack: %s", p_layer_stack_description); + + layer* entry = NULL; // Initial layer (the first declared) + layer* up = NULL; // Upper layer + // Parse the layer description + try { + std::regex rgx ("(\\w+)(\\((.*?)\\))?(\\/|$)"); + std::string str = p_layer_stack_description; + std::sregex_iterator begin(str.cbegin(), str.cend(), rgx); + std::sregex_iterator end = std::sregex_iterator(); + for (std::sregex_iterator it = begin; it != end; ++it) { + std::smatch m = *it; + loggers::get_instance().log("layer_stack_builder::create_layer_stack: %d - %s - %s - %s - %s", m.size(), m[0].str().c_str(), m[1].str().c_str(), m[2].str().c_str(), m[3].str().c_str()); + LayerFactoryMap::iterator i = _layer_factories.find(m[1].str()); + if (i == _layer_factories.end()) { + loggers::get_instance().error("layer_stack_builder::create_layer_stack: %s: Unknown layer type", m[1].str().c_str()); + } + loggers::get_instance().log("layer_stack_builder::create_layer_stack: Create layer %s, %s", m[1].str().c_str(), m[3].str().c_str()); + layer* l = i->second->create_layer(m[1].str(), m[3].str()); + if (NULL == l) { + loggers::get_instance().error("layer_stack_builder::create_layer_stack: %s: Layer creation error", m[1].str().c_str()); + } + + loggers::get_instance().log("layer_stack_builder::create_layer_stack: Setup layers for %s", l->to_string().c_str()); + l->add_upper_layer(up); + if (entry == NULL) { // Set the first declared layer + entry = l; + } + up = l; // Build the linked list of layers + } // End of 'for' statement + } + catch(const std::logic_error& e){ + if(up){ // FIXME To be reviewed + up->delete_layer(); + up = NULL; + } + } + return entry; +} diff --git a/ccsrc/Framework/src/loggers.cc b/ccsrc/Framework/src/loggers.cc new file mode 100644 index 0000000..fba1c59 --- /dev/null +++ b/ccsrc/Framework/src/loggers.cc @@ -0,0 +1,4 @@ +#include "loggers.hh" + +std::unique_ptr loggers::_instance = static_cast>(new loggers); + diff --git a/ccsrc/Framework/src/params.cc b/ccsrc/Framework/src/params.cc new file mode 100644 index 0000000..8a8418a --- /dev/null +++ b/ccsrc/Framework/src/params.cc @@ -0,0 +1,89 @@ +/*! + * \file params.cc + * \brief Source file for the parameter dictionary. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#include +#include + +#include "params.hh" +#include "loggers.hh" + +const std::string& params::debug = std::string("debug"); + +const std::string& params::loopback = std::string("loopback"); + +const std::string& params::mac_src = std::string("mac_src"); +const std::string& params::mac_dst = std::string("mac_dst"); +const std::string& params::mac_bc = std::string("mac_bc"); +const std::string& params::eth_type = std::string("eth_type"); + + +const std::string& params::nic = std::string("nic"); +const std::string& params::latitude = std::string("latitude"); +const std::string& params::longitude = std::string("longitude"); + +const std::string& params::server = std::string("server"); +const std::string& params::port = std::string("port"); +const std::string& params::use_ssl = std::string("use_ssl"); + +const std::string& params::sip_url = std::string("sip_url"); +const std::string& params::sip_version = std::string("sip_version"); +const std::string& params::payload = std::string("payload"); + +void params::convert(params& p_param, const std::string p_parameters) { + // Sanity checks + if (p_parameters.length() == 0) { + return; + } + loggers::get_instance().log(">>> params::convert: %s", p_parameters.c_str()); + // Extract parameters + try { + std::regex rgx ("(\\w+)=(.*?)(,|$)"); + std::sregex_iterator begin(p_parameters.cbegin(), p_parameters.cend(), rgx); + std::sregex_iterator end = std::sregex_iterator(); + for (std::sregex_iterator it = begin; it != end; ++it) { + std::smatch m = *it; + loggers::get_instance().log("params::convert: %d - %s - %s - %s - %s", m.size(), m[0].str().c_str(), m[1].str().c_str(), m[2].str().c_str(), m[3].str().c_str()); + p_param.insert(std::pair(m[1].str(), m[2].str())); + } // End of 'for' statement + } + catch(const std::logic_error& e){ + p_param.clear(); + } + loggers::get_instance().log("<<< params::convert"); +} + +void params::log() const { + loggers::get_instance().log("params::log"); + if (size() == 0) { + loggers::get_instance().log("\tEmpty"); + } else { + for (const_iterator it = cbegin(); it != cend(); ++it) { + loggers::get_instance().log("\t(%s, %s)", it->first.c_str(), it->second.c_str()); + } // End of 'for' statement + } +} + +void params::log() { + loggers::get_instance().log("params::log"); + if (size() == 0) { + loggers::get_instance().log("\tEmpty"); + } else { + for (const_iterator it = cbegin(); it != cend(); ++it) { + loggers::get_instance().log("\t(%s, %s)", it->first.c_str(), it->second.c_str()); + } // End of 'for' statement + } +} + +void params::reset() { + loggers::get_instance().log("params::reset"); + for (iterator it = begin(); it != end(); ++it) { + it->second.clear(); + } // End of 'for' statement +} diff --git a/ccsrc/Ports/LibHttp/HttpPort.cc b/ccsrc/Ports/LibHttp/HttpPort.cc new file mode 100644 index 0000000..c20a2af --- /dev/null +++ b/ccsrc/Ports/LibHttp/HttpPort.cc @@ -0,0 +1,113 @@ +#include "HttpPort.hh" +#include "http_layer_factory.hh" +#include "loggers.hh" + +#include "LibItsHttp_TypesAndValues.hh" + +namespace LibItsHttp__TestSystem { + + HttpPort::HttpPort(const char *par_port_name): HttpPort_BASE(par_port_name), _cfg_params(), _layer_params(), _layer(nullptr), _time_key("HttpPort::outgoing_send") { + // Nothing to do + } // End of constructor + + HttpPort::~HttpPort() { + loggers::get_instance().log(">>> HttpPort::~HttpPort"); + + if (_layer != nullptr) { + delete _layer; + } + } // End of destructor + + void HttpPort::set_parameter(const char * parameter_name, const char * parameter_value) + { + loggers::get_instance().log("HttpPort::set_parameter: %s=%s", parameter_name, parameter_value); + _cfg_params.insert(std::pair(std::string(parameter_name), std::string(parameter_value))); + } + + /*void HttpPort::Handle_Fd_Event(int fd, boolean is_readable, + boolean is_writable, boolean is_error) {}*/ + + void HttpPort::Handle_Fd_Event_Error(int /*fd*/) + { + + } + + void HttpPort::Handle_Fd_Event_Writable(int /*fd*/) + { + + } + + void HttpPort::Handle_Fd_Event_Readable(int /*fd*/) + { + + } + + /*void HttpPort::Handle_Timeout(double time_since_last_call) {}*/ + + void HttpPort::user_map(const char * system_port) + { + loggers::get_instance().log(">>> HttpPort::user_map: %s", system_port); + // Build layer stack + params::iterator it = _cfg_params.find(std::string("params")); + if (it != _cfg_params.end()) { + loggers::get_instance().log("HttpPort::user_map: %s", it->second.c_str()); + // Setup parameters + params::convert(_layer_params, it->second); // TODO This _layer_params seems to be useless + // Create layer + _layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); + if (static_cast(_layer) == nullptr) { + loggers::get_instance().error("HttpPort::user_map: Invalid stack configuration: %s", it->second.c_str()); + } + static_cast(_layer)->add_upper_port(this); + + } else { + loggers::get_instance().error("HttpPort::user_map: No layers defined in configuration file"); + } + } // End of user_map method + + void HttpPort::user_unmap(const char * system_port) + { + loggers::get_instance().log(">>> HttpPort::user_unmap: %s", system_port); + + // Reset layers + if (_layer != nullptr) { + delete _layer; + _layer = nullptr; + } + } // End of user_unmap method + + void HttpPort::user_start() + { + loggers::get_instance().log(">>> HttpPort::user_start"); + + } // End of user_start method + + void HttpPort::user_stop() + { + loggers::get_instance().log(">>> HttpPort::user_stop"); + + } // End of user_stop method + + void HttpPort::outgoing_send(const LibItsHttp__TypesAndValues::HttpMessage& send_par) + { + loggers::get_instance().log_msg(">>> HttpPort::outgoing_send: payload=", send_par); + + float duration; + loggers::get_instance().set_start_time(_time_key); + params params; + static_cast(_layer)->sendMsg(send_par, params); + loggers::get_instance().set_stop_time(_time_key, duration); + } + + void HttpPort::receiveMsg (const LibItsHttp__TypesAndValues::HttpMessage& p_ind, const params& p_params) { + loggers::get_instance().log_msg(">>> HttpPort::receive_msg: ", p_ind); + // Sanity check + if (!p_ind.is_bound()) { + return; + } + + incoming_message(p_ind); + } + +} + diff --git a/ccsrc/Ports/LibHttp/HttpPort.hh b/ccsrc/Ports/LibHttp/HttpPort.hh new file mode 100644 index 0000000..63c70c5 --- /dev/null +++ b/ccsrc/Ports/LibHttp/HttpPort.hh @@ -0,0 +1,46 @@ +#pragma once + +#include "LibItsHttp_TestSystem.hh" + +#include "layer.hh" +#include "params.hh" + +namespace LibItsHttp__TypesAndValues { + class HttpMessage; +} + +namespace LibItsHttp__TestSystem { + + class HttpPort : public HttpPort_BASE { + params _cfg_params; + params _layer_params; + layer* _layer; + std::string _time_key; + public: + HttpPort(const char *par_port_name); + ~HttpPort(); + + void set_parameter(const char *parameter_name, const char *parameter_value); + void receiveMsg (const LibItsHttp__TypesAndValues::HttpMessage& p_ind, const params& p_params); + + private: + /* void Handle_Fd_Event(int fd, boolean is_readable, + boolean is_writable, boolean is_error); */ + void Handle_Fd_Event_Error(int fd); + void Handle_Fd_Event_Writable(int fd); + void Handle_Fd_Event_Readable(int fd); + /* void Handle_Timeout(double time_since_last_call); */ + + protected: + void user_map(const char *system_port); + void user_unmap(const char *system_port); + + void user_start(); + void user_stop(); + + protected: + void outgoing_send(const LibItsHttp__TypesAndValues::HttpMessage& send_par); + }; // End of class HttpPort + +} + diff --git a/ccsrc/Protocols/ETH/ethernet_layer.cc b/ccsrc/Protocols/ETH/ethernet_layer.cc new file mode 100644 index 0000000..d0ba32a --- /dev/null +++ b/ccsrc/Protocols/ETH/ethernet_layer.cc @@ -0,0 +1,82 @@ +#include "ethernet_layer_factory.hh" + +#include "loggers.hh" + +ethernet_layer::ethernet_layer(const std::string & p_type, const std::string & param) : layer(p_type), _params() { + loggers::get_instance().log(">>> ethernet_layer::ethernet_layer: %s, %s", to_string().c_str(), param.c_str()); + // Setup parameters + params::convert(_params, param); + params::const_iterator it = _params.find("mac_src"); + if (it == _params.cend()) { + _params.insert(std::pair(std::string("mac_src"), "000000000000")); + } + it = _params.find("mac_bc"); + if (it == _params.cend()) { + _params.insert(std::pair(std::string("mac_bc"), "FFFFFFFFFFFF")); + } + it = _params.find("eth_type"); + if (it == _params.cend()) { + _params.insert(std::pair(std::string("eth_type"), "8947")); + } + //_params.log(); +} + +void ethernet_layer::send_data(OCTETSTRING& data, params& params) { + loggers::get_instance().log_msg(">>> ethernet_layer::send_data: ", data); + + OCTETSTRING eth; + // Destination MAC address + params::const_iterator it = params.find(params::mac_dst); // Find in provided parameters, params + if (it != params.cend()) { + eth = str2oct(CHARSTRING(it->second.c_str())); + } else { + it = _params.find(params::mac_dst); + if (it != _params.cend()) { + eth = str2oct(CHARSTRING(it->second.c_str())); + } else { + eth = str2oct(CHARSTRING(_params[params::mac_bc].c_str())); + } + } + // Source MAC address + it = params.find(params::mac_src); // Find in provided parameters, params + if (it != params.cend()) { + eth += str2oct(CHARSTRING(it->second.c_str())); + } else { + eth += str2oct(CHARSTRING(_params[params::mac_src].c_str())); + } + // Ethernet type + it = params.find(params::eth_type); // Find in layer parameters + if (it != params.cend()) { + eth += str2oct(CHARSTRING(it->second.c_str())); + } else { + eth += str2oct(CHARSTRING(_params[params::eth_type].c_str())); + } + + eth += data; + send_to_all_layers(eth, params); +} + +void ethernet_layer::receive_data(OCTETSTRING& data, params& params) { + loggers::get_instance().log_msg(">>> ethernet_layer::receive_data: ", data); + + // Extract dest MAC Address + OCTETSTRING dst = OCTETSTRING(6, static_cast(data)); + //loggers::get_instance().log_msg("ethernet_layer::receive_data: dst: ", dst); + // Extract source MAC Address + OCTETSTRING src = OCTETSTRING(6, 6 + static_cast(data)); + //loggers::get_instance().log_msg("ethernet_layer::receive_data: src: ", src); + // Extract ethertype + OCTETSTRING proto = OCTETSTRING(2, 2 + static_cast(data)); + //loggers::get_instance().log_msg("ethernet_layer::receive_data: proto: ", proto); + data = OCTETSTRING(data.lengthof() - 14, 14 + static_cast(data)); + // Update params + CHARSTRING s = oct2str(dst); + params.insert(std::pair(params::mac_dst, std::string(static_cast(s)))); + s = oct2str(src); + params.insert(std::pair(params::mac_src, std::string(static_cast(s)))); + //loggers::get_instance().log_msg("ethernet_layer::receive_data: payload for upper layer:", data); + + receive_to_all_layers(data, params); +} + +ethernet_layer_factory ethernet_layer_factory::_f; diff --git a/ccsrc/Protocols/ETH/ethernet_layer.hh b/ccsrc/Protocols/ETH/ethernet_layer.hh new file mode 100644 index 0000000..6f224a8 --- /dev/null +++ b/ccsrc/Protocols/ETH/ethernet_layer.hh @@ -0,0 +1,48 @@ +/*! + * \file udp_layer.hh + * \brief Header file for ITS UDP/IP protocol layer definition. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "t_layer.hh" +#include "params.hh" + +class ethernet_layer : public layer { + params _params; //! Layer parameters + +public: //! \publicsection + /*! + * \brief Specialised constructor + * Create a new instance of the ethernet_layer class + * \param[in] p_type \todo + * \param[in] p_param \todo + */ + ethernet_layer(const std::string & p_type, const std::string & param); + /*! + * \brief Default destructor + */ + virtual ~ethernet_layer() {}; + + /*! + * \virtual + * \fn void send_data(OCTETSTRING& data, params& params); + * \brief Send bytes formated data to the lower layers + * \param[in] p_data The data to be sent + * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters + */ + virtual void send_data(OCTETSTRING& data, params& params); + /*! + * \virtual + * \fn void receive_data(OCTETSTRING& data, params& params); + * \brief Receive bytes formated data from the lower layers + * \param[in] p_data The bytes formated data received + * \param[in] p_params Some lower layers parameters values when data was received + */ + virtual void receive_data(OCTETSTRING& data, params& info); +}; // End of class ethernet_layer diff --git a/ccsrc/Protocols/ETH/ethernet_layer_factory.hh b/ccsrc/Protocols/ETH/ethernet_layer_factory.hh new file mode 100644 index 0000000..099a925 --- /dev/null +++ b/ccsrc/Protocols/ETH/ethernet_layer_factory.hh @@ -0,0 +1,45 @@ +/*! + * \file ethernet_layer_factory.hh + * \brief Header file for ITS Ethernet protocol layer factory. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "layer_stack_builder.hh" + +#include "ethernet_layer.hh" + +/*! + * \class ethernet_layer_factory + * \brief This class provides a factory class to create an ethernet_layer class instance + */ +class ethernet_layer_factory: public layer_factory { + static ethernet_layer_factory _f; //! Reference to the unique instance of this class +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the ethernet_layer_factory class + * \remark The ETH layer identifier is ETH + */ + ethernet_layer_factory() { + // register factory + layer_stack_builder::register_layer_factory("ETH", this); + }; + /*! + * \fn layer* create_layer(const std::string & type, const std::string & param); + * \brief Create the layers stack based on the provided layers stack description + * \param[in] p_type The provided layers stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + * \inline + */ + inline virtual layer* create_layer(const std::string& p_type, const std::string& p_param) { + return new ethernet_layer(p_type, p_param); + }; +}; // End of class ethernet_layer_factory + diff --git a/ccsrc/Protocols/Http/http_codec.cc b/ccsrc/Protocols/Http/http_codec.cc new file mode 100644 index 0000000..43eb528 --- /dev/null +++ b/ccsrc/Protocols/Http/http_codec.cc @@ -0,0 +1,418 @@ +#include +#include +#include +//#include + +#include "http_codec.hh" +#include "loggers.hh" + +#include "LibItsHttp_TypesAndValues.hh" +#include "LibItsHttp_MessageBodyTypes.hh" +#include "LibItsHttp_XmlMessageBodyTypes.hh" + +int http_codec::encode (const LibItsHttp__TypesAndValues::HttpMessage& msg, OCTETSTRING& data) +{ + loggers::get_instance().log_msg(">>> http_codec::encode: ", (const Base_Type&)msg); + + TTCN_EncDec::clear_error(); + TTCN_Buffer encoding_buffer; + + _ec.reset(); + + int result; + if (msg.ischosen(LibItsHttp__TypesAndValues::HttpMessage::ALT_request)) { + result = encode_request(msg.request(), encoding_buffer); + } else if (msg.ischosen(LibItsHttp__TypesAndValues::HttpMessage::ALT_response)) { + result = encode_response(msg.response(), encoding_buffer); + } else { + loggers::get_instance().warning("http_codec::encode: Unbound HttpMessage"); + return -1; + } + + data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()); + + loggers::get_instance().log_msg("<<< http_codec::encode: data=", data); + return result; +} + +int http_codec::decode (const OCTETSTRING& data, LibItsHttp__TypesAndValues::HttpMessage& msg, params* params) +{ + loggers::get_instance().log_msg(">>> http_codec::decode: data=", data); + + TTCN_EncDec::clear_error(); + TTCN_Buffer decoding_buffer(data); + loggers::get_instance().log_to_hexa("http_codec::decode: decoding_buffer=", decoding_buffer); + + _dc.reset(); + + _params = params; + + // Get the first line (e.g. HTTP/1.1 302 Found or POST / HTTP/1.1) + CHARSTRING message_id; + if (get_line(decoding_buffer, message_id) == -1) { + return -1; + } + loggers::get_instance().log_msg("http_codec::decode: message_id: ", message_id); + // Extract parameters + try { + std::string str(static_cast(message_id)); + std::regex rgx ("\\s*(\\w+)/"); + std::sregex_iterator begin(str.cbegin(), str.cend(), rgx); + std::smatch m = *begin; + loggers::get_instance().log("http_codec::decode: %d - %s", m.size(), m[0].str().c_str()); + if (m[0].str().compare("HTTP/") == 0) { // HTTP response + LibItsHttp__TypesAndValues::Response response; + std::regex rgx ("\\s*HTTP/(\\d+)\\.(\\d+)\\s+(\\d+)\\s+(\\w+)*"); + std::sregex_iterator begin(str.cbegin(), str.cend(), rgx); + std::smatch m = *begin; + loggers::get_instance().log("http_codec::decode: Process response: %d", m.size()); + if (m.size() != 5) { + loggers::get_instance().error("http_codec::decode: Unsupported tag"); + return -1; + } + response.version__major() = std::stoi(m[1].str().c_str()); + response.version__minor() = std::stoi(m[2].str().c_str()); + response.statuscode() = std::stoi(m[3].str().c_str()); + response.statustext() = CHARSTRING(m[4].str().c_str()); + LibItsHttp__TypesAndValues::HeaderLines headers; + decode_headers(decoding_buffer, headers); + response.header() = headers; + loggers::get_instance().log_to_hexa("Before decoding Body: ", decoding_buffer); + LibItsHttp__MessageBodyTypes::HttpMessageBody body; + if (decode_body(decoding_buffer, body) == -1) { + response.body().set_to_omit(); + } else { + response.body() = OPTIONAL(body); + } + msg.response() = response; + } else { // HTTP request + LibItsHttp__TypesAndValues::Request request; + std::regex rgx ("\\s*(\\w+)\\s+(.+)\\s+HTTP/(\\d)\\.(\\d)"); + std::sregex_iterator begin(str.cbegin(), str.cend(), rgx); + std::smatch m = *begin; + if (m.size() != 5) { + loggers::get_instance().error("http_codec::decode: Unsupported tag"); + return -1; + } + request.method() = CHARSTRING(m[1].str().c_str()); + request.uri() = CHARSTRING(m[2].str().c_str()); + request.version__major() = std::stoi(m[3].str().c_str()); + request.version__minor() = std::stoi(m[4].str().c_str()); + LibItsHttp__TypesAndValues::HeaderLines headers; + decode_headers(decoding_buffer, headers); + request.header() = headers; + OPTIONAL body; + body.set_to_omit(); + if (decode_body(decoding_buffer, body) == -1) { + request.body().set_to_omit(); + } else { + request.body() = body; + } + msg.request() = request; + } + + loggers::get_instance().log_msg("<<< http_codec::decode: ", (const Base_Type&)msg); + return 0; + } + catch(const std::logic_error& e) { + return -1; + } +} + +int http_codec::encode_request(const LibItsHttp__TypesAndValues::Request& p_request, TTCN_Buffer& p_encoding_buffer) +{ + loggers::get_instance().log_msg(">>> http_codec::encode_request: ", (const Base_Type&)p_request); + + const OPTIONAL& v = p_request.body(); + OCTETSTRING os; + if (v.ispresent()) { + const LibItsHttp__MessageBodyTypes::HttpMessageBody& body = static_cast(*v.get_opt_value()); + loggers::get_instance().log_msg("http_codec::encode_request: body: ", body); + if (body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_ms__body)) { + os = body.ms__body(); + } else { + LibItsHttp__XmlMessageBodyTypes::XmlBody xml_body = body.xml__body(); + if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_raw)) { + os = OCTETSTRING(xml_body.raw().lengthof(), (unsigned char*)static_cast(xml_body.raw())); + } + } + } + loggers::get_instance().log("http_codec::encode_request: HTTP message lenght: %d ", os.lengthof()); + + // Encode generic part + p_encoding_buffer.put_cs(p_request.method()); + p_encoding_buffer.put_c(' '); + p_encoding_buffer.put_cs(p_request.uri()); + p_encoding_buffer.put_cs(" HTTP/"); + p_encoding_buffer.put_cs(int2str(p_request.version__major())); + p_encoding_buffer.put_c('.'); + p_encoding_buffer.put_cs(int2str(p_request.version__minor())); + p_encoding_buffer.put_cs("\r\n"); + // Encode headers + const LibItsHttp__TypesAndValues::HeaderLines& headers = p_request.header(); + for (int i = 0; i < headers.size_of(); i++) { + const LibItsHttp__TypesAndValues::HeaderLine& header = headers[i]; + loggers::get_instance().log_msg("http_codec::encode_request: Processing header ", header.header__name()); + p_encoding_buffer.put_cs(header.header__name()); + p_encoding_buffer.put_cs(": "); + if (std::string(static_cast(header.header__name())).compare("Content-Length") == 0) { + p_encoding_buffer.put_cs(int2str(os.lengthof() + 2/*Stand for the last CRLF*/)); + _ec.is_content_length_present = 0x01; + } else { + const OPTIONAL& o = header.header__value(); + if (o.ispresent()) { + const LibItsHttp__TypesAndValues::charstring__list& v = dynamic_cast &>(o); + if (v.size_of() > 0) { + loggers::get_instance().log_msg("http_codec::encode_request: Processing value ", v[0]); + p_encoding_buffer.put_cs(v[0]); + int j = 1; + while (j < v.size_of()) { + p_encoding_buffer.put_cs(", "); + loggers::get_instance().log_msg("http_codec::encode_request: Processing value ", v[j]); + p_encoding_buffer.put_cs(v[j]); + j += 1; + } // End of 'while' statement + } + } // else, do not include it + } + p_encoding_buffer.put_cs("\r\n"); + } // End of 'for' statement + + p_encoding_buffer.put_cs("\r\n"); + if (_ec.length != 0) { + p_encoding_buffer.put_os(os); + p_encoding_buffer.put_cs("\r\n"); + } + + return 0; +} + +int http_codec::encode_response (const LibItsHttp__TypesAndValues::Response& p_response, TTCN_Buffer& p_encoding_buffer) { + loggers::get_instance().log_msg(">>> http_codec::encode_response: ", (const Base_Type&)p_response); + + const OPTIONAL& v = p_response.body(); + OCTETSTRING os; + if (v.ispresent()) { + const LibItsHttp__MessageBodyTypes::HttpMessageBody& body = static_cast(*v.get_opt_value()); + loggers::get_instance().log_msg("http_codec::encode_response: body: ", body); + if (body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_ms__body)) { + os = body.ms__body(); + } else { + LibItsHttp__XmlMessageBodyTypes::XmlBody xml_body = body.xml__body(); + if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_raw)) { + os = OCTETSTRING(xml_body.raw().lengthof(), (unsigned char*)static_cast(xml_body.raw())); + } + } + } + loggers::get_instance().log("http_codec::encode_response: HTTP message lenght: %d ", os.lengthof()); + + // Encode generic part + p_encoding_buffer.put_cs("HTTP/"); + p_encoding_buffer.put_cs(int2str(p_response.version__major())); + p_encoding_buffer.put_c('.'); + p_encoding_buffer.put_cs(int2str(p_response.version__minor())); + p_encoding_buffer.put_cs(" "); + p_encoding_buffer.put_cs(int2str(p_response.statuscode())); + p_encoding_buffer.put_cs(" "); + if (p_response.statustext().lengthof() != 0) { + p_encoding_buffer.put_cs(p_response.statustext()); + } + p_encoding_buffer.put_cs("\r\n"); + // Encode headers + const LibItsHttp__TypesAndValues::HeaderLines& headers = p_response.header(); + for (int i = 0; i < headers.size_of(); i++) { + const LibItsHttp__TypesAndValues::HeaderLine& header = headers[i]; + loggers::get_instance().log_msg("http_codec::encode_response: Processing header ", header.header__name()); + p_encoding_buffer.put_cs(header.header__name()); + p_encoding_buffer.put_cs(": "); + if (std::string(static_cast(header.header__name())).compare("Content-Length") == 0) { + p_encoding_buffer.put_cs(int2str(os.lengthof() + 2/*Stand for the last CRLF*/)); + _ec.is_content_length_present = 0x01; + } else { + const OPTIONAL& o = header.header__value(); + if (o.ispresent()) { + const LibItsHttp__TypesAndValues::charstring__list& v = dynamic_cast &>(o); + if (v.size_of() > 0) { + loggers::get_instance().log_msg("http_codec::encode_response: Processing value ", v[0]); + p_encoding_buffer.put_cs(v[0]); + int j = 1; + while (j < v.size_of()) { + p_encoding_buffer.put_cs(", "); + loggers::get_instance().log_msg("http_codec::encode_response: Processing value ", v[j]); + p_encoding_buffer.put_cs(v[j]); + j += 1; + } // End of 'while' statement + } + } // else, do not include it + } + p_encoding_buffer.put_cs("\r\n"); + } // End of 'for' statement + + p_encoding_buffer.put_cs("\r\n"); + if (_ec.length != 0) { + p_encoding_buffer.put_os(os); + p_encoding_buffer.put_cs("\r\n"); + } + + return 0; +} + +int http_codec::decode_headers(TTCN_Buffer& decoding_buffer, LibItsHttp__TypesAndValues::HeaderLines& headers) { + loggers::get_instance().log(">>> http_codec::decode_headers"); + loggers::get_instance().log_to_hexa("http_codec::decode_headers", decoding_buffer); + + CHARSTRING cstr; + int i = 0; + while (true) { + switch(get_line(decoding_buffer, cstr, true)) { + case 0: { + loggers::get_instance().log_msg("http_codec::decode_headers: ", cstr); + LibItsHttp__TypesAndValues::HeaderLine header; + if (decode_header(cstr, header) == -1) { + loggers::get_instance().warning("http_codec::decode_headers: Failed to decode header %s", static_cast(cstr)); + return -1; + } + headers[i++] = header; + } + break; + case 1: + loggers::get_instance().log_msg("<<< http_codec::decode_headers: ", headers); + return 0; + case -1: + loggers::get_instance().warning("http_codec::decode_headers: Failed to decode headers"); + return -1; + } // End of 'switch' statement + } // End of 'while' statement +} + +int http_codec::decode_header(CHARSTRING& header_line, LibItsHttp__TypesAndValues::HeaderLine& header) { + loggers::get_instance().log_msg(">>> http_codec::decode_header", header_line); + + try { + std::string str(static_cast(header_line)); + std::regex rgx ("([0-9a-zA-Z-]+)\\:\\s+(.+)(,(.+))*"); + std::sregex_iterator begin(str.cbegin(), str.cend(), rgx); + std::smatch m = *begin; + if (m.size() < 5) { + loggers::get_instance().warning("http_codec::decode_header: Failed to decode header %s", str.c_str()); + return -1; + } + loggers::get_instance().log("http_codec::decode_header: %d", m.size()); + header.header__name() = CHARSTRING(m[1].str().c_str()); + LibItsHttp__TypesAndValues::charstring__list v; + for (unsigned int j = 0; j < m.size(); j++) { + if (m[j + 2].str().length() == 0) { + break; + } + v[j] = CHARSTRING(m[j + 2].str().c_str()); + } // End of 'for' statement + header.header__value() = OPTIONAL(v); + + if (m[1].str().compare("Content-Length") == 0) { + // Save the the body length + loggers::get_instance().log("http_codec::decode_header: decoded Content-Length %s", m[2].str().c_str()); + _dc.length = std::stoi(m[2].str()); + } + return 0; + } + catch(const std::logic_error& e) { + return -1; + } +} + +int http_codec::decode_body(TTCN_Buffer& decoding_buffer, LibItsHttp__MessageBodyTypes::HttpMessageBody& message_body) { + loggers::get_instance().log(">>> http_codec::decode_body"); + loggers::get_instance().log_to_hexa("http_codec::decode_body", decoding_buffer); + + // Sanity check + if (decoding_buffer.get_len() - decoding_buffer.get_pos() <= 0) { + return -1; + } + + OCTETSTRING s(decoding_buffer.get_len() - decoding_buffer.get_pos(), decoding_buffer.get_data() + decoding_buffer.get_pos()); + loggers::get_instance().log_msg("http_codec::decode_body: raw body=", s); + // Align the payload length with the specified plLenght value + loggers::get_instance().log("http_codec::decode_body: _dc.length=%d - body length=%d", _dc.length, s.lengthof()); + OCTETSTRING body; + if (_dc.length != 0) { + const unsigned char* p = static_cast(s); + if ((unsigned int)s.lengthof() <= _dc.length) { + body = OCTETSTRING(s.lengthof(), p); + } else { + body = OCTETSTRING(_dc.length, p); + } + } else { + loggers::get_instance().warning("http_codec::decode_body: No Conten-Length header, process all remaining bytes"); + body = s; + } + loggers::get_instance().log_msg("http_codec::decode_body: Aligned body=", body); + // Remove CRLF if any + int counter = 0; + if ((body[body.lengthof() - 1].get_octet() == 0x0d) || (body[body.lengthof() - 1].get_octet() == 0x0a)) { + counter += 1; + if ((body[body.lengthof() - 2].get_octet() == 0x0d) || (body[body.lengthof() - 2].get_octet() == 0x0a)) { + counter += 1; + } + } + loggers::get_instance().log("http_codec::decode_body: Counter=%d", counter); + body = OCTETSTRING(body.lengthof() - counter, static_cast(body)); + loggers::get_instance().log_msg("http_codec::decode_body: Finalised body=", body); + // Check if HTTP message body contains binary characters + for (int i = 0; i < body.lengthof(); i++) { + unsigned char c = body[i].get_octet(); + if (!std::isprint(c) && !std::isspace(c) && !std::ispunct(c)) { + loggers::get_instance().log("http_codec::decode_body: Byte #%d is not printable: 0x%02x", i, body[i].get_octet()); + _dc.is_binary = 0x01; + break; + } + } // End of 'for' statement + loggers::get_instance().log("http_codec::decode_body: Binary mode: %x", _dc.is_binary); + LibItsHttp__MessageBodyTypes::HttpMessageBody v; + if (_dc.is_binary == 0x01) { + message_body.ms__body() = body; + } else { + LibItsHttp__XmlMessageBodyTypes::XmlBody xml_body; + xml_body.raw() = CHARSTRING(body.lengthof(), (char*)static_cast(body)); + message_body.xml__body() = xml_body; + } + + return 0; +} + +int http_codec::get_line(TTCN_Buffer& buffer, CHARSTRING& to, const bool concatenate_header_lines) { + unsigned int i = 0; + const unsigned char *cc_to = buffer.get_read_data(); + + // Sanity checks + if(buffer.get_read_len() == 0) { + return -1; + } + + while (true) { + // Skip spaces, and empty lines + for( ; i < buffer.get_read_len() && cc_to[i] != '\0' && cc_to[i] != '\r' && cc_to[i] != '\n'; i++); + if(i >= buffer.get_read_len()) { // No more characters to process + to = CHARSTRING(""); + return -1; + } else if(cc_to[i] == '\n') { // New line found, we don't care is '\r' is missing + if ((i > 0) && ((i + 1) < buffer.get_read_len()) && concatenate_header_lines && ((cc_to[i + 1] == ' ') || (cc_to[i + 1] == '\t'))) { + i += 1; // Skip it + } else { + to = CHARSTRING(i, (const char*)cc_to); + buffer.set_pos(buffer.get_pos() + i + 1); + return i == 0 ? 1 : 0; + } + } else { + if ((i + 1) < buffer.get_read_len() && cc_to[i + 1] != '\n') { + return -1; + } else if(i > 0 && (i + 2) < buffer.get_read_len() && concatenate_header_lines && (cc_to[i+2] == ' ' || cc_to[i+2] == '\t')) { + i += 2; + } else { + to = CHARSTRING(i, (const char*)cc_to); + buffer.set_pos(buffer.get_pos() + i + 2); + return i == 0 ? 1 : 0; + } + } + } // End of 'while' statement +} + diff --git a/ccsrc/Protocols/Http/http_codec.hh b/ccsrc/Protocols/Http/http_codec.hh new file mode 100644 index 0000000..d3ba9f0 --- /dev/null +++ b/ccsrc/Protocols/Http/http_codec.hh @@ -0,0 +1,59 @@ +#pragma once + +#include "codec.hh" +#include "params.hh" + +class Base_Type; +class TTCN_Typedescriptor_t; +class TTCN_Buffer; + +namespace LibItsHttp__TypesAndValues { + class HttpMessage; + class Request; + class Response; + class HeaderLines; + class HeaderLine; +} +namespace LibItsHttp__MessageBodyTypes { + class HttpMessageBody; +} + +struct encoding_context { + unsigned int length; + unsigned char is_content_length_present; + + encoding_context() { reset(); }; + void reset() { length = -1; is_content_length_present = 0x00; }; +}; + +struct decoding_context { + unsigned int length; + unsigned char is_binary; + + decoding_context() { reset(); }; + void reset() { length = -1; is_binary = 0x00; }; +}; + +class http_codec: public codec < +LibItsHttp__TypesAndValues::HttpMessage, +LibItsHttp__TypesAndValues::HttpMessage> +{ + encoding_context _ec; + decoding_context _dc; +public: + explicit http_codec() : codec(), _ec(), _dc() { }; + virtual ~http_codec() { }; + + virtual int encode (const LibItsHttp__TypesAndValues::HttpMessage&, OCTETSTRING& data); + virtual int decode (const OCTETSTRING& data, LibItsHttp__TypesAndValues::HttpMessage&, params* params = NULL); + +private: + int encode_request (const LibItsHttp__TypesAndValues::Request& p_request, TTCN_Buffer& p_encoding_buffer); + int encode_response (const LibItsHttp__TypesAndValues::Response& p_response, TTCN_Buffer& p_encoding_buffer); + + int decode_headers(TTCN_Buffer& decoding_buffer, LibItsHttp__TypesAndValues::HeaderLines& headers); + int decode_header(CHARSTRING& header_line, LibItsHttp__TypesAndValues::HeaderLine& header); + int decode_body(TTCN_Buffer& decoding_buffer, LibItsHttp__MessageBodyTypes::HttpMessageBody& message_body); + int get_line(TTCN_Buffer& buffer, CHARSTRING& to, const bool concatenate_header_lines = false); + +}; // End of class http_codec diff --git a/ccsrc/Protocols/Http/http_layer.cc b/ccsrc/Protocols/Http/http_layer.cc new file mode 100644 index 0000000..7eb9596 --- /dev/null +++ b/ccsrc/Protocols/Http/http_layer.cc @@ -0,0 +1,94 @@ +#include "LibItsHttp_TypesAndValues.hh" + +#include "http_layer_factory.hh" + +#include "loggers.hh" + +#include "converter.hh" + +using namespace std; // Required for isnan() +#include "LibItsHttp_TypesAndValues.hh" +#include "LibItsHttp_TestSystem.hh" + +http_layer::http_layer(const std::string & p_type, const std::string & param) : t_layer(p_type), _params()//, _device_mode{false} +{ + loggers::get_instance().log(">>> http_layer::http_layer: %s, %s", to_string().c_str(), param.c_str()); + // Setup parameters + params::convert(_params, param); +} + +void http_layer::sendMsg(const LibItsHttp__TypesAndValues::HttpMessage& p_http_message, params& p_param) { + loggers::get_instance().log_msg(">>> http_layer::sendMsg: ", p_http_message); + + // Encode HttpMessage + OCTETSTRING data; + _codec.encode(p_http_message, data); + send_data(data, _params); +} + +void http_layer::send_data(OCTETSTRING& data, params& params) { + loggers::get_instance().log_msg(">>> http_layer::send_data: ", data); + + send_to_all_layers(data, params); +} + +void http_layer::receive_data(OCTETSTRING& data, params& params) +{ + loggers::get_instance().log_msg(">>> http_layer::receive_data: ", data); + + // Decode HTTP message + LibItsHttp__TypesAndValues::HttpMessage http_message; + if (_codec.decode(data, http_message) == -1) { + loggers::get_instance().warning("http_layer::receive_data: Failed to decode data"); + return; + } + // Extract payload + /*OCTETSTRING payload; + if (http_message.ischosen(LibItsHttp__TypesAndValues::HttpMessage::ALT_request)) { + loggers::get_instance().log("http_layer::receive_data: Process request"); + if (http_message.request().body().is_present()) { + const OPTIONAL& v = http_message.request().body(); + const LibItsHttp__MessageBodyTypes::HttpMessageBody& body = static_cast(*v.get_opt_value()); + if (body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_ms__body)) { + payload = body.ms__body(); + } else { + LibItsHttp__XmlMessageBodyTypes::XmlBody xml_body = body.xml__body(); + if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_raw)) { + payload = OCTETSTRING(xml_body.raw().lengthof(), (unsigned char*)static_cast(xml_body.raw())); + } else { + loggers::get_instance().warning("http_layer::receive_data: No payload in HTTP request"); + return; + } + } + } else { + loggers::get_instance().warning("http_layer::receive_data: No payload in HTTP request"); + return; + } + } else if (http_message.ischosen(LibItsHttp__TypesAndValues::HttpMessage::ALT_response)) { + loggers::get_instance().log("http_layer::receive_data: Process response"); + if (http_message.response().body().is_present()) { + const OPTIONAL& v = http_message.response().body(); + const LibItsHttp__MessageBodyTypes::HttpMessageBody& body = static_cast(*v.get_opt_value()); + if (body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_ms__body)) { + payload = body.ms__body(); + } else { + LibItsHttp__XmlMessageBodyTypes::XmlBody xml_body = body.xml__body(); + if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_raw)) { + payload = OCTETSTRING(xml_body.raw().lengthof(), (unsigned char*)static_cast(xml_body.raw())); + } else { + loggers::get_instance().warning("http_layer::receive_data: No payload in HTTP response"); + return; + } + } + } else { + loggers::get_instance().warning("http_layer::receive_data: No payload in HTTP response"); + return; + } + }*/ + + // Pass it to the ports + to_all_upper_ports(http_message/*payload*/, params); +} + +http_layer_factory http_layer_factory::_f; + diff --git a/ccsrc/Protocols/Http/http_layer.hh b/ccsrc/Protocols/Http/http_layer.hh new file mode 100644 index 0000000..0a31e00 --- /dev/null +++ b/ccsrc/Protocols/Http/http_layer.hh @@ -0,0 +1,82 @@ +/*! + * \file http_layer.hh + * \brief Header file for ITS HTTP protocol layer. + * \author ETSI STF549 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include + +#include "t_layer.hh" + +#include "http_codec.hh" + +namespace LibItsHttp__TestSystem { + class HttpPort; +} + +namespace LibItsHttp__TypesAndValues { + class HttpMessage; //! Forward declaration of TITAN class +} + +class OCTETSTRING; //! Forward declaration of TITAN class + +/*! + * \class http_layer + * \brief This class provides a factory class to create an tcp_layer class instance + */ +class http_layer : public t_layer { + params _params; + http_codec _codec; + +public: //! \publicsection + /*! + * \brief Specialised constructor + * Create a new instance of the http_layer class + * \param[in] p_type \todo + * \param[in] p_param \todo + */ + http_layer() : t_layer(), _params() { }; + /*! + * \brief Specialised constructor + * Create a new instance of the http_layer class + * \param[in] p_type \todo + * \param[in] p_param \todo + */ + http_layer(const std::string& p_type, const std::string& p_param); + /*! + * \brief Default destructor + */ + virtual ~http_layer() { }; + + /*! + * \fn void sendMsg(const LibItsHttp__TypesAndValues::HttpMessage& p_http_message, params& p_param); + * \brief Send HTTP message to the lower layers + * \param[in] p_http_message The GeoNetworking message to be sent + * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters + */ + void sendMsg(const LibItsHttp__TypesAndValues::HttpMessage& p_http_message, params& p_param); + + /*! + * \virtual + * \fn void send_data(OCTETSTRING& data, params& params); + * \brief Send bytes formated data to the lower layers + * \param[in] p_data The data to be sent + * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters + */ + virtual void send_data(OCTETSTRING& data, params& params); + /*! + * \virtual + * \fn void receive_data(OCTETSTRING& data, params& params); + * \brief Receive bytes formated data from the lower layers + * \param[in] p_data The bytes formated data received + * \param[in] p_params Some lower layers parameters values when data was received + */ + virtual void receive_data(OCTETSTRING& data, params& info); +}; // End of class http_layer + diff --git a/ccsrc/Protocols/Http/http_layer_factory.hh b/ccsrc/Protocols/Http/http_layer_factory.hh new file mode 100644 index 0000000..8f79560 --- /dev/null +++ b/ccsrc/Protocols/Http/http_layer_factory.hh @@ -0,0 +1,45 @@ +/*! + * \file http_layer_factory.hh + * \brief Header file for ITS Http protocol layer factory. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "layer_stack_builder.hh" + +#include "http_layer.hh" + +/*! + * \class http_layer_factory + * \brief This class provides a factory class to create an http_layer class instance + */ +class http_layer_factory : public layer_factory { + static http_layer_factory _f; //! Reference to the unique instance of this class +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the tcp_layer_factory class + * \remark The HTTP layer identifier is HTTP + */ + http_layer_factory() { + // Register factory + layer_stack_builder::register_layer_factory("HTTP", this); + }; + /*! + * \fn layer* create_layer(const std::string & type, const std::string & param); + * \brief Create the layers stack based on the provided layers stack description + * \param[in] p_type The provided layers stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + * \inline + */ + inline virtual layer* create_layer(const std::string& p_type, const std::string& p_param){ + return new http_layer(p_type, p_param); + }; +}; // End of class http_layer_factory + diff --git a/ccsrc/Protocols/Pcap/pcap_layer.cc b/ccsrc/Protocols/Pcap/pcap_layer.cc new file mode 100644 index 0000000..8872a33 --- /dev/null +++ b/ccsrc/Protocols/Pcap/pcap_layer.cc @@ -0,0 +1,264 @@ +#if (OSTYPE == linux) + +#include +#include +#include +#include +#include + +#include "Port.hh" + +#include "pcap_layer_factory.hh" + +#include "loggers.hh" + +pcap_layer::pcap_layer(const std::string& p_type, const std::string& param) : layer(p_type), PORT(p_type.c_str()), _params(), _device(NULL), _pcap_h(-1), _thread(NULL), _running(FALSE), _resume(), _sent_file(NULL), _time_key("pcap_layer::Handle_Fd_Event_Readable") { + loggers::get_instance().log(">>> pcap_layer::pcap_layer: %s, %s", to_string().c_str(), param.c_str()); + _fd[0] = -1; _fd[1] = -1; + // Setup parameters + params::convert(_params, param); + //_params.log(); + // Prepare capture processing + char error_buffer[PCAP_ERRBUF_SIZE]; + params::const_iterator it = _params.find(params::nic); + if ((it != _params.end()) && !it->second.empty()) { // Use online capture + // Fetch the network address and network mask + bpf_u_int32 mask; // subnet mask + bpf_u_int32 net; // ip address + if (pcap_lookupnet(_params[params::nic].c_str(), &net, &mask, error_buffer) != 0) { + loggers::get_instance().error("pcap_layer::pcap_layer: pcap_layer::pcap_layer: Failed to fetch newtork address for device %s", _params[params::nic].c_str()); + } + loggers::get_instance().log("pcap_layer::pcap_layer: Device %s Network address: %d", _params[params::nic].c_str(), net); + // Open the device + _device = pcap_open_live(_params[params::nic].c_str(), 65536, 1, 1000, error_buffer); // TODO Replace hard coded values by pcap_layer:: + if (_device == NULL) { + loggers::get_instance().error("pcap_layer::pcap_layer: Failed to open device %s", _params[params::nic].c_str()); + } // else, continue + // Set non-blocking flag for the polling procedure + if (pcap_setnonblock(_device, 1, error_buffer) != 0) { + loggers::get_instance().error("pcap_layer::pcap_layer: Failed to set blocking mode: %s", error_buffer); + } + // Retrieve the device file handler + _pcap_h = pcap_get_selectable_fd(_device); + if (_pcap_h == -1) { + loggers::get_instance().error("pcap_layer::pcap_layer: Failed to get device handler"); + } + } else { + // Check file name + it = _params.find(std::string("file")); + if ((it != _params.cend()) && !it->second.empty()) { // Use offline capture + struct stat s = {0}; + if ((stat(_params["file"].c_str(), &s) != 0) || !S_ISREG(s.st_mode)) { + loggers::get_instance().error("pcap_layer::pcap_layer: Failed to acces PCAP file %s", _params["file"].c_str()); + } + // File exist, open it + _device = pcap_open_offline(_params["file"].c_str(), error_buffer); + if (_device == NULL) { + loggers::get_instance().error("pcap_layer::pcap_layer: Failed to open PCAP file %s", error_buffer); + } // else, continue + // Create the dump file for the sent packet based on the openned file name and the current time in milliseconds + it = _params.find("save_mode"); + if ((it != _params.cend()) && (it->second.compare("1") == 0)) { + unsigned long ms = std::chrono::system_clock::now().time_since_epoch() / std::chrono::milliseconds(1); + std::string ext("_" + std::to_string(ms)); + int i = _params["file"].find(".pcap"); + if (i > 0) { + std::string f(_params["file"].substr(0, i) + ext + ".pcap"); + loggers::get_instance().log("pcap_layer::pcap_layer: Save file name: %s", f.c_str()); + if ((_sent_file = pcap_dump_open(_device, f.c_str())) == NULL) { + loggers::get_instance().warning("pcap_layer::pcap_layer: Failed to open save file %s", f.c_str()); + } + } + } // else, nothing to do + } else { + loggers::get_instance().error("pcap_layer::pcap_layer: Failed to open PCAP file %s", error_buffer); + } + } + // Setup filter + std::string filter = ""; + it = _params.find(params::mac_src); + if (it == _params.end()) { // Not found + loggers::get_instance().error("pcap_layer::pcap_layer: mac_src parameter not found, cannot continue"); + } else { + // Reject ITS messages sent by this component + filter = "not ether src " + _params[params::mac_src]; + // Accept ITS broadcasted to this componenet + filter += " and (ether dst " + _params[params::mac_src]; + // Accept ITS broadcasted messages + it = _params.find(params::mac_bc); + if ((it != _params.end()) && !it->second.empty()) { + filter += " or ether dst " + it->second + ")"; + } else { + filter += " or ether dst ffffffffffff) "; + } + // Add user defined filter + it = _params.find(std::string("filter")); + if ((it != _params.end()) && !it->second.empty()) { + filter += _params["filter"]; + } // else nothing to do + } + // Log final PCAP filter + loggers::get_instance().user("pcap_layer::pcap_layer: Filter: %s", filter.c_str()); + if (!filter.empty()) { + struct bpf_program f = {0}; + if (pcap_compile(_device, &f, filter.c_str(), 1, PCAP_NETMASK_UNKNOWN) != 0) { + loggers::get_instance().error("pcap_layer::pcap_layer: Failed to compile PCAP filter"); + } + if (pcap_setfilter(_device, &f) != 0) { + loggers::get_instance().error("pcap_layer::pcap_layer: Failed to set PCAP filter"); + } + pcap_freecode(&f); + } + // Pass the device file handler to the polling procedure + if (_pcap_h != -1) { // Live capture + Handler_Add_Fd_Read(_pcap_h); + } else { // Offline capture + // Create a pipe + if (pipe2(_fd, O_NONBLOCK) == -1) { + loggers::get_instance().error("pcap_layer::pcap_layer: Failed to create a pipe: %s", ::strerror(errno)); + } + // Pass the pipe handler to the polling procedure + loggers::get_instance().log("pcap_layer::pcap_layer: Call handler with descriptor %d", _fd[0]); + Handler_Add_Fd_Read(_fd[0]); + // Create the offline reader thread + _thread = new std::thread(&pcap_layer::run, (void *)this); + if (_thread == NULL) { + loggers::get_instance().error("pcap_layer::pcap_layer: Failed to start offline thread"); + } + // Start it to dispatch packet to a pipe + while (_running == FALSE) { + std::this_thread::sleep_for(std::chrono::milliseconds(500)); + } + // Thread was started + loggers::get_instance().log("<<< pcap_layer::pcap_layer"); + } +} // End of ctor + +pcap_layer::~pcap_layer() { + loggers::get_instance().log(">>> pcap_layer::~pcap_layer"); + + if (_device != NULL) { + if (_thread != NULL) { + _running = FALSE; + // Wait for the working thread to terminate + _thread->join(); + loggers::get_instance().log("pcap_layer::~pcap_layer: Thread were stops"); + // Cleanup + delete _thread; + close(_fd[0]); + close(_fd[1]); + } + if (_sent_file != NULL) { + pcap_dump_close(_sent_file); + } + pcap_close(_device); + } +} // End of dtor + +void* pcap_layer::run(void* p_this) { + loggers::get_instance().log(">>> pcap_layer::run"); + + // Pointer the main object + pcap_layer& p = *static_cast(p_this); + // Wait a little bit before to start sending packet + std::this_thread::sleep_for(std::chrono::milliseconds(500)); + params::const_iterator it = p._params.find("frame_offset"); + if ((it != p._params.cend()) && (it->second.compare("0") != 0)) { + // TODO Try t use PCAP filter to start directly to the correct frame offset + /*try { + unsigned int offset = std::stoul(str_dec, &s); + // Skip frames + struct pcap_pkthdr *pkt_header; + const u_char *pkt_data; + int result = pcap_next_ex(_device, &pkt_header, &pkt_data); + if (result == 1) { // Succeed + } + } + catch (invalid_argument& i) { + } + catch (out_of_range& o) { + }*/ + } + // Let's go + p._running = TRUE; + while (p._running) { // Loop while _running flag is up + if (p._resume.try_lock() == TRUE) { // Previous packet was consumed, lock for the next one + write(p._fd[1], "\n", 1); // Any character will do the job + } else { // not ready yet + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + } + } + + loggers::get_instance().log("<<< pcap_layer::run"); + return NULL; +} + +void pcap_layer::send_data(OCTETSTRING& data, params& params) { + loggers::get_instance().log_msg(">>> pcap_layer::send_data: ", data); + + if (_pcap_h != -1) { // Check if offline mode is used + if (pcap_sendpacket(_device, static_cast(data), data.lengthof()) == -1) { + loggers::get_instance().error("pcap_layer::send_data: Failed to send packet: %s", pcap_geterr(_device)); + } + } else if (_sent_file != NULL) { + struct pcap_pkthdr hdr; + std::chrono::system_clock::time_point now = std::chrono::system_clock::now(); + std::chrono::milliseconds ms = std::chrono::duration_cast(now.time_since_epoch()); + hdr.ts.tv_sec = ms.count() / 1000; + hdr.ts.tv_usec = (ms.count() % 1000) * 1000; + hdr.caplen = data.lengthof(); + hdr.len = hdr.caplen; + pcap_dump((u_char *)_sent_file, &hdr, static_cast(data)); + } else { + loggers::get_instance().log("pcap_layer::send_data: Offline mode, operation was skipped"); + } +} + +void pcap_layer::receive_data(OCTETSTRING& data, params& params) { + loggers::get_instance().log(">>> pcap_layer::receive_data: Received %d bytes", data.lengthof()); + loggers::get_instance().log_to_hexa("Packet dump", data); + + // Pass the packet to the upper layers + receive_to_all_layers(data, params); +} + +void pcap_layer::Handle_Fd_Event_Readable(int fd) { + //loggers::get_instance().log(">>> pcap_layer::Handle_Fd_Event_Readable: %d", fd); + + struct pcap_pkthdr *pkt_header; + const u_char *pkt_data; + int result = pcap_next_ex(_device, &pkt_header, &pkt_data); + if (result == 1) { // Succeed + if (pkt_header->caplen > 14) { // Reject too small packet + //loggers::get_instance().log("pcap_layer::Handle_Fd_Event_Readable: %.6d - %d", pkt_header->ts.tv_usec, pkt_header->len); + // Fill parameters from PCAP layer + params params; + params.insert(std::pair(std::string("timestamp"), std::to_string(pkt_header->ts.tv_usec))); + // Process the packet at this layer + OCTETSTRING os(pkt_header->caplen, pkt_data); + //loggers::get_instance().log_to_hexa("pcap_layer::Handle_Fd_Event_Readable: ", os); + // TODO Case of caplen != len !!! + float duration; + loggers::get_instance().set_start_time(_time_key); + this->receive_data(os, params); // TODO Check execution time for decoding operation + loggers::get_instance().set_stop_time(_time_key, duration); + } + } // else, skip the packet + // Specific to offline mode + if (_fd[0] != -1) { // Check if offline mode is used + //loggers::get_instance().log("pcap_layer::Handle_Fd_Event_Readable: Read pipe"); + char c[2]; + read(_fd[0], &c, 1); + if (result == -2) { // End of file, therminate worker thread + _running = FALSE; + } else { // Get next packet + //loggers::get_instance().log("pcap_layer::Handle_Fd_Event_Readable: pcap_next_ex failed: result=%d", result); + _resume.unlock(); + } + } // else, nothing to do +} + +pcap_layer_factory pcap_layer_factory::_f; + +#endif + diff --git a/ccsrc/Protocols/Pcap/pcap_layer.hh b/ccsrc/Protocols/Pcap/pcap_layer.hh new file mode 100644 index 0000000..9b37f41 --- /dev/null +++ b/ccsrc/Protocols/Pcap/pcap_layer.hh @@ -0,0 +1,73 @@ +/*! + * \file pcap_layer.hh + * \brief Header file for ITS Pcap port layer. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#if (OSTYPE == linux) + +#include +#include +#include + +#include "t_layer.hh" +#include "params.hh" + +class PORT; //! Forward declaration of TITAN class + +/*! + * \class pcap_layer + * \brief This class provides description of ITS PCAP port protocol layer + */ +class pcap_layer : public layer, public PORT { + params _params; //! Layer parameters + pcap_t* _device; //! Device handle + int _pcap_h; //! PCAP instance handle + std::thread* _thread; //! Thread handle, used to read PCAP file instead of NIC, used in file mode + bool _running; //! Set to true when the thread is running, used in file mode + std::mutex _resume; //! \todo + pcap_dumper_t* _sent_file; //! Write file handle to save sent packet, used in file mode + std::string _time_key; //! \todo + int _fd[2]; //! \todo + + static void* run(void* p_this); +public: //! \publicsection + /*! + * \brief Specialised constructor + * Create a new instance of the pcap_layer class + * \param[in] p_type \todo + * \param[in] p_param \todo + */ + pcap_layer(const std::string& p_type, const std::string& param); + /*! + * \brief Default destructor + */ + virtual ~pcap_layer(); + + /*! + * \virtual + * \fn void send_data(OCTETSTRING& data, params& params); + * \brief Send bytes formated data to the lower layers + * \param[in] p_data The data to be sent + * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters + */ + virtual void send_data(OCTETSTRING& data, params& params); + /*! + * \virtual + * \fn void receive_data(OCTETSTRING& data, params& params); + * \brief Receive bytes formated data from the lower layers + * \param[in] p_data The bytes formated data received + * \param[in] p_params Some lower layers parameters values when data was received + */ + virtual void receive_data(OCTETSTRING& data, params& info); + + void Handle_Fd_Event_Readable(int fd); +}; + +#endif diff --git a/ccsrc/Protocols/Pcap/pcap_layer_factory.hh b/ccsrc/Protocols/Pcap/pcap_layer_factory.hh new file mode 100644 index 0000000..123b96a --- /dev/null +++ b/ccsrc/Protocols/Pcap/pcap_layer_factory.hh @@ -0,0 +1,49 @@ +/*! + * \file pcap_layer_factory.hh + * \brief Header file for Pcap layer factory. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#if (OSTYPE == linux) + +#include "layer_stack_builder.hh" + +#include "pcap_layer.hh" + +/*! + * \class pcap_layer_factory + * \brief This class provides a factory class to create an pcap_layer class instance + */ +class pcap_layer_factory: public layer_factory { + static pcap_layer_factory _f; //! Reference to the unique instance of this class +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the udp_layer_factory class + * \remark The PCAP layer identifier is PCAP + */ + pcap_layer_factory() { + // register factory + layer_stack_builder::register_layer_factory("PCAP", this); + }; + /*! + * \fn layer* create_layer(const std::string & type, const std::string & param); + * \brief Create the layers stack based on the provided layers stack description + * \param[in] p_type The provided layers stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + * \inline + */ + inline virtual layer* create_layer(const std::string& p_type, const std::string& p_param) { + return new pcap_layer(p_type, p_param); + }; +}; // End of class pcap_layer_factory + +#endif + diff --git a/ccsrc/Protocols/Tcp/tcp_layer.cc b/ccsrc/Protocols/Tcp/tcp_layer.cc new file mode 100644 index 0000000..fcbc956 --- /dev/null +++ b/ccsrc/Protocols/Tcp/tcp_layer.cc @@ -0,0 +1,177 @@ +#include +#include +#include +#include +#include + +#include "tcp_layer_factory.hh" + +#include "loggers.hh" + +tcp_layer::tcp_layer(const std::string & p_type, const std::string & param) : layer(p_type), SSL_Socket(), PORT(p_type.c_str()), _params(), _client_id{-1}, _time_key("tcp_layer::Handle_Fd_Event_Readable"), _reconnect_on_send{false} { + loggers::get_instance().log(">>> tcp_layer::tcp_layer: %s, %s", to_string().c_str(), param.c_str()); + // Setup parameters + params::convert(_params, param); + _params.log(); + + set_socket_debugging(false); + params::const_iterator it = _params.find(params::debug); + if (it == _params.cend()) { + _params.insert(std::pair(std::string("debug"), "0")); + } else if (it->second.compare("1") == 0) { + set_socket_debugging(true); + } + it = _params.find(params::server); + if (it == _params.cend()) { + _params.insert(std::pair(std::string("server"), "127.0.0.1")); + } + if (!parameter_set(params::server.c_str(), _params[params::server].c_str())) { + loggers::get_instance().warning("tcp_layer::set_parameter: Unprocessed parameter: %s", params::server.c_str()); + } + it = _params.find(params::port); + if (it == _params.cend()) { + _params.insert(std::pair(std::string("port"), "80")); + } + if (!parameter_set(params::port.c_str(), _params[params::port].c_str())) { + loggers::get_instance().warning("tcp_layer::set_parameter: Unprocessed parameter: %s", params::server.c_str()); + } + set_ssl_use_ssl(false); + it = _params.find(params::use_ssl); + if (it == _params.cend()) { + _params.insert(std::pair(std::string("use_ssl"), "0")); + } else if (it->second.compare("1") == 0) { + set_ssl_use_ssl(true); + } + + parameter_set(use_connection_ASPs_name(), "yes"); + parameter_set(server_backlog_name(), "1024"); + set_server_mode(false); + set_ttcn_buffer_usercontrol(true); + set_handle_half_close(true); + + map_user(); + + if (!_reconnect_on_send) { + open_client_connection(_params[params::server].c_str(), _params[params::port].c_str(), NULL, NULL); + } +} + +tcp_layer::~tcp_layer() { + loggers::get_instance().log(">>> tcp_layer::~tcp_layer: %d", _client_id); + if (_client_id != -1) { + remove_client(_client_id); + } + + unmap_user(); +} + +void tcp_layer::Handle_Fd_Event(int fd, boolean is_readable, boolean is_writable, boolean is_error) +{ + loggers::get_instance().log(">>> tcp_layer::Handle_Fd_Event: %d", fd); + Handle_Socket_Event(fd, is_readable, is_writable, is_error); + log_debug("<<< tcp_layer::Handle_Fd_Event"); +} + +void tcp_layer::Handle_Timeout(double time_since_last_call) +{ + loggers::get_instance().log(">>> tcp_layer::Handle_Timeout: %f", time_since_last_call); + Handle_Timeout_Event(time_since_last_call); + loggers::get_instance().log("<<< tcp_layer::Handle_Timeout"); +} + +void tcp_layer::send_data(OCTETSTRING& data, params& params) { + loggers::get_instance().log_msg(">>> tcp_layer::send_data: ", data); + + loggers::get_instance().log("tcp_layer::send_data: SSL mode: %x", get_ssl_use_ssl()); + + send_outgoing(static_cast(data), data.lengthof(), _client_id); +} + +void tcp_layer::receive_data(OCTETSTRING& data, params& params) { + loggers::get_instance().log_msg(">>> tcp_layer::receive_data: ", data); + + receive_to_all_layers(data, params); +} + +void tcp_layer::message_incoming(const unsigned char* message_buffer, int length, int client_id) { + loggers::get_instance().log(">>> tcp_layer::message_incoming"); + loggers::get_instance().log_to_hexa("tcp_layer::message_incoming: ", message_buffer, length); + + + float duration; + loggers::get_instance().set_start_time(_time_key); + OCTETSTRING data(length, message_buffer); + params params; + this->receive_data(data, params); // TODO Check execution time for decoding operation + loggers::get_instance().set_stop_time(_time_key, duration); +} + +void tcp_layer::client_connection_opened(int p_client_id) +{ + loggers::get_instance().log(">>> tcp_layer::client_connection_opened: %d", p_client_id); + _client_id = p_client_id; +} + +bool tcp_layer::add_user_data(int p_client_id) +{ + loggers::get_instance().log(">>> tcp_layer::add_user_data: %d", p_client_id); + if (_params[params::use_ssl].compare("0") == 0) { + loggers::get_instance().log("tcp_layer::add_user_data: Non secured mode"); + return Abstract_Socket::add_user_data(p_client_id); + } + loggers::get_instance().log("tcp_layer::add_user_data: SSL mode"); + return SSL_Socket::add_user_data(p_client_id); +} + +int tcp_layer::send_message_on_fd(int p_client_id, const unsigned char * message_buffer, int length_of_message) +{ + loggers::get_instance().log(">>> tcp_layer::send_message_on_fd: %d", p_client_id); + + if(get_user_data(p_client_id)) + { + loggers::get_instance().log("tcp_layer::send_message_on_fd: SSL mode"); + return SSL_Socket::send_message_on_fd(p_client_id, message_buffer, length_of_message); + } + + loggers::get_instance().log("tcp_layer::send_message_on_fd: Non secured mode"); + return Abstract_Socket::send_message_on_fd(p_client_id, message_buffer, length_of_message); +} + +int tcp_layer::send_message_on_nonblocking_fd(int p_client_id, const unsigned char * message_buffer, int length_of_message) +{ + loggers::get_instance().log(">>> tcp_layer::send_message_on_nonblocking_fd: %d", p_client_id); + + if(get_user_data(p_client_id)) + { + loggers::get_instance().log("tcp_layer::send_message_on_nonblocking_fd: SSL mode"); + return SSL_Socket::send_message_on_nonblocking_fd(p_client_id, message_buffer, length_of_message); + } + + loggers::get_instance().log("tcp_layer::send_message_on_nonblocking_fd: Non secured mode"); + return Abstract_Socket::send_message_on_nonblocking_fd(p_client_id, message_buffer, length_of_message); +} + +int tcp_layer::receive_message_on_fd(int p_client_id) +{ + loggers::get_instance().log(">>> tcp_layer::receive_message_on_fd: %d", p_client_id); + + if(get_user_data(p_client_id)) { + // INFO: it is assumed that only SSL_Socket assigns user data to each peer + loggers::get_instance().log("tcp_layer::receive_message_on_fd: SSL mode"); + return SSL_Socket::receive_message_on_fd(p_client_id); + } + + loggers::get_instance().log("tcp_layer::receive_message_on_fd: Non secured mode"); + return Abstract_Socket::receive_message_on_fd(p_client_id); +} + +void tcp_layer::peer_disconnected(int p_client_id) +{ + loggers::get_instance().log(">>> tcp_layer::peer_disconnected: %d", p_client_id); + + Abstract_Socket::peer_disconnected(p_client_id); + _client_id = -1; +} + +tcp_layer_factory tcp_layer_factory::_f; + diff --git a/ccsrc/Protocols/Tcp/tcp_layer.hh b/ccsrc/Protocols/Tcp/tcp_layer.hh new file mode 100644 index 0000000..166a145 --- /dev/null +++ b/ccsrc/Protocols/Tcp/tcp_layer.hh @@ -0,0 +1,99 @@ +/*! + * \file tcp_layer.hh + * \brief Header file for ITS TCP socket based protocol port layer. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "layer.hh" + +#include "Abstract_Socket.hh" + +class PORT; //! Forward declaration of TITAN class + +/*! + * \class tcp_layer + * \brief This class provides description of ITS TCP port protocol layer + */ +class tcp_layer : public layer, public SSL_Socket, public PORT { + params _params; //! Layer parameters + int _client_id; //! Connection identifier + std::string _time_key; //! \todo + bool _reconnect_on_send; //! Set to true if connection shall be done when sending data. Otherwise, connection is established by the \see constructor + +public: //! \publicsection + /*! + * \brief Specialised constructor + * Create a new instance of the tcp_layer class + * \param[in] p_type \todo + * \param[in] p_param \todo + */ + tcp_layer(const std::string& p_type, const std::string& p_param); + /*! + * \brief Default destructor + * \remark If \see _reconnect_on_send is set to false, the disconnection is done by the destructor + */ + virtual ~tcp_layer(); + + /*! + * \virtual + * \fn void send_data(OCTETSTRING& data, params& params); + * \brief Send bytes formated data to the lower layers + * \param[in] p_data The data to be sent + * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters + * \virtual + */ + virtual void send_data(OCTETSTRING& data, params& params); + /*! + * \virtual + * \fn void receive_data(OCTETSTRING& data, params& params); + * \brief Receive bytes formated data from the lower layers + * \param[in] p_data The bytes formated data received + * \param[in] p_params Some lower layers parameters values when data was received + */ + virtual void receive_data(OCTETSTRING& data, params& info); + + /*! + * \virtual + * \fn void message_incoming(const unsigned char* message_buffer, int length, int client_id = -1); + * \brief Receive bytes formated data from the lower layers + * \param[in] p_buffer The bytes formated data received + * \param[in] p_length The number of bytes received + * \param[in] p_client_id The connection identifier.Default: -1 + */ + virtual void message_incoming(const unsigned char* p_buffer, int p_length, int p_client_id = -1); + +protected: //! \protectedsection + void Add_Fd_Read_Handler(int fd) { Handler_Add_Fd_Read(fd); }; + void Add_Fd_Write_Handler(int fd) { Handler_Add_Fd_Write(fd); }; + void Remove_Fd_Read_Handler(int fd) { Handler_Remove_Fd_Read(fd); }; + void Remove_Fd_Write_Handler(int fd) { Handler_Remove_Fd_Write(fd); }; + void Remove_Fd_All_Handlers(int fd) { Handler_Remove_Fd(fd); }; + void Handler_Uninstall() { Uninstall_Handler(); } + void Timer_Set_Handler(double call_interval, boolean is_timeout = TRUE, + boolean call_anyway = TRUE, boolean is_periodic = TRUE) { + Handler_Set_Timer(call_interval, is_timeout, call_anyway, is_periodic); + }; + + const char* remote_address_name() { return params::server.c_str(); }; + const char* remote_port_name() { return params::port.c_str(); }; + const char* socket_debugging_name() { return params::debug.c_str(); }; + const char* ssl_use_ssl_name() { return params::use_ssl.c_str(); }; + + void client_connection_opened(int p_client_id); + bool add_user_data(int p_client_id); + int send_message_on_fd(int p_client_id, const unsigned char * message_buffer, int length_of_message); + int send_message_on_nonblocking_fd(int client_id, const unsigned char * message_buffer, int length_of_message); + int receive_message_on_fd(int p_client_id); + void peer_disconnected(int p_client_id); + +private: //! \privatesection + void Handle_Fd_Event(int fd, boolean is_readable, boolean is_writable, boolean is_error); + void Handle_Timeout(double time_since_last_call); +}; // End of class tcp_layer + diff --git a/ccsrc/Protocols/Tcp/tcp_layer_factory.hh b/ccsrc/Protocols/Tcp/tcp_layer_factory.hh new file mode 100644 index 0000000..47a1613 --- /dev/null +++ b/ccsrc/Protocols/Tcp/tcp_layer_factory.hh @@ -0,0 +1,44 @@ +/*! + * \file tcp_layer_factory.hh + * \brief Header file for ITS TCP socket based protocol layer factory. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "layer_stack_builder.hh" + +#include "tcp_layer.hh" + +/*! + * \class tcp_layer_factory + * \brief This class provides a factory class to create an tcp_layer class instance + */ +class tcp_layer_factory : public layer_factory { + static tcp_layer_factory _f; //! Reference to the unique instance of this class +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the tcp_layer class + * \remark The TCP socket based layer identifier is TCP + */ + tcp_layer_factory() { + // Register factory + layer_stack_builder::register_layer_factory("TCP", this); + }; + /*! + * \fn layer* create_layer(const std::string & type, const std::string & param); + * \brief Create the layers stack based on the provided layers stack description + * \param[in] p_type The provided layers stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + */ + inline virtual layer* create_layer(const std::string& p_type, const std::string& p_param){ + return new tcp_layer(p_type, p_param); + }; +}; // End of class tcp_layer_factory + diff --git a/ccsrc/Protocols/UDP/udp_layer.cc b/ccsrc/Protocols/UDP/udp_layer.cc new file mode 100644 index 0000000..5bb8640 --- /dev/null +++ b/ccsrc/Protocols/UDP/udp_layer.cc @@ -0,0 +1,125 @@ +#include "udp_layer_factory.hh" + +#include "loggers.hh" + +udp_layer::udp_layer(const std::string & p_type, const std::string & param) : layer(p_type), _params() { + loggers::get_instance().log(">>> udp_layer::udp_layer: %s, %s", to_string().c_str(), param.c_str()); + // Setup parameters + params::convert(_params, param); + params::const_iterator it = _params.find("src_ip"); + if (it == _params.cend()) { + _params.insert(std::pair(std::string("src_ip"), "127.0.0.1")); + } + it = _params.find("src_port"); + if (it == _params.cend()) { + _params.insert(std::pair(std::string("src_port"), "12345")); + } + it = _params.find("dst_ip"); + if (it == _params.cend()) { + _params.insert(std::pair(std::string("dst_ip"), "127.0.0.1")); + } + it = _params.find("dst_port"); + if (it == _params.cend()) { + _params.insert(std::pair(std::string("dst_port"), "12346")); + } + + //_params.log(); +} + +void udp_layer::send_data(OCTETSTRING& data, params& params) { + loggers::get_instance().log_msg(">>> udp_layer::send_data: ", data); + + // Create IP/UDP packet + unsigned int len = sizeof(struct iphdr) + sizeof(struct udphdr) + data.lengthof(); + unsigned char *buffer = new unsigned char[len]; + // Set ip header + _iphdr = (struct iphdr *)buffer; + _daddr.sin_family = AF_INET; + _saddr.sin_family = AF_INET; + params::const_iterator it = _params.find("dst_port"); + _daddr.sin_port = htons(std::strtoul(it->second.c_str(), NULL, 10)); + it = _params.find("src_port"); + _saddr.sin_port = htons(std::strtoul(it->second.c_str(), NULL, 10)); + it = _params.find("dst_ip"); + inet_pton(AF_INET, it->second.c_str(), (struct in_addr *)&_daddr.sin_addr.s_addr); + it = _params.find("src_ip"); + inet_pton(AF_INET, it->second.c_str(), (struct in_addr *)&_saddr.sin_addr.s_addr); + _iphdr->ihl = 5; + _iphdr->version = 4; + _iphdr->tos = IPTOS_LOWDELAY; + _iphdr->id = 0; + _iphdr->frag_off = htons(0x4000); /* Don't fragment */ + _iphdr->ttl = 64; + _iphdr->tot_len = htons(sizeof(struct iphdr) + sizeof(struct udphdr) + data.lengthof()); + _iphdr->protocol = IPPROTO_UDP; + _iphdr->saddr = _saddr.sin_addr.s_addr; + _iphdr->daddr = _daddr.sin_addr.s_addr; + _iphdr->check = 0; + _iphdr->check = inet_check_sum((const void *)_iphdr, sizeof(struct iphdr)); + // Set udp header + _udphdr = (struct udphdr *)(buffer + sizeof(struct iphdr)); + _udphdr->source = _saddr.sin_port; + _udphdr->dest = _daddr.sin_port; + _udphdr->len = htons(sizeof(struct udphdr) + data.lengthof()); + _udphdr->check = 0; + // Set payload + unsigned char *payload = buffer + sizeof(struct iphdr) + sizeof(struct udphdr); + memcpy(payload, static_cast(data), data.lengthof()); + // Calculate UDP checksum + _udphdr->check = inet_check_sum( + (const void *)_udphdr, + sizeof(struct udphdr), + inet_check_sum( + static_cast(data), + data.lengthof(), + inet_check_sum( + (const unsigned char*)(&(_iphdr->saddr)), + 2 * sizeof(_iphdr->saddr), + IPPROTO_UDP + static_cast(ntohs(_udphdr->len)) + ) + ) + ); + // Send data lower layers + OCTETSTRING udp(len, buffer); + send_to_all_layers(udp, params); + // Free buffer + delete [] buffer; +} + +void udp_layer::receive_data(OCTETSTRING& data, params& params) { + loggers::get_instance().log_msg(">>> udp_layer::receive_data: ", data); + + // Decode UDP packet + const unsigned char* buffer = static_cast(data); + _iphdr = (struct iphdr*)buffer; + _udphdr = (struct udphdr*)(buffer + sizeof(struct iphdr)); + loggers::get_instance().log("udp_layer::receive_data: src_port = %d, payload length = %d", ntohs(_udphdr->source), ntohs(_udphdr->len)); + // TODO To be refined + data = OCTETSTRING(ntohs(_udphdr->len) - sizeof(struct udphdr), (unsigned char*)(buffer + sizeof(struct iphdr) + sizeof(struct udphdr))); + //loggers::get_instance().log_msg("udp_layer::receive_data: message payload", data); + + receive_to_all_layers(data, params); +} + +unsigned short udp_layer::inet_check_sum(const void *buf, size_t len, const unsigned short p_initial_sum) { + unsigned long sum = p_initial_sum; + unsigned int i; + + // Checksum all the pairs of bytes first... + for (i = 0; i < (len & ~1U); i += 2) { + sum += (u_int16_t)ntohs(*((u_int16_t *)((unsigned char*)buf + i))); + if (sum > 0xFFFF) + sum -= 0xFFFF; + } // End of 'for' statement + // If there's a single byte left over, checksum it, too + if (i < len) { + sum += *((unsigned char*)buf + i) << 8; + if (sum > 0xFFFF) { + sum -= 0xFFFF; + } + } + + return htons((~sum & 0xffff)); +} + +udp_layer_factory udp_layer_factory::_f; diff --git a/ccsrc/Protocols/UDP/udp_layer.hh b/ccsrc/Protocols/UDP/udp_layer.hh new file mode 100644 index 0000000..c012aba --- /dev/null +++ b/ccsrc/Protocols/UDP/udp_layer.hh @@ -0,0 +1,97 @@ +/*! + * \file udp_layer.hh + * \brief Header file for ITS UDP/IP protocol layer definition. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include +#if !defined(LINUX) +#include +#include +struct iphdr { + #if __BYTE_ORDER == __LITTLE_ENDIAN + u_int8_t ihl:4, + version:4; + #elif __BYTE_ORDER == __BIG_ENDIAN + u_int8_t version:4, + ihl:4; + #else + #error "Please fix " + #endif + u_int8_t tos; + u_int16_t tot_len; + u_int16_t id; + u_int16_t frag_off; + u_int8_t ttl; + u_int8_t protocol; + u_int16_t check; + struct in_addr saddr; + struct in_addr daddr; + //The options start here. +}; +#else // LINUX +#include +#include +#endif // LINUX + +#include "t_layer.hh" +#include "params.hh" + +/*! + * \class udp_layer + * \brief This class provides description of ITS UDP/IP protocol layer + */ +class udp_layer : public layer { + params _params; //! Layer parameters + struct iphdr* _iphdr; //! IP layer description + struct udphdr* _udphdr; //! UDP layer description + struct sockaddr_in _saddr; //! Source socket address description + struct sockaddr_in _daddr; //! Destination socket address description + + /*! + * \fn unsigned short inet_check_sum(const void *buf, size_t hdr_len, const unsigned short p_initial_sum = 0); + * \brief Compute the UDP checksum + * \param[in] p_buffer The data to be sent + * \param[in] p_header_length The UDP header length + * \param [in] p_initial_sum The initial checksum value. Default: 0 + * \return The checksum value + */ + unsigned short inet_check_sum(const void *p_buffer, size_t p_header_length, const unsigned short p_initial_sum = 0); + +public: //! \publicsection + /*! + * \brief Specialised constructor + * Create a new instance of the udp_layer class + * \param[in] p_type \todo + * \param[in] p_param \todo + */ + udp_layer(const std::string & p_type, const std::string & p_param); + /*! + * \brief Default destructor + */ + virtual ~udp_layer() {} + + /*! + * \virtual + * \fn void send_data(OCTETSTRING& data, params& params); + * \brief Send bytes formated data to the lower layers + * \param[in] p_data The data to be sent + * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters + */ + virtual void send_data(OCTETSTRING& data, params& params); + /*! + * \virtual + * \fn void receive_data(OCTETSTRING& data, params& params); + * \brief Receive bytes formated data from the lower layers + * \param[in] p_data The bytes formated data received + * \param[in] p_params Some lower layers parameters values when data was received + */ + virtual void receive_data(OCTETSTRING& data, params& info); +}; // End of class udp_layer + diff --git a/ccsrc/Protocols/UDP/udp_layer_factory.hh b/ccsrc/Protocols/UDP/udp_layer_factory.hh new file mode 100644 index 0000000..2a92043 --- /dev/null +++ b/ccsrc/Protocols/UDP/udp_layer_factory.hh @@ -0,0 +1,44 @@ +/*! + * \file udp_layer_factory.hh + * \brief Header file for ITS UDP/IP protocol layer factory. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "layer_stack_builder.hh" + +#include "udp_layer.hh" + +/*! + * \class udp_layer_factory + * \brief This class provides a factory class to create an udp_layer class instance + */ +class udp_layer_factory: public layer_factory { + static udp_layer_factory _f; //! Reference to the unique instance of this class +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the udp_layer_factory class + * \remark The UDP/IP layer identifier is UDP + */ + udp_layer_factory() { + // register factory + layer_stack_builder::register_layer_factory("UDP", this); + }; + /*! + * \fn layer* create_layer(const std::string & type, const std::string & param); + * \brief Create the layers stack based on the provided layers stack description + * \param[in] p_type The provided layers stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + * \inline + */ + inline virtual layer* create_layer(const std::string& p_type, const std::string& p_param) { + return new udp_layer(p_type, p_param); + }; +}; // End of class udp_layer_factory diff --git a/etc/AtsNg112/AtsNg112.cfg b/etc/AtsNg112/AtsNg112.cfg index c97f4cc..b32db62 100644 --- a/etc/AtsNg112/AtsNg112.cfg +++ b/etc/AtsNg112/AtsNg112.cfg @@ -20,7 +20,7 @@ LogEventTypes:= Yes [TESTPORT_PARAMETERS] # In this section you can specify parameters that are passed to Test Ports. system.SIPP.params := "SIP/UDP(dst_ip=192.168.1.250,dst_port=5060,src_ip=192.168.1.253,src_port=5060)/ETH(mac_src=080027d2b658,mac_dst=90fd61e61902,eth_type=0800)/PCAP(mac_src=080027d2b658,nic=eth1,filter=and udp port 12345)" -system.httpPort.params := "HTTP/TCP(debug=1,server=httpbin.org,port=80,use_ssl=0)" +system.httpPort.params := "APP_LAYERS(codecs=held,html,text)/HTTP/TCP(debug=1,server=httpbin.org,port=80,use_ssl=0)" [DEFINE] # In this section you can create macro definitions, diff --git a/etc/TestCodec/TestCodec.cfg b/etc/TestCodec/TestCodec.cfg index 9e0c189..292567f 100644 --- a/etc/TestCodec/TestCodec.cfg +++ b/etc/TestCodec/TestCodec.cfg @@ -1,7 +1,10 @@ [MODULE_PARAMETERS] # This section shall contain the values of all parameters that are defined in your TTCN-3 modules. -LibCommon_Time.PX_TAC := 10.0 +LibItsHttp_Pics.PICS_HEADER_HOST := "httpbin.org" +#LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8"; + +LibCommon_Time.PX_TAC := 30.0 [LOGGING] # In this section you can specify the name of the log file and the classes of events @@ -19,7 +22,9 @@ LogEventTypes:= Yes [TESTPORT_PARAMETERS] # In this section you can specify parameters that are passed to Test Ports. -system.sipPort.params := "SIP/UDP(dst_ip=192.168.1.250,dst_port=5060,src_ip=192.168.1.253,src_port=5060)/ETH(mac_src=080027d2b658,mac_dst=90fd61e61902,eth_type=0800)/PCAP(mac_src=080027d2b658,nic=eth1,filter=and udp port 12345)" +system.httpPort.params := "HTTP(codecs=held)/TCP(debug=1,server=now.httpbin.org,port=80,use_ssl=0)" + +#system.sipPort.params := "SIP/UDP(dst_ip=192.168.1.250,dst_port=5060,src_ip=192.168.1.253,src_port=5060)/ETH(mac_src=080027d2b658,mac_dst=90fd61e61902,eth_type=0800)/PCAP(mac_src=080027d2b658,nic=eth1,filter=and udp port 12345)" #system.pemeaPort.params := "PEMEA/HTTP/TCP(debug=1,server=httpbin.org,port=80,use_ssl=0)" [DEFINE] @@ -49,9 +54,9 @@ system.sipPort.params := "SIP/UDP(dst_ip=192.168.1.250,dst_port=5060,src_ip=192. #TestCodec_Register.tc_register_request_2 #TestCodec_Register.tc_invite_request_2 #TestCodec_Register.tc_invite_request_2 -TestCodec_HttpRequest.tc_http_get_1 -TestCodec_HttpResponse.tc_http_200_ok_1 - +#TestCodec_HttpRequest.tc_http_get_1 +#TestCodec_HttpResponse.tc_http_200_ok_1 +TestCodec_HttpPort.tc_http_map_1 [GROUPS] # In this section you can specify groups of hosts. These groups can be used inside the diff --git a/testdata/SIP_ACK_Request.pcap b/testdata/SIP_ACK_Request.pcap new file mode 100644 index 0000000000000000000000000000000000000000..4a6da5ab0d6f94a9fd62dcc66f43c3dd56db52c6 GIT binary patch literal 645 zcma)3PjAyO6!)qLAwwjfHzXvVI8pD}X`CjdQ>$!+Xf2D@ZQ{bgOQSYY7nj5n(@q?? z?+Z*q+&S?Tn8c9_pMo=|aTrdsYCCP%vh*y!-ygr)$)~ zeqi*jh872*hoApMpH9<@CujH3CaP_}eTLA-#|Yu^>VvOO>(A@w_48W$=igqiMT&Ip z9~DW?x(p}-piRnr2LzB&7_D&%77pZW)(AIz;&?*1+!i-lnR!;3PBPsXB-unyeNrNd zD*qt! zap4o!aPFuhom`Rh;y^|-V9XKJ)blqAK=4*srz34-fzvRH)nS@V=unM=-e5qFgHh0L z^yY&T19X8#*|tG}pkc9FLHhe)1dOI(xoHftCFAC}%Un*mpv6?2vA&fZ2;IFJo>8=?t exlX={zI|Z0<7wx_o4#ruY`KmA2Hdl-h5rHUMy?|O literal 0 HcmV?d00001 diff --git a/testdata/SIP_BYE_Request.pcap b/testdata/SIP_BYE_Request.pcap new file mode 100644 index 0000000000000000000000000000000000000000..4d00d33f1339edb76177371d22a141fc62d80e1a GIT binary patch literal 714 zcma)4F>ljA6h5L3$i)(njRD=ngs<-|u^l_4O6odbH7QopRxn;2H?c^4!FN@oP93_l zFd`wCnfMFz2Qcshn3RewVbVEOGKl!$| z^K~7)uc75d=+@is@#U-R$K5wKQHW}H3XqN(^0HjH%Z-WDP6vZ2ifN2DLHnXB_AKRYexUAv)kxF$~R;834t)hiUW+apL1gWv^&Bq6cADrBbCzW<(T|WxLI`;**Zk0M=r*X$<+o>Wkux z7h~yTSJ#ZKUXr9zTDz$_6U7TF%8!MQqc9Au7BE67Z>I~*L}ntlc$J&!oDTJLR2$P( z_Qa`5e^Kcr0gq=usqGN$&vylY!&;@EjTGp^NR%hyB+DmcD8@l=Fd&Oy6!fj$d~mLT zE|55Xs!`yONbXmV{$UgYC0SG&Nr1O_(j0fG%LsD_^+>~8{DtM(bM8$aH;;DgQaYelU>ZLGtpdbg literal 0 HcmV?d00001 diff --git a/testdata/SIP_INVITE_Request.pcap b/testdata/SIP_INVITE_Request.pcap new file mode 100644 index 0000000000000000000000000000000000000000..5f1421f74244242120a7de05922e1c406c3b86b4 GIT binary patch literal 653 zcmZutKabNe95v-6P>x7Ix0}pzTT(l1a;=Neoq9cppeVZjfz?f{)KVJ<+bw@426nyx z5@KiKD{voxfltBA#Bw+-RqrHhdGPx^z4w0a=l5@4YG4m+&*dcmH|*!`lV9hH2e$yP zf%OC6&gb9BhmYdV{ZF?+AJksFJOJSRJpi0+Z~yB-{jh#fzo_+o+>D=3;!z)JQIe(R z3LkT$g)dbOhjG#feB?SkHlKU(DS=@pijIP2bc~UY5%OC;#&#?V!%{=w!%8F`4Dq@8831(BM`SbJ8<;2t2RyvrWA*>l&8RsELAh5W3EQz46YZdd*a(2|ThJC0=jFR4$6#oAA^~MW9GU=B?O# z$tez+Y?^l0NX`qcnBken48@(m$JIq$sYLDxDd<&m*BQxw(XMxCx1R_`wv{%1i`8n7$>crT4<@7 zPAV!KZn&^khh)mg^X5m0V{**)kInwnM9YK1v!Vlcd5KRi<39k|3D$2IEHC II#;p&0_GyK{r~^~ literal 0 HcmV?d00001 diff --git a/testdata/SIP_INVITE_Request_sdp.pcap b/testdata/SIP_INVITE_Request_sdp.pcap new file mode 100644 index 0000000000000000000000000000000000000000..1466cbd2a19de37a96e14995bc9f96180c0c26ea GIT binary patch literal 650 zcmZutF>ezw7&TD`bZ`S?K}=?0yNi9fOLGoJsoE5spw+3lW_Rwai>2gzwVgnjIe7PIr36Ugd%E^=mstU9`=ZCmp*0s|BvxHjrKhe|H) zY8kH0#`RikU|315Y(L%&BiA`%@4Q2)-ZE8aJB1x7_4a2>m7*%W3D1pG1d3b~-ipna zoZ_I%rupEeQu2x`W_aN-LvbAVxY=kRl_)(S1--5AI+^_E?QWQM{E1*>lWFJlAceO= zym394Dput)`aYh$3a78*px4Kd_3An+YA;DwQsi87t!+H8i|m3;EHFvKEm`wJ(@6t` z<2BZGa{52mlV%uFmLMO2h$z2TmH?|k?E`g}hDCc&r%0|0UvxIFmSnSZiCKLf)CVCL>K zyuJ}%bGK8V268Vt1mJ2G04tuHeq6{e=KJ}6?%}Q7thHKen>DD#G3{xtNR=Bc9H|o6 zYJ^L!gKcY_b-SpsK_T%xvRp0~s{}g)W2fj4l3mNx@YJAfo+hS4;gF&E356~u82$>_ zR$a*>3Rj0hjb@AN)vAVTGg70=xP&XdVM$Q(N-JK5Y^%x6QC+GtreaN@mrX*n-eD>c zX@cs#G%`Y_Xf2Kv*P3TfqUbOnW!E9YuBuGdRjQ`xWcIB_H{{dEPYhN%r%5iCLBZOnY{W$j9iltE}xF~lv Qi|wsq!6PnN$&A|8H?lX4ssI20 literal 0 HcmV?d00001 diff --git a/testdata/SIP_REGISTER_Request.pcap b/testdata/SIP_REGISTER_Request.pcap new file mode 100644 index 0000000000000000000000000000000000000000..8204be0acfbe3ae4c24a636c37e92599870ff604 GIT binary patch literal 528 zcma)&KT88K7{*g^ki%27i#Uaw9PBlxceR&#qS&fMh0<0Lx7dbWpiRzPisB#+?tTG5 z+@1Ui7FQQ1KY=(qxzwC;)X_lT{gdbSzE57C9`DD%I7rWM2tYovaV=)EZb&^~F zChtCL*Ej5I_I3hPK<4de4uGo}0F3r{=3zd&kR4OExl%jlK$nWEVs+!7(he4viJ;$5e9Cqk)w~&U&h|79}O!USN$1eaQmrFWXw= zg159Zc^pTA$4P7&o21*#Rm&K<3@WUZt~ zCvb{BD!Pu|XrG+twuC$*vK?c%qUnu(6bY$l8^egG&@`IjKU~u|WCW)_oze~eF6vwZjg9Za?H(k!nrPsSla`{m!64NSls(OzB`=<1py2m z01J;_wcGpPd--7wRDrN|vI@Y>5&&X5n|WTzt>=2Vo*=!y)va2AA`A(}(2lQy(3iw* zr`ye26%(okV;YrNnP9{PNI`_~aTKOrnC1_>&`&!i#JrVw7bc{bL#(5wWmhF}Cyvfc zxRC_srgc~+jcPgdlGIC+07bEHs+i%;V(R!MCS$5oRTAxJsJ~3Sn3PA-Kb6L?p%GP+ z#Ae`_aA>>GsMH|QD54Az11WgGEw*AObUUSMqqD2D_EBK{CUUW(JFe13ZRWWO<||vS wONh#l9Xs4Qk*C6CV-~nN4(A^?#ks7{0$0Z1m`;NK-)s_FCOV}$W0EL|KSA`I$^ZZW literal 0 HcmV?d00001 diff --git a/testdata/SIP_STATUS_200ok.pcap b/testdata/SIP_STATUS_200ok.pcap new file mode 100644 index 0000000000000000000000000000000000000000..fa03b13c7676d6bb381edfa5e6d2a2748d58734d GIT binary patch literal 893 zcma)4&u`N(6wcTVC?XQD6P%)+hO~Hgezi$R)v|RX+5}VEad#cJwaDVkb_?RnoqvD} zM)!dTL3X_3 z0%*Gs+D{KH^BKdjy>jlH>>b+(0t6xO0g3|{!ek_HNv7$mXnNp}4ub%-Tokk{a~Btd zlkLT}-}0j{3ObiS%iI_IG`1VP;UKezR4OVO_Cv|4cqXYp9jYV)Tuj=D!jlxWBG~c~ zvdkg>Z;&5`6#A{PCNiLBv8D}?-R~V_gJG|)oxD_-sQB-$mjoA+wG;ZXVuH%l3n8@3 z?o3T-sTjeE@zTl4v1W6|t8}ZJ6~%*XAuFs?(nhmMNl0=RkD*6K1bY66j6xJbG>+V+ ziyGUc}j*D{ZtE+JG(=LuCWxOl#5)!iE$CAln|f-fngyIv4= zy$E@aT-Zy>Rdyx#oaHoM6q1q?h84}7lYaKkw13{X&fA@0F=6Gz*`JkUFFgS*8$e z%N$TKXM{R^K2vlB11zgIzyx9Bxy_D#Yv6_eMZk-e+ErS+vf@IeTG>e<5-!-JE;p-c YFU@1S(ma-O(SPq8(Q;Dr(sHoOUzo!U^8f$< literal 0 HcmV?d00001 diff --git a/ttcn/TestCodec/TestCodec_HttpPort.ttcn b/ttcn/TestCodec/TestCodec_HttpPort.ttcn new file mode 100644 index 0000000..b5ef728 --- /dev/null +++ b/ttcn/TestCodec/TestCodec_HttpPort.ttcn @@ -0,0 +1,62 @@ +/** + * @author ETSI / STF549 + * @version $URL:$ + * $ID:$ + * @desc This module provides the codec validation test cases. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * @see ETSI TS 103 478 + */ +module TestCodec_HttpPort { + + // LibCommon + + // LibHttp + import from LibItsHttp_TypesAndValues all; + import from LibItsHttp_XmlMessageBodyTypes all; + import from LibItsHttp_Functions all; + import from LibItsHttp_Templates all; + import from LibItsHttp_TestSystem all; + + testcase tc_http_map_1() runs on HttpComponent system HttpTestAdapter { + // Local variables + var HeaderLines v_headers; + + map(self:httpPort, system:httpPort); + + // Preamble + f_init_default_headers_list(v_headers); + httpPort.send( + m_http_request( + m_http_request_get( + "/get", + v_headers, + m_http_message_body_xml( + XmlBody: { raw := "test" } + )))); + tc_ac.start; + alt { + [] httpPort.receive(mw_http_response(mw_http_response_ok)) { + tc_ac.stop; + setverdict(pass, "Get a response"); + } + [] httpPort.receive { + tc_ac.stop; + setverdict(fail, "Unexpected response"); + } + [] tc_ac.timeout { + setverdict(inconc, "No response"); + } + } // End of 'alt' statement + + unmap(self:httpPort, system:httpPort); + + } // End of testcase tc_http_map_1 + + control { + execute(tc_http_map_1()); + } + +} // End of module TestCodec_HttpPort -- GitLab From f4b464a9a5ea0e3593f4ba5bc72c79ed4e5e221a Mon Sep 17 00:00:00 2001 From: Yann Garcia Date: Thu, 31 May 2018 10:41:00 +0200 Subject: [PATCH 15/72] Update README.md --- ccsrc/README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ccsrc/README.md b/ccsrc/README.md index a3daa21..10a5022 100644 --- a/ccsrc/README.md +++ b/ccsrc/README.md @@ -1 +1,6 @@ This folder will contain the TITAN test adapter code. + +Required configuration: +- Operating System: Ubuntu 16.04 LTS/17.10 LTS +- Eclipse Version: Neon.3 Release (4.6.3) +- Titan Core Version, accessible [here](https://github.com/eclipse/titan.core) -- GitLab From 2ca9a2a596b660185d61f0a38d58418aee3c1d7d Mon Sep 17 00:00:00 2001 From: Garcia Date: Mon, 4 Jun 2018 16:28:39 +0200 Subject: [PATCH 16/72] Add RFC 5985 - HELD support --- ccsrc/Framework/include/codec.hh | 3 +- ccsrc/Framework/include/codec_factory.hh | 46 +++ .../Framework/include/codec_stack_builder.hh | 74 +++++ .../Framework/include/layer_stack_builder.hh | 2 +- ccsrc/Framework/include/params.hh | 4 +- ccsrc/Framework/src/codec_stack_builder.cc | 4 + ccsrc/Framework/src/params.cc | 2 + ccsrc/Protocols/Held/held.codec.cc | 73 +++++ ccsrc/Protocols/Held/held_codec.hh | 23 ++ ccsrc/Protocols/Held/held_codec_factory.hh | 46 +++ ccsrc/Protocols/Http/http_codec.cc | 144 ++++++++-- ccsrc/Protocols/Http/http_codec.hh | 9 +- ccsrc/Protocols/Http/http_layer.cc | 51 +--- etc/TestCodec/TestCodec.cfg | 5 +- logs/STF549_ng112.yann-FSCOM-hc.log | 120 -------- logs/STF549_ng112.yann-FSCOM-mtc.log | 68 ----- test_purposes/LIS_HTTP_POST_BV_xx.tplan2 | 270 ++++++++++++++++++ test_purposes/example.tplan2 | 105 ------- test_purposes/lis.tplan2 | 131 --------- ttcn/AtsNg112/AtsNg112_TestCases.ttcn | 6 +- .../LibNg112/ttcn/LibNg112_Functions.ttcn | 68 +++-- .../LibNg112/ttcn/LibNg112_Templates.ttcn | 81 ------ ttcn/TestCodec/TestCodec_HttpPort.ttcn | 111 ++++--- 23 files changed, 788 insertions(+), 658 deletions(-) create mode 100644 ccsrc/Framework/include/codec_factory.hh create mode 100644 ccsrc/Framework/include/codec_stack_builder.hh create mode 100644 ccsrc/Framework/src/codec_stack_builder.cc create mode 100644 ccsrc/Protocols/Held/held.codec.cc create mode 100644 ccsrc/Protocols/Held/held_codec.hh create mode 100644 ccsrc/Protocols/Held/held_codec_factory.hh delete mode 100644 logs/STF549_ng112.yann-FSCOM-hc.log delete mode 100644 logs/STF549_ng112.yann-FSCOM-mtc.log create mode 100644 test_purposes/LIS_HTTP_POST_BV_xx.tplan2 delete mode 100644 test_purposes/example.tplan2 delete mode 100644 test_purposes/lis.tplan2 diff --git a/ccsrc/Framework/include/codec.hh b/ccsrc/Framework/include/codec.hh index ce09607..9a6f4b5 100644 --- a/ccsrc/Framework/include/codec.hh +++ b/ccsrc/Framework/include/codec.hh @@ -22,8 +22,7 @@ class BITSTRING; //! Declare TITAN class * \abstract */ template -class codec -{ +class codec { protected: params* _params; //! Reference to params stack // \todo Use smart pointer std::unique_ptr diff --git a/ccsrc/Framework/include/codec_factory.hh b/ccsrc/Framework/include/codec_factory.hh new file mode 100644 index 0000000..cbded3b --- /dev/null +++ b/ccsrc/Framework/include/codec_factory.hh @@ -0,0 +1,46 @@ +/*! + * \file codec_factory.hh + * \brief Header file for ITS abstract protocol codec definition. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include +#include +#include +#include + +#include "codec.hh" + +class Record_Type; //! TITAN forward declaration + +/*! + * \class codec_factory + * \brief This class provides a factory class to create codec class instances + * \abstract + */ +class codec_factory { +public: //! \publicsection + /*! + * \fn codec(); + * \brief Default constructor + */ + codec_factory() { }; + /*! + * \fn codec* create_codec(const std::string & type, const std::string & param); + * \brief Create the codecs stack based on the provided codecs stack description (cf. remark) + * \param[in] p_type The provided codecs stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + * \remark The description below introduces codecs stack in case of ITS project: + * HTTP(codecs=xml:held_codec;html:html_codec,json:json_codec)/TCP(debug=1,server=httpbin.org,port=80,use_ssl=0) + * \pure + */ + virtual codec* create_codec() = 0; +}; // End of class codec_factory + diff --git a/ccsrc/Framework/include/codec_stack_builder.hh b/ccsrc/Framework/include/codec_stack_builder.hh new file mode 100644 index 0000000..1a4d430 --- /dev/null +++ b/ccsrc/Framework/include/codec_stack_builder.hh @@ -0,0 +1,74 @@ +/*! + * \file codec_stack_builder.hh + * \brief Header file for ITS protocol stack builder. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "codec_factory.hh" + +class Record_Type; //! TITAN forward declaration + +/*! + * \class codec_stack_builder + * \brief This class provides a factory class to create Codec class instances + */ +class codec_stack_builder { +private: //! \privatesection + static codec_stack_builder* _instance; //! Smart pointer to the unique instance of the logger framework + std::map _codecs; //! The list of the registered \see t_codec factories + + /*! + * \brief Default constructor + * Create a new instance of the codec_stack_builder class + * \private + */ + codec_stack_builder() { }; // can not be created manually +public: //! \publicsection + /*! + * \fn codec_stack_builder* get_instance(); + * \brief Accessor for the unique instance of the logger framework + * \static + */ + static codec_stack_builder* get_instance() { return _instance ? _instance : _instance = new codec_stack_builder(); }; + + /*! + * \fn void register_codec_factory(const std::string & p_type, codec_factory* p_codec_factory); + * \brief Add a new codec factory + * \param[in] p_type The codec identifier (e.g. GN for the GeoNetworking codec...) + * \param[in] p_codec_factory A reference to the \see codec_factory + * \static + */ + static void register_codec_factory(const std::string & p_type, codec_factory* p_codec_factory) { codec_stack_builder::get_instance()->_register_codec_factory(p_type, p_codec_factory); }; + +private: //! \privatesection + /*! + * \fn void _register_codec_factory(const std::string & p_type, codec_factory* p_codec_factory); + * \brief Add a new codec factory + * \param[in] p_type The codec identifier (e.g. GN for the GeoNetworking codec...) + * \param[in] p_codec_factory A reference to the \see codec_factory + */ + void _register_codec_factory(const std::string & p_type, codec_factory* p_codec_factory) { _codecs[p_type] = p_codec_factory; }; + +public: //! \publicsection + /*! + * \fn codec* get_codec(const char* p_codec_name); + * \brief Retrieve the specified codec name from the list of the registered codecs + * \param[in] p_codec_name The codec indentifier + * \return The pointer to the codec object on success, nullptr otherwise + */ + inline codec* get_codec(const char* p_codec_name) { // NOTE A virtual method cannot not be a template ==> polymorphism required here + typename std::map::const_iterator it = _codecs.find(p_codec_name); + if (it != _codecs.cend()) { + return it->second->create_codec(); + } + + return nullptr; + } +}; // End of class codec_stack_builder + diff --git a/ccsrc/Framework/include/layer_stack_builder.hh b/ccsrc/Framework/include/layer_stack_builder.hh index 7d3a000..af797a3 100644 --- a/ccsrc/Framework/include/layer_stack_builder.hh +++ b/ccsrc/Framework/include/layer_stack_builder.hh @@ -20,7 +20,7 @@ class layer_stack_builder { private: //! \privatesection typedef std::map LayerFactoryMap; - static layer_stack_builder * _instance; //! Smart pointer to the unique instance of the logger framework + static layer_stack_builder * _instance; //! Smart pointer to the unique instance of the logger framework std::map _layer_factories; //! The list of the registered \see t_layer factories /*! diff --git a/ccsrc/Framework/include/params.hh b/ccsrc/Framework/include/params.hh index bcff3fd..a0c841d 100644 --- a/ccsrc/Framework/include/params.hh +++ b/ccsrc/Framework/include/params.hh @@ -41,6 +41,8 @@ public: //! \publicsection static const std::string& sip_version; static const std::string& payload; //! UpperLayer Payload parameter name + static const std::string& codecs; //! List of codecs to use for HTTP application layers + /*! * \brief Default constructor * Create a new instance of the params class @@ -76,7 +78,7 @@ public: //! \publicsection /*! * \static - * \fn void convert(params& p_param, const std::string& p_parameters); + * \fn void convert(params& p_param, const std::string p_parameters); * \brief Create a new instance of a params object by converting a list of ITS parameters in string format (t1=v1,T2=(v0,v1v2)...) * \return a new instance of a params object */ diff --git a/ccsrc/Framework/src/codec_stack_builder.cc b/ccsrc/Framework/src/codec_stack_builder.cc new file mode 100644 index 0000000..2bf087e --- /dev/null +++ b/ccsrc/Framework/src/codec_stack_builder.cc @@ -0,0 +1,4 @@ +#include "codec_stack_builder.hh" + +codec_stack_builder* codec_stack_builder::_instance = NULL; + diff --git a/ccsrc/Framework/src/params.cc b/ccsrc/Framework/src/params.cc index 8a8418a..1fae651 100644 --- a/ccsrc/Framework/src/params.cc +++ b/ccsrc/Framework/src/params.cc @@ -36,6 +36,8 @@ const std::string& params::sip_url = std::string("sip_url"); const std::string& params::sip_version = std::string("sip_version"); const std::string& params::payload = std::string("payload"); +const std::string& params::codecs = std::string("codecs"); + void params::convert(params& p_param, const std::string p_parameters) { // Sanity checks if (p_parameters.length() == 0) { diff --git a/ccsrc/Protocols/Held/held.codec.cc b/ccsrc/Protocols/Held/held.codec.cc new file mode 100644 index 0000000..012f99a --- /dev/null +++ b/ccsrc/Protocols/Held/held.codec.cc @@ -0,0 +1,73 @@ +#include +#include +#include + +#include "held_codec_factory.hh" + +#include "loggers.hh" + +#include "LibItsHttp_XmlMessageBodyTypes.hh" +#include "urn_ietf_params_xml_ns_geopriv_held.hh" + +int held_codec::encode (const LibItsHttp__XmlMessageBodyTypes::XmlBody& msg, OCTETSTRING& data) +{ + loggers::get_instance().log_msg(">>> held_codec::encode: ", (const Base_Type&)msg); + + TTCN_EncDec::clear_error(); + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); + TTCN_Buffer encoding_buffer; + + if (msg.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_locationRequest)) { + const urn__ietf__params__xml__ns__geopriv__held::LocationRequestType& location_request = msg.locationRequest(); + loggers::get_instance().log_msg("held_codec::encode: Process LocationRequestType", (const Base_Type&)location_request); + location_request.encode(urn__ietf__params__xml__ns__geopriv__held::LocationRequest_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + } else if (msg.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_locationResponse)) { + const urn__ietf__params__xml__ns__geopriv__held::LocationResponseType& location_response = msg.locationResponse(); + loggers::get_instance().log_msg("held_codec::encode: Process LocationResponseType", (const Base_Type&)location_response); + location_response.encode(urn__ietf__params__xml__ns__geopriv__held::LocationResponse_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + } else { + return -1; + } + data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()); + loggers::get_instance().log_msg("held_codec::decode: After encoding: ", data); + + loggers::get_instance().log("<<< held_codec::encode"); + return 0; +} + +int held_codec::decode (const OCTETSTRING& p_data, LibItsHttp__XmlMessageBodyTypes::XmlBody& msg, params* p_params) +{ + loggers::get_instance().log_msg(">>> held_codec::decode: p_data=", p_data); + + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); + TTCN_EncDec::clear_error(); + TTCN_Buffer decoding_buffer(p_data); + + // Sanity checks + params::const_iterator it; + if (p_params == nullptr) { + loggers::get_instance().warning("held_codec::decode: Failed to access p_params (null pointer)"); + return -1; + } else { + it = p_params->find("decode_str"); + if (it == p_params->cend()) { + loggers::get_instance().warning("held_codec::decode: Failed to access p_params item (decode_str)"); + return -1; + } + } + + if (it->second.find("LocationRequest") != std::string::npos) { + urn__ietf__params__xml__ns__geopriv__held::LocationResponseType locationResponse; + locationResponse.decode(urn__ietf__params__xml__ns__geopriv__held::LocationResponse_descr_, decoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + msg.locationResponse() = locationResponse; + } else { + urn__ietf__params__xml__ns__geopriv__held::LocationResponseType locationResponse; + locationResponse.decode(urn__ietf__params__xml__ns__geopriv__held::LocationResponse_descr_, decoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + msg.locationResponse() = locationResponse; + } + + loggers::get_instance().log_msg("<<< held_codec::decode: ", (const Base_Type&)msg); + return 0; +} + +held_codec_factory held_codec_factory::_f; diff --git a/ccsrc/Protocols/Held/held_codec.hh b/ccsrc/Protocols/Held/held_codec.hh new file mode 100644 index 0000000..2b302de --- /dev/null +++ b/ccsrc/Protocols/Held/held_codec.hh @@ -0,0 +1,23 @@ +#pragma once + +#include "codec.hh" +#include "params.hh" + +class Base_Type; +class TTCN_Typedescriptor_t; +class TTCN_Buffer; + +namespace LibItsHttp__XmlMessageBodyTypes { + class XmlBody; +} + +class held_codec: public codec +{ +public: + explicit held_codec() : codec() { }; + virtual ~held_codec() { }; + + virtual int encode (const LibItsHttp__XmlMessageBodyTypes::XmlBody&, OCTETSTRING& data); + virtual int decode (const OCTETSTRING& p_data, LibItsHttp__XmlMessageBodyTypes::XmlBody&, params* p_params = NULL); + +}; // End of class held_codec diff --git a/ccsrc/Protocols/Held/held_codec_factory.hh b/ccsrc/Protocols/Held/held_codec_factory.hh new file mode 100644 index 0000000..703fa8f --- /dev/null +++ b/ccsrc/Protocols/Held/held_codec_factory.hh @@ -0,0 +1,46 @@ +/*! + * \file held_codec_factory.hh + * \brief Header file for ITS HELD/IP protocol codec factory. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "codec_stack_builder.hh" + +#include "held_codec.hh" + +class Record_Type; //! TITAN forward declaration + +/*! + * \class held_codec_factory + * \brief This class provides a factory class to create an held_codec class instance + */ +class held_codec_factory: public codec_factory { + static held_codec_factory _f; //! Reference to the unique instance of this class +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the held_codec_factory class + * \remark The HELD/IP codec identifier is HELD + */ + held_codec_factory() { + // register factory + codec_stack_builder::register_codec_factory("held_codec", this); + }; + /*! + * \fn codec* create_codec(const std::string & type, const std::string & param); + * \brief Create the codecs stack based on the provided codecs stack description + * \param[in] p_type The provided codecs stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + * \inline + */ + inline virtual codec* create_codec() { + return (codec*)new held_codec(); + }; +}; // End of class held_codec_factory diff --git a/ccsrc/Protocols/Http/http_codec.cc b/ccsrc/Protocols/Http/http_codec.cc index 43eb528..d24e1af 100644 --- a/ccsrc/Protocols/Http/http_codec.cc +++ b/ccsrc/Protocols/Http/http_codec.cc @@ -1,9 +1,11 @@ #include #include #include -//#include + +#include "codec_stack_builder.hh" #include "http_codec.hh" + #include "loggers.hh" #include "LibItsHttp_TypesAndValues.hh" @@ -128,16 +130,10 @@ int http_codec::encode_request(const LibItsHttp__TypesAndValues::Request& p_requ if (v.ispresent()) { const LibItsHttp__MessageBodyTypes::HttpMessageBody& body = static_cast(*v.get_opt_value()); loggers::get_instance().log_msg("http_codec::encode_request: body: ", body); - if (body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_ms__body)) { - os = body.ms__body(); - } else { - LibItsHttp__XmlMessageBodyTypes::XmlBody xml_body = body.xml__body(); - if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_raw)) { - os = OCTETSTRING(xml_body.raw().lengthof(), (unsigned char*)static_cast(xml_body.raw())); - } + if (encode_body(body, os) == -1) { + _ec.length = 0; } } - loggers::get_instance().log("http_codec::encode_request: HTTP message lenght: %d ", os.lengthof()); // Encode generic part p_encoding_buffer.put_cs(p_request.method()); @@ -156,7 +152,11 @@ int http_codec::encode_request(const LibItsHttp__TypesAndValues::Request& p_requ p_encoding_buffer.put_cs(header.header__name()); p_encoding_buffer.put_cs(": "); if (std::string(static_cast(header.header__name())).compare("Content-Length") == 0) { - p_encoding_buffer.put_cs(int2str(os.lengthof() + 2/*Stand for the last CRLF*/)); + if (_ec.length != 0) { + p_encoding_buffer.put_cs(int2str(_ec.length + 2/*Stand for the last CRLF*/)); + } else { + p_encoding_buffer.put_cs("0"); + } _ec.is_content_length_present = 0x01; } else { const OPTIONAL& o = header.header__value(); @@ -195,16 +195,10 @@ int http_codec::encode_response (const LibItsHttp__TypesAndValues::Response& p_r if (v.ispresent()) { const LibItsHttp__MessageBodyTypes::HttpMessageBody& body = static_cast(*v.get_opt_value()); loggers::get_instance().log_msg("http_codec::encode_response: body: ", body); - if (body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_ms__body)) { - os = body.ms__body(); - } else { - LibItsHttp__XmlMessageBodyTypes::XmlBody xml_body = body.xml__body(); - if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_raw)) { - os = OCTETSTRING(xml_body.raw().lengthof(), (unsigned char*)static_cast(xml_body.raw())); - } + if (encode_body(body, os) == -1) { + _ec.length = 0; } } - loggers::get_instance().log("http_codec::encode_response: HTTP message lenght: %d ", os.lengthof()); // Encode generic part p_encoding_buffer.put_cs("HTTP/"); @@ -226,7 +220,11 @@ int http_codec::encode_response (const LibItsHttp__TypesAndValues::Response& p_r p_encoding_buffer.put_cs(header.header__name()); p_encoding_buffer.put_cs(": "); if (std::string(static_cast(header.header__name())).compare("Content-Length") == 0) { - p_encoding_buffer.put_cs(int2str(os.lengthof() + 2/*Stand for the last CRLF*/)); + if (_ec.length != 0) { + p_encoding_buffer.put_cs(int2str(_ec.length + 2/*Stand for the last CRLF*/)); + } else { + p_encoding_buffer.put_cs("0"); + } _ec.is_content_length_present = 0x01; } else { const OPTIONAL& o = header.header__value(); @@ -320,9 +318,48 @@ int http_codec::decode_header(CHARSTRING& header_line, LibItsHttp__TypesAndValue } } +int http_codec::encode_body(const LibItsHttp__MessageBodyTypes::HttpMessageBody& p_message_body, OCTETSTRING& p_encoding_buffer) { + loggers::get_instance().log_msg(">>> http_codec::encode_body: ", (const Base_Type&)p_message_body); + loggers::get_instance().log("http_codec::encode_body: # of codecs=%d", _codecs.size()); + + if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_ms__body)) { + p_encoding_buffer = p_message_body.ms__body(); + } else if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_html__body)) { + p_encoding_buffer = OCTETSTRING(p_message_body.html__body().lengthof(), (unsigned char*)static_cast(p_message_body.html__body())); + } else if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_text__body)) { + p_encoding_buffer = OCTETSTRING(p_message_body.text__body().lengthof(), (unsigned char*)static_cast(p_message_body.text__body())); + } else if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_xml__body)) { + const LibItsHttp__XmlMessageBodyTypes::XmlBody& xml_body = p_message_body.xml__body(); + if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_raw)) { + p_encoding_buffer = OCTETSTRING(xml_body.raw().lengthof(), (unsigned char*)static_cast(xml_body.raw())); + } else if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_locationRequest)) { + if (_codecs["held"].get() != nullptr) { + loggers::get_instance().log("http_codec::encode_body: Call 'held_codec'"); + _codecs["held"]->encode((Record_Type&)p_message_body, p_encoding_buffer); + } else { + loggers::get_instance().warning("http_codec::encode_body: Failed to encode HELD message"); + return -1; + } + } else if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_locationResponse)) { + loggers::get_instance().warning("http_codec::encode_body: No variant to encode"); + } else { + // TODO To be continued + } + } else { + loggers::get_instance().warning("http_codec::encode_body: Failed to encode HTTP message body"); + return -1; + } + loggers::get_instance().log_msg("http_codec::encode_body: HTTP message ", p_encoding_buffer); + _ec.length = p_encoding_buffer.lengthof(); + loggers::get_instance().log("http_codec::encode_body: HTTP message length: %d", _ec.length); + + return 0; +} + int http_codec::decode_body(TTCN_Buffer& decoding_buffer, LibItsHttp__MessageBodyTypes::HttpMessageBody& message_body) { loggers::get_instance().log(">>> http_codec::decode_body"); loggers::get_instance().log_to_hexa("http_codec::decode_body", decoding_buffer); + loggers::get_instance().log("http_codec::decode_body: # of codecs=%d", _codecs.size()); // Sanity check if (decoding_buffer.get_len() - decoding_buffer.get_pos() <= 0) { @@ -331,7 +368,7 @@ int http_codec::decode_body(TTCN_Buffer& decoding_buffer, LibItsHttp__MessageBod OCTETSTRING s(decoding_buffer.get_len() - decoding_buffer.get_pos(), decoding_buffer.get_data() + decoding_buffer.get_pos()); loggers::get_instance().log_msg("http_codec::decode_body: raw body=", s); - // Align the payload length with the specified plLenght value + // Align the payload length with the specified Content-lenght value loggers::get_instance().log("http_codec::decode_body: _dc.length=%d - body length=%d", _dc.length, s.lengthof()); OCTETSTRING body; if (_dc.length != 0) { @@ -371,9 +408,40 @@ int http_codec::decode_body(TTCN_Buffer& decoding_buffer, LibItsHttp__MessageBod if (_dc.is_binary == 0x01) { message_body.ms__body() = body; } else { - LibItsHttp__XmlMessageBodyTypes::XmlBody xml_body; - xml_body.raw() = CHARSTRING(body.lengthof(), (char*)static_cast(body)); - message_body.xml__body() = xml_body; + // Convert into string + params p; + p["decode_str"] = std::string(static_cast(body), body.lengthof() + static_cast(body)); + // Try to identify xml + if (p["decode_str"].find("" + if (p["decode_str"].find("xmlns=\"urn:ietf:params:xml:ns:geopriv:held\">") != std::string::npos) { + loggers::get_instance().log("http_codec::decode_body: Find 'urn:ietf:params:xml:ns:geopriv:held'"); + if (_codecs["held"].get() != nullptr) { + loggers::get_instance().log("http_codec::decode_body: Call 'held_codec'"); + if (_codecs["held"]->decode(body, (Record_Type&)xml_body, &p) == -1) { + loggers::get_instance().warning("http_codec::decode_body: Failed to decode HELD message"); + xml_body.raw() = CHARSTRING(body.lengthof(), (char*)static_cast(body)); + } else { + loggers::get_instance().log_msg("http_codec::decode_body: Decoded message:", xml_body); + message_body.xml__body() = xml_body; + } + } else { + loggers::get_instance().warning("http_codec::decode_body: No codec for HELD"); + xml_body.raw() = CHARSTRING(body.lengthof(), (char*)static_cast(body)); + } + message_body.xml__body() = xml_body; + } + } else if (p["decode_str"].find("") != std::string::npos) { // Try to identify HTML + loggers::get_instance().log("http_codec::decode_body: Find html message"); + LibItsHttp__MessageBodyTypes::TextBody txt_body; + loggers::get_instance().error("http_codec::decode_body: Not supported"); + } else { + loggers::get_instance().log("http_codec::decode_body: Use textBdy as default"); + LibItsHttp__MessageBodyTypes::TextBody text_body; + message_body.text__body() = CHARSTRING(body.lengthof(), (char*)static_cast(body)); + } } return 0; @@ -416,3 +484,33 @@ int http_codec::get_line(TTCN_Buffer& buffer, CHARSTRING& to, const bool concate } // End of 'while' statement } +void http_codec::set_payload_codecs(const std::string& p_codecs) { + loggers::get_instance().log(">>> http_codec::set_payload_codecs: %s", p_codecs.c_str()); + + // Sanity check + if (p_codecs.length() == 0) { + return; + } + + // Extract codecs + try { + std::regex rgx("(\\w+)(:(\\w+))*(;((\\w+)(:(\\w+))*))*"); + std::sregex_iterator begin(p_codecs.cbegin(), p_codecs.cend(), rgx); + std::sregex_iterator end = std::sregex_iterator(); + // E.g. 9 - xml - :held_codec - held_codec - ;html:html_codec - html:html_codec - html - :html_codec - html_codec + for (std::sregex_iterator it = begin; it != end; ++it) { + std::smatch m = *it; + loggers::get_instance().log("http_codec::set_payload_codecs: %d - %s - %s - %s - %s - %s - %s - %s - %s", m.size(), m[1].str().c_str(), m[2].str().c_str(), m[3].str().c_str(), m[4].str().c_str(), m[5].str().c_str(), m[6].str().c_str(), m[7].str().c_str(), m[8].str().c_str()); + for (unsigned int j = 1; j < m.size() - 1; j += 5) { // Exclude m[0] + loggers::get_instance().log("http_codec::set_payload_codecs: insert (%s, %s), j = %d", m[j].str().c_str(), m[j + 2].str().c_str(), j); + std::string key(m[j].str()); + _codecs.insert(std::make_pair(key, std::unique_ptr >(codec_stack_builder::get_instance()->get_codec(m[j + 2].str().c_str())))); + } // End of 'for' statement + } // End of 'for' statement + //loggers::get_instance().log("http_codec::set_payload_codecs: _codecs length=%d", _codecs.size()); + } + catch(const std::logic_error& e){ + loggers::get_instance().warning("http_codec::set_payload_codecs: std::logic_error: %s", e.what()); + _codecs.clear(); + } +} diff --git a/ccsrc/Protocols/Http/http_codec.hh b/ccsrc/Protocols/Http/http_codec.hh index d3ba9f0..0c911f2 100644 --- a/ccsrc/Protocols/Http/http_codec.hh +++ b/ccsrc/Protocols/Http/http_codec.hh @@ -1,9 +1,12 @@ #pragma once +#include + #include "codec.hh" #include "params.hh" class Base_Type; +class Record_Type; class TTCN_Typedescriptor_t; class TTCN_Buffer; @@ -40,16 +43,20 @@ LibItsHttp__TypesAndValues::HttpMessage> { encoding_context _ec; decoding_context _dc; + std::map > > _codecs; public: - explicit http_codec() : codec(), _ec(), _dc() { }; + explicit http_codec() : codec(), _ec(), _dc(), _codecs() { }; virtual ~http_codec() { }; virtual int encode (const LibItsHttp__TypesAndValues::HttpMessage&, OCTETSTRING& data); virtual int decode (const OCTETSTRING& data, LibItsHttp__TypesAndValues::HttpMessage&, params* params = NULL); + void set_payload_codecs(const std::string& p_codecs); + private: int encode_request (const LibItsHttp__TypesAndValues::Request& p_request, TTCN_Buffer& p_encoding_buffer); int encode_response (const LibItsHttp__TypesAndValues::Response& p_response, TTCN_Buffer& p_encoding_buffer); + int encode_body(const LibItsHttp__MessageBodyTypes::HttpMessageBody& p_message_body, OCTETSTRING& p_encoding_buffer); int decode_headers(TTCN_Buffer& decoding_buffer, LibItsHttp__TypesAndValues::HeaderLines& headers); int decode_header(CHARSTRING& header_line, LibItsHttp__TypesAndValues::HeaderLine& header); diff --git a/ccsrc/Protocols/Http/http_layer.cc b/ccsrc/Protocols/Http/http_layer.cc index 7eb9596..482e9dc 100644 --- a/ccsrc/Protocols/Http/http_layer.cc +++ b/ccsrc/Protocols/Http/http_layer.cc @@ -1,6 +1,7 @@ #include "LibItsHttp_TypesAndValues.hh" #include "http_layer_factory.hh" +#include "codec_stack_builder.hh" #include "loggers.hh" @@ -15,6 +16,11 @@ http_layer::http_layer(const std::string & p_type, const std::string & param) : loggers::get_instance().log(">>> http_layer::http_layer: %s, %s", to_string().c_str(), param.c_str()); // Setup parameters params::convert(_params, param); + + params::const_iterator it = _params.find(params::codecs); + if (it != _params.cend()) { + _codec.set_payload_codecs(it->second); + } } void http_layer::sendMsg(const LibItsHttp__TypesAndValues::HttpMessage& p_http_message, params& p_param) { @@ -42,52 +48,9 @@ void http_layer::receive_data(OCTETSTRING& data, params& params) loggers::get_instance().warning("http_layer::receive_data: Failed to decode data"); return; } - // Extract payload - /*OCTETSTRING payload; - if (http_message.ischosen(LibItsHttp__TypesAndValues::HttpMessage::ALT_request)) { - loggers::get_instance().log("http_layer::receive_data: Process request"); - if (http_message.request().body().is_present()) { - const OPTIONAL& v = http_message.request().body(); - const LibItsHttp__MessageBodyTypes::HttpMessageBody& body = static_cast(*v.get_opt_value()); - if (body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_ms__body)) { - payload = body.ms__body(); - } else { - LibItsHttp__XmlMessageBodyTypes::XmlBody xml_body = body.xml__body(); - if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_raw)) { - payload = OCTETSTRING(xml_body.raw().lengthof(), (unsigned char*)static_cast(xml_body.raw())); - } else { - loggers::get_instance().warning("http_layer::receive_data: No payload in HTTP request"); - return; - } - } - } else { - loggers::get_instance().warning("http_layer::receive_data: No payload in HTTP request"); - return; - } - } else if (http_message.ischosen(LibItsHttp__TypesAndValues::HttpMessage::ALT_response)) { - loggers::get_instance().log("http_layer::receive_data: Process response"); - if (http_message.response().body().is_present()) { - const OPTIONAL& v = http_message.response().body(); - const LibItsHttp__MessageBodyTypes::HttpMessageBody& body = static_cast(*v.get_opt_value()); - if (body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_ms__body)) { - payload = body.ms__body(); - } else { - LibItsHttp__XmlMessageBodyTypes::XmlBody xml_body = body.xml__body(); - if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_raw)) { - payload = OCTETSTRING(xml_body.raw().lengthof(), (unsigned char*)static_cast(xml_body.raw())); - } else { - loggers::get_instance().warning("http_layer::receive_data: No payload in HTTP response"); - return; - } - } - } else { - loggers::get_instance().warning("http_layer::receive_data: No payload in HTTP response"); - return; - } - }*/ // Pass it to the ports - to_all_upper_ports(http_message/*payload*/, params); + to_all_upper_ports(http_message, params); } http_layer_factory http_layer_factory::_f; diff --git a/etc/TestCodec/TestCodec.cfg b/etc/TestCodec/TestCodec.cfg index 292567f..f4cd3ae 100644 --- a/etc/TestCodec/TestCodec.cfg +++ b/etc/TestCodec/TestCodec.cfg @@ -1,7 +1,8 @@ [MODULE_PARAMETERS] # This section shall contain the values of all parameters that are defined in your TTCN-3 modules. -LibItsHttp_Pics.PICS_HEADER_HOST := "httpbin.org" +#LibItsHttp_Pics.PICS_HEADER_HOST := "httpbin.org" +LibItsHttp_Pics.PICS_HEADER_HOST := "ptsv2.com" #LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8"; LibCommon_Time.PX_TAC := 30.0 @@ -22,7 +23,7 @@ LogEventTypes:= Yes [TESTPORT_PARAMETERS] # In this section you can specify parameters that are passed to Test Ports. -system.httpPort.params := "HTTP(codecs=held)/TCP(debug=1,server=now.httpbin.org,port=80,use_ssl=0)" +system.httpPort.params := "HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0)" #system.sipPort.params := "SIP/UDP(dst_ip=192.168.1.250,dst_port=5060,src_ip=192.168.1.253,src_port=5060)/ETH(mac_src=080027d2b658,mac_dst=90fd61e61902,eth_type=0800)/PCAP(mac_src=080027d2b658,nic=eth1,filter=and udp port 12345)" #system.pemeaPort.params := "PEMEA/HTTP/TCP(debug=1,server=httpbin.org,port=80,use_ssl=0)" diff --git a/logs/STF549_ng112.yann-FSCOM-hc.log b/logs/STF549_ng112.yann-FSCOM-hc.log deleted file mode 100644 index 3d4006f..0000000 --- a/logs/STF549_ng112.yann-FSCOM-hc.log +++ /dev/null @@ -1,120 +0,0 @@ -17:01:30.500422 EXECUTOR - TTCN-3 Host Controller started on yann-FSCOM. Version: CRL 113 200/6 R4A. -17:01:30.500422 EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error -17:01:30.500422 EXECUTOR - Maximum number of open file descriptors: 256, FD_SETSIZE = 64 -17:01:30.500422 WARNING - Warning: The address of MC was set to a local IP address. This may cause incorrect behavior if a HC from a remote host also connects to MC. -17:01:30.500422 EXECUTOR - The address of MC was set to 127.0.0.1:0. -17:01:30.541424 EXECUTOR - The local IP address of the control connection to MC is 127.0.0.1. -17:01:30.541424 EXECUTOR - Connected to MC. -17:01:30.542424 EXECUTOR - This host supports UNIX domain sockets for local communication. -17:01:30.550425 EXECUTOR - Processing configuration data received from MC. -17:01:30.556425 EXECUTOR - Module LibCommon_Sync has the following parameters: { PX_TSYNC_TIME_LIMIT := 120.000000, PX_TSHUT_DOWN_TIME_LIMIT := 120.000000 } -17:01:30.556425 EXECUTOR - Module LibCommon_Time has the following parameters: { PX_TDONE := 120.000000, PX_TAC := 10.000000, PX_TNOAC := 10.000000, PX_TWAIT := 120.000000, PX_LOOP := 1.000000 } -17:01:30.556425 EXECUTOR - Module LibSip_PIXITS has the following parameters: { PX_SIP_SDP_USER_NAME := "voicesession", PX_SIP_SDP_SESSION_ID := "30000", PX_SIP_SDP_DYN := "0", PX_SIP_SDP_B_MODIFIER := "AS", PX_SIP_SDP_B_BANDWIDTH := 64, PX_SIP_SDP_ENCODING := "PCMU", PX_SIP_SDP_CLOCKRATE := "8000", PX_MB_LENGTH_FROM_ENCVAL := true, PX_USE_FX_FOR_XML_LENGTH := false, PX_SIP_TRANSPORT := "UDP", PX_SIP_REGISTRATION := false, PX_AUTH_ALGORITHM := "AKAv1-MD5", PX_SIP_REGISTER_AUTHENTICATION_ENABLED := true, PX_SIP_INVITE_AUTHENTICATION_ENABLED := false, PX_SIP_TWAIT := 30.000000, PX_SIP_TACK := 8.000000, PX_SIP_TRESP := 15.000000, PX_SIP_TNOACT := 1.000000, PX_SIP_MIME_BOUNDARY := "boundary1" } -17:01:30.556425 EXECUTOR - Initializing module AtsNg112_TestCases. -17:01:30.556425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_TypesAndValues. -17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_TypesAndValues finished. -17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Templates. -17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Templates finished. -17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_TestSystem. -17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0 Initializing module LibItsHttp_TestSystem. -17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/Http/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Sync. -17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/Http/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon/LibCommon_Sync.ttcn:0 Initializing module LibCommon_AbstractData. -17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/Http/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon/LibCommon_Sync.ttcn:0->../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initializing module LibCommon_BasicTypesAndValues. -17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/Http/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon/LibCommon_Sync.ttcn:0->../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initialization of module LibCommon_BasicTypesAndValues finished. -17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/Http/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_AbstractData finished. -17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/Http/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon/LibCommon_Sync.ttcn:0 Initializing module LibCommon_VerdictControl. -17:01:30.557425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/Http/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_VerdictControl finished. -17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/Http/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Sync finished. -17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/Http/LibItsHttp_TestSystem.ttcn:0 Initializing module LibItsHttp_TypesAndValues. -17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/Http/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibItsHttp_TypesAndValues finished. -17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0 Initialization of module LibItsHttp_TestSystem finished. -17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0 Initializing module LibSip_Interface. -17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_SIPTypesAndValues. -17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0 Initializing module LibSip_MessageBodyTypes. -17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SDPTypes. -17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn:0 Initializing module LibSip_Common. -17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn:0 Initialization of module LibSip_Common finished. -17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SDPTypes finished. -17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SimpleMsgSummaryTypes. -17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SimpleMsgSummaryTypes finished. -17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_XMLTypes. -17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_resource_lists. -17:01:30.558425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/urn_ietf_params_xml_ns_resource_lists.ttcn:0 Initializing module http_www_w3_org_XML_1998_namespace. -17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/urn_ietf_params_xml_ns_resource_lists.ttcn:0->../ttcn/LibSip/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initializing module XSD. -17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/urn_ietf_params_xml_ns_resource_lists.ttcn:0->../ttcn/LibSip/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../ttcn/LibSip/xsd/XSD.ttcn:0 Initializing module UsefulTtcn3Types. -17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/urn_ietf_params_xml_ns_resource_lists.ttcn:0->../ttcn/LibSip/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../ttcn/LibSip/xsd/XSD.ttcn:0 Initialization of module UsefulTtcn3Types finished. -17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/urn_ietf_params_xml_ns_resource_lists.ttcn:0->../ttcn/LibSip/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initialization of module XSD finished. -17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/urn_ietf_params_xml_ns_resource_lists.ttcn:0 Initialization of module http_www_w3_org_XML_1998_namespace finished. -17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_resource_lists finished. -17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_xcap. -17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_ietf_params_xml_ns_common_policy. -17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_ietf_params_xml_ns_common_policy finished. -17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_oma_xml_xdm_common_policy. -17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_oma_xml_xdm_common_policy finished. -17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_xcap finished. -17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_mcid. -17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_mcid finished. -17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module NoTargetNamespace. -17:01:30.559425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module NoTargetNamespace finished. -17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_3gpp_ns_cw_1_0. -17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_3gpp_ns_cw_1_0 finished. -17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_conference_info. -17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_conference_info finished. -17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_pstn. -17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_pstn finished. -17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_comm_div_info. -17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_comm_div_info finished. -17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_reginfo. -17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_reginfo finished. -17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf. -17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf finished. -17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10. -17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy. -17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/LibSip/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy finished. -17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10 finished. -17:01:30.560425 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_XMLTypes finished. -17:01:30.561426 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn:0 Initialization of module LibSip_MessageBodyTypes finished. -17:01:30.561426 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_SIPTypesAndValues finished. -17:01:30.561426 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_PIXITS. -17:01:30.561426 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initializing module LibCommon_DataStrings. -17:01:30.561426 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initialization of module LibCommon_DataStrings finished. -17:01:30.561426 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_PIXITS finished. -17:01:30.561426 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../ttcn/LibEmcom/LibNg112/LibNg112_TestSystem.ttcn:0 Initialization of module LibSip_Interface finished. -17:01:30.561426 EXECUTOR ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_TestSystem finished. -17:01:30.561426 EXECUTOR - Initialization of module AtsNg112_TestCases finished. -17:01:30.561426 EXECUTOR - Initializing module LibCommon_TextStrings. -17:01:30.561426 EXECUTOR - Initialization of module LibCommon_TextStrings finished. -17:01:30.561426 EXECUTOR - Initializing module LibCommon_Time. -17:01:30.561426 EXECUTOR - Initialization of module LibCommon_Time finished. -17:01:30.561426 EXECUTOR - Initializing module LibItsHttp_Templates. -17:01:30.561426 EXECUTOR - Initialization of module LibItsHttp_Templates finished. -17:01:30.561426 EXECUTOR - Initializing module LibSip_EncdecDeclarations. -17:01:30.561426 EXECUTOR ../ttcn/LibSip/ttcn/LibSip_EncdecDeclarations.ttcn:0 Initializing module LibSip_SMSTypesAndValues. -17:01:30.561426 EXECUTOR ../ttcn/LibSip/ttcn/LibSip_EncdecDeclarations.ttcn:0 Initialization of module LibSip_SMSTypesAndValues finished. -17:01:30.561426 EXECUTOR - Initialization of module LibSip_EncdecDeclarations finished. -17:01:30.561426 EXECUTOR - Initializing module LibSip_Library. -17:01:30.561426 EXECUTOR ../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_SMSTemplates. -17:01:30.561426 EXECUTOR ../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn:0 Initializing module LibSip_SMSFunctions. -17:01:30.562426 EXECUTOR ../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn:0 Initialization of module LibSip_SMSFunctions finished. -17:01:30.562426 EXECUTOR ../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_SMSTemplates finished. -17:01:30.562426 EXECUTOR ../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_Steps. -17:01:30.563426 EXECUTOR ../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Steps.ttcn:0 Initializing module LibSip_Templates. -17:01:30.565426 EXECUTOR ../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../ttcn/LibSip/ttcn/LibSip_Steps.ttcn:0 Initialization of module LibSip_Templates finished. -17:01:30.565426 EXECUTOR ../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_Steps finished. -17:01:30.565426 EXECUTOR - Initialization of module LibSip_Library finished. -17:01:30.565426 EXECUTOR - Initializing module PreGenRecordOf. -17:01:30.566426 EXECUTOR - Initialization of module PreGenRecordOf finished. -17:01:30.566426 EXECUTOR - Initializing module TestCodec_Invite. -17:01:30.566426 EXECUTOR ../ttcn/TestCodec/TestCodec_Invite.ttcn:0 Initializing module TestCodec_TestAndSystem. -17:01:30.566426 EXECUTOR ../ttcn/TestCodec/TestCodec_Invite.ttcn:0 Initialization of module TestCodec_TestAndSystem finished. -17:01:30.566426 EXECUTOR - Initialization of module TestCodec_Invite finished. -17:01:30.566426 EXECUTOR - Initializing module TestCodec_Register. -17:01:30.566426 EXECUTOR - Initialization of module TestCodec_Register finished. -17:01:30.566426 EXECUTOR - Initializing module TitanLoggerApi. -17:01:30.566426 EXECUTOR - Initialization of module TitanLoggerApi finished. -17:01:30.566426 EXECUTOR - Configuration data was processed successfully. -17:01:31.665489 EXECUTOR - MTC was created. Process id: 9252. -17:01:41.163032 PARALLEL - MTC finished. Process statistics: { process id: 9252, terminated by a signal, signal number: 6 (Aborted), core dump was created, user time: 0.000000 s, system time: 0.140000 s, maximum resident set size: 10284, integral resident set size: 0, page faults not requiring physical I/O: 0, page faults requiring physical I/O: 2626, swaps: 0, block input operations: 0, block output operations: 0, messages sent: 0, messages received: 0, signals received: 2, voluntary context switches: 0, involuntary context switches: 0 } -17:01:41.167032 EXECUTOR - Exit was requested from MC. Terminating HC. -17:01:41.169032 EXECUTOR - Disconnected from MC. -17:01:41.169032 EXECUTOR - TTCN-3 Host Controller finished. diff --git a/logs/STF549_ng112.yann-FSCOM-mtc.log b/logs/STF549_ng112.yann-FSCOM-mtc.log deleted file mode 100644 index ca7da03..0000000 --- a/logs/STF549_ng112.yann-FSCOM-mtc.log +++ /dev/null @@ -1,68 +0,0 @@ -17:01:31.694490 EXECUTOR - TTCN-3 Main Test Component started on yann-FSCOM. Version: CRL 113 200/6 R4A. -17:01:31.694490 EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error -17:01:31.768495 EXECUTOR - Connected to MC. -17:01:31.806497 EXECUTOR - Executing test case TC_2 in module AtsNg112_TestCases. -17:01:31.807497 TESTCASE ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:35(testcase:TC_2) Test case TC_2 started. -17:01:31.807497 PARALLEL ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:35(testcase:TC_2) Initializing variables, timers and ports of component type LibItsHttp_TestSystem.HttpComponent inside testcase TC_2. -17:01:31.807497 PORTEVENT ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:35(testcase:TC_2) Port syncPort was started. -17:01:31.807497 PORTEVENT ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:35(testcase:TC_2) Port syncSendPort was started. -17:01:31.807497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:35(testcase:TC_2) >>> HttpPort::user_start -17:01:31.807497 PORTEVENT ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:35(testcase:TC_2) Port httpPort was started. -17:01:31.807497 PARALLEL ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:35(testcase:TC_2) Component type LibItsHttp_TestSystem.HttpComponent was initialized. -17:01:31.807497 PARALLEL ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Mapping port mtc:httpPort to system:httpPort. -17:01:31.814497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) HttpPort::set_parameter: params=HTTP/TCP(debug=1,server=httpbin.org,port=80,use_ssl=0) -17:01:31.814497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) >>> HttpPort::user_map: httpPort -17:01:31.814497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) HttpPort::user_map: HTTP/TCP(debug=1,server=httpbin.org,port=80,use_ssl=0) -17:01:31.814497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) >>> params::convert: HTTP/TCP(debug=1,server=httpbin.org,port=80,use_ssl=0) -17:01:31.815497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) params::convert: 4 - debug=1, - debug - 1 - , -17:01:31.815497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) params::convert: 4 - server=httpbin.org, - server - httpbin.org - , -17:01:31.816497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) params::convert: 4 - port=80, - port - 80 - , -17:01:31.816497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) params::convert: 4 - use_ssl=0) - use_ssl - 0) - -17:01:31.816497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) <<< params::convert -17:01:31.816497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) >>> layer_stack_builder::create_layer_stack: HTTP/TCP(debug=1,server=httpbin.org,port=80,use_ssl=0) -17:01:31.817497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) layer_stack_builder::create_layer_stack: 5 - HTTP/ - HTTP - - -17:01:31.817497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) layer_stack_builder::create_layer_stack: Create layer HTTP, -17:01:31.817497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) >>> http_layer::http_layer: HTTP, -17:01:31.817497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) layer_stack_builder::create_layer_stack: Setup layers for HTTP -17:01:31.817497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) layer_stack_builder::create_layer_stack: 5 - TCP(debug=1,server=httpbin.org,port=80,use_ssl=0) - TCP - (debug=1,server=httpbin.org,port=80,use_ssl=0) - debug=1,server=httpbin.org,port=80,use_ssl=0 -17:01:31.817497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) layer_stack_builder::create_layer_stack: Create layer TCP, debug=1,server=httpbin.org,port=80,use_ssl=0 -17:01:31.817497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) >>> tcp_layer::tcp_layer: TCP, debug=1,server=httpbin.org,port=80,use_ssl=0 -17:01:31.817497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) >>> params::convert: debug=1,server=httpbin.org,port=80,use_ssl=0 -17:01:31.819497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) params::convert: 4 - debug=1, - debug - 1 - , -17:01:31.819497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) params::convert: 4 - server=httpbin.org, - server - httpbin.org - , -17:01:31.819497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) params::convert: 4 - port=80, - port - 80 - , -17:01:31.819497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) params::convert: 4 - use_ssl=0 - use_ssl - 0 - -17:01:31.819497 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) <<< params::convert -17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) params::log -17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) (debug, 1) -17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) (port, 80) -17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) (server, httpbin.org) -17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) (use_ssl, 0) -17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: entering SSL_Socket::parameter_set(server, httpbin.org) -17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: leaving SSL_Socket::parameter_set(server, httpbin.org) -17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: entering Abstract_Socket::parameter_set(server, httpbin.org) -17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: leaving Abstract_Socket::parameter_set(server, httpbin.org) -17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: entering SSL_Socket::parameter_set(port, 80) -17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: leaving SSL_Socket::parameter_set(port, 80) -17:01:31.820498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: entering Abstract_Socket::parameter_set(port, 80) -17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: leaving Abstract_Socket::parameter_set(port, 80) -17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: entering SSL_Socket::parameter_set(use_connection_ASPs, yes) -17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: leaving SSL_Socket::parameter_set(use_connection_ASPs, yes) -17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: entering Abstract_Socket::parameter_set(use_connection_ASPs, yes) -17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: leaving Abstract_Socket::parameter_set(use_connection_ASPs, yes) -17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: entering SSL_Socket::parameter_set(server_backlog, 1024) -17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: leaving SSL_Socket::parameter_set(server_backlog, 1024) -17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: entering Abstract_Socket::parameter_set(server_backlog, 1024) -17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: leaving Abstract_Socket::parameter_set(server_backlog, 1024) -17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: entering Abstract_Socket::map_user() -17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: leaving Abstract_Socket::map_user() -17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: Abstract_Socket::open_client_connection(remoteAddr: httpbin.org/80, localAddr: UNSPEC/UNSPEC) called -17:01:31.821498 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: Abstract_Socket::get_host_id called -17:01:31.921503 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: The address set to httpbin.org[34.236.164.47] -17:01:31.921503 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: **** DEPRECATED FUNCTION CALLED: Abstract_Socket::open_client_connection(const struct sockaddr_in & new_remote_addr, const struct sockaddr_in & new_local_addr). USE open_client_connection(const char* remoteHostname, const char* remoteServicename, const char* localHostname, const char* localServicename) INSTEAD! **** -17:01:31.921503 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: Remote address: 34.236.164.47:80 -17:01:31.921503 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: Connecting to server from address 0.0.0.0:0 -17:01:37.346814 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: Abstract_Socket::peer_list_add_peer: Adding client 5 to peer list -17:01:37.346814 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: Abstract_Socket::peer_list_get_last_peer: Finding last peer of the peer array -17:01:37.346814 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: Abstract_Socket::peer_list_get_last_peer: No active peer found -17:01:37.346814 DEBUG ../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:37(testcase:TC_2) Abstract socket: Abstract_Socket::peer_list_resize_list: Resizing to 6 diff --git a/test_purposes/LIS_HTTP_POST_BV_xx.tplan2 b/test_purposes/LIS_HTTP_POST_BV_xx.tplan2 new file mode 100644 index 0000000..69481f8 --- /dev/null +++ b/test_purposes/LIS_HTTP_POST_BV_xx.tplan2 @@ -0,0 +1,270 @@ +/* ETSI Software License +* As long as the hereunder conditions are respected, non-exclusive permission is hereby granted, +* free of charge, to use, reproduce and modify this software source code, under the following conditions: +* This source code is provided ���AS IS��� with no warranties, express or implied, including but not limited to, +* the warranties of merchantability, fitness for a particular purpose and warranties for non-infringement +* of intellectual property rights. +* ETSI shall not be held liable in any event for any direct or indirect damages whatsoever (including, without +* limitation, damages for loss of profits, business interruption, loss of information, or any other pecuniary +* loss) arising out of or related to the use of or inability to use the source code. +* This permission is granted to facilitate the implementation of the related ETSI standard, provided that +* ETSI is given the right to use, reproduce and amend the modified source code under the same conditions +* as the present permission. +* This permission does not apply to any documentation associated with this source code for which ETSI keeps +* all rights reserved. +* The present ETSI Source Code license shall be included in all copies of whole or part of this source code +* and shall not imply any sub-license right. +* (c) ETSI 2018 +*/ + + +Package NG112_LIS { + Domain { + pics: + - PICS_HTTP_POST_REQUEST + - PICS_LOCATION_HELD + ; + entities: + - IUT + - MTC + ; + events: + - receives //for packets coming from the network to the IUT + - sends //for packets sent by the IUT to the network + - havingLocationMappingFor //IUT is provisioned with the relevant location data + - isRequestedToSend //an upper layer requests the IUT to send a packet + - generates //for internal event generation + ; + } + +// Const { +// DEVICE_NUMBER: "+331234567890" +// POINT_POS: "-34.400 134.4000"; +// CIRCLE_POS: "-35.500 135.5000"; +// CIRCLE_RADIUS: "15"; +// } + +// Data { +// type PDU; +// } +// Configuration { +// Interface Type defaultGT accepts PDU; +// Component Type NG112Comp with gate g of type defaultGT; +// Test Configuration CFG_ESRP_01 +// containing +// Tester component BCF of type NG112Comp +// Tester component LIS of type NG112Comp +// Tester component ECRF of type NG112Comp +// SUT component IUT of type NG112Comp +// connection between BCF.g and IUT.g +// connection between LIS.g and IUT.g +// connection between ECRF.g and IUT.g; +// } + + Test Purpose { + TP Id TP_LIS_HTTP_POST_BV_01 + + Test objective + "IUT successfully responds with a Point when it receives a HTTP POST location request without location type" + Reference + "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", + "https://tools.ietf.org/html/rfc5985" + + //Config Id CFG_LIS_01 + + PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD + Initial conditions with { + the IUT entity havingLocationMappingFor the DEVICE_NUMBER containing + "point" containing + "position" indicating value POINT_POS + ; + ; + } + Expected behaviour + ensure that { + when { + the IUT entity receives a POST containing + Uri indicating value "/location", + Host, + not Accept, + Content_type indicating value "application/held+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "locationRequest" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing + element "device" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" containing + element "uri" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" indicating value DEVICE_NUMBER + ; + ; + ; + ; + ; + } + then { + the IUT entity sends a httpResponse containing + Status_Code indicating value "200 OK", + version indicating value "1.0", + Content_type indicating value "application/held+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "locationResponse" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing + element "presence" inNamespace "urn:ietf:params:xml:ns:pidf" containing + attribute "entity" indicating value valid "pres:" uri, + element "tuple" containing + attribute "id", + element "status" containing + element "geopriv" inNamespace "urn:ietf:params:xml:ns:pidf:geopriv10" containing + element "location-info" containing + element "Point" inNamespace "http://www.opengis.net/gml" containing + attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", + element "pos" indicating value POINT_POS + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + } + } + } + + Test Purpose { + TP Id TP_LIS_HTTP_POST_BV_02 + + Test objective + "IUT successfully responds with a Circle when it receives a HTTP POST location request without location type" + Reference + "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", + "https://tools.ietf.org/html/rfc5985" + + //Config Id CFG_LIS_01 + + PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD + Initial conditions with { + the IUT entity havingLocationMappingFor the DEVICE_NUMBER containing + "circle" containing + "position" indicating value CIRCLE_POS, + "radius" indicating value CIRCLE_RADIUS + ; + ; + } + Expected behaviour + ensure that { + when { + the IUT entity receives a POST containing + Uri indicating value "/location", + Host, + not Accept, + Content_type indicating value "application/held+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "locationRequest" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing + element "device" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" containing + element "uri" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" indicating value DEVICE_NUMBER + ; + ; + ; + ; + ; + } + then { + the IUT entity sends a httpResponse containing + Status_Code indicating value "200 OK", + version indicating value "1.0", + Content_type indicating value "application/held+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "locationResponse" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing + element "presence" inNamespace "urn:ietf:params:xml:ns:pidf" containing + attribute "entity" indicating value valid "pres:" uri, + element "tuple" containing + attribute "id", + element "status" containing + element "geopriv" inNamespace "urn:ietf:params:xml:ns:pidf:geopriv10" containing + element "location-info" containing + element "Circle" inNamespace "http://www.opengis.net/pidflo/1.0" containing + attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", + element "pos" inNamespace "http://www.opengis.net/gml" indicating value CIRCLE_POS, + element "radius" indicating value CIRCLE_RADIUS containing + attribute "uom" indicating value "urn:ogc:def:uom:EPSG::9001"; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + } + } + } + + Test Purpose { + TP Id TP_LIS_HTTP_POST_BV_03 + + Test objective + "IUT successfully responds with an error response when it receives a HTTP POST location request for an unknown device" + Reference + "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", + "https://tools.ietf.org/html/rfc5985" + + //Config Id CFG_LIS_01 + + PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD + Initial conditions with { + the IUT entity havingLocationMappingFor the "deviceNumber" containing + "circle" containing + "position" indicating value CIRCLE_POS, + "radius" indicating value CIRCLE_RADIUS + ; + ; + } + Expected behaviour + ensure that { + when { + the IUT entity receives a POST containing + Uri indicating value "/location", + Host, + not Accept, + Content_type indicating value "application/held+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "locationRequest" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing + element "device" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" containing + element "uri" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" indicating value DEVICE_NUMBER + ; + ; + ; + ; + ; + } + then { + the IUT entity sends a httpResponse containing + Status_Code indicating value "200 OK", + version indicating value "1.0", + Content_type indicating value "application/held+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "error" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing + attribute "code" indicating value "locationUnknown"; + ; + ; + ; + } + } + } +} \ No newline at end of file diff --git a/test_purposes/example.tplan2 b/test_purposes/example.tplan2 deleted file mode 100644 index dd027db..0000000 --- a/test_purposes/example.tplan2 +++ /dev/null @@ -1,105 +0,0 @@ -/* ETSI Software License -* As long as the hereunder conditions are respected, non-exclusive permission is hereby granted, -* free of charge, to use, reproduce and modify this software source code, under the following conditions: -* This source code is provided “AS IS” with no warranties, express or implied, including but not limited to, -* the warranties of merchantability, fitness for a particular purpose and warranties for non-infringement -* of intellectual property rights. -* ETSI shall not be held liable in any event for any direct or indirect damages whatsoever (including, without -* limitation, damages for loss of profits, business interruption, loss of information, or any other pecuniary -* loss) arising out of or related to the use of or inability to use the source code. -* This permission is granted to facilitate the implementation of the related ETSI standard, provided that -* ETSI is given the right to use, reproduce and amend the modified source code under the same conditions -* as the present permission. -* This permission does not apply to any documentation associated with this source code for which ETSI keeps -* all rights reserved. -* The present ETSI Source Code license shall be included in all copies of whole or part of this source code -* and shall not imply any sub-license right. -* (c) ETSI 2018 -*/ - - -Package NG112_LIS { - - - - Domain { - pics: - - PICS_HTTP_POST_REQUEST - - PICS_LOCATION_HELD; - entities: - - IUT - - MTC; - events: - - receives //for packets coming from the network to the IUT - - sends //for packets sent by the IUT to the network - - havingLocationMappingFor //IUT is provisioned with the relevant location data - - isRequestedToSend //an upper layer requests the IUT to send a packet - - generates //for internal event generation - ; - } - - -// Data { -// type PDU; -// } -// Configuration { -// Interface Type defaultGT accepts PDU; -// Component Type NG112Comp with gate g of type defaultGT; -// Test Configuration CFG_ESRP_01 -// containing -// Tester component BCF of type NG112Comp -// Tester component LIS of type NG112Comp -// Tester component ECRF of type NG112Comp -// SUT component IUT of type NG112Comp -// connection between BCF.g and IUT.g -// connection between LIS.g and IUT.g -// connection between ECRF.g and IUT.g; -// } - - - Test Purpose { - TP Id TP_LIS_HTTP_POST_BV_01 - - Test objective - "IUT successfully processes all mandatory HTTP headers when it receives a HTTP POST request" - Reference - "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", - "https://tools.ietf.org/html/rfc5985" - //Config Id CFG_LIS_01 - PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD - Initial conditions with { - the IUT entity havingLocationMappingFor the "identifier" - } - Expected behaviour - ensure that { - when { - the IUT entity receives a POST containing - Uri indicating value "location", - Host, - "not" Accept, - Content_type indicating value "application/held+xml", - body containing - xmlMessage containing - version indicating value "1.0", - presence containing - uri indicating value "urn:ietf:params:xml:ns:held"; - ; - ; - ; - } - then { - the IUT entity sends a httpResponse containing - Status_Code indicating value "200 OK", - body containing - xmlMessage containing - version indicating value "1.0", - locationRequest containing - Uri indicating value "urn:ietf:params:xml:ns:geopriv:held"; - ; - ; - ; - } - } - } - -} \ No newline at end of file diff --git a/test_purposes/lis.tplan2 b/test_purposes/lis.tplan2 deleted file mode 100644 index 82e3b3d..0000000 --- a/test_purposes/lis.tplan2 +++ /dev/null @@ -1,131 +0,0 @@ -/* ETSI Software License -* As long as the hereunder conditions are respected, non-exclusive permission is hereby granted, -* free of charge, to use, reproduce and modify this software source code, under the following conditions: -* This source code is provided �AS IS� with no warranties, express or implied, including but not limited to, -* the warranties of merchantability, fitness for a particular purpose and warranties for non-infringement -* of intellectual property rights. -* ETSI shall not be held liable in any event for any direct or indirect damages whatsoever (including, without -* limitation, damages for loss of profits, business interruption, loss of information, or any other pecuniary -* loss) arising out of or related to the use of or inability to use the source code. -* This permission is granted to facilitate the implementation of the related ETSI standard, provided that -* ETSI is given the right to use, reproduce and amend the modified source code under the same conditions -* as the present permission. -* This permission does not apply to any documentation associated with this source code for which ETSI keeps -* all rights reserved. -* The present ETSI Source Code license shall be included in all copies of whole or part of this source code -* and shall not imply any sub-license right. -* (c) ETSI 2018 -*/ - - -Package NG112_LIS { - Domain { - pics: - - PICS_HTTP_POST_REQUEST - - PICS_LOCATION_HELD - ; - entities: - - IUT - - MTC - ; - events: - - receives //for packets coming from the network to the IUT - - sends //for packets sent by the IUT to the network - - havingLocationMappingFor //IUT is provisioned with the relevant location data - - isRequestedToSend //an upper layer requests the IUT to send a packet - - generates //for internal event generation - ; - } - -// Const { -// POS1: "-34.407 150.88001"; -// } - -// Data { -// type PDU; -// } -// Configuration { -// Interface Type defaultGT accepts PDU; -// Component Type NG112Comp with gate g of type defaultGT; -// Test Configuration CFG_ESRP_01 -// containing -// Tester component BCF of type NG112Comp -// Tester component LIS of type NG112Comp -// Tester component ECRF of type NG112Comp -// SUT component IUT of type NG112Comp -// connection between BCF.g and IUT.g -// connection between LIS.g and IUT.g -// connection between ECRF.g and IUT.g; -// } - - Test Purpose { - TP Id TP_LIS_HTTP_POST_BV_01 - - Test objective - "IUT successfully processes all mandatory HTTP headers when it receives a HTTP POST request" - Reference - "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", - "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", - "https://tools.ietf.org/html/rfc5985" - - //Config Id CFG_LIS_01 - - PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD - Initial conditions with { - the IUT entity havingLocationMappingFor the "deviceNumber" containing - "point" indicating value POS1 - ; - } - Expected behaviour - ensure that { - when { - the IUT entity receives a POST containing - Uri indicating value "/location", - Host, - not Accept, - Content_type indicating value "application/held+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "locationRequest" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing - element "device" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" containing - element "uri" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" indicating value "deviceNumber" - ; - ; - ; - ; - ; - } - then { - the IUT entity sends a httpResponse containing - Status_Code indicating value "200 OK", - version indicating value "1.0", - Content_type indicating value "application/held+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "locationResponse" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing - element "presence" inNamespace "urn:ietf:params:xml:ns:pidf" containing - attribute "entity" indicating value valid "pres:" uri, - element "tuple" containing - attribute "id", - element "status" containing - element "geopriv" inNamespace "urn:ietf:params:xml:ns:pidf:geopriv10" containing - element "location-info" containing - element "Point" inNamespace "http://www.opengis.net/gml" containing - attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", - element "pos" indicating value POS1 - ; - ; - ; - ; - ; - ; - ; - ; - ; - ; - } - } - } -} \ No newline at end of file diff --git a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn index 8a7acf2..094e627 100644 --- a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn +++ b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn @@ -13,10 +13,7 @@ module AtsNg112_TestCases { // RFC5985 Held import from XSD all; - import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all - with { - extension "File:./RFC5985_held.xsd"; - } + import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all; // Libcommon import from LibCommon_Time all; @@ -28,6 +25,7 @@ module AtsNg112_TestCases { import from LibItsHttp_XmlMessageBodyTypes all; import from LibItsHttp_Functions all; import from LibItsHttp_Templates all; + import from LibItsHttp_XmlTemplates all; import from LibItsHttp_TestSystem all; // LibSip diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn index b004fa9..d0768ba 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn @@ -13,44 +13,42 @@ module LibNg112_Functions { import from LibNg112_TestSystem all; group preambles { - - function f_cf_01_http_up() runs on HttpComponent { - - // Map ports - map(self:httpPort, system:httpPort); - - // Connect - f_connect4SelfOrClientSync(); - activate(a_cf_01_http_down()); - - } // End of function f_cf_01_http_up - - /** - * @desc Default handling cf01 de-initialisation. - */ - altstep a_cf_01_http_down() runs on HttpComponent { - [] a_shutdown() { - f_cf_01_http_down(); - log("*** a_cf_01_http_down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } // End of altstep a_cf_01_http_down - + + function f_cf_01_http_up() runs on HttpComponent { + + // Map ports + map(self:httpPort, system:httpPort); + + // Connect + f_connect4SelfOrClientSync(); + activate(a_cf_01_http_down()); + + } // End of function f_cf_01_http_up + + /** + * @desc Default handling cf01 de-initialisation. + */ + altstep a_cf_01_http_down() runs on HttpComponent { + [] a_shutdown() { + f_cf_01_http_down(); + log("*** a_cf_01_http_down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); + stop; + } + } // End of altstep a_cf_01_http_down + } // End of group preambles group postambles { - - function f_cf_01_http_down() runs on HttpComponent { - - // Unmap ports - unmap(self:httpPort, system:httpPort); - - // Disconnect ports - f_disconnect4SelfOrClientSync(); - } // End of function f_cf_01_http_down - + + function f_cf_01_http_down() runs on HttpComponent { + + // Unmap ports + unmap(self:httpPort, system:httpPort); + + // Disconnect ports + f_disconnect4SelfOrClientSync(); + } // End of function f_cf_01_http_down + } // End of group postambles - - } // End of module LibNg112_Functions diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn index d4c8e25..198d808 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn @@ -1,86 +1,5 @@ module LibNg112_Templates { - // RFC5985 Held - import from XSD all; - import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all - with { - extension "File:./RFC5985_held.xsd"; - } - import from urn_ietf_params_xml_ns_geopriv_held_id language "XSD" all - with { - extension "RFC6155_held_id.xsd"; - } - // LibNg112 - group rfc5985_held { - - template (omit) LocationRequest m_locationRequest( - in template (value) LocationRequestType.elem_list p_elem_list, - in template (omit) LocationTypeType p_locationType := omit, - in template (omit) ResponseTimeType p_responseTime := omit, - in template (omit) LocationRequestType.attr p_attr := omit - ) := { - responseTime := p_responseTime, - attr := p_attr, - locationType := p_locationType, - elem_list := p_elem_list - } // End of template m_locationRequest - - template LocationResponseType mw_locationResponse_dummy( - template ReturnLocationType p_locationUriSet := *, - template LocationResponseType.elem_list p_elem_list := * - ) := { - locationUriSet := p_locationUriSet, - elem_list := p_elem_list - } // End of template mw_locationResponse_dummy - - - - - - template (omit) LocationTypeType m_locationTypeType( - in template (value) LocationTypeBase p_base, - in template (omit) XSD.Boolean p_exact := omit - ) := { - exact := p_exact, - base := p_base - } // End of template m_locationTypeType - - template (value) LocationTypeBase m_locationTypeBase_civic := { - alt_1 := { - civic - } - } // End of template m_locationTypeBase_civic - - template (value) LocationTypeBase m_locationTypeBase_geodetic := { - alt_1 := { - geodetic - } - } // End of template m_locationTypeBase_geodetic - - template (value) LocationTypeBase m_locationTypeBase_all := { - alt_1 := { - geodetic, civic - } - } // End of template m_locationTypeBase_all - - } // End of group rfc5985_held - - group rfc6155_held_id { - - template (value) Device m_device( - in template (value) Device.elem_list p_elem_list - ) := { - elem_list := p_elem_list - } // End of template m_device - - template (present) Device mw_device( - template (present) DeviceIdentity.elem_list p_elem_list := ? - ) := { - elem_list := p_elem_list - } // End of template mw_device - - } // End of group rfc6155_held_id - } // End of module LibNg112_Templates diff --git a/ttcn/TestCodec/TestCodec_HttpPort.ttcn b/ttcn/TestCodec/TestCodec_HttpPort.ttcn index b5ef728..2cf37fe 100644 --- a/ttcn/TestCodec/TestCodec_HttpPort.ttcn +++ b/ttcn/TestCodec/TestCodec_HttpPort.ttcn @@ -11,52 +11,83 @@ */ module TestCodec_HttpPort { - // LibCommon + import from XSD all; + + // RFC5985 Held + import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all; + import from urn_ietf_params_xml_ns_geopriv_held_id language "XSD" all; + import from urn_ietf_params_xml_ns_pidf_geopriv10 language "XSD" all; + import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy language "XSD" all; + import from urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc language "XSD" all; + import from urn_ietf_params_xml_ns_pidf language "XSD" all; + // LibCommon - // LibHttp - import from LibItsHttp_TypesAndValues all; - import from LibItsHttp_XmlMessageBodyTypes all; - import from LibItsHttp_Functions all; - import from LibItsHttp_Templates all; - import from LibItsHttp_TestSystem all; + // LibHttp + import from LibItsHttp_TypesAndValues all; + import from LibItsHttp_XmlMessageBodyTypes all; + import from LibItsHttp_Functions all; + import from LibItsHttp_Templates all; + import from LibItsHttp_XmlTemplates all; + import from LibItsHttp_TestSystem all; + + external function enc_Device(in Device p_device) return octetstring + with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; + /* external function dec_LocationRequest(in octetstring p_pdu) return LocationRequest */ + /* with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; */ + /* external function enc_LocationResponse(in LocationResponse p_loction_response) return octetstring */ + /* with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; */ + /* external function dec_LocationResponse(in octetstring p_pdu) return LocationResponse */ + /* with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; */ - testcase tc_http_map_1() runs on HttpComponent system HttpTestAdapter { - // Local variables - var HeaderLines v_headers; + testcase tc_http_map_1() runs on HttpComponent system HttpTestAdapter { + // Local variables + var HeaderLines v_headers; - map(self:httpPort, system:httpPort); + map(self:httpPort, system:httpPort); - // Preamble - f_init_default_headers_list(v_headers); - httpPort.send( - m_http_request( - m_http_request_get( - "/get", - v_headers, - m_http_message_body_xml( - XmlBody: { raw := "test" } - )))); - tc_ac.start; - alt { - [] httpPort.receive(mw_http_response(mw_http_response_ok)) { - tc_ac.stop; - setverdict(pass, "Get a response"); - } - [] httpPort.receive { - tc_ac.stop; - setverdict(fail, "Unexpected response"); - } - [] tc_ac.timeout { - setverdict(inconc, "No response"); - } - } // End of 'alt' statement + // Preamble + f_init_default_headers_list(v_headers); + httpPort.send( + m_http_request( + m_http_request_get( + "/t/r143f-1528105031/post", + v_headers, + m_http_message_body_xml(m_body_xml_location_request( + m_locationRequest( + { oct2unichar(enc_Device(valueof(m_device({ "tel:+436501234567" })))) }, + m_locationTypeType(m_locationTypeBase_geodetic, true) + ) + ) + ) + ) + ) + ); + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + XmlBody: { locationResponse := mw_locationResponse_dummy } + )))) { + tc_ac.stop; + setverdict(pass, "Get a response"); + } + [] httpPort.receive { + tc_ac.stop; + setverdict(fail, "Unexpected response"); + } + [] tc_ac.timeout { + setverdict(inconc, "No response"); + } + } // End of 'alt' statement - unmap(self:httpPort, system:httpPort); + unmap(self:httpPort, system:httpPort); - } // End of testcase tc_http_map_1 + } // End of testcase tc_http_map_1 - control { - execute(tc_http_map_1()); - } + control { + execute(tc_http_map_1()); + } } // End of module TestCodec_HttpPort -- GitLab From 48ce94836bcf26f96828d09365339dcb7a0367a0 Mon Sep 17 00:00:00 2001 From: Garcia Date: Wed, 6 Jun 2018 06:57:27 +0200 Subject: [PATCH 17/72] Add RFC 5985 - HELD codec --- ccsrc/Protocols/Held/held.codec.cc | 2 ++ ccsrc/Protocols/Http/http_codec.cc | 2 +- etc/TestCodec/TestCodec.cfg | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/ccsrc/Protocols/Held/held.codec.cc b/ccsrc/Protocols/Held/held.codec.cc index 012f99a..1acae8c 100644 --- a/ccsrc/Protocols/Held/held.codec.cc +++ b/ccsrc/Protocols/Held/held.codec.cc @@ -7,6 +7,7 @@ #include "loggers.hh" #include "LibItsHttp_XmlMessageBodyTypes.hh" + #include "urn_ietf_params_xml_ns_geopriv_held.hh" int held_codec::encode (const LibItsHttp__XmlMessageBodyTypes::XmlBody& msg, OCTETSTRING& data) @@ -26,6 +27,7 @@ int held_codec::encode (const LibItsHttp__XmlMessageBodyTypes::XmlBody& msg, OCT loggers::get_instance().log_msg("held_codec::encode: Process LocationResponseType", (const Base_Type&)location_response); location_response.encode(urn__ietf__params__xml__ns__geopriv__held::LocationResponse_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); } else { + loggers::get_instance().warning("held_codec::encode: Unsupported variant"); return -1; } data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()); diff --git a/ccsrc/Protocols/Http/http_codec.cc b/ccsrc/Protocols/Http/http_codec.cc index d24e1af..475ec84 100644 --- a/ccsrc/Protocols/Http/http_codec.cc +++ b/ccsrc/Protocols/Http/http_codec.cc @@ -335,7 +335,7 @@ int http_codec::encode_body(const LibItsHttp__MessageBodyTypes::HttpMessageBody& } else if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_locationRequest)) { if (_codecs["held"].get() != nullptr) { loggers::get_instance().log("http_codec::encode_body: Call 'held_codec'"); - _codecs["held"]->encode((Record_Type&)p_message_body, p_encoding_buffer); + _codecs["held"]->encode((Record_Type&)xml_body, p_encoding_buffer); } else { loggers::get_instance().warning("http_codec::encode_body: Failed to encode HELD message"); return -1; diff --git a/etc/TestCodec/TestCodec.cfg b/etc/TestCodec/TestCodec.cfg index f4cd3ae..e83fb3a 100644 --- a/etc/TestCodec/TestCodec.cfg +++ b/etc/TestCodec/TestCodec.cfg @@ -51,13 +51,13 @@ system.httpPort.params := "HTTP(codecs=held:held_codec;html:html_codec;json:json [EXECUTE] # In this section you can specify what parts of your test suite you want to execute. -#TestCodec_Register.tc_register_request_1 +TestCodec_Register.tc_register_request_1 #TestCodec_Register.tc_register_request_2 #TestCodec_Register.tc_invite_request_2 #TestCodec_Register.tc_invite_request_2 #TestCodec_HttpRequest.tc_http_get_1 #TestCodec_HttpResponse.tc_http_200_ok_1 -TestCodec_HttpPort.tc_http_map_1 +#TestCodec_HttpPort.tc_http_map_1 [GROUPS] # In this section you can specify groups of hosts. These groups can be used inside the -- GitLab From a434f16c9f2f68a2d5c450cf231bcd58372c7834 Mon Sep 17 00:00:00 2001 From: Garcia Date: Wed, 6 Jun 2018 07:01:00 +0200 Subject: [PATCH 18/72] Add SIP framework, start development based on GNU oSip external library --- ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc | 28 ++++ ccsrc/EncDec/LibSip/LibSip_Encdec.cc | 58 +++++++ .../LibSip/LibSip_SMSFunctions_Encdec.cc | 9 ++ ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc | 12 ++ .../EncDec/LibSip/LibSip_Templates_Encdec.cc | 9 ++ .../Sip/sip_codec_register_request.cc | 153 ++++++++++++++++++ .../Sip/sip_codec_register_request.hh | 29 ++++ ccsrc/Protocols/Sip/sip_layer.cc | 35 ++++ ccsrc/Protocols/Sip/sip_layer.hh | 73 +++++++++ ccsrc/Protocols/Sip/sip_layer_factory.hh | 45 ++++++ 10 files changed, 451 insertions(+) create mode 100644 ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc create mode 100644 ccsrc/EncDec/LibSip/LibSip_Encdec.cc create mode 100644 ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc create mode 100644 ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc create mode 100644 ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc create mode 100644 ccsrc/Protocols/Sip/sip_codec_register_request.cc create mode 100644 ccsrc/Protocols/Sip/sip_codec_register_request.hh create mode 100644 ccsrc/Protocols/Sip/sip_layer.cc create mode 100644 ccsrc/Protocols/Sip/sip_layer.hh create mode 100644 ccsrc/Protocols/Sip/sip_layer_factory.hh diff --git a/ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc b/ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc new file mode 100644 index 0000000..63ee4c7 --- /dev/null +++ b/ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc @@ -0,0 +1,28 @@ + +#include "LibItsHttp_MessageBodyTypes.hh" + +#include "http_codec.hh" + +#include "loggers.hh" + +namespace LibItsHttp__EncdecDeclarations { + + BITSTRING fx__enc__http__message(const LibItsHttp__TypesAndValues::HttpMessage& p) { + loggers::get_instance().log_msg(">>> fx__enc__http__message: ", (const Base_Type&)p); + + OCTETSTRING os; + http_codec codec; + codec.encode(p, os); + + return oct2bit(os); + } + INTEGER fx__dec__http__message(BITSTRING& pdu, LibItsHttp__TypesAndValues::HttpMessage& p) { + loggers::get_instance().log_msg(">>> fx__dec__http__message: ", pdu); + + OCTETSTRING os = bit2oct(pdu); + http_codec codec; + codec.decode(os, p); + + return 0; + } +} // End of namespace LibItsHttp__EncdecDeclarations diff --git a/ccsrc/EncDec/LibSip/LibSip_Encdec.cc b/ccsrc/EncDec/LibSip/LibSip_Encdec.cc new file mode 100644 index 0000000..19b4572 --- /dev/null +++ b/ccsrc/EncDec/LibSip/LibSip_Encdec.cc @@ -0,0 +1,58 @@ + +#include "LibSip_EncdecDeclarations.hh" +#include "LibSip_XMLTypes.hh" + +#include "sip_codec_register_request.hh" + +#include "loggers.hh" + +namespace LibSip__EncdecDeclarations { + + BITSTRING fx__enc__Request(const LibSip__SIPTypesAndValues::Request& p) { return BITSTRING(); } + BITSTRING fx__enc__REGISTER__Request(const LibSip__SIPTypesAndValues::REGISTER__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__INVITE__Request(const LibSip__SIPTypesAndValues::INVITE__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__OPTIONS__Request(const LibSip__SIPTypesAndValues::OPTIONS__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__BYE__Request(const LibSip__SIPTypesAndValues::BYE__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__CANCEL__Request(const LibSip__SIPTypesAndValues::CANCEL__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__ACK__Request(const LibSip__SIPTypesAndValues::ACK__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__PRACK__Request(const LibSip__SIPTypesAndValues::PRACK__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__NOTIFY__Request(const LibSip__SIPTypesAndValues::NOTIFY__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__SUBSCRIBE__Request(const LibSip__SIPTypesAndValues::SUBSCRIBE__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__PUBLISH__Request(const LibSip__SIPTypesAndValues::PUBLISH__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__UPDATE__Request(const LibSip__SIPTypesAndValues::UPDATE__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__REFER__Request(const LibSip__SIPTypesAndValues::REFER__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__MESSAGE__Request(const LibSip__SIPTypesAndValues::MESSAGE__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__INFO__Request(const LibSip__SIPTypesAndValues::INFO__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__Response(const LibSip__SIPTypesAndValues::Response& p) { return BITSTRING(); } + BITSTRING fx__enc__Raw(const CHARSTRING& p) { return BITSTRING(); } + BITSTRING fx__enc__SMS(const LibSip__SimpleMsgSummaryTypes::SimpleMsgSummary& pdu) { return BITSTRING(); } + BITSTRING fx__enc__MessageBody(const LibSip__MessageBodyTypes::MessageBody& pdu) { return BITSTRING(); } + INTEGER fx__dec__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::Request& p) { return INTEGER(0); } + + INTEGER fx__dec__REGISTER__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::REGISTER__Request& p) { + loggers::get_instance().log_msg(">>> fx__dec__REGISTER__Request: ", pdu); + + OCTETSTRING os = bit2oct(pdu); + sip_codec_register_request codec; + codec.decode(os, p); + + return 0; + } + + INTEGER fx__dec__INVITE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::INVITE__Request& p) { return INTEGER(0); } + INTEGER fx__dec__OPTIONS__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::OPTIONS__Request& p) { return INTEGER(0); } + INTEGER fx__dec__BYE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::BYE__Request& p) { return INTEGER(0); } + INTEGER fx__dec__CANCEL__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::CANCEL__Request& p) { return INTEGER(0); } + INTEGER fx__dec__ACK__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::ACK__Request& p) { return INTEGER(0); } + INTEGER fx__dec__PRACK__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::PRACK__Request& p) { return INTEGER(0); } + INTEGER fx__dec__NOTIFY__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::NOTIFY__Request& p) { return INTEGER(0); } + INTEGER fx__dec__SUBSCRIBE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::SUBSCRIBE__Request& p) { return INTEGER(0); } + INTEGER fx__dec__PUBLISH__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::PUBLISH__Request& p) { return INTEGER(0); } + INTEGER fx__dec__UPDATE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::UPDATE__Request& p) { return INTEGER(0); } + INTEGER fx__dec__REFER__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::REFER__Request& p) { return INTEGER(0); } + INTEGER fx__dec__MESSAGE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::MESSAGE__Request& p) { return INTEGER(0); } + INTEGER fx__dec__INFO__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::INFO__Request& p) { return INTEGER(0); } + INTEGER fx__dec__Response(BITSTRING& pdu, LibSip__SIPTypesAndValues::Response& p) { return INTEGER(0); } + INTEGER fx__dec__SMS(BITSTRING& pdu, LibSip__SimpleMsgSummaryTypes::SimpleMsgSummary& p) { return INTEGER(0); } + INTEGER fx__dec__MessageBody(BITSTRING& pdu, LibSip__MessageBodyTypes::MessageBody& p) { return INTEGER(0); } +} // End of namespace LibSip__EncdecDeclarations diff --git a/ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc b/ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc new file mode 100644 index 0000000..65e0af8 --- /dev/null +++ b/ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc @@ -0,0 +1,9 @@ +#include "LibSip_SMSFunctions.hh" + +#include "loggers.hh" + +namespace LibSip__SMSFunctions { + + HEXSTRING fx__GetSC__TimeStamp(const INTEGER& p__TimeZone) { return int2hex(0, 14); }; + +} // End of namespace LibSip__SMSFunctions diff --git a/ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc b/ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc new file mode 100644 index 0000000..8fd6369 --- /dev/null +++ b/ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc @@ -0,0 +1,12 @@ +#include "LibSip_Steps.hh" + +#include "loggers.hh" + +namespace LibSip__Steps { + + CHARSTRING fx__rndStr() { return CHARSTRING(""); }; + CHARSTRING fx__putInLowercase(const CHARSTRING& p__string) { return CHARSTRING(""); }; + CHARSTRING fx__getIpAddr(const CHARSTRING& p__host__name) { return CHARSTRING(""); }; + CHARSTRING fx__calculateDigestResponse(const CHARSTRING& p__nonce, const CHARSTRING& p__cnonce, const CHARSTRING& p__user, const CHARSTRING& p__realm, const CHARSTRING& p__passwd, const CHARSTRING& p__alg, const CHARSTRING& p__nonceCount, const CHARSTRING& p__method, const CHARSTRING& p__qop, const CHARSTRING& p__URI, const CHARSTRING& p__HEntity) { return CHARSTRING(""); }; + +} // End of namespace LibSip__Steps diff --git a/ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc b/ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc new file mode 100644 index 0000000..2c68f22 --- /dev/null +++ b/ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc @@ -0,0 +1,9 @@ +#include "LibSip_Templates.hh" + +#include "loggers.hh" + +namespace LibSip__Templates { + + INTEGER fx__calculateXMLBodyLen(const LibSip__XMLTypes::XmlBody& p__mb) { return INTEGER(0); }; + +} // End of namespace LibSip__Templates diff --git a/ccsrc/Protocols/Sip/sip_codec_register_request.cc b/ccsrc/Protocols/Sip/sip_codec_register_request.cc new file mode 100644 index 0000000..69b640e --- /dev/null +++ b/ccsrc/Protocols/Sip/sip_codec_register_request.cc @@ -0,0 +1,153 @@ +#include "LibSip_SIPTypesAndValues.hh" + +#include "sip_codec_register_request.hh" +#include "loggers.hh" + +//#include "osipparser2/osip_parser.h" + +int sip_codec_register_request::encode (const LibSip__SIPTypesAndValues::REGISTER__Request& msg, OCTETSTRING& data) +{ + loggers::get_instance().log_msg(">>> sip_codec_register_request::encode: ", (const Base_Type&)msg); + + + + + +// TTCN_EncDec::clear_error(); +// TTCN_Buffer encoding_buffer; + + int result = -1; +// if (msg.ischosen(LibItsSip__TypesAndValues::SipMessage::ALT_request)) { +// result = encode_request(msg.request(), encoding_buffer); +// } else if (msg.ischosen(LibItsSip__TypesAndValues::SipMessage::ALT_response)) { +// //result = encode_response(msg.response(), encoding_buffer); +// } else { +// loggers::get_instance().warning("sip_codec_register_request::encode: Unbound SipMessage"); +// return -1; +// } + +// data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()); + + loggers::get_instance().log_msg("<<< sip_codec_register_request::encode: data=", data); + return result; +} + +int sip_codec_register_request::decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::REGISTER__Request& msg, params* p_params) +{ + loggers::get_instance().log_msg(">>> sip_codec_register_request::decode: data=", data); + + // Sanity checks + if (data.lengthof() == 0) { + loggers::get_instance().warning(">>> sip_codec_register_request::decode: Wrong parameters"); + return -1; + } + + /*::parser_init(); + osip_message_t* _sip_message; + int result = ::osip_message_init(&_sip_message); + if (result != 0) { + loggers::get_instance().warning("sip_codec_register_request::decode: Failed to initialise internal data structures"); + return -1; + } + result = ::osip_message_parse(_sip_message, (const char*)static_cast(data), data.lengthof()); + if (result != 0) { + loggers::get_instance().warning("sip_codec_register_request::decode: Failed to parse SIP message"); + return -1; + } + loggers::get_instance().log("sip_codec_register_request::decode: %s - %s - %s - %d", _sip_message->sip_version, osip_uri_get_host(_sip_message->req_uri), _sip_message->sip_method, *osip_message_get_content_length(_sip_message)); + + + + + + + + ::osip_message_free(_sip_message);*/ + + return 0; +} + +//int sip_codec_register_request::encode_request(const LibItsSip__TypesAndValues::Request& p_request, TTCN_Buffer& p_encoding_buffer) +//{ +// loggers::get_instance().log_msg(">>> sip_codec_register_request::encode_request: ", (const Base_Type&)p_request); +// +// const OPTIONAL& v = p_request.body(); +// CHARSTRING body(""); +// if (v.ispresent()) { +// body = static_cast(*v.get_opt_value()); +// loggers::get_instance().log_msg("sip_codec_register_request::encode_request: body: ", body); +// } +// +// // Encode generic part +// p_encoding_buffer.put_cs(p_request.method()); +// p_encoding_buffer.put_c(' '); +// p_encoding_buffer.put_cs(p_request.uri()); +// p_encoding_buffer.put_cs(" HTTP/"); +// p_encoding_buffer.put_cs(int2str(p_request.version__major())); +// p_encoding_buffer.put_c('.'); +// p_encoding_buffer.put_cs(int2str(p_request.version__minor())); +// p_encoding_buffer.put_cs("\r\n"); +// // Encode headers +// const LibItsSip__TypesAndValues::HeaderLines& headers = p_request.header(); +// for (int i = 0; i < headers.size_of(); i++) { +// const LibItsSip__TypesAndValues::HeaderLine& header = headers[i]; +// loggers::get_instance().log_msg("sip_codec_register_request::encode_request: Processing header ", header.header__name()); +// p_encoding_buffer.put_cs(header.header__name()); +// p_encoding_buffer.put_cs(": "); +// if (std::string(static_cast(header.header__name())).compare("Content-Length") == 0) { +// loggers::get_instance().log("sip_codec_register_request::encode_request: body length: %d", body.lengthof()); +// p_encoding_buffer.put_cs(int2str(body.lengthof())); +// } else { +// if (header.header__value().size_of() > 0) { +// loggers::get_instance().log_msg("sip_codec_register_request::encode_request: Processing value ", header.header__value()[0]); +// p_encoding_buffer.put_cs(header.header__value()[0]); +// int j = 1; +// while (j < header.header__value().size_of()) { +// p_encoding_buffer.put_cs("; "); +// loggers::get_instance().log_msg("sip_codec_register_request::encode_request: Processing value ", header.header__value()[j]); +// p_encoding_buffer.put_cs(header.header__value()[j]); +// j += 1; +// } // End of 'while' statement +// } +// } +// p_encoding_buffer.put_cs("\r\n"); +// } // End of 'for' statement +// +// if (body.lengthof() != 0) { +// p_encoding_buffer.put_cs(body); +// } +// +// p_encoding_buffer.put_cs("\r\n"); +// +// return 0; +//} +// +// +//int sip_codec_register_request::decode_headers(TTCN_Buffer& decoding_buffer, LibItsSip__TypesAndValues::HeaderLines& headers) { +// loggers::get_instance().log(">>> sip_codec_register_request::decode_headers"); +// loggers::get_instance().log_to_hexa("sip_codec_register_request::decode_headers", decoding_buffer); +// +// CHARSTRING cstr; +// int i = 0; +// while (true) { +// switch(get_line(decoding_buffer, cstr, true)) { +// case 0: { +// loggers::get_instance().log_msg("sip_codec_register_request::decode_headers: ", cstr); +// LibItsSip__TypesAndValues::HeaderLine header; +// if (decode_header(cstr, header) == -1) { +// loggers::get_instance().warning("sip_codec_register_request::decode_headers: Failed to decode header %s", static_cast(cstr)); +// return -1; +// } +// headers[i++] = header; +// } +// break; +// case 1: +// loggers::get_instance().log_msg("<<< sip_codec_register_request::decode_headers: ", headers); +// return 0; +// case -1: +// loggers::get_instance().warning("sip_codec_register_request::decode_headers: Failed to decode headers"); +// return -1; +// +// } // End of 'switch' statement +// } // End of 'while' statement +//} diff --git a/ccsrc/Protocols/Sip/sip_codec_register_request.hh b/ccsrc/Protocols/Sip/sip_codec_register_request.hh new file mode 100644 index 0000000..4b3cb30 --- /dev/null +++ b/ccsrc/Protocols/Sip/sip_codec_register_request.hh @@ -0,0 +1,29 @@ +#pragma once + +#include "codec.hh" +#include "params.hh" + +class Base_Type; +class TTCN_Typedescriptor_t; +class TTCN_Buffer; + +namespace LibSip__SIPTypesAndValues { + class REGISTER__Request; +} + +class sip_codec_register_request: public codec < +LibSip__SIPTypesAndValues::REGISTER__Request, +LibSip__SIPTypesAndValues::REGISTER__Request> +{ +public: + explicit sip_codec_register_request() : codec(), _sip_message{nullptr} { }; + virtual ~sip_codec_register_request() { }; + + virtual int encode (const LibSip__SIPTypesAndValues::REGISTER__Request& msg, OCTETSTRING& data); + virtual int decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::REGISTER__Request& msg, params* p_params = NULL); + +private: +// int encode_request (const LibSip__SIPTypesAndValues::Request& p_request, TTCN_Buffer& p_encoding_buffer); +// int encode_response (const LibSip__SIPTypesAndValues::Request&, TTCN_Buffer& p_encoding_buffer); + +}; // End of class sip_codec_register_request diff --git a/ccsrc/Protocols/Sip/sip_layer.cc b/ccsrc/Protocols/Sip/sip_layer.cc new file mode 100644 index 0000000..3a1f345 --- /dev/null +++ b/ccsrc/Protocols/Sip/sip_layer.cc @@ -0,0 +1,35 @@ +#include "LibSip_Interface.hh" +#include "LibSip_SIPTypesAndValues.hh" + +#include "sip_layer_factory.hh" + +#include "loggers.hh" + +#include "converter.hh" + +sip_layer::sip_layer(const std::string & p_type, const std::string & p_param) : t_layer(p_type), _params() { + loggers::get_instance().log(">>> sip_layer::sip_layer: %s, %s", to_string().c_str(), p_param.c_str()); + // Setup parameters + params::convert(_params, p_param); +} + +void sip_layer::send_data(OCTETSTRING& data, params& p_params) { + loggers::get_instance().log_msg(">>> sip_layer::send_data: ", data); + + OCTETSTRING os; + // Encode SIP message +// _codec.encode(msg, os); + send_to_all_layers(os, p_params); +} + +void sip_layer::receive_data(OCTETSTRING& data, params& p_params) +{ + loggers::get_instance().log_msg(">>> sip_layer::receive_data: ", data); + + // Decode SIP message + OCTETSTRING payload; + receive_to_all_layers(payload, p_params); +} + +sip_layer_factory sip_layer_factory::_f; + diff --git a/ccsrc/Protocols/Sip/sip_layer.hh b/ccsrc/Protocols/Sip/sip_layer.hh new file mode 100644 index 0000000..1adf44c --- /dev/null +++ b/ccsrc/Protocols/Sip/sip_layer.hh @@ -0,0 +1,73 @@ +/*! + * \file sip_layer.hh + * \brief Header file for ITS HTTP protocol layer. + * \author ETSI STF549 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include + +#include "t_layer.hh" + +#include "sip_codec_register_request.hh" + +namespace LibSip__Interface { + class SipPort; //! Forward declaration of TITAN class +} + +namespace LibSip__SIPTypesAndValues { + class REGISTER__Request; //! Forward declaration of TITAN class +} + +class OCTETSTRING; //! Forward declaration of TITAN class + +/*! + * \class sip_layer + * \brief This class provides a factory class to create an sip_layer class instance + */ +class sip_layer : public t_layer { + params _params; + +public: //! \publicsection + /*! + * \brief Specialised constructor + * Create a new instance of the sip_layer class + * \param[in] p_type \todo + * \param[in] p_param \todo + */ + sip_layer() : t_layer(), _params() {}; + /*! + * \brief Specialised constructor + * Create a new instance of the sip_layer class + * \param[in] p_type \todo + * \param[in] p_param \todo + */ + sip_layer(const std::string& p_type, const std::string& p_param); + /*! + * \brief Default destructor + */ + virtual ~sip_layer() { }; + + /*! + * \virtual + * \fn void send_data(OCTETSTRING& data, params& p_params); + * \brief Send bytes formated data to the lower layers + * \param[in] p_data The data to be sent + * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters + */ + virtual void send_data(OCTETSTRING& data, params& p_params); + /*! + * \virtual + * \fn void receive_data(OCTETSTRING& data, params& p_params); + * \brief Receive bytes formated data from the lower layers + * \param[in] p_data The bytes formated data received + * \param[in] p_params Some lower layers parameters values when data was received + */ + virtual void receive_data(OCTETSTRING& data, params& info); +}; // End of class sip_layer + diff --git a/ccsrc/Protocols/Sip/sip_layer_factory.hh b/ccsrc/Protocols/Sip/sip_layer_factory.hh new file mode 100644 index 0000000..3d59dfc --- /dev/null +++ b/ccsrc/Protocols/Sip/sip_layer_factory.hh @@ -0,0 +1,45 @@ +/*! + * \file sip_layer_factory.hh + * \brief Header file for ITS Sip protocol layer factory. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "layer_stack_builder.hh" + +#include "sip_layer.hh" + +/*! + * \class sip_layer_factory + * \brief This class provides a factory class to create an sip_layer class instance + */ +class sip_layer_factory : public layer_factory { + static sip_layer_factory _f; //! Reference to the unique instance of this class +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the udp_layer_factory class + * \remark The HTTP layer identifier is HTTP + */ + sip_layer_factory() { + // Register factory + layer_stack_builder::register_layer_factory("HTTP", this); + }; + /*! + * \fn layer* create_layer(const std::string & type, const std::string & param); + * \brief Create the layers stack based on the provided layers stack description + * \param[in] p_type The provided layers stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + * \inline + */ + inline virtual layer* create_layer(const std::string& p_type, const std::string& p_param){ + return new sip_layer(p_type, p_param); + }; +}; // End of class sip_layer_factory + -- GitLab From 7aa2bb7b77f3bbaad5ae64797c2eca5e03c103ad Mon Sep 17 00:00:00 2001 From: Garcia Date: Wed, 6 Jun 2018 07:01:57 +0200 Subject: [PATCH 19/72] Add SIP framework, start development based on GNU oSip external library --- ccsrc/Ports/LibSip/OperatorPort.hh | 31 ++++++++++ ccsrc/Ports/LibSip/SipPort.cc | 90 ++++++++++++++++++++++++++++++ ccsrc/Ports/LibSip/SipPort.hh | 62 ++++++++++++++++++++ 3 files changed, 183 insertions(+) create mode 100644 ccsrc/Ports/LibSip/OperatorPort.hh create mode 100644 ccsrc/Ports/LibSip/SipPort.cc create mode 100644 ccsrc/Ports/LibSip/SipPort.hh diff --git a/ccsrc/Ports/LibSip/OperatorPort.hh b/ccsrc/Ports/LibSip/OperatorPort.hh new file mode 100644 index 0000000..a44d316 --- /dev/null +++ b/ccsrc/Ports/LibSip/OperatorPort.hh @@ -0,0 +1,31 @@ + + +#pragma once + +#include "LibSip_Interface.hh" + +namespace LibSip__Interface { + + class OperatorPort : public OperatorPort_BASE { + public: + OperatorPort(const char *par_port_name): OperatorPort_BASE(par_port_name) { }; + ~OperatorPort() { }; + + protected: + virtual void outgoing_call(const s__SIP__conversation_call& call_par) { }; + virtual void outgoing_call(const s__SIP__ringing_call& call_par) { }; + virtual void outgoing_call(const s__SIP__announcementA_call& call_par) { }; + virtual void outgoing_call(const s__SIP__announcementB_call& call_par) { }; + virtual void outgoing_call(const s__SIP__announcement_call& call_par) { }; + virtual void outgoing_call(const s__SIP__voiceMessage_call& call_par) { }; + virtual void outgoing_call(const s__SIP__mediastopped_call& call_par) { }; + virtual void outgoing_reply(const s__SIP__conversation_reply& reply_par) { }; + virtual void outgoing_reply(const s__SIP__ringing_reply& reply_par) { }; + virtual void outgoing_reply(const s__SIP__announcementA_reply& reply_par) { }; + virtual void outgoing_reply(const s__SIP__announcementB_reply& reply_par) { }; + virtual void outgoing_reply(const s__SIP__announcement_reply& reply_par) { }; + virtual void outgoing_reply(const s__SIP__voiceMessage_reply& reply_par) { }; + virtual void outgoing_reply(const s__SIP__mediastopped_reply& reply_par) { }; + }; // End of class OperatorPort + +} diff --git a/ccsrc/Ports/LibSip/SipPort.cc b/ccsrc/Ports/LibSip/SipPort.cc new file mode 100644 index 0000000..d56da83 --- /dev/null +++ b/ccsrc/Ports/LibSip/SipPort.cc @@ -0,0 +1,90 @@ +#include "SipPort.hh" +#include "sip_layer_factory.hh" +#include "loggers.hh" + +namespace LibSip__Interface { + + SipPort::SipPort(const char *par_port_name): SipPort_BASE(par_port_name), _cfg_params(), _layer_params(), _layer(nullptr), _time_key("SipPort::outgoing_send") { + // Nothing to do + } // End of constructor + + SipPort::~SipPort() { + loggers::get_instance().log(">>> SipPort::~SipPort"); + + if (_layer != nullptr) { + delete _layer; + } + } // End of destructor + + void SipPort::set_parameter(const char * parameter_name, const char * parameter_value) + { + loggers::get_instance().log("SipPort::set_parameter: %s=%s", parameter_name, parameter_value); + _cfg_params.insert(std::pair(std::string(parameter_name), std::string(parameter_value))); + } + + /*void SipPort::Handle_Fd_Event(int fd, boolean is_readable, + boolean is_writable, boolean is_error) {}*/ + + void SipPort::Handle_Fd_Event_Error(int /*fd*/) + { + + } + + void SipPort::Handle_Fd_Event_Writable(int /*fd*/) + { + + } + + void SipPort::Handle_Fd_Event_Readable(int /*fd*/) + { + + } + + /*void SipPort::Handle_Timeout(double time_since_last_call) {}*/ + + void SipPort::user_map(const char * system_port) + { + loggers::get_instance().log(">>> SipPort::user_map: %s", system_port); + // Build layer stack + params::iterator it = _cfg_params.find(std::string("params")); + if (it != _cfg_params.end()) { + loggers::get_instance().log("SipPort::user_map: %s", it->second.c_str()); + // Setup parameters + params::convert(_layer_params, it->second); // TODO This _layer_params seems to be useless + // Create layer + _layer = layer_stack_builder::get_instance()->create_layer_stack(it->second.c_str()); + if (static_cast(_layer) == nullptr) { + loggers::get_instance().error("SipPort::user_map: Invalid stack configuration: %s", it->second.c_str()); + } + static_cast(_layer)->add_upper_port(this); + + } else { + loggers::get_instance().error("SipPort::user_map: No layers defined in configuration file"); + } + } // End of user_map method + + void SipPort::user_unmap(const char * system_port) + { + loggers::get_instance().log(">>> SipPort::user_unmap: %s", system_port); + + // Reset layers + if (_layer != nullptr) { + delete _layer; + _layer = nullptr; + } + } // End of user_unmap method + + void SipPort::user_start() + { + loggers::get_instance().log(">>> SipPort::user_start"); + + } // End of user_start method + + void SipPort::user_stop() + { + loggers::get_instance().log(">>> SipPort::user_stop"); + + } // End of user_stop method + +} + diff --git a/ccsrc/Ports/LibSip/SipPort.hh b/ccsrc/Ports/LibSip/SipPort.hh new file mode 100644 index 0000000..642a962 --- /dev/null +++ b/ccsrc/Ports/LibSip/SipPort.hh @@ -0,0 +1,62 @@ +#pragma once + +#include "LibSip_Interface.hh" + +#include "layer.hh" +#include "params.hh" + +namespace LibSip__SIPTypesAndValues { + class REGISTER__Request; +} + +namespace LibSip__Interface { + + class SipPort : public SipPort_BASE { + params _cfg_params; + params _layer_params; + layer* _layer; + std::string _time_key; + public: + SipPort(const char *par_port_name); + ~SipPort(); + + void set_parameter(const char *parameter_name, const char *parameter_value); + void receiveMsg (const LibSip__SIPTypesAndValues::REGISTER__Request&, const params&); + + private: + /* void Handle_Fd_Event(int fd, boolean is_readable, + boolean is_writable, boolean is_error); */ + void Handle_Fd_Event_Error(int fd); + void Handle_Fd_Event_Writable(int fd); + void Handle_Fd_Event_Readable(int fd); + /* void Handle_Timeout(double time_since_last_call); */ + + protected: + void user_map(const char *system_port); + void user_unmap(const char *system_port); + + void user_start(); + void user_stop(); + + protected: + virtual void outgoing_send(const LibSip__SIPTypesAndValues::Request& send_par, const Address4SIP *destination_address) { }; + virtual void outgoing_send(const LibSip__SIPTypesAndValues::REGISTER__Request& send_par, const Address4SIP *destination_address) { }; + virtual void outgoing_send(const LibSip__SIPTypesAndValues::INVITE__Request& send_par, const Address4SIP *destination_address) { }; + virtual void outgoing_send(const LibSip__SIPTypesAndValues::OPTIONS__Request& send_par, const Address4SIP *destination_address) { }; + virtual void outgoing_send(const LibSip__SIPTypesAndValues::BYE__Request& send_par, const Address4SIP *destination_address) { }; + virtual void outgoing_send(const LibSip__SIPTypesAndValues::CANCEL__Request& send_par, const Address4SIP *destination_address) { }; + virtual void outgoing_send(const LibSip__SIPTypesAndValues::ACK__Request& send_par, const Address4SIP *destination_address) { }; + virtual void outgoing_send(const LibSip__SIPTypesAndValues::PRACK__Request& send_par, const Address4SIP *destination_address) { }; + virtual void outgoing_send(const LibSip__SIPTypesAndValues::NOTIFY__Request& send_par, const Address4SIP *destination_address) { }; + virtual void outgoing_send(const LibSip__SIPTypesAndValues::SUBSCRIBE__Request& send_par, const Address4SIP *destination_address) { }; + virtual void outgoing_send(const LibSip__SIPTypesAndValues::PUBLISH__Request& send_par, const Address4SIP *destination_address) { }; + virtual void outgoing_send(const LibSip__SIPTypesAndValues::UPDATE__Request& send_par, const Address4SIP *destination_address) { }; + virtual void outgoing_send(const LibSip__SIPTypesAndValues::REFER__Request& send_par, const Address4SIP *destination_address) { }; + virtual void outgoing_send(const LibSip__SIPTypesAndValues::MESSAGE__Request& send_par, const Address4SIP *destination_address) { }; + virtual void outgoing_send(const LibSip__SIPTypesAndValues::INFO__Request& send_par, const Address4SIP *destination_address) { }; + virtual void outgoing_send(const LibSip__SIPTypesAndValues::Response& send_par, const Address4SIP *destination_address) { }; + virtual void outgoing_send(const CHARSTRING& send_par, const Address4SIP *destination_address) { }; + }; // End of class SipPort + +} + -- GitLab From 1c3d8144d647d66c76af01e75ff94939e2f6e241 Mon Sep 17 00:00:00 2001 From: Yann Garcia Date: Wed, 6 Jun 2018 07:45:55 +0200 Subject: [PATCH 20/72] Add external libraries installation --- docker/Dockerfile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docker/Dockerfile b/docker/Dockerfile index 8ab0c3c..79fd05e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -69,6 +69,11 @@ RUN echo "docker-titan" > /etc/hostname \ && cd /home/stf549 \ && mkdir -p bin lib include dev tmp frameworks docs \ && ls -ltr \ + && cd /home/stf549/frameworks \ + && git clone https://github.com/YannGarcia/osip osip \ + && cd /home/stf549/frameworks/osip \ + && ./autogen.sh \ + && make check \ && cd /home/stf549/dev \ && git clone http://forge.etsi.org/gitlab/emergency-communications/NG112.git STF549_Ng112 \ && cd /home/stf549/dev/STF549_Ng112/ttcn \ -- GitLab From 57402bdb560814bff3717443dc4b3c50d1ca639b Mon Sep 17 00:00:00 2001 From: Garcia Date: Thu, 7 Jun 2018 06:55:48 +0200 Subject: [PATCH 21/72] Add support of GNU oSip --- .../Sip/sip_codec_register_request.hh | 2 +- scripts/ng112.bash | 9 +- scripts/testcodec_generate_makefile.bash | 10 +- ttcn/AtsNg112/AtsNg112_TestCases.ttcn | 99 +++++++++++++++---- ttcn/AtsNg112/AtsNg112_TestControl.ttcn | 1 + 5 files changed, 91 insertions(+), 30 deletions(-) diff --git a/ccsrc/Protocols/Sip/sip_codec_register_request.hh b/ccsrc/Protocols/Sip/sip_codec_register_request.hh index 4b3cb30..3ade366 100644 --- a/ccsrc/Protocols/Sip/sip_codec_register_request.hh +++ b/ccsrc/Protocols/Sip/sip_codec_register_request.hh @@ -16,7 +16,7 @@ LibSip__SIPTypesAndValues::REGISTER__Request, LibSip__SIPTypesAndValues::REGISTER__Request> { public: - explicit sip_codec_register_request() : codec(), _sip_message{nullptr} { }; + explicit sip_codec_register_request() : codec() { }; virtual ~sip_codec_register_request() { }; virtual int encode (const LibSip__SIPTypesAndValues::REGISTER__Request& msg, OCTETSTRING& data); diff --git a/scripts/ng112.bash b/scripts/ng112.bash index 3f15dbb..9c27538 100644 --- a/scripts/ng112.bash +++ b/scripts/ng112.bash @@ -106,13 +106,13 @@ TTCN_FILES=`find .. -name '*.ttcn*'` if [ "${OSTYPE}" == "cygwin" ] then rm ../bin/*.exe ../lib/*.dll - compiler.exe -e -f -g -l -L -M -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log + compiler.exe -e -f -g -l -L -M -n -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log if [ "$?" == "1" ] then f_exit "Failed to compile ATS" 4 fi else - compiler -e -f -g -l -L -M -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log + compiler -e -f -g -l -L -M -n -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log if [ "$?" == "1" ] then f_exit "Failed to generate ATS source code" 6 @@ -192,8 +192,8 @@ else fi LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fstack-check -fstack-protector/g' fi -ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_EMCOM)/include -I$(PATH_DEV_EMCOM)/framework/include -I../include -I../../LibEmcom/Common/include -I../../LibEmcom/LibPemea/include -I$(HOME_INC) -I.' -ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lpcap -lstdc++fs -lssl/g' +ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_EMCOM)/include -I$(PATH_DEV_EMCOM)/framework/include -I../include -I../../LibEmcom/Common/include -I../../LibEmcom/LibNg112/include -I$(HOME_FRAMEWORKS)/osip/include -I$(HOME_INC) -I.' +ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lpcap -lstdc++fs -lssl -L\$\(HOME_FRAMEWORKS\)\/osip\/src\/osipparser2\/\.libs -losipparser2/g' sed --in-place "${CXXFLAGS_DEBUG_MODE}" ./Makefile sed --in-place "${LDFLAGS_DEBUG_MODE}" ./Makefile sed --in-place "${ADD_INCLUDE}" ./Makefile @@ -237,5 +237,6 @@ if [ "$?" == "1" ] then f_exit "Failed to generate ATS source code" 9 fi +export LD_LIBRARY_PATH=~/tmp/osip_aurelihein/src/osipparser2/.libs:$LD_LIBRARY_PATH ../bin/Ats${ATS_NAME} -v f_exit "Build done successfully" 0 diff --git a/scripts/testcodec_generate_makefile.bash b/scripts/testcodec_generate_makefile.bash index 329b7fc..1d57880 100644 --- a/scripts/testcodec_generate_makefile.bash +++ b/scripts/testcodec_generate_makefile.bash @@ -1,6 +1,6 @@ #!/bin/bash #set -e -#set -vx +set -vx function f_exit { cd ${CURPWD} @@ -106,13 +106,13 @@ TTCN_FILES=`find .. -name '*.ttcn*'` if [ "${OSTYPE}" == "cygwin" ] then rm ../bin/*.exe ../lib/*.dll - compiler.exe -e -f -g -l -L -M -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log + compiler.exe -e -f -g -l -L -M -n -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log if [ "$?" == "1" ] then f_exit "Failed to compile ATS" 4 fi else - compiler -e -f -g -l -L -M -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log + compiler -e -f -g -l -L -M -n -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log if [ "$?" == "1" ] then f_exit "Failed to generate ATS source code" 6 @@ -192,8 +192,8 @@ else fi LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fstack-check -fstack-protector/g' fi -ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_EMCOM)/include -I$(PATH_DEV_EMCOM)/framework/include -I../include -I../../LibEmcom/Common/include -I../../LibEmcom/LibPemea/include -I$(HOME_INC) -I.' -ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lstdc++fs -lssl/g' +ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_EMCOM)/include -I$(PATH_DEV_EMCOM)/framework/include -I../include -I../../LibEmcom/Common/include -I../../LibEmcom/LibNg112/include -I$(HOME_FRAMEWORKS)/osip/include -I$(HOME_INC) -I.' +ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lpcap -lstdc++fs -lssl -L\$\(HOME_FRAMEWORKS\)\/osip\/src\/osipparser2\/\.libs -losipparser2/g' sed --in-place "${CXXFLAGS_DEBUG_MODE}" ./Makefile sed --in-place "${LDFLAGS_DEBUG_MODE}" ./Makefile sed --in-place "${ADD_INCLUDE}" ./Makefile diff --git a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn index 094e627..f14f8b7 100644 --- a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn +++ b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn @@ -39,20 +39,13 @@ module AtsNg112_TestCases { import from LibNg112_Pics all; import from LibNg112_Pixits all; -// testcase TC_1() runs on SipComponent system TestAdapter { -// -// map(self:SIPP, system:SIPP); -// -// -// unmap(self:SIPP, system:SIPP); -// } - /** - * @desc "IUT successfully processes all mandatory HTTP headers when it receives a HTTP POST request" - * @reference - "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", - "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", - "https://tools.ietf.org/html/rfc5985" + * @desc "IUT successfully responds with a Point when it receives a HTTP POST location request without location type" + * @reference + * "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", + * "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", + * "https://tools.ietf.org/html/rfc5985" + * @remark PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD */ testcase TC_LIS_HTTP_POST_BV_01() runs on HttpComponent system TestAdapter { // Local variables @@ -79,11 +72,11 @@ module AtsNg112_TestCases { PICS_LISP_URI, v_headers, m_http_message_body_xml( - XmlBody: { locationRequest := valueof(m_locationRequest( - m_device({PX_DEVICE_URI}).elem_list, - m_locationTypeType(m_locationTypeBase_all))) - } - )))); + m_body_xml_location_request( + m_locationRequest( + m_device({PX_DEVICE_URI}).elem_list + ))) + ))); f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success); // Test body @@ -93,8 +86,9 @@ module AtsNg112_TestCases { mw_http_response( mw_http_response_ok( mw_http_message_body_xml( - XmlBody: { locationResponse := mw_locationResponse_dummy } - )))) { + mw_body_xml_location_response( + mw_locationResponse_dummy + ))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Security protocol version set to 3 ***"); f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); @@ -110,4 +104,69 @@ module AtsNg112_TestCases { f_cf_01_http_down(); } // End of testcase TC_LIS_HTTP_POST_BV_01 + /** + * @desc IUT successfully responds with a Circle when it receives a HTTP POST location request without location type + * @reference + * ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS) + * Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10 + * https://tools.ietf.org/html/rfc5985 + * @remark PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD + */ + testcase TC_LIS_HTTP_POST_BV_02() runs on HttpComponent system TestAdapter { + // Local variables + var HeaderLines v_headers; + + // Test control + if ((not PICS_HTTP_POST_REQUEST) or (not PICS_LOCATION_HELD)) { + log("*** " & testcasename() & ": PICS_HTTP_POST_REQUEST and PICS_LOCATION_HELD required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_http_up(); + + // Test adapter configuration + + // Preamble + f_init_default_headers_list(v_headers); + f_remove_headears_list({ c_header_accept }, v_headers); + httpPort.send( + m_http_request( + m_http_request_get( + PICS_LISP_URI, + v_headers, + m_http_message_body_xml( + m_body_xml_location_request( + m_locationRequest( + m_device({PX_DEVICE_URI}).elem_list + ))) + ))); + f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success); + + // Test body + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_body_xml_location_response( + mw_locationResponse_dummy + ))))) { + tc_ac.stop; + log("*** " & testcasename() & ": PASS: Security protocol version set to 3 ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_02_http_down(); + } // End of testcase TC_LIS_HTTP_POST_BV_02 + } // End of module AtsNg112_TestCases diff --git a/ttcn/AtsNg112/AtsNg112_TestControl.ttcn b/ttcn/AtsNg112/AtsNg112_TestControl.ttcn index 76b44d0..8fecb5a 100644 --- a/ttcn/AtsNg112/AtsNg112_TestControl.ttcn +++ b/ttcn/AtsNg112/AtsNg112_TestControl.ttcn @@ -10,6 +10,7 @@ module AtsNg112_TestControl { control { if (PICS_HTTP_POST_REQUEST and PICS_LOCATION_HELD) { execute(TC_LIS_HTTP_POST_BV_01()); + execute(TC_LIS_HTTP_POST_BV_02()); } } // End of 'control' statement -- GitLab From d94f6a9e2f9dc41a532788bf3f26cf9c78dd7606 Mon Sep 17 00:00:00 2001 From: Garcia Date: Wed, 13 Jun 2018 15:13:34 +0200 Subject: [PATCH 22/72] Start sSip2 development --- ccsrc/Protocols/Http/http_codec.cc | 26 +- ccsrc/Protocols/Http/http_codec.hh | 2 +- .../Sip/sip_codec_register_request.cc | 143 +------ .../Sip/sip_codec_register_request.hh | 10 +- docker/Dockerfile | 61 +-- test_purposes/LIS_HTTP_POST_BV_xx.tplan2 | 381 +++++++++--------- ttcn/TestCodec/TestCodec_HttpPort.ttcn | 9 +- ttcn/TestCodec/TestCodec_Register.ttcn | 5 + 8 files changed, 265 insertions(+), 372 deletions(-) diff --git a/ccsrc/Protocols/Http/http_codec.cc b/ccsrc/Protocols/Http/http_codec.cc index 475ec84..df4df1c 100644 --- a/ccsrc/Protocols/Http/http_codec.cc +++ b/ccsrc/Protocols/Http/http_codec.cc @@ -329,22 +329,20 @@ int http_codec::encode_body(const LibItsHttp__MessageBodyTypes::HttpMessageBody& } else if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_text__body)) { p_encoding_buffer = OCTETSTRING(p_message_body.text__body().lengthof(), (unsigned char*)static_cast(p_message_body.text__body())); } else if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_xml__body)) { - const LibItsHttp__XmlMessageBodyTypes::XmlBody& xml_body = p_message_body.xml__body(); - if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_raw)) { - p_encoding_buffer = OCTETSTRING(xml_body.raw().lengthof(), (unsigned char*)static_cast(xml_body.raw())); - } else if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_locationRequest)) { - if (_codecs["held"].get() != nullptr) { - loggers::get_instance().log("http_codec::encode_body: Call 'held_codec'"); - _codecs["held"]->encode((Record_Type&)xml_body, p_encoding_buffer); - } else { - loggers::get_instance().warning("http_codec::encode_body: Failed to encode HELD message"); - return -1; - } - } else if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_locationResponse)) { - loggers::get_instance().warning("http_codec::encode_body: No variant to encode"); + const LibItsHttp__XmlMessageBodyTypes::XmlBody& xml_body = p_message_body.xml__body(); + if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_raw)) { + p_encoding_buffer = OCTETSTRING(xml_body.raw().lengthof(), (unsigned char*)static_cast(xml_body.raw())); + } else { + std::map > >::const_iterator it = _codecs.find("held"); + if (it != _codecs.cend()) { + loggers::get_instance().log("http_codec::encode_body: Call 'held_codec'"); + _codecs["held"]->encode((Record_Type&)xml_body, p_encoding_buffer); } else { - // TODO To be continued + loggers::get_instance().warning("http_codec::encode_body: Unsupported HTTP codec, use raw field as default"); + p_encoding_buffer = OCTETSTRING(xml_body.raw().lengthof(), (unsigned char*)static_cast(xml_body.raw())); + // TODO Add new HTTP message codec here } + } } else { loggers::get_instance().warning("http_codec::encode_body: Failed to encode HTTP message body"); return -1; diff --git a/ccsrc/Protocols/Http/http_codec.hh b/ccsrc/Protocols/Http/http_codec.hh index 0c911f2..1a0f651 100644 --- a/ccsrc/Protocols/Http/http_codec.hh +++ b/ccsrc/Protocols/Http/http_codec.hh @@ -43,7 +43,7 @@ LibItsHttp__TypesAndValues::HttpMessage> { encoding_context _ec; decoding_context _dc; - std::map > > _codecs; + std::map > > _codecs; public: explicit http_codec() : codec(), _ec(), _dc(), _codecs() { }; virtual ~http_codec() { }; diff --git a/ccsrc/Protocols/Sip/sip_codec_register_request.cc b/ccsrc/Protocols/Sip/sip_codec_register_request.cc index 69b640e..3a9df27 100644 --- a/ccsrc/Protocols/Sip/sip_codec_register_request.cc +++ b/ccsrc/Protocols/Sip/sip_codec_register_request.cc @@ -3,33 +3,17 @@ #include "sip_codec_register_request.hh" #include "loggers.hh" -//#include "osipparser2/osip_parser.h" - int sip_codec_register_request::encode (const LibSip__SIPTypesAndValues::REGISTER__Request& msg, OCTETSTRING& data) { loggers::get_instance().log_msg(">>> sip_codec_register_request::encode: ", (const Base_Type&)msg); - - - - -// TTCN_EncDec::clear_error(); -// TTCN_Buffer encoding_buffer; - - int result = -1; -// if (msg.ischosen(LibItsSip__TypesAndValues::SipMessage::ALT_request)) { -// result = encode_request(msg.request(), encoding_buffer); -// } else if (msg.ischosen(LibItsSip__TypesAndValues::SipMessage::ALT_response)) { -// //result = encode_response(msg.response(), encoding_buffer); -// } else { -// loggers::get_instance().warning("sip_codec_register_request::encode: Unbound SipMessage"); -// return -1; -// } - -// data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()); - loggers::get_instance().log_msg("<<< sip_codec_register_request::encode: data=", data); - return result; + if (_codec.encode((LibSip__SIPTypesAndValues::Request&)msg, data) == -1) { + loggers::get_instance().warning("sip_codec_register_request::encode: Failed to encode message"); + return -1; + } + + return 0; } int sip_codec_register_request::decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::REGISTER__Request& msg, params* p_params) @@ -38,116 +22,25 @@ int sip_codec_register_request::decode (const OCTETSTRING& data, LibSip__SIPType // Sanity checks if (data.lengthof() == 0) { - loggers::get_instance().warning(">>> sip_codec_register_request::decode: Wrong parameters"); + loggers::get_instance().warning("sip_codec_register_request::decode: Wrong parameters"); return -1; } - /*::parser_init(); - osip_message_t* _sip_message; - int result = ::osip_message_init(&_sip_message); - if (result != 0) { - loggers::get_instance().warning("sip_codec_register_request::decode: Failed to initialise internal data structures"); + // LibSip__SIPTypesAndValues::Request request; + if (_codec.decode(data, (LibSip__SIPTypesAndValues::Request&)msg) == -1) { + // if (_codec.decode(data, request) == -1) { + loggers::get_instance().warning("sip_codec_register_request::decode: Failed to decode message"); return -1; } - result = ::osip_message_parse(_sip_message, (const char*)static_cast(data), data.lengthof()); - if (result != 0) { - loggers::get_instance().warning("sip_codec_register_request::decode: Failed to parse SIP message"); + // msg.requestLine() = request.requestLine(); + // msg.msgHeader() = request.msgHeader(); + // msg.messageBody() = request.messageBody(); + // msg.payload() = request.payload(); + + if (msg.requestLine().method() != LibSip__SIPTypesAndValues::Method::REGISTER__E) { + loggers::get_instance().warning("sip_codec_register_request::decode: Wrong SIP Method, expected REGISTER"); return -1; } - loggers::get_instance().log("sip_codec_register_request::decode: %s - %s - %s - %d", _sip_message->sip_version, osip_uri_get_host(_sip_message->req_uri), _sip_message->sip_method, *osip_message_get_content_length(_sip_message)); - - - - - - - - ::osip_message_free(_sip_message);*/ return 0; } - -//int sip_codec_register_request::encode_request(const LibItsSip__TypesAndValues::Request& p_request, TTCN_Buffer& p_encoding_buffer) -//{ -// loggers::get_instance().log_msg(">>> sip_codec_register_request::encode_request: ", (const Base_Type&)p_request); -// -// const OPTIONAL& v = p_request.body(); -// CHARSTRING body(""); -// if (v.ispresent()) { -// body = static_cast(*v.get_opt_value()); -// loggers::get_instance().log_msg("sip_codec_register_request::encode_request: body: ", body); -// } -// -// // Encode generic part -// p_encoding_buffer.put_cs(p_request.method()); -// p_encoding_buffer.put_c(' '); -// p_encoding_buffer.put_cs(p_request.uri()); -// p_encoding_buffer.put_cs(" HTTP/"); -// p_encoding_buffer.put_cs(int2str(p_request.version__major())); -// p_encoding_buffer.put_c('.'); -// p_encoding_buffer.put_cs(int2str(p_request.version__minor())); -// p_encoding_buffer.put_cs("\r\n"); -// // Encode headers -// const LibItsSip__TypesAndValues::HeaderLines& headers = p_request.header(); -// for (int i = 0; i < headers.size_of(); i++) { -// const LibItsSip__TypesAndValues::HeaderLine& header = headers[i]; -// loggers::get_instance().log_msg("sip_codec_register_request::encode_request: Processing header ", header.header__name()); -// p_encoding_buffer.put_cs(header.header__name()); -// p_encoding_buffer.put_cs(": "); -// if (std::string(static_cast(header.header__name())).compare("Content-Length") == 0) { -// loggers::get_instance().log("sip_codec_register_request::encode_request: body length: %d", body.lengthof()); -// p_encoding_buffer.put_cs(int2str(body.lengthof())); -// } else { -// if (header.header__value().size_of() > 0) { -// loggers::get_instance().log_msg("sip_codec_register_request::encode_request: Processing value ", header.header__value()[0]); -// p_encoding_buffer.put_cs(header.header__value()[0]); -// int j = 1; -// while (j < header.header__value().size_of()) { -// p_encoding_buffer.put_cs("; "); -// loggers::get_instance().log_msg("sip_codec_register_request::encode_request: Processing value ", header.header__value()[j]); -// p_encoding_buffer.put_cs(header.header__value()[j]); -// j += 1; -// } // End of 'while' statement -// } -// } -// p_encoding_buffer.put_cs("\r\n"); -// } // End of 'for' statement -// -// if (body.lengthof() != 0) { -// p_encoding_buffer.put_cs(body); -// } -// -// p_encoding_buffer.put_cs("\r\n"); -// -// return 0; -//} -// -// -//int sip_codec_register_request::decode_headers(TTCN_Buffer& decoding_buffer, LibItsSip__TypesAndValues::HeaderLines& headers) { -// loggers::get_instance().log(">>> sip_codec_register_request::decode_headers"); -// loggers::get_instance().log_to_hexa("sip_codec_register_request::decode_headers", decoding_buffer); -// -// CHARSTRING cstr; -// int i = 0; -// while (true) { -// switch(get_line(decoding_buffer, cstr, true)) { -// case 0: { -// loggers::get_instance().log_msg("sip_codec_register_request::decode_headers: ", cstr); -// LibItsSip__TypesAndValues::HeaderLine header; -// if (decode_header(cstr, header) == -1) { -// loggers::get_instance().warning("sip_codec_register_request::decode_headers: Failed to decode header %s", static_cast(cstr)); -// return -1; -// } -// headers[i++] = header; -// } -// break; -// case 1: -// loggers::get_instance().log_msg("<<< sip_codec_register_request::decode_headers: ", headers); -// return 0; -// case -1: -// loggers::get_instance().warning("sip_codec_register_request::decode_headers: Failed to decode headers"); -// return -1; -// -// } // End of 'switch' statement -// } // End of 'while' statement -//} diff --git a/ccsrc/Protocols/Sip/sip_codec_register_request.hh b/ccsrc/Protocols/Sip/sip_codec_register_request.hh index 3ade366..b0765fd 100644 --- a/ccsrc/Protocols/Sip/sip_codec_register_request.hh +++ b/ccsrc/Protocols/Sip/sip_codec_register_request.hh @@ -3,6 +3,8 @@ #include "codec.hh" #include "params.hh" +#include "sip_codec_request.hh" + class Base_Type; class TTCN_Typedescriptor_t; class TTCN_Buffer; @@ -15,15 +17,11 @@ class sip_codec_register_request: public codec < LibSip__SIPTypesAndValues::REGISTER__Request, LibSip__SIPTypesAndValues::REGISTER__Request> { + sip_codec_request _codec; public: - explicit sip_codec_register_request() : codec() { }; + explicit sip_codec_register_request() : codec(), _codec() { }; virtual ~sip_codec_register_request() { }; virtual int encode (const LibSip__SIPTypesAndValues::REGISTER__Request& msg, OCTETSTRING& data); virtual int decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::REGISTER__Request& msg, params* p_params = NULL); - -private: -// int encode_request (const LibSip__SIPTypesAndValues::Request& p_request, TTCN_Buffer& p_encoding_buffer); -// int encode_response (const LibSip__SIPTypesAndValues::Request&, TTCN_Buffer& p_encoding_buffer); - }; // End of class sip_codec_register_request diff --git a/docker/Dockerfile b/docker/Dockerfile index 79fd05e..d413102 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -16,8 +16,8 @@ ARG PASSWORD RUN echo "docker-titan" > /etc/hostname \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ - && DEBIAN_FRONTEND=noninteractive apt-get autoremove -y \ - && DEBIAN_FRONTEND=noninteractive apt-get autoclean -y \ + && DEBIAN_FRONTEND=noninteractive add-apt-repository ppa:linuxuprising/java -y \ + && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y \ autoconf \ bison \ @@ -59,47 +59,48 @@ RUN echo "docker-titan" > /etc/hostname \ tree \ unzip \ wget \ + && DEBIAN_FRONTEND=noninteractive apt-get install oracle-java10-installer oracle-java10-set-default -y \ && DEBIAN_FRONTEND=noninteractive apt-get autoremove -y \ && DEBIAN_FRONTEND=noninteractive apt-get autoclean -y \ - && useradd --create-home --shell /bin/bash stf549 \ - && echo "stf549:stf549" | chpasswd \ - && adduser stf549 sudo \ - && su - stf549 \ + && useradd --create-home --shell /bin/bash etsi \ + && echo "etsi:etsi" | chpasswd \ + && adduser etsi sudo \ + && su - etsi \ && whoami \ - && cd /home/stf549 \ - && mkdir -p bin lib include dev tmp frameworks docs \ + && cd /home/etsi \ + && mkdir -p bin lib include tmp frameworks docs dev \ && ls -ltr \ - && cd /home/stf549/frameworks \ - && git clone https://github.com/YannGarcia/osip osip \ - && cd /home/stf549/frameworks/osip \ - && ./autogen.sh \ - && make check \ - && cd /home/stf549/dev \ + && cd /home/etsi/dev \ && git clone http://forge.etsi.org/gitlab/emergency-communications/NG112.git STF549_Ng112 \ - && cd /home/stf549/dev/STF549_Ng112/ttcn \ + && cd /home/etsi/dev/STF549_Ng112/ttcn \ && svn co --username $USERNAME --password $PASSWORD --non-interactive https://oldforge.etsi.org/svn/LibCommon/tags/v1.4.0/ttcn \ && svn co --username $USERNAME --password $PASSWORD --non-interactive https://oldforge.etsi.org/svn/LibSip/trunk \ - && cd /home/stf549/dev/STF549_Ng112/scripts \ + && cd /home/etsi/dev/STF549_Ng112/scripts \ && chmod 775 *.bash devenv.bash.ubuntu \ - && cd /home/stf549 \ - && ln -sf /home/stf549/dev/STF549_Ng112/scripts/devenv.bash.ubuntu /home/stf549/devenv.bash \ - && export HOME=/home/stf549 \ - && . /home/stf549/devenv.bash \ - && echo "" >> /home/stf549/.bashrc \ - && echo ". ./devenv.bash" >> /home/stf549/.bashrc \ - && echo "" >> /home/stf549/.bashrc \ - && cd /home/stf549/dev/STF549_Ng112/scripts \ + && cd /home/etsi \ + && ln -sf /home/etsi/dev/STF549_Ng112/scripts/devenv.bash.ubuntu /home/etsi/devenv.bash \ + && export HOME=/home/etsi \ + && . /home/etsi/devenv.bash \ + && cd /home/etsi/frameworks \ + && git clone https://github.com/YannGarcia/osip osip \ + && cd /home/etsi/frameworks/osip \ + && ./autogen.sh \ + && make check \ + && echo "" >> /home/etsi/.bashrc \ + && echo ". ./devenv.bash" >> /home/etsi/.bashrc \ + && echo "" >> /home/etsi/.bashrc \ + && cd /home/etsi/dev/STF549_Ng112/scripts \ && ./build_titan.bash \ - && cd /home/stf549 \ - && . /home/stf549/devenv.bash \ - && cd /home/stf549/dev/STF549_Ng112/scripts \ + && cd /home/etsi \ + && . /home/etsi/devenv.bash \ + && cd /home/etsi/dev/STF549_Ng112/scripts \ && ./update_emcom_project.bash \ - && ls -ltr /home/stf549/dev/STF549_Ng112 \ - && cd /home/stf549/dev/STF549_Ng112/etsi_emcom/src/AtsNg112/objs \ + && ls -ltr /home/etsi/dev/STF549_Ng112 \ + && cd /home/etsi/dev/STF549_Ng112/etsi_emcom/src/AtsNg112/objs \ && ../bin/ng112.bash -CMD ["/bin/bash", "-c", "su - stf549"] +CMD ["/bin/bash", "-c", "su - etsi"] # That's all Floks diff --git a/test_purposes/LIS_HTTP_POST_BV_xx.tplan2 b/test_purposes/LIS_HTTP_POST_BV_xx.tplan2 index 69481f8..41a0191 100644 --- a/test_purposes/LIS_HTTP_POST_BV_xx.tplan2 +++ b/test_purposes/LIS_HTTP_POST_BV_xx.tplan2 @@ -1,7 +1,7 @@ /* ETSI Software License * As long as the hereunder conditions are respected, non-exclusive permission is hereby granted, * free of charge, to use, reproduce and modify this software source code, under the following conditions: -* This source code is provided ���AS IS��� with no warranties, express or implied, including but not limited to, +* This source code is provided AS IS with no warranties, express or implied, including but not limited to, * the warranties of merchantability, fitness for a particular purpose and warranties for non-infringement * of intellectual property rights. * ETSI shall not be held liable in any event for any direct or indirect damages whatsoever (including, without @@ -14,7 +14,7 @@ * all rights reserved. * The present ETSI Source Code license shall be included in all copies of whole or part of this source code * and shall not imply any sub-license right. -* (c) ETSI 2018 +* (c) ETSI 2018 */ @@ -30,12 +30,12 @@ Package NG112_LIS { ; events: - receives //for packets coming from the network to the IUT - - sends //for packets sent by the IUT to the network - - havingLocationMappingFor //IUT is provisioned with the relevant location data - - isRequestedToSend //an upper layer requests the IUT to send a packet - - generates //for internal event generation - ; - } + - sends //for packets sent by the IUT to the network + - havingLocationMappingFor //IUT is provisioned with the relevant location data + - isRequestedToSend //an upper layer requests the IUT to send a packet + - generates //for internal event generation + ; + } // Const { // DEVICE_NUMBER: "+331234567890" @@ -43,7 +43,7 @@ Package NG112_LIS { // CIRCLE_POS: "-35.500 135.5000"; // CIRCLE_RADIUS: "15"; // } - + // Data { // type PDU; // } @@ -60,211 +60,204 @@ Package NG112_LIS { // connection between LIS.g and IUT.g // connection between ECRF.g and IUT.g; // } - - Test Purpose { - TP Id TP_LIS_HTTP_POST_BV_01 - - Test objective - "IUT successfully responds with a Point when it receives a HTTP POST location request without location type" - Reference - "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", - "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", - "https://tools.ietf.org/html/rfc5985" - //Config Id CFG_LIS_01 - - PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD - Initial conditions with { - the IUT entity havingLocationMappingFor the DEVICE_NUMBER containing - "point" containing - "position" indicating value POINT_POS - ; - ; - } - Expected behaviour - ensure that { - when { - the IUT entity receives a POST containing - Uri indicating value "/location", - Host, - not Accept, - Content_type indicating value "application/held+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", +Test Purpose { +TP Id TP_LIS_HTTP_POST_BV_01 +Test objective + "IUT successfully responds with a Point when it receives a HTTP POST location request without location type" +Reference + "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", + "https://tools.ietf.org/html/rfc5985" +//Config Id CFG_LIS_01 +PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD +Initial conditions with { + the IUT entity havingLocationMappingFor the DEVICE_NUMBER containing + "point" containing + "position" indicating value POINT_POS + ; + ; +} +Expected behaviour + ensure that { + when { + the IUT entity receives a POST containing + Uri indicating value "/location", + Host, + not Accept, + Content_type indicating value "application/held+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", element "locationRequest" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing element "device" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" containing element "uri" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" indicating value DEVICE_NUMBER - ; - ; + ; ; - ; - ; - } - then { - the IUT entity sends a httpResponse containing - Status_Code indicating value "200 OK", + ; + ; + ; + } + then { + the IUT entity sends a httpResponse containing + Status_Code indicating value "200 OK", + version indicating value "1.0", + Content_type indicating value "application/held+xml;charset=utf-8", + body containing + xmlMessage containing version indicating value "1.0", - Content_type indicating value "application/held+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "locationResponse" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing - element "presence" inNamespace "urn:ietf:params:xml:ns:pidf" containing - attribute "entity" indicating value valid "pres:" uri, - element "tuple" containing - attribute "id", - element "status" containing - element "geopriv" inNamespace "urn:ietf:params:xml:ns:pidf:geopriv10" containing - element "location-info" containing - element "Point" inNamespace "http://www.opengis.net/gml" containing - attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", - element "pos" indicating value POINT_POS - ; - ; - ; - ; - ; - ; + element "locationResponse" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing + element "presence" inNamespace "urn:ietf:params:xml:ns:pidf" containing + attribute "entity" indicating value valid "pres:" uri, + element "tuple" containing + attribute "id", + element "status" containing + element "geopriv" inNamespace "urn:ietf:params:xml:ns:pidf:geopriv10" containing + element "location-info" containing + element "Point" inNamespace "http://www.opengis.net/gml" containing + attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", + element "pos" indicating value POINT_POS + ; + ; + ; ; - ; - ; - ; - } - } - } - - Test Purpose { - TP Id TP_LIS_HTTP_POST_BV_02 - - Test objective - "IUT successfully responds with a Circle when it receives a HTTP POST location request without location type" - Reference - "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", - "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", - "https://tools.ietf.org/html/rfc5985" - - //Config Id CFG_LIS_01 - - PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD - Initial conditions with { - the IUT entity havingLocationMappingFor the DEVICE_NUMBER containing - "circle" containing - "position" indicating value CIRCLE_POS, - "radius" indicating value CIRCLE_RADIUS + ; + ; + ; ; ; - } - Expected behaviour - ensure that { - when { - the IUT entity receives a POST containing - Uri indicating value "/location", - Host, - not Accept, - Content_type indicating value "application/held+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", + ; + } + } +} // End of TP TP_LIS_HTTP_POST_BV_01 + +Test Purpose { +TP Id TP_LIS_HTTP_POST_BV_02 +Test objective + "IUT successfully responds with a Circle when it receives a HTTP POST location request without location type" +Reference + "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", + "https://tools.ietf.org/html/rfc5985" +//Config Id CFG_LIS_01 +PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD +Initial conditions with { + the IUT entity havingLocationMappingFor the DEVICE_NUMBER containing + "circle" containing + "position" indicating value CIRCLE_POS, + "radius" indicating value CIRCLE_RADIUS + ; + ; +} +Expected behaviour + ensure that { + when { + the IUT entity receives a POST containing + Uri indicating value "/location", + Host, + not Accept, + Content_type indicating value "application/held+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", element "locationRequest" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing element "device" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" containing element "uri" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" indicating value DEVICE_NUMBER - ; - ; + ; ; - ; - ; - } - then { - the IUT entity sends a httpResponse containing - Status_Code indicating value "200 OK", + ; + ; + ; + } + then { + the IUT entity sends a httpResponse containing + Status_Code indicating value "200 OK", + version indicating value "1.0", + Content_type indicating value "application/held+xml;charset=utf-8", + body containing + xmlMessage containing version indicating value "1.0", - Content_type indicating value "application/held+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "locationResponse" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing - element "presence" inNamespace "urn:ietf:params:xml:ns:pidf" containing - attribute "entity" indicating value valid "pres:" uri, - element "tuple" containing - attribute "id", - element "status" containing - element "geopriv" inNamespace "urn:ietf:params:xml:ns:pidf:geopriv10" containing - element "location-info" containing - element "Circle" inNamespace "http://www.opengis.net/pidflo/1.0" containing - attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", - element "pos" inNamespace "http://www.opengis.net/gml" indicating value CIRCLE_POS, - element "radius" indicating value CIRCLE_RADIUS containing - attribute "uom" indicating value "urn:ogc:def:uom:EPSG::9001"; - ; - ; - ; - ; - ; - ; + element "locationResponse" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing + element "presence" inNamespace "urn:ietf:params:xml:ns:pidf" containing + attribute "entity" indicating value valid "pres:" uri, + element "tuple" containing + attribute "id", + element "status" containing + element "geopriv" inNamespace "urn:ietf:params:xml:ns:pidf:geopriv10" containing + element "location-info" containing + element "Circle" inNamespace "http://www.opengis.net/pidflo/1.0" containing + attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", + element "pos" inNamespace "http://www.opengis.net/gml" indicating value CIRCLE_POS, + element "radius" indicating value CIRCLE_RADIUS containing + attribute "uom" indicating value "urn:ogc:def:uom:EPSG::9001" + ; + ; + ; + ; ; - ; - ; - ; - } - } - } - - Test Purpose { - TP Id TP_LIS_HTTP_POST_BV_03 - - Test objective - "IUT successfully responds with an error response when it receives a HTTP POST location request for an unknown device" - Reference - "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", - "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", - "https://tools.ietf.org/html/rfc5985" - - //Config Id CFG_LIS_01 - - PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD - Initial conditions with { - the IUT entity havingLocationMappingFor the "deviceNumber" containing - "circle" containing - "position" indicating value CIRCLE_POS, - "radius" indicating value CIRCLE_RADIUS + ; + ; + ; ; ; - } - Expected behaviour - ensure that { - when { - the IUT entity receives a POST containing - Uri indicating value "/location", - Host, - not Accept, - Content_type indicating value "application/held+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", + ; + } + } +} // End of TP TP_LIS_HTTP_POST_BV_02 + +Test Purpose { +TP Id TP_LIS_HTTP_POST_BV_03 +Test objective + "IUT successfully responds with an error response when it receives a HTTP POST location request for an unknown device" +Reference + "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", + "https://tools.ietf.org/html/rfc5985" +//Config Id CFG_LIS_01 +PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD +Initial conditions with { + the IUT entity havingLocationMappingFor the "deviceNumber" containing + "circle" containing + "position" indicating value CIRCLE_POS, + "radius" indicating value CIRCLE_RADIUS + ; + ; +} +Expected behaviour + ensure that { + when { + the IUT entity receives a POST containing + Uri indicating value "/location", + Host, + not Accept, + Content_type indicating value "application/held+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", element "locationRequest" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing element "device" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" containing element "uri" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" indicating value DEVICE_NUMBER - ; - ; + ; ; - ; - ; - } - then { - the IUT entity sends a httpResponse containing - Status_Code indicating value "200 OK", + ; + ; + ; + } + then { + the IUT entity sends a httpResponse containing + Status_Code indicating value "200 OK", + version indicating value "1.0", + Content_type indicating value "application/held+xml;charset=utf-8", + body containing + xmlMessage containing version indicating value "1.0", - Content_type indicating value "application/held+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "error" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing - attribute "code" indicating value "locationUnknown"; - ; - ; - ; - } - } + element "error" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing + attribute "code" indicating value "locationUnknown" + ; + ; + ; + ; } -} \ No newline at end of file + } +} // End of TP TP_LIS_HTTP_POST_BV_03 +} // End of Package NG112_LIS \ No newline at end of file diff --git a/ttcn/TestCodec/TestCodec_HttpPort.ttcn b/ttcn/TestCodec/TestCodec_HttpPort.ttcn index 2cf37fe..cd04e67 100644 --- a/ttcn/TestCodec/TestCodec_HttpPort.ttcn +++ b/ttcn/TestCodec/TestCodec_HttpPort.ttcn @@ -54,7 +54,7 @@ module TestCodec_HttpPort { v_headers, m_http_message_body_xml(m_body_xml_location_request( m_locationRequest( - { oct2unichar(enc_Device(valueof(m_device({ "tel:+436501234567" })))) }, + { oct2unichar(enc_Device(valueof(m_device({ "+436501234567" })))) }, m_locationTypeType(m_locationTypeBase_geodetic, true) ) ) @@ -73,7 +73,12 @@ module TestCodec_HttpPort { tc_ac.stop; setverdict(pass, "Get a response"); } - [] httpPort.receive { + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + XmlBody: ? + )))) { tc_ac.stop; setverdict(fail, "Unexpected response"); } diff --git a/ttcn/TestCodec/TestCodec_Register.ttcn b/ttcn/TestCodec/TestCodec_Register.ttcn index 7173446..f9a25da 100644 --- a/ttcn/TestCodec/TestCodec_Register.ttcn +++ b/ttcn/TestCodec/TestCodec_Register.ttcn @@ -33,6 +33,11 @@ module TestCodec_Register { if (v_result == 0) { setverdict(pass, "Decode match"); + if (match(v_dec_msg, mw_REGISTER_Request_Base)) { + setverdict(pass, "Decoding match"); + } else { + setverdict(fail, "decoding mismatch"); + } } else { setverdict(fail, "Decode failure"); } -- GitLab From 0cf05b550c65b2054098db6cda49c2f3e61e2832 Mon Sep 17 00:00:00 2001 From: Garcia Date: Fri, 22 Jun 2018 07:59:39 +0200 Subject: [PATCH 23/72] Start support of SIP part --- ccsrc/Protocols/Sip/sip_codec_request.cc | 988 ++++++++++++++++++++++ ccsrc/Protocols/Sip/sip_codec_request.hh | 62 ++ ccsrc/Protocols/Tcp/tcp_layer.cc | 70 +- docker/Dockerfile | 95 ++- docker/build-container.sh | 15 +- etc/TestCodec/TestCodec.cfg | 6 +- test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 | 318 +++++++ ttcn/AtsNg112/AtsNg112_TestCases.ttcn | 4 +- ttcn/TestCodec/TestCodec_HttpPort.ttcn | 62 +- 9 files changed, 1519 insertions(+), 101 deletions(-) create mode 100644 ccsrc/Protocols/Sip/sip_codec_request.cc create mode 100644 ccsrc/Protocols/Sip/sip_codec_request.hh create mode 100644 test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 diff --git a/ccsrc/Protocols/Sip/sip_codec_request.cc b/ccsrc/Protocols/Sip/sip_codec_request.cc new file mode 100644 index 0000000..fc4b37f --- /dev/null +++ b/ccsrc/Protocols/Sip/sip_codec_request.cc @@ -0,0 +1,988 @@ +#include "LibSip_SIPTypesAndValues.hh" +#include "LibSip_Common.hh" + +#include "sip_codec_request.hh" +#include "loggers.hh" + +int sip_codec_request::encode (const LibSip__SIPTypesAndValues::Request& msg, OCTETSTRING& data) +{ + loggers::get_instance().log_msg(">>> sip_codec_request::encode: ", (const Base_Type&)msg); + + osip_message_t* _sip_message; + ::parser_init(); + int result = ::osip_message_init(&_sip_message); + if (result != 0) { + loggers::get_instance().warning("sip_codec_request::encode: Failed to initialise internal data structures"); + return -1; + } + + char* buffer = nullptr; + size_t length = 0; + result = ::osip_message_to_str(_sip_message, &buffer, &length); + if (result != 0) { + loggers::get_instance().warning("sip_codec_request::encode: Failed to encode data structures"); + ::osip_message_free(_sip_message); + return -1; + } + ::osip_message_free(_sip_message); + data = OCTETSTRING(length, (const unsigned char*)buffer); + + loggers::get_instance().log_msg("<<< sip_codec_request::encode: data=", data); + return result; +} + +int sip_codec_request::decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::Request& msg, params* p_params) +{ + loggers::get_instance().log_msg(">>> sip_codec_request::decode: data=", data); + + // Sanity checks + if (data.lengthof() == 0) { + loggers::get_instance().warning("sip_codec_request::decode: Wrong parameters"); + return -1; + } + + osip_message_t* _sip_message; + ::parser_init(); + int result = ::osip_message_init(&_sip_message); + if (result != 0) { + loggers::get_instance().warning("sip_codec_request::decode: Failed to initialise internal data structures"); + return -1; + } + result = ::osip_message_parse(_sip_message, (const char*)static_cast(data), data.lengthof()); + if (result != 0) { + loggers::get_instance().warning("sip_codec_request::decode: Failed to parse SIP message"); + return -1; + } + + // Fill RequestLine + fill_request_line(_sip_message, msg); + + // Fill Headers + fill_headers(_sip_message, msg); + + // Fill MessageBody + fill_message_body(_sip_message, msg); + + // Fill Payload + fill_payload(_sip_message, msg); + + ::osip_message_free(_sip_message); + loggers::get_instance().log_msg("sip_codec_request::decode: ", msg); + + return 0; +} + +void sip_codec_request::fill_headers(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_headers"); + + LibSip__SIPTypesAndValues::MessageHeader headers; + // Fill mandatory fields + // From + LibSip__SIPTypesAndValues::From from_header; + fill_from_header(::osip_message_get_from(p_sip_message), from_header); + if (from_header.is_value()) { + headers.fromField() = from_header; + } else { + headers.fromField().set_to_omit(); + } + // To + LibSip__SIPTypesAndValues::To to_header; + fill_to_header(::osip_message_get_to(p_sip_message), to_header); + if (to_header.is_value()) { + headers.toField() = to_header; + } else { + headers.toField().set_to_omit(); + } + // Via + LibSip__SIPTypesAndValues::Via via_header; + fill_via_header(p_sip_message, via_header); + if (via_header.is_value()) { + headers.via() = via_header; + } else { + headers.via().set_to_omit(); + } + + // Fill Optional fields + LibSip__SIPTypesAndValues::Accept accept_header; + fill_accept_header(p_sip_message, accept_header); + if (accept_header.is_value()) { + headers.accept() = accept_header; + } else { + headers.accept().set_to_omit(); + } + + LibSip__SIPTypesAndValues::AcceptContact accept_contact_header; + fill_accept_contact_header(p_sip_message, accept_contact_header); + if (accept_contact_header.is_value()) { + headers.acceptContact() = accept_contact_header; + } else { + headers.acceptContact().set_to_omit(); + } + + LibSip__SIPTypesAndValues::AcceptEncoding accept_encoding_header; + fill_accept_encoding_header(p_sip_message, accept_encoding_header); + if (accept_encoding_header.is_value()) { + headers.acceptEncoding() = accept_encoding_header; + } else { + headers.acceptEncoding().set_to_omit(); + } + + LibSip__SIPTypesAndValues::AcceptLanguage accept_language_header; + fill_accept_language_header(p_sip_message, accept_language_header); + if (accept_language_header.is_value()) { + headers.acceptLanguage() = accept_language_header; + } else { + headers.acceptLanguage().set_to_omit(); + } + + LibSip__SIPTypesAndValues::AlertInfo alert_info_header; + fill_alert_info_header(p_sip_message, alert_info_header); + if (alert_info_header.is_value()) { + headers.alertInfo() = alert_info_header; + } else { + headers.alertInfo().set_to_omit(); + } + + LibSip__SIPTypesAndValues::Allow allow_header; + fill_allow_header(p_sip_message, allow_header); + if (allow_header.is_value()) { + headers.allow() = allow_header; + } else { + headers.allow().set_to_omit(); + } + + LibSip__SIPTypesAndValues::AllowEvents allow_events_header; + fill_allow_events_header(p_sip_message, allow_events_header); + if (allow_events_header.is_value()) { + headers.allowEvents() = allow_events_header; + } else { + headers.allowEvents().set_to_omit(); + } + + LibSip__SIPTypesAndValues::Authorization authorization_header; + fill_authorization_header(p_sip_message, authorization_header); + if (authorization_header.is_value()) { + headers.authorization() = authorization_header; + } else { + headers.authorization().set_to_omit(); + } + headers.authenticationInfo().set_to_omit(); + headers.callId().set_to_omit(); + headers.callInfo().set_to_omit(); + headers.contact().set_to_omit(); + headers.contentDisposition().set_to_omit(); + headers.contentEncoding().set_to_omit(); + headers.contentLanguage().set_to_omit(); + headers.contentLength().set_to_omit(); + headers.contentType().set_to_omit(); + headers.cSeq().set_to_omit(); + headers.date().set_to_omit(); + headers.errorInfo().set_to_omit(); + headers.event().set_to_omit(); + headers.expires().set_to_omit(); + headers.featureCaps().set_to_omit(); + headers.geolocation().set_to_omit(); + headers.geolocationRouting().set_to_omit(); + headers.historyInfo().set_to_omit(); + headers.infoPackage().set_to_omit(); + headers.inReplyTo().set_to_omit(); + headers.maxForwards().set_to_omit(); + headers.mimeVersion().set_to_omit(); + headers.minExpires().set_to_omit(); + headers.minSE().set_to_omit(); + headers.organization().set_to_omit(); + headers.pAccessNetworkInfo().set_to_omit(); + headers.pAssertedID().set_to_omit(); + headers.pAssertedService().set_to_omit(); + headers.pAssociatedURI().set_to_omit(); + headers.path().set_to_omit(); + headers.pCalledPartyID().set_to_omit(); + headers.pChargingFunctionAddresses().set_to_omit(); + headers.pChargingVector().set_to_omit(); + headers.pEarlyMedia().set_to_omit(); + headers.pMediaAuthorization().set_to_omit(); + headers.pPreferredID().set_to_omit(); + headers.pPreferredService().set_to_omit(); + headers.priority().set_to_omit(); + headers.privacy().set_to_omit(); + headers.proxyAuthenticate().set_to_omit(); + headers.proxyAuthorization().set_to_omit(); + headers.proxyRequire().set_to_omit(); + headers.pVisitedNetworkID().set_to_omit(); + headers.rAck().set_to_omit(); + headers.rSeq().set_to_omit(); + headers.reason().set_to_omit(); + headers.recordRoute().set_to_omit(); + headers.recvInfo().set_to_omit(); + headers.requestDisposition().set_to_omit(); + headers.referredBy().set_to_omit(); + headers.referTo().set_to_omit(); + headers.referSub().set_to_omit(); + headers.replaces().set_to_omit(); + headers.replyTo().set_to_omit(); + headers.require().set_to_omit(); + headers.retryAfter().set_to_omit(); + headers.route().set_to_omit(); + headers.securityClient().set_to_omit(); + headers.securityServer().set_to_omit(); + headers.securityVerify().set_to_omit(); + headers.server().set_to_omit(); + headers.serviceRoute().set_to_omit(); + headers.sessionExpires().set_to_omit(); + headers.sessionId().set_to_omit(); + headers.sipETag().set_to_omit(); + headers.sipIfMatch().set_to_omit(); + headers.subject().set_to_omit(); + headers.subscriptionState().set_to_omit(); + headers.supported().set_to_omit(); + headers.timestamp().set_to_omit(); + headers.unsupported().set_to_omit(); + headers.userToUser().set_to_omit(); + headers.userAgent().set_to_omit(); + headers.warning().set_to_omit(); + headers.wwwAuthenticate().set_to_omit(); + headers.resourcePriority().set_to_omit(); + headers.answerMode().set_to_omit(); + headers.privAnswerMode().set_to_omit(); + headers.targetDialog().set_to_omit(); + headers.pAnswerState().set_to_omit(); + headers.undefinedHeader__List().set_to_omit(); + + p_request.msgHeader() = headers; + + loggers::get_instance().log_msg("sip_codec_request::fill_headers: ", p_request); +} // End of method fill_headers + +void sip_codec_request::fill_message_body(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_message_body"); + + p_request.messageBody().set_to_omit(); +} // End of method fill_message_body + +void sip_codec_request::fill_payload(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_payload"); + + p_request.payload().set_to_omit(); + +} // End of method fill_payload + +void sip_codec_request::fill_semi_colon_params(const osip_list_t& p_sip_list, OPTIONAL& p_list) { + loggers::get_instance().log(">>> sip_codec_request::fill_semi_colon_params"); + + if (::osip_list_size(&p_sip_list) != 0) { + LibSip__Common::SemicolonParam__List l; + for (int i = 0; i < ::osip_list_size(&p_sip_list); i++) { + osip_generic_param_t* p = (osip_generic_param_t*)::osip_list_get(&p_sip_list, i); + loggers::get_instance().log("sip_codec_request::fill_semi_colon_params: After cast: %p", p); + CHARSTRING name(p->gname); + if (p->gvalue == nullptr) { + l[i] = LibSip__Common::GenericParam(name, OPTIONAL(OMIT_VALUE)); + } else { + LibSip__Common::GenValue g; + g.tokenOrHost() = CHARSTRING(p->gvalue); + l[i] = LibSip__Common::GenericParam(name, g); + } + } // End of 'for' statement + p_list = OPTIONAL(l); + } else { + p_list.set_to_omit(); + } + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_semi_colon_params: ", p_list); +} // End of method fill_semi_colon_params + +void sip_codec_request::fill_ampersand_params(const osip_list_t& p_sip_list, OPTIONAL& p_list) { + loggers::get_instance().log(">>> sip_codec_request::fill_ampersand_params"); + + if (::osip_list_size(&p_sip_list) != 0) { + LibSip__Common::AmpersandParam__List l; + for (int i = 0; i < ::osip_list_size(&p_sip_list); i++) { + osip_generic_param_t* p = (osip_generic_param_t*)::osip_list_get(&p_sip_list, i); + loggers::get_instance().log("sip_codec_request::fill_ampersand_params: After cast: %p", p); + CHARSTRING name(p->gname); + if (p->gvalue == nullptr) { + l[i] = LibSip__Common::GenericParam(name, OPTIONAL(OMIT_VALUE)); + } else { + LibSip__Common::GenValue g; + g.tokenOrHost() = CHARSTRING(p->gvalue); + l[i] = LibSip__Common::GenericParam(name, g); + } + } // End of 'for' statement + p_list = OPTIONAL(l); + } else { + p_list.set_to_omit(); + } + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_ampersand_params: ", p_list); +} // End of method fill_ampersand_params + +void sip_codec_request::fill_host_port(const char* p_host, const char* p_port, LibSip__SIPTypesAndValues::HostPort& p_host_port) { + loggers::get_instance().log(">>> sip_codec_request::fill_host_port"); + + if (p_host == nullptr) { + p_host_port.host().set_to_omit(); + } else { + p_host_port.host() = OPTIONAL(CHARSTRING(p_host)); + } + OPTIONAL port; + if (p_port == nullptr) { + p_host_port.portField().set_to_omit(); + } else { + p_host_port.portField() = OPTIONAL(INTEGER(std::stoi(p_port))); + } + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_host_port: ", p_host_port); +} // End of method fill_host_port" + +void sip_codec_request::fill_request_line(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_request_line"); + + LibSip__SIPTypesAndValues::RequestLine request_line; + std::string str(::osip_message_get_method(p_sip_message)); + str += "_E"; + request_line.method() = LibSip__SIPTypesAndValues::Method(LibSip__SIPTypesAndValues::Method::str_to_enum(str.c_str())); + loggers::get_instance().log_msg("sip_codec_request::fill_request_line: Method: ", request_line.method()); + LibSip__SIPTypesAndValues::SipUrl uri; + fill_uri(uri, ::osip_message_get_uri(p_sip_message)); + loggers::get_instance().log_msg("sip_codec_request::fill_request_line: SipUrl: ", uri); + request_line.requestUri() = uri; + request_line.sipVersion() = CHARSTRING(::osip_message_get_version(p_sip_message)); + p_request.requestLine() = request_line; + // FIXME To be continued + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_request_line: ", p_request); +} + +void sip_codec_request::fill_uri(LibSip__SIPTypesAndValues::SipUrl& p_sip_url, const osip_uri_t* p_uri) { + loggers::get_instance().log(">>> sip_codec_request::fill_uri"); + + // Scheme + LibSip__SIPTypesAndValues::UriComponents uri_components; + if (::osip_uri_get_scheme((osip_uri_t*)p_uri) != nullptr) { + p_sip_url.scheme() = CHARSTRING(::osip_uri_get_scheme((osip_uri_t*)p_uri)); + loggers::get_instance().log_msg("sip_codec_request::fill_uri: scheme", p_sip_url.scheme()); + // SipUriComponents + if (strcmp(::osip_uri_get_scheme((osip_uri_t*)p_uri), "sip") == 0) { + // User Info + OPTIONAL user_info; + if (::osip_uri_get_username((osip_uri_t*)p_uri) == nullptr) { + user_info.set_to_omit(); + } else { + OPTIONAL password; + if (::osip_uri_get_password((osip_uri_t*)p_uri) == nullptr) { + password.set_to_omit(); + } else { + password = CHARSTRING(::osip_uri_get_password((osip_uri_t*)p_uri)); + } + LibSip__SIPTypesAndValues::UserInfo u(CHARSTRING(::osip_uri_get_username((osip_uri_t*)p_uri)), password); + user_info = OPTIONAL(u); + } + loggers::get_instance().log_msg("sip_codec_request::fill_uri: user_info: ", user_info); + // HostPort + LibSip__SIPTypesAndValues::HostPort host_port; + fill_host_port(::osip_uri_get_host((osip_uri_t*)p_uri), ::osip_uri_get_port((osip_uri_t*)p_uri), host_port); + loggers::get_instance().log_msg("sip_codec_request::fill_uri: host_port: ", host_port); + uri_components.sip() = LibSip__SIPTypesAndValues::SipUriComponents(user_info, host_port); + } else if (strcmp(::osip_uri_get_scheme((osip_uri_t*)p_uri), "tel") == 0) { + // FIXME uri_components.tel() = LibSip__SIPTypesAndValues::TelUriComponents(user_info, host_port); + } else if (strcmp(::osip_uri_get_scheme((osip_uri_t*)p_uri), "urn") == 0) { + // FIXME uri_components.urn() = LibSip__SIPTypesAndValues::UrnUriComponents(user_info, host_port); + } else { + char *buffer = nullptr; + ::osip_uri_to_str_canonical((osip_uri_t*)p_uri, &buffer); + uri_components.other() = CHARSTRING(buffer); + osip_free(buffer); // Macro + } + } else { + char *buffer = nullptr; + ::osip_uri_to_str_canonical((osip_uri_t*)p_uri, &buffer); + uri_components.other() = CHARSTRING(buffer); + osip_free(buffer); // Macro + } + p_sip_url.components() = uri_components; + // UrlParameters + OPTIONAL params; + fill_semi_colon_params(p_uri->url_params, params); + p_sip_url.urlParameters() = params; + // Headers + OPTIONAL headers; + fill_ampersand_params(p_uri->url_headers, headers); + p_sip_url.headers() = headers; + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_uri: ", p_sip_url); +} // End of method fill_uri + +void sip_codec_request::fill_authorization_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Authorization& p_authorization_header) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_authorization_header: %p", p_sip_message->authorizations); + + // FieldName + p_authorization_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("AUTHORIZATION_E")); + // CredentialsList + LibSip__SIPTypesAndValues::CredentialsList l; + int i = 0; + osip_authorization_t *sip_authorization = nullptr; + while(::osip_message_get_authorization(p_sip_message, i, &sip_authorization) == 0) { + loggers::get_instance().log("sip_codec_request::fill_authorization_header: Processing item #%d", i); + LibSip__SIPTypesAndValues::Credentials v; + LibSip__Common::CommaParam__List cl; + int j = 0; + if (::osip_authorization_get_digest(sip_authorization) != nullptr) { + LibSip__Common::GenValue v; + v.tokenOrHost() = CHARSTRING(::osip_authorization_get_digest(sip_authorization)); + cl[j++] = LibSip__Common::GenericParam( + CHARSTRING("Digest"), + OPTIONAL(v) + ); + } + if (::osip_authorization_get_realm(sip_authorization) != nullptr) { + LibSip__Common::GenValue v; + v.tokenOrHost() = CHARSTRING(::osip_authorization_get_realm(sip_authorization)); + cl[j++] = LibSip__Common::GenericParam( + CHARSTRING("Realm"), + OPTIONAL(v) + ); + } + // FIXME To be contiuened + v.digestResponse() = cl; + l[i++] = v; + } // End of 'while' statement + p_authorization_header.body() = l; + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_authorization_header: ", p_authorization_header); +} // End of method fill_authorization_header + + + + + + + + + + + + + + +void sip_codec_request::fill_from_header(const osip_from_t* p_sip_from, LibSip__SIPTypesAndValues::From& p_from_header) +{ + loggers::get_instance().log("sip_codec_request::fill_from_header"); + + // FieldName + p_from_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("FROM_E")); + // Addr_Union + LibSip__SIPTypesAndValues::SipUrl uri; + fill_uri(uri, ::osip_from_get_url((osip_from_t*)p_sip_from)); + OPTIONAL display_name; + if (::osip_from_get_displayname((osip_from_t*)p_sip_from) != nullptr) { + LibSip__SIPTypesAndValues::DisplayName n; + n.token() = CHARSTRING(::osip_from_get_displayname((osip_from_t*)p_sip_from)); + display_name = OPTIONAL(n); + } else { + display_name.set_to_omit(); + } + LibSip__SIPTypesAndValues::NameAddr name_addr(display_name, uri); + LibSip__SIPTypesAndValues::Addr__Union addr; + addr.nameAddr() = name_addr; + p_from_header.addressField() = addr; + // Params + OPTIONAL params; + fill_semi_colon_params(p_sip_from->gen_params, params); + p_from_header.fromParams() = params; + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_from_header: ", p_from_header); +} // End of method fill_from_header + +void sip_codec_request::fill_to_header(const osip_to_t* p_sip_to, LibSip__SIPTypesAndValues::To& p_to_header) +{ + loggers::get_instance().log("sip_codec_request::fill_to_header"); + + // FieldName + p_to_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("TO_E")); + // Addr_Union + LibSip__SIPTypesAndValues::SipUrl uri; + fill_uri(uri, ::osip_to_get_url((osip_to_t*)p_sip_to)); + OPTIONAL display_name; + if (::osip_to_get_displayname((osip_to_t*)p_sip_to) != nullptr) { + LibSip__SIPTypesAndValues::DisplayName n; + n.token() = CHARSTRING(::osip_to_get_displayname((osip_to_t*)p_sip_to)); + display_name = OPTIONAL(n); + } else { + display_name.set_to_omit(); + } + LibSip__SIPTypesAndValues::NameAddr name_addr(display_name, uri); + LibSip__SIPTypesAndValues::Addr__Union addr; + addr.nameAddr() = name_addr; + p_to_header.addressField() = addr; + // Params + OPTIONAL params; + fill_semi_colon_params(p_sip_to->gen_params, params); + p_to_header.toParams() = params; + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_to_header: ", p_to_header); +} // End of method fill_to_header + +void sip_codec_request::fill_accept_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Accept& p_accept_header) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_accept_header: %p", p_sip_message->vias); + + // FieldName + p_accept_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ACCEPT_E")); + // AcceptArgs + // TODO To be done + p_accept_header.acceptArgs().set_to_omit(); + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_accept_header: ", p_accept_header); +} // End of method fill_accept_header + +void sip_codec_request::fill_accept_contact_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptContact& p_accept_contact_header) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_accept_contact_header: %p", p_sip_message->vias); + + // FieldName + p_accept_contact_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ACCEPT_CONTACT_E")); + // AcRcValue + LibSip__SIPTypesAndValues::AcRcValue__List l; + // TODO To be done + l[0] = LibSip__SIPTypesAndValues::AcRcValue(CHARSTRING("*"), OPTIONAL(OMIT_VALUE)); + p_accept_contact_header.acValues() = l; + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_accept_contact_header: ", p_accept_contact_header); +} // End of method fill_accept_contact_header + +void sip_codec_request::fill_accept_encoding_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptEncoding& p_accept_encoding_header) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_accept_encoding_header: %p", p_sip_message->vias); + + // FieldName + p_accept_encoding_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ACCEPT_ENCODING_E")); + // ContentCoding + p_accept_encoding_header.contentCoding().set_to_omit(); + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_accept_encoding_header: ", p_accept_encoding_header); +} // End of method fill_accept_encoding_header + +void sip_codec_request::fill_accept_language_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptLanguage& p_accept_language_header) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_accept_language_header: %p", p_sip_message->vias); + + // FieldName + p_accept_language_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ACCEPT_LANGUAGE_E")); + // LanguageBody + p_accept_language_header.languageBody().set_to_omit(); + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_accept_language_header: ", p_accept_language_header); +} // End of method fill_accept_language_header + +void sip_codec_request::fill_alert_info_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AlertInfo& p_alert_info_header) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_alert_info_header: %p", p_sip_message->vias); + + // FieldName + p_alert_info_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ALERT_INFO_E")); + // AlertInfoBody + p_alert_info_header.alertInfoBody().set_to_omit(); + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_alert_info_header: ", p_alert_info_header); +} // End of method fill_alert_info_header + +void sip_codec_request::fill_allow_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Allow& p_allow_header) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_allow_header: %p", p_sip_message->vias); + + // FieldName + p_allow_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ALLOW_E")); + // Methods + p_allow_header.methods().set_to_omit(); + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_allow_header: ", p_allow_header); +} // End of method fill_allow_header + +void sip_codec_request::fill_allow_events_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AllowEvents& p_allow_events_header) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_allow_events_header: %p", p_sip_message->vias); + + // FieldName + p_allow_events_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ALLOW_EVENTS_E")); + // EventTypes + LibSip__SIPTypesAndValues::EventType__List l; + // TODO To be done + l[0] = CHARSTRING("*"); + p_allow_events_header.eventTypes() = l; + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_allow_events_header: ", p_allow_events_header); +} // End of method fill_allow_events_header + +void sip_codec_request::fill_via_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Via& p_via_header) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_via_header: %p", p_sip_message->vias); + + // FieldName + p_via_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("VIA_E")); + // ViaBody + LibSip__SIPTypesAndValues::ViaBody__List l; + int i = 0; + osip_via_t *sip_via = nullptr; + while(::osip_message_get_via(p_sip_message, i, &sip_via) == 0) { + loggers::get_instance().log("sip_codec_request::fill_via_header: Processing item #%d", i); + LibSip__SIPTypesAndValues::ViaBody v; + v.sentProtocol() = LibSip__SIPTypesAndValues::SentProtocol( + CHARSTRING(::via_get_protocol(sip_via)), + CHARSTRING(::via_get_version(sip_via)), + CHARSTRING(::via_get_comment(sip_via)) + ); + OPTIONAL host_port; + fill_host_port(::via_get_host(sip_via), ::via_get_port(sip_via), host_port); + loggers::get_instance().log_msg("sip_codec_request::fill_via_uri: host_port: ", host_port); + v.sentBy() = host_port; + OPTIONAL params; + fill_semi_colon_params(sip_via->via_params, params); + v.viaParams() = params; + l[i++] = v; + } // End of 'while' statement + p_via_header.viaBody() = l; + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_via_header: ", p_via_header); +} // End of method fill_via_header + +/*** + + inline OPTIONAL& authenticationInfo() + {return field_authenticationInfo;} + inline const OPTIONAL& authenticationInfo() const + {return field_authenticationInfo;} + inline OPTIONAL& authorization() + {return field_authorization;} + inline const OPTIONAL& authorization() const + {return field_authorization;} + inline OPTIONAL& callId() + {return field_callId;} + inline const OPTIONAL& callId() const + {return field_callId;} + inline OPTIONAL& callInfo() + {return field_callInfo;} + inline const OPTIONAL& callInfo() const + {return field_callInfo;} + inline OPTIONAL& contact() + {return field_contact;} + inline const OPTIONAL& contact() const + {return field_contact;} + inline OPTIONAL& contentDisposition() + {return field_contentDisposition;} + inline const OPTIONAL& contentDisposition() const + {return field_contentDisposition;} + inline OPTIONAL& contentEncoding() + {return field_contentEncoding;} + inline const OPTIONAL& contentEncoding() const + {return field_contentEncoding;} + inline OPTIONAL& contentLanguage() + {return field_contentLanguage;} + inline const OPTIONAL& contentLanguage() const + {return field_contentLanguage;} + inline OPTIONAL& contentLength() + {return field_contentLength;} + inline const OPTIONAL& contentLength() const + {return field_contentLength;} + inline OPTIONAL& contentType() + {return field_contentType;} + inline const OPTIONAL& contentType() const + {return field_contentType;} + inline OPTIONAL& cSeq() + {return field_cSeq;} + inline const OPTIONAL& cSeq() const + {return field_cSeq;} + inline OPTIONAL& date() + {return field_date;} + inline const OPTIONAL& date() const + {return field_date;} + inline OPTIONAL& diversion() + {return field_diversion;} + inline const OPTIONAL& diversion() const + {return field_diversion;} + inline OPTIONAL& errorInfo() + {return field_errorInfo;} + inline const OPTIONAL& errorInfo() const + {return field_errorInfo;} + inline OPTIONAL& event() + {return field_event;} + inline const OPTIONAL& event() const + {return field_event;} + inline OPTIONAL& expires() + {return field_expires;} + inline const OPTIONAL& expires() const + {return field_expires;} + inline OPTIONAL& featureCaps() + {return field_featureCaps;} + inline const OPTIONAL& featureCaps() const + {return field_featureCaps;} + inline OPTIONAL& geolocation() + {return field_geolocation;} + inline const OPTIONAL& geolocation() const + {return field_geolocation;} + inline OPTIONAL& geolocationRouting() + {return field_geolocationRouting;} + inline const OPTIONAL& geolocationRouting() const + {return field_geolocationRouting;} + inline OPTIONAL& historyInfo() + {return field_historyInfo;} + inline const OPTIONAL& historyInfo() const + {return field_historyInfo;} + inline OPTIONAL& infoPackage() + {return field_infoPackage;} + inline const OPTIONAL& infoPackage() const + {return field_infoPackage;} + inline OPTIONAL& inReplyTo() + {return field_inReplyTo;} + inline const OPTIONAL& inReplyTo() const + {return field_inReplyTo;} + inline OPTIONAL& maxForwards() + {return field_maxForwards;} + inline const OPTIONAL& maxForwards() const + {return field_maxForwards;} + inline OPTIONAL& mimeVersion() + {return field_mimeVersion;} + inline const OPTIONAL& mimeVersion() const + {return field_mimeVersion;} + inline OPTIONAL& minExpires() + {return field_minExpires;} + inline const OPTIONAL& minExpires() const + {return field_minExpires;} + inline OPTIONAL& minSE() + {return field_minSE;} + inline const OPTIONAL& minSE() const + {return field_minSE;} + inline OPTIONAL& organization() + {return field_organization;} + inline const OPTIONAL& organization() const + {return field_organization;} + inline OPTIONAL& pAccessNetworkInfo() + {return field_pAccessNetworkInfo;} + inline const OPTIONAL& pAccessNetworkInfo() const + {return field_pAccessNetworkInfo;} + inline OPTIONAL& pAssertedID() + {return field_pAssertedID;} + inline const OPTIONAL& pAssertedID() const + {return field_pAssertedID;} + inline OPTIONAL& pAssertedService() + {return field_pAssertedService;} + inline const OPTIONAL& pAssertedService() const + {return field_pAssertedService;} + inline OPTIONAL& pAssociatedURI() + {return field_pAssociatedURI;} + inline const OPTIONAL& pAssociatedURI() const + {return field_pAssociatedURI;} + inline OPTIONAL& path() + {return field_path;} + inline const OPTIONAL& path() const + {return field_path;} + inline OPTIONAL& pCalledPartyID() + {return field_pCalledPartyID;} + inline const OPTIONAL& pCalledPartyID() const + {return field_pCalledPartyID;} + inline OPTIONAL& pChargingFunctionAddresses() + {return field_pChargingFunctionAddresses;} + inline const OPTIONAL& pChargingFunctionAddresses() const + {return field_pChargingFunctionAddresses;} + inline OPTIONAL& pChargingVector() + {return field_pChargingVector;} + inline const OPTIONAL& pChargingVector() const + {return field_pChargingVector;} + inline OPTIONAL& pEarlyMedia() + {return field_pEarlyMedia;} + inline const OPTIONAL& pEarlyMedia() const + {return field_pEarlyMedia;} + inline OPTIONAL& pMediaAuthorization() + {return field_pMediaAuthorization;} + inline const OPTIONAL& pMediaAuthorization() const + {return field_pMediaAuthorization;} + inline OPTIONAL& pPreferredID() + {return field_pPreferredID;} + inline const OPTIONAL& pPreferredID() const + {return field_pPreferredID;} + inline OPTIONAL& pPreferredService() + {return field_pPreferredService;} + inline const OPTIONAL& pPreferredService() const + {return field_pPreferredService;} + inline OPTIONAL& priority() + {return field_priority;} + inline const OPTIONAL& priority() const + {return field_priority;} + inline OPTIONAL& privacy() + {return field_privacy;} + inline const OPTIONAL& privacy() const + {return field_privacy;} + inline OPTIONAL& proxyAuthenticate() + {return field_proxyAuthenticate;} + inline const OPTIONAL& proxyAuthenticate() const + {return field_proxyAuthenticate;} + inline OPTIONAL& proxyAuthorization() + {return field_proxyAuthorization;} + inline const OPTIONAL& proxyAuthorization() const + {return field_proxyAuthorization;} + inline OPTIONAL& proxyRequire() + {return field_proxyRequire;} + inline const OPTIONAL& proxyRequire() const + {return field_proxyRequire;} + inline OPTIONAL& pVisitedNetworkID() + {return field_pVisitedNetworkID;} + inline const OPTIONAL& pVisitedNetworkID() const + {return field_pVisitedNetworkID;} + inline OPTIONAL& rAck() + {return field_rAck;} + inline const OPTIONAL& rAck() const + {return field_rAck;} + inline OPTIONAL& rSeq() + {return field_rSeq;} + inline const OPTIONAL& rSeq() const + {return field_rSeq;} + inline OPTIONAL& reason() + {return field_reason;} + inline const OPTIONAL& reason() const + {return field_reason;} + inline OPTIONAL& recordRoute() + {return field_recordRoute;} + inline const OPTIONAL& recordRoute() const + {return field_recordRoute;} + inline OPTIONAL& recvInfo() + {return field_recvInfo;} + inline const OPTIONAL& recvInfo() const + {return field_recvInfo;} + inline OPTIONAL& requestDisposition() + {return field_requestDisposition;} + inline const OPTIONAL& requestDisposition() const + {return field_requestDisposition;} + inline OPTIONAL& referredBy() + {return field_referredBy;} + inline const OPTIONAL& referredBy() const + {return field_referredBy;} + inline OPTIONAL& referTo() + {return field_referTo;} + inline const OPTIONAL& referTo() const + {return field_referTo;} + inline OPTIONAL& referSub() + {return field_referSub;} + inline const OPTIONAL& referSub() const + {return field_referSub;} + inline OPTIONAL& replaces() + {return field_replaces;} + inline const OPTIONAL& replaces() const + {return field_replaces;} + inline OPTIONAL& replyTo() + {return field_replyTo;} + inline const OPTIONAL& replyTo() const + {return field_replyTo;} + inline OPTIONAL& require() + {return field_require;} + inline const OPTIONAL& require() const + {return field_require;} + inline OPTIONAL& retryAfter() + {return field_retryAfter;} + inline const OPTIONAL& retryAfter() const + {return field_retryAfter;} + inline OPTIONAL& route() + {return field_route;} + inline const OPTIONAL& route() const + {return field_route;} + inline OPTIONAL& securityClient() + {return field_securityClient;} + inline const OPTIONAL& securityClient() const + {return field_securityClient;} + inline OPTIONAL& securityServer() + {return field_securityServer;} + inline const OPTIONAL& securityServer() const + {return field_securityServer;} + inline OPTIONAL& securityVerify() + {return field_securityVerify;} + inline const OPTIONAL& securityVerify() const + {return field_securityVerify;} + inline OPTIONAL& server() + {return field_server;} + inline const OPTIONAL& server() const + {return field_server;} + inline OPTIONAL& serviceRoute() + {return field_serviceRoute;} + inline const OPTIONAL& serviceRoute() const + {return field_serviceRoute;} + inline OPTIONAL& sessionExpires() + {return field_sessionExpires;} + inline const OPTIONAL& sessionExpires() const + {return field_sessionExpires;} + inline OPTIONAL& sessionId() + {return field_sessionId;} + inline const OPTIONAL& sessionId() const + {return field_sessionId;} + inline OPTIONAL& sipETag() + {return field_sipETag;} + inline const OPTIONAL& sipETag() const + {return field_sipETag;} + inline OPTIONAL& sipIfMatch() + {return field_sipIfMatch;} + inline const OPTIONAL& sipIfMatch() const + {return field_sipIfMatch;} + inline OPTIONAL& subject() + {return field_subject;} + inline const OPTIONAL& subject() const + {return field_subject;} + inline OPTIONAL& subscriptionState() + {return field_subscriptionState;} + inline const OPTIONAL& subscriptionState() const + {return field_subscriptionState;} + inline OPTIONAL& supported() + {return field_supported;} + inline const OPTIONAL& supported() const + {return field_supported;} + inline OPTIONAL& timestamp() + {return field_timestamp;} + inline const OPTIONAL& timestamp() const + {return field_timestamp;} + inline OPTIONAL& unsupported() + {return field_unsupported;} + inline const OPTIONAL& unsupported() const + {return field_unsupported;} + inline OPTIONAL& userToUser() + {return field_userToUser;} + inline const OPTIONAL& userToUser() const + {return field_userToUser;} + inline OPTIONAL& userAgent() + {return field_userAgent;} + inline const OPTIONAL& userAgent() const + {return field_userAgent;} + inline OPTIONAL& warning() + {return field_warning;} + inline const OPTIONAL& warning() const + {return field_warning;} + inline OPTIONAL& wwwAuthenticate() + {return field_wwwAuthenticate;} + inline const OPTIONAL& wwwAuthenticate() const + {return field_wwwAuthenticate;} + inline OPTIONAL& resourcePriority() + {return field_resourcePriority;} + inline const OPTIONAL& resourcePriority() const + {return field_resourcePriority;} + inline OPTIONAL& answerMode() + {return field_answerMode;} + inline const OPTIONAL& answerMode() const + {return field_answerMode;} + inline OPTIONAL& privAnswerMode() + {return field_privAnswerMode;} + inline const OPTIONAL& privAnswerMode() const + {return field_privAnswerMode;} + inline OPTIONAL& targetDialog() + {return field_targetDialog;} + inline const OPTIONAL& targetDialog() const + {return field_targetDialog;} + inline OPTIONAL& pAnswerState() + {return field_pAnswerState;} + inline const OPTIONAL& pAnswerState() const + {return field_pAnswerState;} + inline OPTIONAL& undefinedHeader__List() + {return field_undefinedHeader__List;} + inline const OPTIONAL& undefinedHeader__List() const + {return field_undefinedHeader__List;} + +***/ diff --git a/ccsrc/Protocols/Sip/sip_codec_request.hh b/ccsrc/Protocols/Sip/sip_codec_request.hh new file mode 100644 index 0000000..2f2f946 --- /dev/null +++ b/ccsrc/Protocols/Sip/sip_codec_request.hh @@ -0,0 +1,62 @@ +#pragma once + +#include "codec.hh" +#include "params.hh" + +#include "osipparser2/osip_parser.h" + +class Base_Type; +class TTCN_Typedescriptor_t; +class TTCN_Buffer; + +namespace LibSip__SIPTypesAndValues { + class Request; + class HostPort; + class Authorization; + class From; + class To; + class Via; +} + +namespace LibSip__Common { + class SemicolonParam__List; + class AmpersandParam__List; +} +// class OPTIONAL; +// class OPTIONAL; + +class sip_codec_request: public codec < +LibSip__SIPTypesAndValues::Request, +LibSip__SIPTypesAndValues::Request> +{ +public: + explicit sip_codec_request() : codec() { }; + virtual ~sip_codec_request() { }; + + virtual int encode (const LibSip__SIPTypesAndValues::Request& msg, OCTETSTRING& data); + virtual int decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::Request& msg, params* p_params = NULL); +private: //! \todo Move this section into a sip_codec_helper class, need to decode Response too + void fill_message_body(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request); + void fill_payload(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request); + void fill_uri(LibSip__SIPTypesAndValues::SipUrl& p_sip_url, const osip_uri_t* p_uri); + void fill_request_line(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& msg); + void fill_headers(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& msg); + + + void fill_accept_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Accept& p_accept_header); + void fill_accept_contact_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptContact& p_accept_contact_header); + void fill_accept_encoding_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptEncoding& p_accept_encoding_header); + void fill_accept_language_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptLanguage& p_accept_language_header); + void fill_alert_info_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AlertInfo& p_alert_info_header); + void fill_allow_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Allow& p_allow_header); + void fill_allow_events_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AllowEvents& p_allow_events_header); + void fill_authorization_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Authorization& p_authorization_header); + void fill_from_header(const osip_from_t* p_sip_from, LibSip__SIPTypesAndValues::From& p_from_header); + void fill_to_header(const osip_to_t* p_sip_to, LibSip__SIPTypesAndValues::To& p_to_header); + void fill_via_header(const osip_message_t* p_sip_via_list, LibSip__SIPTypesAndValues::Via& p_via_header); + + void fill_host_port(const char* p_host, const char* p_port, LibSip__SIPTypesAndValues::HostPort& p_host_port); + void fill_semi_colon_params(const osip_list_t& p_sip_list, OPTIONAL& p_list); + void fill_ampersand_params(const osip_list_t& p_sip_list, OPTIONAL& p_list); + +}; // End of class sip_codec_request diff --git a/ccsrc/Protocols/Tcp/tcp_layer.cc b/ccsrc/Protocols/Tcp/tcp_layer.cc index fcbc956..6b9796c 100644 --- a/ccsrc/Protocols/Tcp/tcp_layer.cc +++ b/ccsrc/Protocols/Tcp/tcp_layer.cc @@ -19,7 +19,7 @@ tcp_layer::tcp_layer(const std::string & p_type, const std::string & param) : la if (it == _params.cend()) { _params.insert(std::pair(std::string("debug"), "0")); } else if (it->second.compare("1") == 0) { - set_socket_debugging(true); + set_socket_debugging(true); } it = _params.find(params::server); if (it == _params.cend()) { @@ -28,13 +28,6 @@ tcp_layer::tcp_layer(const std::string & p_type, const std::string & param) : la if (!parameter_set(params::server.c_str(), _params[params::server].c_str())) { loggers::get_instance().warning("tcp_layer::set_parameter: Unprocessed parameter: %s", params::server.c_str()); } - it = _params.find(params::port); - if (it == _params.cend()) { - _params.insert(std::pair(std::string("port"), "80")); - } - if (!parameter_set(params::port.c_str(), _params[params::port].c_str())) { - loggers::get_instance().warning("tcp_layer::set_parameter: Unprocessed parameter: %s", params::server.c_str()); - } set_ssl_use_ssl(false); it = _params.find(params::use_ssl); if (it == _params.cend()) { @@ -42,6 +35,17 @@ tcp_layer::tcp_layer(const std::string & p_type, const std::string & param) : la } else if (it->second.compare("1") == 0) { set_ssl_use_ssl(true); } + it = _params.find(params::port); + if (it == _params.cend()) { + if (_params[params::use_ssl].compare("0") == 0) { // Use standard HTTP port + _params.insert(std::pair(std::string("port"), "80")); + } else { // Use standard HTTPS port + _params.insert(std::pair(std::string("port"), "443")); + } + } + if (!parameter_set(params::port.c_str(), _params[params::port].c_str())) { + loggers::get_instance().warning("tcp_layer::set_parameter: Unprocessed parameter: %s", params::server.c_str()); + } parameter_set(use_connection_ASPs_name(), "yes"); parameter_set(server_backlog_name(), "1024"); @@ -54,10 +58,10 @@ tcp_layer::tcp_layer(const std::string & p_type, const std::string & param) : la if (!_reconnect_on_send) { open_client_connection(_params[params::server].c_str(), _params[params::port].c_str(), NULL, NULL); } -} + } tcp_layer::~tcp_layer() { - loggers::get_instance().log(">>> tcp_layer::~tcp_layer: %d", _client_id); + loggers::get_instance().log(">>> tcp_layer::~tcp_layer: %d", _client_id); if (_client_id != -1) { remove_client(_client_id); } @@ -114,62 +118,62 @@ void tcp_layer::client_connection_opened(int p_client_id) bool tcp_layer::add_user_data(int p_client_id) { - loggers::get_instance().log(">>> tcp_layer::add_user_data: %d", p_client_id); - if (_params[params::use_ssl].compare("0") == 0) { - loggers::get_instance().log("tcp_layer::add_user_data: Non secured mode"); - return Abstract_Socket::add_user_data(p_client_id); - } - loggers::get_instance().log("tcp_layer::add_user_data: SSL mode"); - return SSL_Socket::add_user_data(p_client_id); + loggers::get_instance().log(">>> tcp_layer::add_user_data: %d", p_client_id); + if (_params[params::use_ssl].compare("0") == 0) { + loggers::get_instance().log("tcp_layer::add_user_data: Non secured mode"); + return Abstract_Socket::add_user_data(p_client_id); + } + loggers::get_instance().log("tcp_layer::add_user_data: SSL mode"); + return SSL_Socket::add_user_data(p_client_id); } int tcp_layer::send_message_on_fd(int p_client_id, const unsigned char * message_buffer, int length_of_message) { loggers::get_instance().log(">>> tcp_layer::send_message_on_fd: %d", p_client_id); - if(get_user_data(p_client_id)) + if(get_user_data(p_client_id)) { loggers::get_instance().log("tcp_layer::send_message_on_fd: SSL mode"); - return SSL_Socket::send_message_on_fd(p_client_id, message_buffer, length_of_message); + return SSL_Socket::send_message_on_fd(p_client_id, message_buffer, length_of_message); } - loggers::get_instance().log("tcp_layer::send_message_on_fd: Non secured mode"); - return Abstract_Socket::send_message_on_fd(p_client_id, message_buffer, length_of_message); + loggers::get_instance().log("tcp_layer::send_message_on_fd: Non secured mode"); + return Abstract_Socket::send_message_on_fd(p_client_id, message_buffer, length_of_message); } int tcp_layer::send_message_on_nonblocking_fd(int p_client_id, const unsigned char * message_buffer, int length_of_message) { loggers::get_instance().log(">>> tcp_layer::send_message_on_nonblocking_fd: %d", p_client_id); - if(get_user_data(p_client_id)) + if(get_user_data(p_client_id)) { loggers::get_instance().log("tcp_layer::send_message_on_nonblocking_fd: SSL mode"); - return SSL_Socket::send_message_on_nonblocking_fd(p_client_id, message_buffer, length_of_message); + return SSL_Socket::send_message_on_nonblocking_fd(p_client_id, message_buffer, length_of_message); } - loggers::get_instance().log("tcp_layer::send_message_on_nonblocking_fd: Non secured mode"); - return Abstract_Socket::send_message_on_nonblocking_fd(p_client_id, message_buffer, length_of_message); + loggers::get_instance().log("tcp_layer::send_message_on_nonblocking_fd: Non secured mode"); + return Abstract_Socket::send_message_on_nonblocking_fd(p_client_id, message_buffer, length_of_message); } int tcp_layer::receive_message_on_fd(int p_client_id) { loggers::get_instance().log(">>> tcp_layer::receive_message_on_fd: %d", p_client_id); - if(get_user_data(p_client_id)) { - // INFO: it is assumed that only SSL_Socket assigns user data to each peer - loggers::get_instance().log("tcp_layer::receive_message_on_fd: SSL mode"); - return SSL_Socket::receive_message_on_fd(p_client_id); - } + if(get_user_data(p_client_id)) { + // INFO: it is assumed that only SSL_Socket assigns user data to each peer + loggers::get_instance().log("tcp_layer::receive_message_on_fd: SSL mode"); + return SSL_Socket::receive_message_on_fd(p_client_id); + } - loggers::get_instance().log("tcp_layer::receive_message_on_fd: Non secured mode"); - return Abstract_Socket::receive_message_on_fd(p_client_id); + loggers::get_instance().log("tcp_layer::receive_message_on_fd: Non secured mode"); + return Abstract_Socket::receive_message_on_fd(p_client_id); } void tcp_layer::peer_disconnected(int p_client_id) { loggers::get_instance().log(">>> tcp_layer::peer_disconnected: %d", p_client_id); - Abstract_Socket::peer_disconnected(p_client_id); + Abstract_Socket::peer_disconnected(p_client_id); _client_id = -1; } diff --git a/docker/Dockerfile b/docker/Dockerfile index d413102..c1752b5 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,24 +1,22 @@ -# Copyright ETSI 2018 -# See: https://forge.etsi.org/etsi-forge-copyright-statement.txt +FROM ubuntu:18.04 -FROM gcc:latest +MAINTAINER ETSI STF 525 -MAINTAINER STF549 - -LABEL description="STF549 Docker Image" +LABEL description="STF525 Docker Image" ENV TERM=linux -ENV HOSTNAME docker-titan-STF549 +ENV HOSTNAME docker-titan-STF525 -ARG USERNAME -ARG PASSWORD +ARG ssh_pub_key -RUN echo "docker-titan" > /etc/hostname \ +RUN echo "docker-titan-STF525" > /etc/hostname \ + && echo "root:etsi" | chpasswd \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ + && DEBIAN_FRONTEND=noninteractive apt-get install software-properties-common -y \ && DEBIAN_FRONTEND=noninteractive add-apt-repository ppa:linuxuprising/java -y \ && DEBIAN_FRONTEND=noninteractive apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + && DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated install -y \ autoconf \ bison \ build-essential \ @@ -28,10 +26,13 @@ RUN echo "docker-titan" > /etc/hostname \ emacs \ expect \ flex \ - graphviz \ - gdb \ + g++-8 \ + gcc-8 \ + gdb \ git-core \ gnutls-bin \ + graphviz \ + inetutils-ping \ libglib2.0-dev \ libpcap-dev \ libgcrypt-dev \ @@ -53,54 +54,56 @@ RUN echo "docker-titan" > /etc/hostname \ tcpdump \ texlive-font-utils \ tshark \ + tzdata \ valgrind \ + vim \ vsftpd \ xutils-dev \ tree \ unzip \ wget \ - && DEBIAN_FRONTEND=noninteractive apt-get install oracle-java10-installer oracle-java10-set-default -y \ - && DEBIAN_FRONTEND=noninteractive apt-get autoremove -y \ - && DEBIAN_FRONTEND=noninteractive apt-get autoclean -y \ + && DEBIAN_FRONTEND=noninteractive apt-get autoremove --purge -y \ + && DEBIAN_FRONTEND=noninteractive apt-get autoclean \ && useradd --create-home --shell /bin/bash etsi \ && echo "etsi:etsi" | chpasswd \ && adduser etsi sudo \ - && su - etsi \ - && whoami \ - && cd /home/etsi \ - && mkdir -p bin lib include tmp frameworks docs dev \ - && ls -ltr \ + && echo "" >> /etc/profile \ + && echo "export HOME=/home/etsi" >> /etc/profile \ + && echo "export LD_LIBRARY_PATH=/home/etsi/TriesAndDelete/etsi_its/lib:$LD_LIBRARY_PATH" >> /etc/profile \ + && echo "export PATH=/home/etsi/bin:$PATH" >> /etc/profile \ + && echo "cd /home/etsi" >> /etc/profile \ + && echo ". ./devenv.bash" >> /etc/profile + +USER etsi + +RUN cd /home/etsi \ + && mkdir -p .ssh bin lib include tmp frameworks docs man dev \ + && echo "$ssh_pub_key" > /home/etsi/.ssh/id_rsa.pub \ + && cat /home/etsi/.ssh/id_rsa.pub \ && cd /home/etsi/dev \ - && git clone http://forge.etsi.org/gitlab/emergency-communications/NG112.git STF549_Ng112 \ - && cd /home/etsi/dev/STF549_Ng112/ttcn \ - && svn co --username $USERNAME --password $PASSWORD --non-interactive https://oldforge.etsi.org/svn/LibCommon/tags/v1.4.0/ttcn \ - && svn co --username $USERNAME --password $PASSWORD --non-interactive https://oldforge.etsi.org/svn/LibSip/trunk \ - && cd /home/etsi/dev/STF549_Ng112/scripts \ - && chmod 775 *.bash devenv.bash.ubuntu \ + && svn co --non-interactive https://oldforge.etsi.org/svn/ITS/branches/STF525 ./STF525_Its \ + && cd /home/etsi/dev/STF525_Its/scripts \ + && chmod 775 *.bash devenv.bash.* \ && cd /home/etsi \ - && ln -sf /home/etsi/dev/STF549_Ng112/scripts/devenv.bash.ubuntu /home/etsi/devenv.bash \ + && ln -sf /home/etsi/dev/STF525_Its/scripts/devenv.bash.ubuntu /home/etsi/devenv.bash \ + && ls -ltr /home/etsi \ && export HOME=/home/etsi \ - && . /home/etsi/devenv.bash \ && cd /home/etsi/frameworks \ - && git clone https://github.com/YannGarcia/osip osip \ - && cd /home/etsi/frameworks/osip \ - && ./autogen.sh \ - && make check \ - && echo "" >> /home/etsi/.bashrc \ - && echo ". ./devenv.bash" >> /home/etsi/.bashrc \ - && echo "" >> /home/etsi/.bashrc \ - && cd /home/etsi/dev/STF549_Ng112/scripts \ + && git clone https://github.com/vlm/asn1c.git asn1c \ + && cd asn1c \ + && test -f configure || autoreconf -iv \ + && ./configure --prefix=/home/etsi \ + && make && make install \ + && cd /home/etsi/frameworks \ + && wget 'http://ftp.halifax.rwth-aachen.de/eclipse//technology/epp/downloads/release/oxygen/2/eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz' -Oeclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ + && tar -zxvf ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ + && rm -f ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ + && . /home/etsi/devenv.bash \ + && cd /home/etsi/dev/STF525_Its/scripts \ && ./build_titan.bash \ - && cd /home/etsi \ && . /home/etsi/devenv.bash \ - && cd /home/etsi/dev/STF549_Ng112/scripts \ - && ./update_emcom_project.bash \ - && ls -ltr /home/etsi/dev/STF549_Ng112 \ - && cd /home/etsi/dev/STF549_Ng112/etsi_emcom/src/AtsNg112/objs \ - && ../bin/ng112.bash - - + && ./update_its_project.bash -CMD ["/bin/bash", "-c", "su - etsi"] +CMD ["/bin/bash"] # That's all Floks diff --git a/docker/build-container.sh b/docker/build-container.sh index 5e30b34..1726924 100644 --- a/docker/build-container.sh +++ b/docker/build-container.sh @@ -3,23 +3,24 @@ # See: https://forge.etsi.org/etsi-forge-copyright-statement.txt set -e -#set -vx - -USERNAME= -PASSWORD= +set -vx DOCKER_FILE=./Dockerfile if [ -f ${DOCKER_FILE} ] then - docker rmi -f $(docker images -q) - docker build --tag stf549_ng112 --force-rm --build-arg USERNAME=${USERNAME} --build-arg PASSWORD=${PASSWORD} . + IMAGES=$(docker images -q) + if [ "${IMAGES}" != "" ] + then + docker rmi -f $(docker images -q) + fi + docker build --tag stf525_its --force-rm --build-arg ssh_pub_key="$(cat ~/.ssh/id_rsa.pub)" . if [ "$?" != "0" ] then echo "Docker build failed: $?" exit -1 fi docker image ls -a - docker inspect stf549_ng112:latest + docker inspect stf525_its:latest if [ "$?" != "0" ] then echo "Docker inspect failed: $?" diff --git a/etc/TestCodec/TestCodec.cfg b/etc/TestCodec/TestCodec.cfg index e83fb3a..b2ed184 100644 --- a/etc/TestCodec/TestCodec.cfg +++ b/etc/TestCodec/TestCodec.cfg @@ -24,6 +24,8 @@ LogEventTypes:= Yes [TESTPORT_PARAMETERS] # In this section you can specify parameters that are passed to Test Ports. system.httpPort.params := "HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0)" +# For manual testing, use this command: openssl s_client -connect nghttp2.org:443 -msg +#system.httpPort.params := "HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=nghttp2.org,port=443,use_ssl=1)" #system.sipPort.params := "SIP/UDP(dst_ip=192.168.1.250,dst_port=5060,src_ip=192.168.1.253,src_port=5060)/ETH(mac_src=080027d2b658,mac_dst=90fd61e61902,eth_type=0800)/PCAP(mac_src=080027d2b658,nic=eth1,filter=and udp port 12345)" #system.pemeaPort.params := "PEMEA/HTTP/TCP(debug=1,server=httpbin.org,port=80,use_ssl=0)" @@ -51,13 +53,13 @@ system.httpPort.params := "HTTP(codecs=held:held_codec;html:html_codec;json:json [EXECUTE] # In this section you can specify what parts of your test suite you want to execute. -TestCodec_Register.tc_register_request_1 +#TestCodec_Register.tc_register_request_1 #TestCodec_Register.tc_register_request_2 #TestCodec_Register.tc_invite_request_2 #TestCodec_Register.tc_invite_request_2 #TestCodec_HttpRequest.tc_http_get_1 #TestCodec_HttpResponse.tc_http_200_ok_1 -#TestCodec_HttpPort.tc_http_map_1 +TestCodec_HttpPort.tc_http_map_1 [GROUPS] # In this section you can specify groups of hosts. These groups can be used inside the diff --git a/test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 b/test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 new file mode 100644 index 0000000..e6b027b --- /dev/null +++ b/test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 @@ -0,0 +1,318 @@ +/* ETSI Software License +* As long as the hereunder conditions are respected, non-exclusive permission is hereby granted, +* free of charge, to use, reproduce and modify this software source code, under the following conditions: +* This source code is provided AS IS with no warranties, express or implied, including but not limited to, +* the warranties of merchantability, fitness for a particular purpose and warranties for non-infringement +* of intellectual property rights. +* ETSI shall not be held liable in any event for any direct or indirect damages whatsoever (including, without +* limitation, damages for loss of profits, business interruption, loss of information, or any other pecuniary +* loss) arising out of or related to the use of or inability to use the source code. +* This permission is granted to facilitate the implementation of the related ETSI standard, provided that +* ETSI is given the right to use, reproduce and amend the modified source code under the same conditions +* as the present permission. +* This permission does not apply to any documentation associated with this source code for which ETSI keeps +* all rights reserved. +* The present ETSI Source Code license shall be included in all copies of whole or part of this source code +* and shall not imply any sub-license right. +* (c) ETSI 2018 +*/ + + +Package NG112_ECRF { + Domain { + pics: + - PICS_HTTP_POST_REQUEST + - PICS_SERVICE_LOST + ; + entities: + - IUT + - MTC + ; + events: + - receives //for packets coming from the network to the IUT + - sends //for packets sent by the IUT to the network + - havingServiceBoundaryFor //IUT is provisioned with the relevant service boundary + - serviceMappingFor //IUT is provisioned with the relevant service mapping + - isRequestedToSend //an upper layer requests the IUT to send a packet + - generates //for internal event generation + ; + } + +// Const { +// SERVICE_URN_1: "urn:service:sos.police"; +// SIP_URI_1: "sip:police@city.com"; +// SERVICE_URN_2: "urn:service:sos.fire"; +// SIP_URI_2: "sip:fire@city.com"; +// SERVICE_BOUNDARY_1: "[ +// [ +// [ +// 10.00, +// 50.00 +// ], +// [ +// 15.00, +// 50.00 +// ], +// [ +// 15.00, +// 55.00 +// ], +// [ +// 10.00, +// 55.00 +// ], +// [ +// 10.00, +// 50.00 +// ] +// ] +// ]"; +// SERVICE_BOUNDARY_2: "[ +// [ +// [ +// 20.00, +// 50.00 +// ], +// [ +// 25.00, +// 50.00 +// ], +// [ +// 25.00, +// 55.00 +// ], +// [ +// 20.00, +// 55.00 +// ], +// [ +// 20.00, +// 50.00 +// ] +// ] +// ]"; +// POINT_IN_SERVICE_BOUNDARY_1: "12.00, 53.00" +// CIRCLE_IN_SERVICE_BOUNDARY_2_POS: "22.00 52.00"; +// CIRCLE_IN_SERVICE_BOUNDARY_2_RADIUS: "1"; +// } + +// Data { +// type PDU; +// } +// Configuration { +// Interface Type defaultGT accepts PDU; +// Component Type NG112Comp with gate g of type defaultGT; +// Test Configuration CFG_ESRP_01 +// containing +// Tester component BCF of type NG112Comp +// Tester component LIS of type NG112Comp +// Tester component ECRF of type NG112Comp +// SUT component IUT of type NG112Comp +// connection between BCF.g and IUT.g +// connection between LIS.g and IUT.g +// connection between ECRF.g and IUT.g; +// } + +Test Purpose { +TP Id TP_ECRF_HTTP_POST_BV_01 +Test objective + "IUT successfully responds with a service URI for a Point in the service boundary" +Reference + "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause XXX EMERGENCY CALL ROUTING FUNCTION (ECRF)", + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.4", + "https://tools.ietf.org/html/rfc5222" +//Config Id CFG_ECRF_01 +PICS Selection PICS_HTTP_POST_REQUEST PICS_SERVICE_LOST +Initial conditions with { + the IUT entity havingServiceBoundaryFor the SERVICE_BOUNDARY_1 containing + serviceMappingFor SERVICE_URN_1 containing + URI indicating value SIP_URI_1; + ; + and the IUT entity havingServiceBoundaryFor the SERVICE_BOUNDARY_2 containing + serviceMappingFor SERVICE_URN_2 containing + URI indicating value SIP_URI_2; + ; +} +Expected behaviour + ensure that { + when { + the IUT entity receives a POST containing + Uri indicating value "/service", + Host, + not Accept, + Content_type indicating value "application/lost+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "findService" inNamespace "urn:ietf:params:xml:ns:lost1" containing + element "location" containing + element "Point" inNamespace "http://www.opengis.net/gml" containing + attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", + element "pos" indicating value POINT_POS; + , + element "service" indicating value SERVICE_URN_1; + ; + ; + ; + ; + } + then { + the IUT entity sends a httpResponse containing + Status_Code indicating value "200 OK", + version indicating value "1.0", + Content_type indicating value "application/lost+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "findServiceResponse" inNamespace "urn:ietf:params:xml:ns:lost1" containing + element "mapping" containing + attribute "source", + attribute "sourceId", + attribute "lastUpdated", + attribute "expires", + element "service" indicating value SERVICE_URN_1, + element "uri" indicating value SIP_URI_1; + , + element "locationUsed" + ; + ; + ; + ; + } + } +} //End of TP_ECRF_HTTP_POST_BV_01 + +Test Purpose { +TP Id TP_ECRF_HTTP_POST_BV_02 +Test objective + "IUT successfully responds with a service URI for a Circle in the service boundary" +Reference + "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause XXX EMERGENCY CALL ROUTING FUNCTION (ECRF)", + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.4", + "https://tools.ietf.org/html/rfc5222" +//Config Id CFG_ECRF_01 +PICS Selection PICS_HTTP_POST_REQUEST PICS_SERVICE_LOST +Initial conditions with { + the IUT entity havingServiceBoundaryFor the SERVICE_BOUNDARY_1 containing + serviceMappingFor SERVICE_URN_1 containing + URI indicating value SIP_URI_1; + ; + and the IUT entity havingServiceBoundaryFor the SERVICE_BOUNDARY_2 containing + serviceMappingFor SERVICE_URN_2 containing + URI indicating value SIP_URI_2; + ; +} +Expected behaviour + ensure that { + when { + the IUT entity receives a POST containing + Uri indicating value "/service", + Host, + not Accept, + Content_type indicating value "application/lost+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "findService" inNamespace "urn:ietf:params:xml:ns:lost1" containing + element "location" containing + element "Circle" inNamespace "http://www.opengis.net/pidflo/1.0" containing + attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", + element "pos" inNamespace "http://www.opengis.net/gml" indicating value CIRCLE_IN_SERVICE_BOUNDARY_2_POS, + element "radius" indicating value CIRCLE_IN_SERVICE_BOUNDARY_2_RADIUS containing + attribute "uom" indicating value "urn:ogc:def:uom:EPSG::9001" + ; + ; + , + element "service" indicating value SERVICE_URN_2; + ; + ; + ; + ; + } + then { + the IUT entity sends a httpResponse containing + Status_Code indicating value "200 OK", + version indicating value "1.0", + Content_type indicating value "application/lost+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "findServiceResponse" inNamespace "urn:ietf:params:xml:ns:lost1" containing + element "mapping" containing + attribute "source", + attribute "sourceId", + attribute "lastUpdated", + attribute "expires", + element "service" indicating value SERVICE_URN_2, + element "uri" indicating value SIP_URI_2; + , + element "locationUsed" + ; + ; + ; + ; + } + } +} //End of TP_ECRF_HTTP_POST_BV_02 + +Test Purpose { +TP Id TP_ECRF_HTTP_POST_BV_03 +Test objective + "IUT successfully responds with an error response for an unknown Service URN in the service boundary" +Reference + "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause XXX EMERGENCY CALL ROUTING FUNCTION (ECRF)", + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.4", + "https://tools.ietf.org/html/rfc5222" +//Config Id CFG_ECRF_01 +PICS Selection PICS_HTTP_POST_REQUEST PICS_SERVICE_LOST +Initial conditions with { + the IUT entity havingServiceBoundaryFor the SERVICE_BOUNDARY_1 containing + serviceMappingFor SERVICE_URN_1 containing + URI indicating value SIP_URI_1; + ; + and the IUT entity havingServiceBoundaryFor the SERVICE_BOUNDARY_2 containing + serviceMappingFor SERVICE_URN_2 containing + URI indicating value SIP_URI_2; + ; +} +Expected behaviour + ensure that { + when { + the IUT entity receives a POST containing + Uri indicating value "/service", + Host, + not Accept, + Content_type indicating value "application/lost+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "findService" inNamespace "urn:ietf:params:xml:ns:lost1" containing + element "location" containing + element "Point" inNamespace "http://www.opengis.net/gml" containing + attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", + element "pos" indicating value POINT_POS; + , + element "service" indicating value SERVICE_URN_2; + ; + ; + ; + ; + } + then { + the IUT entity sends a httpResponse containing + Status_Code indicating value "200 OK", + version indicating value "1.0", + Content_type indicating value "application/lost+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "errors" inNamespace "urn:ietf:params:xml:ns:lost1" containing + element "serviceNotImplemented" + ; + ; + ; + ; + } + } +} //End of TP_ECRF_HTTP_POST_BV_03 +} diff --git a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn index f14f8b7..eade0cd 100644 --- a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn +++ b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn @@ -124,7 +124,7 @@ module AtsNg112_TestCases { } // Test component configuration - f_cf_02_http_up(); + f_cf_01_http_up(); // Test adapter configuration @@ -166,7 +166,7 @@ module AtsNg112_TestCases { } // End of 'alt' statement // Postamble - f_cf_02_http_down(); + f_cf_01_http_down(); } // End of testcase TC_LIS_HTTP_POST_BV_02 } // End of module AtsNg112_TestCases diff --git a/ttcn/TestCodec/TestCodec_HttpPort.ttcn b/ttcn/TestCodec/TestCodec_HttpPort.ttcn index cd04e67..6d64bb1 100644 --- a/ttcn/TestCodec/TestCodec_HttpPort.ttcn +++ b/ttcn/TestCodec/TestCodec_HttpPort.ttcn @@ -30,21 +30,49 @@ module TestCodec_HttpPort { import from LibItsHttp_XmlTemplates all; import from LibItsHttp_TestSystem all; - external function enc_Device(in Device p_device) return octetstring + external function enc_LocationRequest(in LocationRequest p_loction_request) return octetstring + with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; + external function dec_LocationRequest(in octetstring p_pdu) return LocationRequest + with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; + external function enc_LocationResponse(in LocationResponse p_loction_response) return octetstring with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; - /* external function dec_LocationRequest(in octetstring p_pdu) return LocationRequest */ - /* with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; */ - /* external function enc_LocationResponse(in LocationResponse p_loction_response) return octetstring */ - /* with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; */ - /* external function dec_LocationResponse(in octetstring p_pdu) return LocationResponse */ - /* with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; */ + external function dec_LocationResponse(in octetstring p_pdu) return LocationResponse + with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; + + external function enc_Device(in Device p_device) return octetstring + with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; + external function dec_Device(in octetstring p_pdu) return Device + with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; + + external function enc_Presence(in Presence p_presence) return octetstring + with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; + external function dec_Presence(in octetstring p_pdu) return Presence + with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; + + external function enc_Tuple(in Tuple p_tuple) return octetstring + with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; + external function dec_Tuple(in octetstring p_pdu) return Tuple + with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; + testcase tc_http_map_1() runs on HttpComponent system HttpTestAdapter { // Local variables var HeaderLines v_headers; - + var HttpMessage v_response; + + log( + "####: m_locationRequest= ", + enc_LocationRequest( + valueof( + m_locationRequest( + { oct2unichar(enc_Device(valueof(m_device({ "+436501234567" })))) }, + m_locationTypeType(m_locationTypeBase_geodetic, true) + ) + ))); + + map(self:httpPort, system:httpPort); - + // Preamble f_init_default_headers_list(v_headers); httpPort.send( @@ -68,9 +96,21 @@ module TestCodec_HttpPort { mw_http_response( mw_http_response_ok( mw_http_message_body_xml( - XmlBody: { locationResponse := mw_locationResponse_dummy } - )))) { + XmlBody: { locationResponse := mw_locationResponse(-, ?) } + )))) -> value v_response { + var Presence v_presence; + var Tuple v_tuple; + var Status v_status; + tc_ac.stop; + + v_presence := dec_Presence(unichar2oct(v_response.response.body.xml_body.locationResponse.elem_list[0])); + v_tuple := v_presence.tuple_list[0]; + log("v_tuple = ", v_tuple); + + //v_status := dec_Status(v_tuple.status.elem_list[0]); + //log("v_status = ", v_status); + setverdict(pass, "Get a response"); } [] httpPort.receive( -- GitLab From 94f04acd43efdfb486e20cb04cd8987f58ab5a53 Mon Sep 17 00:00:00 2001 From: Garcia Date: Fri, 22 Jun 2018 10:21:05 +0200 Subject: [PATCH 24/72] Update Dockerfile --- docker/Dockerfile | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index c1752b5..8cac9c0 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,15 +1,15 @@ FROM ubuntu:18.04 -MAINTAINER ETSI STF 525 +MAINTAINER ETSI STF 549 -LABEL description="STF525 Docker Image" +LABEL description="STF549 Docker Image" ENV TERM=linux -ENV HOSTNAME docker-titan-STF525 +ENV HOSTNAME docker-titan-STF549 ARG ssh_pub_key -RUN echo "docker-titan-STF525" > /etc/hostname \ +RUN echo "docker-titan-STF549" > /etc/hostname \ && echo "root:etsi" | chpasswd \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ @@ -81,11 +81,12 @@ RUN cd /home/etsi \ && echo "$ssh_pub_key" > /home/etsi/.ssh/id_rsa.pub \ && cat /home/etsi/.ssh/id_rsa.pub \ && cd /home/etsi/dev \ - && svn co --non-interactive https://oldforge.etsi.org/svn/ITS/branches/STF525 ./STF525_Its \ - && cd /home/etsi/dev/STF525_Its/scripts \ + && git clone https://forge.etsi.org/gitlab/emergency-communications/NG112 ./STF549_Ng112 \ + && git checkout TTCN_3_Developments \ + && cd /home/etsi/dev/STF549_Ng112/scripts \ && chmod 775 *.bash devenv.bash.* \ && cd /home/etsi \ - && ln -sf /home/etsi/dev/STF525_Its/scripts/devenv.bash.ubuntu /home/etsi/devenv.bash \ + && ln -sf /home/etsi/dev/STF549_Ng112/scripts/devenv.bash.ubuntu /home/etsi/devenv.bash \ && ls -ltr /home/etsi \ && export HOME=/home/etsi \ && cd /home/etsi/frameworks \ @@ -99,10 +100,10 @@ RUN cd /home/etsi \ && tar -zxvf ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ && rm -f ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ && . /home/etsi/devenv.bash \ - && cd /home/etsi/dev/STF525_Its/scripts \ + && cd /home/etsi/dev/STF549_Ng112/scripts \ && ./build_titan.bash \ && . /home/etsi/devenv.bash \ - && ./update_its_project.bash + && ./update_emcom_project.bash CMD ["/bin/bash"] -- GitLab From 250b7e7f530f3005233dac2ffcfe4017f2bb8276 Mon Sep 17 00:00:00 2001 From: Garcia Date: Fri, 29 Jun 2018 13:02:26 +0200 Subject: [PATCH 25/72] Add RFC7459 --- README.md | 1 + STF549_ng112.tpd | 2817 +++++++++++++++++ docker/Dockerfile | 10 +- .../LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd | 50 + 4 files changed, 2876 insertions(+), 2 deletions(-) create mode 100644 STF549_ng112.tpd create mode 100644 ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd diff --git a/README.md b/README.md index 34e4d04..117b56c 100644 --- a/README.md +++ b/README.md @@ -20,5 +20,6 @@ https://forge.etsi.org/etsi-software-license - RFC 6155 - Use of Device Identity in HTTP-Enabled Location Delivery (HELD), accessible [here](https://tools.ietf.org/html/rfc6155) - RFC 3863 - Presence Information Data Format (PIDF), accessible [here](https://tools.ietf.org/html/rfc3863) - RFC 4119 - A Presence-based GEOPRIV Location Object Format, accessible [here](https://tools.ietf.org/html/rfc4119) +- RFC 7459 - Representation of Uncertainty and Confidence in the Presence Information Data Format Location Object (PIDF-LO), accessible [here](https://tools.ietf.org/html/rfc7459) NOTE All draft can be found in the 'IETF XML Registry', accessible [here](https://www.iana.org/assignments/xml-registry/xml-registry.xhtml) diff --git a/STF549_ng112.tpd b/STF549_ng112.tpd new file mode 100644 index 0000000..533353e --- /dev/null +++ b/STF549_ng112.tpd @@ -0,0 +1,2817 @@ + + + + STF549_ng112 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Default + + + + + true + true + true + false + true + true + false + true + false + none + executable + bin\STF549_ng112.exe + cpp + + AS_USE_SSL + OSTYPE=cygwin + _XOPEN_SOURCE=700 + _USE_MATH_DEFINES + + + /usr/local/share + /usr/include/libxml2 + + + false + false + false + false + false + false + false + false + false + true + false + true + true + false + true + false + false + true + true + false + false + g++ + None + -std=c++11 + + ssl + + false + false + + Level5-CreatingExecutableTestSuitewithdependencyupdate + + + + + bin + + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ccsrc/Protocols/Pcap + + true + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + tsp.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ccsrc/Protocols/UDP + + true + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ttcn/AtsNg112 + + true + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ttcn/LibEmcom/LibNg112/xsd + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + docs/AtsNg112 + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ttcn/LibCommon + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ccsrc/EncDec/LibSip + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ccsrc/Protocols + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ccsrc/Protocols/Tcp + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + docker + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ccsrc/Framework + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + testdata + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + etc/AtsNg112 + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ttcn/LibSip + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ccsrc/Ports + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + docs + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + etc + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ttcn/LibEmcom/LibNg112 + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ccsrc/Protocols/Http + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + docs/TestCodec + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + scripts + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ccsrc/Framework/include + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + logs + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ttcn + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ttcn/LibSip/xsd + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ttcn/LibEmcom/LibNg112/ttcn + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + etc/TestCodec + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + test_purposes + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ccsrc/Protocols/Held + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ccsrc + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ccsrc/EncDec/LibHttp + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ttcn/LibSip/ttcn + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ccsrc/Framework/src + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ccsrc/Protocols/ETH + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ccsrc/Protocols/Sip + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ttcn/LibEmcom + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ttcn/LibHttp + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ccsrc/Ports/LibHttp + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ccsrc/EncDec + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ccsrc/Ports/LibSip + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + ttcn/TestCodec + + false + false + + + .* + .* + as_.* + cg_.* + ec_.* + f_.* + ef_.* + m.* + .*_PT + t.* + tc_.* + T.* + .* + [A-Z].* + cl.* + vl.* + t.* + vt.* + TL_.* + pl_.* + c_.* + v_.* + T_.* + + + + + + + ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn + + true + + + + ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn + + true + + + + ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn + + true + + + + ccsrc/Ports/LibHttp/HttpPort.cc + + false + + + + ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn + + false + + + + ccsrc/Protocols/ETH/ethernet_layer.cc + + false + + + + docs/AtsNg112/o2.cfg + + false + + + + ttcn/LibSip/xsd/urn_ietf_params_xml_ns_common_policy.ttcn + + false + + + + ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn + + false + + + + ccsrc/Framework/include/layer_factory.hh + + false + + + + ccsrc/Protocols/Sip/sip_codec_register_request.hh + + false + + + + ttcn/LibCommon/LibCommon_VerdictControl.ttcn + + false + + + + ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + + false + + + + ttcn/LibSip/ttcn/LibSip_Interface.ttcn + + false + + + + ttcn/LibSip/xsd/simservs.xsd + + false + + + + ccsrc/Protocols/ETH/ethernet_layer_factory.hh + + false + + + + ccsrc/Framework/include/codec.hh + + false + + + + ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn + + false + + + + ttcn/LibSip/ttcn/LibSip_EncdecDeclarations.ttcn + + false + + + + ttcn/TestCodec/TestCodec_HttpResponse.ttcn + + false + + + + testdata/SIP_INVITE_Request_sdp.pcap + + false + + + + ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn + + false + + + + ttcn/LibSip/xsd/pidf.xsd + + false + + + + ccsrc/Framework/include/codec_stack_builder.hh + + false + + + + logs/STF549_ng112.yann-FSCOM-mtc.log + + false + + + + ttcn/LibSip/xsd/TIP-TIR.xsd + + false + + + + ttcn/TestCodec/TestCodec_Invite.ttcn + + false + + + + testdata/SIP_REGISTER_Request.pcap + + false + + + + ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn + + false + + + + ttcn/LibSip/xsd/ACR_CB.xsd + + false + + + + ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn + + false + + + + docs/TestCodec/o2.cfg + + false + + + + ttcn/LibSip/xsd/PSTN.xsd + + false + + + + ttcn/LibSip/xsd/UsefulTtcn3Types.ttcn + + false + + + + ccsrc/Framework/include/layer.hh + + false + + + + ttcn/LibSip/xsd/XSD.ttcn + + false + + + + ccsrc/EncDec/LibSip/LibSip_Encdec.cc + + false + + + + ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + + false + + + + ttcn/LibSip/xsd/Makefile + + false + + + + ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn + + false + + + + ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd + + false + + + + ttcn/TestCodec/TestCodec_HttpRequest.ttcn + + false + + + + docker/Dockerfile + + false + + + + ttcn/LibSip/xsd/OIP-OIR.xsd + + false + + + + ccsrc/Framework/src/params.cc + + false + + + + ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + false + + + + ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn + + false + + + + ttcn/LibSip/xsd/Ims3gpp.xsd + + false + + + + ccsrc/Protocols/Http/http_codec.cc + + false + + + + ttcn/LibSip/xsd/urn_ietf_params_xml_ns_conference_info.ttcn + + false + + + + ttcn/LibCommon/LibCommon_DataStrings.ttcn + + false + + + + ccsrc/Protocols/Http/http_layer_factory.hh + + false + + + + ttcn/LibSip/xsd/MCID.xsd + + false + + + + ttcn/LibSip/xsd/SupplementaryServices.xsd + + false + + + + ccsrc/Protocols/Tcp/tcp_layer.cc + + false + + + + ttcn/LibSip/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn + + false + + + + docker/run-container.sh + + false + + + + ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + + false + + + + ccsrc/Framework/include/loggers.hh + + false + + + + ccsrc/Protocols/Sip/sip_layer.cc + + false + + + + ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn + + false + + + + ccsrc/Protocols/Held/held_codec_factory.hh + + false + + + + ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn + + false + + + + ttcn/LibSip/xsd/urn_ietf_params_xml_ns_resource_lists.ttcn + + false + + + + ttcn/AtsNg112/AtsNg112_TestControl.ttcn + + false + + + + ttcn/LibSip/ttcn/LibSip_Templates.ttcn + + false + + + + ttcn/LibSip/xsd/cw.xsd + + false + + + + ccsrc/Protocols/Http/http_codec.hh + + false + + + + ccsrc/Protocols/Sip/sip_layer_factory.hh + + false + + + + ccsrc/Protocols/Pcap/pcap_layer.cc + + false + + + + ttcn/LibSip/xsd/CDIVN.xsd + + false + + + + ccsrc/Protocols/Held/held.codec.cc + + false + + + + ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn + + false + + + + ccsrc/Framework/include/layer_stack_builder.hh + + false + + + + ttcn/LibSip/ttcn/LibSip_Library.ttcn + + false + + + + testdata/SIP_STATUS_200ok.pcap + + false + + + + ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn + + false + + + + ccsrc/Protocols/Http/http_layer.hh + + false + + + + ccsrc/Protocols/UDP/udp_layer.cc + + false + + + + ttcn/LibSip/xsd/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn + + false + + + + ccsrc/Framework/src/converter.cc + + false + + + + ccsrc/Protocols/Sip/sip_regex.hh + + false + + + + ttcn/LibSip/xsd/ResourceList.xsd + + false + + + + ccsrc/Protocols/Sip/sip_codec_register_request.cc + + false + + + + ccsrc/Protocols/Held/held_codec.hh + + false + + + + ccsrc/Ports/LibSip/SipPort.cc + + false + + + + scripts/titan_repos.txt + + false + + + + ttcn/README.md + + false + + + + ccsrc/Framework/include/codec_factory.hh + + false + + + + etc/TestCodec/TestCodec.cfg + + false + + + + ttcn/LibCommon/LibCommon_TextStrings.ttcn + + false + + + + ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd + + false + + + + ccsrc/Framework/include/t_layer.hh + + false + + + + scripts/build_titan.bash + + false + + + + testdata/SIP_MESSAGE_Request.pcap + + false + + + + testdata/SIP_STATUS_100trying.pcap + + false + + + + ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd + + false + + + + ttcn/TestCodec/TestCodec_HttpPort.ttcn + + false + + + + ccsrc/Framework/include/converter.hh + + false + + + + ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn + + false + + + + ttcn/LibSip/xsd/urn_oma_xml_xdm_common_policy.ttcn + + false + + + + ccsrc/Framework/src/codec_stack_builder.cc + + false + + + + ttcn/LibSip/xsd/cug.xsd + + false + + + + ccsrc/Protocols/Sip/sip_regex.cc + + false + + + + ttcn/LibSip/xsd/http_www_w3_org_XML_1998_namespace.ttcn + + false + + + + ttcn/TestCodec/TestCodec_Register.ttcn + + false + + + + ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd + + false + + + + STF549_ng112.tpd + + false + + + + ttcn/LibSip/xsd/CONF.xsd + + false + + + + ttcn/LibSip/xsd/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn + + false + + + + ccsrc/Protocols/UDP/udp_layer_factory.hh + + false + + + + ttcn/LibSip/xsd/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn + + false + + + + test_purposes/README.md + + false + + + + ttcn/LibHttp/LibItsHttp_TestSystem.ttcn + + false + + + + ttcn/LibSip/xsd/urn_3gpp_ns_cw_1_0.ttcn + + false + + + + testdata/GridGears_LIS_HELD_NotFound_Response.pcap + + false + + + + model.tdl + + false + + + + ttcn/LibCommon/LibCommon_AbstractData.ttcn + + false + + + + ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + false + + + + ttcn/LibCommon/LibCommon_Sync.ttcn + + false + + + + ccsrc/Framework/src/loggers.cc + + false + + + + ccsrc/Protocols/ETH/ethernet_layer.hh + + false + + + + representations.aird + + false + + + + testdata/SIP_ACK_Request.pcap + + false + + + + README.md + + false + + + + docker/build-container.sh + + false + + + + ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + + false + + + + scripts/devenv.bash.ubuntu + + false + + + + ttcn/LibSip/xsd/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn + + false + + + + ttcn/LibSip/xsd/NoTargetNamespace.ttcn + + false + + + + ccsrc/Protocols/Tcp/Abstract_Socket.hh + + false + + + + test_purposes/LIS_HTTP_POST_BI_xx.tplan2 + + false + + + + ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn + + false + + + + ttcn/LibSip/xsd/CDIV.xsd + + false + + + + ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn + + false + + + + ttcn/LibSip/xsd/geopriv10basic.xsd + + false + + + + test_purposes/LIS_HTTP_POST_BV_xx.tplan2 + + false + + + + ccsrc/Protocols/Http/http_layer.cc + + false + + + + ccsrc/Protocols/UDP/udp_layer.hh + + false + + + + ttcn/LibSip/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn + + false + + + + ttcn/LibHttp/LibItsHttp_Pics.ttcn + + false + + + + testdata/SIP_INVITE_Request.pcap + + false + + + + ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd + + false + + + + ttcn/LibSip/ttcn/LibSip_Common.ttcn + + false + + + + ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn + + false + + + + docker/validate-in-docker.sh + + false + + + + ttcn/LibSip/xsd/urn_ietf_params_xml_ns_pidf.ttcn + + false + + + + testdata/SIP_BYE_Request.pcap + + false + + + + ttcn/LibHttp/LibItsHttp_Functions.ttcn + + false + + + + ttcn/LibSip/xsd/xml.xsd + + false + + + + ccsrc/Ports/LibSip/SipPort.hh + + false + + + + ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn + + false + + + + ccsrc/Framework/include/params.hh + + false + + + + ccsrc/Protocols/Pcap/pcap_layer_factory.hh + + false + + + + scripts/testcodec_generate_makefile.bash + + false + + + + ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn + + false + + + + ccsrc/Protocols/Tcp/Abstract_Socket.cc + + false + + + + scripts/update_emcom_project.bash + + false + + + + testdata/GridGears_LIS_HELD_Circle_Response.pcap + + false + + + + ttcn/LibSip/ttcn/LibSip_Steps.ttcn + + false + + + + logs/STF549_ng112.yann-FSCOM-hc.log + + false + + + + ttcn/AtsNg112/AtsNg112_TestCases.ttcn + + false + + + + ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn + + false + + + + ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn + + false + + + + ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd + + false + + + + ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd + + false + + + + ccsrc/Ports/LibHttp/HttpPort.hh + + false + + + + ccsrc/Protocols/Tcp/tcp_layer.hh + + false + + + + ttcn/LibSip/xsd/common-policy.xsd + + false + + + + ccsrc/Protocols/Tcp/tcp_layer_factory.hh + + false + + + + ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn + + false + + + + ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn + + false + + + + ttcn/TestCodec/TestCodec_TestAndSystem.ttcn + + false + + + + ccsrc/Ports/LibSip/OperatorPort.hh + + false + + + + ccsrc/Framework/src/layer_factory.cc + + false + + + + ccsrc/Protocols/Sip/sip_layer.hh + + false + + + + etc/AtsNg112/AtsNg112.cfg + + false + + + + ttcn/LibSip/xsd/pidf_lo.xsd + + false + + + + ccsrc/README.md + + false + + + + ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + + false + + + + scripts/ng112.bash + + false + + + + ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn + + false + + + + ttcn/LibCommon/LibCommon_Time.ttcn + + false + + + + ttcn/LibHttp/LibItsHttp_Templates.ttcn + + false + + + + ccsrc/Protocols/Pcap/pcap_layer.hh + + false + + + + ttcn/LibSip/xsd/regInfo.xsd + + false + + + + ttcn/LibSip/xsd/urn_ietf_params_xml_ns_reginfo.ttcn + + false + + + + + + \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile index 8cac9c0..392ba74 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -22,6 +22,7 @@ RUN echo "docker-titan-STF549" > /etc/hostname \ build-essential \ cmake \ curl \ + dos2unix \ doxygen \ emacs \ expect \ @@ -62,6 +63,7 @@ RUN echo "docker-titan-STF549" > /etc/hostname \ tree \ unzip \ wget \ + xsltproc \ && DEBIAN_FRONTEND=noninteractive apt-get autoremove --purge -y \ && DEBIAN_FRONTEND=noninteractive apt-get autoclean \ && useradd --create-home --shell /bin/bash etsi \ @@ -78,11 +80,15 @@ USER etsi RUN cd /home/etsi \ && mkdir -p .ssh bin lib include tmp frameworks docs man dev \ - && echo "$ssh_pub_key" > /home/etsi/.ssh/id_rsa.pub \ - && cat /home/etsi/.ssh/id_rsa.pub \ + && echo "$ssh_pub_key" > /home/etsi/.ssh/id_rsa \ + && chmod 755 /home/etsi/.ssh/id_rsa \ + && cat /home/etsi/.ssh/id_rsa \ && cd /home/etsi/dev \ && git clone https://forge.etsi.org/gitlab/emergency-communications/NG112 ./STF549_Ng112 \ && git checkout TTCN_3_Developments \ + && cd /home/etsi/dev/STF549_Ng112/ttcn \ + && svn co --non-interactive svn+ssh://forge.etsi.org/svn/LibSip/trunk ./LibSip \ + && svn co --non-interactive svn+ssh://forge.etsi.org/svn/LibCommon/trunk/ttcn ./LibCommon/ttcn \ && cd /home/etsi/dev/STF549_Ng112/scripts \ && chmod 775 *.bash devenv.bash.* \ && cd /home/etsi \ diff --git a/ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd b/ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd new file mode 100644 index 0000000..53276f3 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd @@ -0,0 +1,50 @@ + + + + + PIDF-LO Confidence + + + This schema defines an element that is used for indicating + confidence in PIDF-LO documents. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- GitLab From a90476b95b10a1667b20bd6ed1c1cc73c605c39e Mon Sep 17 00:00:00 2001 From: Garcia Date: Fri, 29 Jun 2018 13:08:24 +0200 Subject: [PATCH 26/72] Add RFC7459 --- ccsrc/Protocols/Http/http_codec.cc | 8 +++++--- ttcn/AtsNg112/AtsNg112_TestCases.ttcn | 4 ++-- ttcn/TestCodec/TestCodec_HttpPort.ttcn | 11 ++++++++--- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/ccsrc/Protocols/Http/http_codec.cc b/ccsrc/Protocols/Http/http_codec.cc index df4df1c..613860c 100644 --- a/ccsrc/Protocols/Http/http_codec.cc +++ b/ccsrc/Protocols/Http/http_codec.cc @@ -322,8 +322,8 @@ int http_codec::encode_body(const LibItsHttp__MessageBodyTypes::HttpMessageBody& loggers::get_instance().log_msg(">>> http_codec::encode_body: ", (const Base_Type&)p_message_body); loggers::get_instance().log("http_codec::encode_body: # of codecs=%d", _codecs.size()); - if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_ms__body)) { - p_encoding_buffer = p_message_body.ms__body(); + if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_binary__body)) { + p_encoding_buffer = p_message_body.binary__body().raw(); } else if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_html__body)) { p_encoding_buffer = OCTETSTRING(p_message_body.html__body().lengthof(), (unsigned char*)static_cast(p_message_body.html__body())); } else if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_text__body)) { @@ -404,7 +404,9 @@ int http_codec::decode_body(TTCN_Buffer& decoding_buffer, LibItsHttp__MessageBod loggers::get_instance().log("http_codec::decode_body: Binary mode: %x", _dc.is_binary); LibItsHttp__MessageBodyTypes::HttpMessageBody v; if (_dc.is_binary == 0x01) { - message_body.ms__body() = body; + LibItsHttp__BinaryMessageBodyTypes::BinaryBody bb; + bb.raw() = body; + message_body.binary__body() = bb; } else { // Convert into string params p; diff --git a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn index eade0cd..e8b113c 100644 --- a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn +++ b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn @@ -87,7 +87,7 @@ module AtsNg112_TestCases { mw_http_response_ok( mw_http_message_body_xml( mw_body_xml_location_response( - mw_locationResponse_dummy + mw_locationResponse ))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Security protocol version set to 3 ***"); @@ -152,7 +152,7 @@ module AtsNg112_TestCases { mw_http_response_ok( mw_http_message_body_xml( mw_body_xml_location_response( - mw_locationResponse_dummy + mw_locationResponse ))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Security protocol version set to 3 ***"); diff --git a/ttcn/TestCodec/TestCodec_HttpPort.ttcn b/ttcn/TestCodec/TestCodec_HttpPort.ttcn index 6d64bb1..e3aa711 100644 --- a/ttcn/TestCodec/TestCodec_HttpPort.ttcn +++ b/ttcn/TestCodec/TestCodec_HttpPort.ttcn @@ -55,6 +55,11 @@ module TestCodec_HttpPort { external function dec_Tuple(in octetstring p_pdu) return Tuple with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; + external function enc_Geopriv(in Geopriv p_tuple) return octetstring + with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; + external function dec_Geopriv(in octetstring p_pdu) return Geopriv + with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; + testcase tc_http_map_1() runs on HttpComponent system HttpTestAdapter { // Local variables var HeaderLines v_headers; @@ -100,7 +105,7 @@ module TestCodec_HttpPort { )))) -> value v_response { var Presence v_presence; var Tuple v_tuple; - var Status v_status; + var Geopriv v_geopriv; tc_ac.stop; @@ -108,8 +113,8 @@ module TestCodec_HttpPort { v_tuple := v_presence.tuple_list[0]; log("v_tuple = ", v_tuple); - //v_status := dec_Status(v_tuple.status.elem_list[0]); - //log("v_status = ", v_status); + v_geopriv := dec_Geopriv(unichar2oct(v_tuple.status.elem_list[0])); + log("v_geopriv = ", v_geopriv); setverdict(pass, "Get a response"); } -- GitLab From 2c815f321a30ba7a5ae7fdb888f9e723f4892d6f Mon Sep 17 00:00:00 2001 From: Garcia Date: Tue, 3 Jul 2018 15:39:38 +0200 Subject: [PATCH 27/72] Add support of OpenGIS --- test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 | 1 + test_purposes/LIS_HTTP_POST_BV_xx.tplan2 | 1 + ttcn/AtsNg112/AtsNg112_TestCases.ttcn | 251 ++++- ttcn/AtsNg112/AtsNg112_TestControl.ttcn | 12 +- .../LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn | 23 +- .../LibNg112/ttcn/LibNg112_Pixits.ttcn | 22 +- .../LibNg112/xsd/GML-pidf-lo-shape.xsd | 119 ++ ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd | 7 +- .../LibNg112/xsd/RFC4119_geopriv10.xsd | 2 +- .../xsd/RFC4119_geopriv10_basic_policy.xsd | 2 +- ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd | 49 + .../LibNg112/xsd/geometryBasic0d1d.xsd | 147 +++ .../LibEmcom/LibNg112/xsd/geometryBasic2d.xsd | 77 ++ .../LibNg112/xsd/geometryPrimitives.xsd | 218 ++++ ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd | 25 + .../xsd/http_www_opengis_net_gml.ttcn | 1000 +++++++++++++++++ .../xsd/http_www_opengis_net_pidflo_1_0.ttcn | 407 +++++++ .../http_www_w3_org_XML_1998_namespace.ttcn | 154 +++ ttcn/LibEmcom/LibNg112/xsd/measures.xsd | 30 + .../urn_ietf_params_xml_ns_geopriv_conf.ttcn | 101 ++ .../urn_ietf_params_xml_ns_geopriv_held.ttcn | 6 +- ...rn_ietf_params_xml_ns_geopriv_held_id.ttcn | 6 +- .../xsd/urn_ietf_params_xml_ns_pidf.ttcn | 8 +- ...urn_ietf_params_xml_ns_pidf_geopriv10.ttcn | 6 +- ...ams_xml_ns_pidf_geopriv10_basicPolicy.ttcn | 6 +- ...params_xml_ns_pidf_geopriv10_civicLoc.ttcn | 6 +- ...params_xml_ns_pidf_geopriv10_geoShape.ttcn | 240 ++++ ttcn/TestCodec/TestCodec_HttpPort.ttcn | 1 + 28 files changed, 2864 insertions(+), 63 deletions(-) create mode 100644 ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd create mode 100644 ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd create mode 100644 ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd create mode 100644 ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd create mode 100644 ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd create mode 100644 ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd create mode 100644 ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn create mode 100644 ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn create mode 100644 ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn create mode 100644 ttcn/LibEmcom/LibNg112/xsd/measures.xsd create mode 100644 ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn create mode 100644 ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn diff --git a/test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 b/test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 index e6b027b..34a8ff6 100644 --- a/test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 +++ b/test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 @@ -21,6 +21,7 @@ Package NG112_ECRF { Domain { pics: + - PICS_ECRF_IUT - PICS_HTTP_POST_REQUEST - PICS_SERVICE_LOST ; diff --git a/test_purposes/LIS_HTTP_POST_BV_xx.tplan2 b/test_purposes/LIS_HTTP_POST_BV_xx.tplan2 index 41a0191..5db1621 100644 --- a/test_purposes/LIS_HTTP_POST_BV_xx.tplan2 +++ b/test_purposes/LIS_HTTP_POST_BV_xx.tplan2 @@ -21,6 +21,7 @@ Package NG112_LIS { Domain { pics: + - PICS_LIS_IUT - PICS_HTTP_POST_REQUEST - PICS_LOCATION_HELD ; diff --git a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn index e8b113c..9eb15b1 100644 --- a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn +++ b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn @@ -10,34 +10,36 @@ * @see ETSI TS 103 478 */ module AtsNg112_TestCases { - - // RFC5985 Held - import from XSD all; - import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all; - - // Libcommon - import from LibCommon_Time all; - import from LibCommon_VerdictControl all; - import from LibCommon_Sync all; - - // LibHttp - import from LibItsHttp_TypesAndValues all; - import from LibItsHttp_XmlMessageBodyTypes all; - import from LibItsHttp_Functions all; - import from LibItsHttp_Templates all; - import from LibItsHttp_XmlTemplates all; - import from LibItsHttp_TestSystem all; - - // LibSip - import from LibSip_Interface all; - - // LibNg112 - import from LibNg112_TypesAndValues all; - import from LibNg112_Templates all; - import from LibNg112_Functions all; - import from LibNg112_TestSystem all; - import from LibNg112_Pics all; - import from LibNg112_Pixits all; + + // RFC5985 Held + import from XSD all; + import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all; + + // Libcommon + import from LibCommon_Time all; + import from LibCommon_VerdictControl all; + import from LibCommon_Sync all; + + // LibHttp + import from LibItsHttp_TypesAndValues all; + import from LibItsHttp_XmlMessageBodyTypes all; + import from LibItsHttp_Functions all; + import from LibItsHttp_Templates all; + import from LibItsHttp_XmlTemplates all; + import from LibItsHttp_TestSystem all; + + // LibSip + import from LibSip_Interface all; + + // LibNg112 + import from LibNg112_TypesAndValues all; + import from LibNg112_Templates all; + import from LibNg112_Functions all; + import from LibNg112_TestSystem all; + import from LibNg112_Pics all; + import from LibNg112_Pixits all; + + group lis_role { /** * @desc "IUT successfully responds with a Point when it receives a HTTP POST location request without location type" @@ -46,14 +48,23 @@ module AtsNg112_TestCases { * "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", * "https://tools.ietf.org/html/rfc5985" * @remark PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD + *
+     * Initial conditions with {
+     *   the IUT entity havingLocationMappingFor the DEVICE_NUMBER containing
+     *     "point" containing
+     *       "position" indicating value POINT_POS
+     *     ;
+     *   ;
+     * }
+     * 
*/ testcase TC_LIS_HTTP_POST_BV_01() runs on HttpComponent system TestAdapter { // Local variables var HeaderLines v_headers; // Test control - if ((not PICS_HTTP_POST_REQUEST) or (not PICS_LOCATION_HELD)) { - log("*** " & testcasename() & ": PICS_HTTP_POST_REQUEST and PICS_LOCATION_HELD required for executing the TC ***"); + if (not(PICS_LIS_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_LOCATION_HELD)) { + log("*** " & testcasename() & ": PICS_LIS_IUT and PICS_HTTP_POST_REQUEST and PICS_LOCATION_HELD required for executing the TC ***"); setverdict(inconc); stop; } @@ -90,7 +101,8 @@ module AtsNg112_TestCases { mw_locationResponse ))))) { tc_ac.stop; - log("*** " & testcasename() & ": PASS: Security protocol version set to 3 ***"); + // TODO Need to decode content + log("*** " & testcasename() & ": PASS: IUT successfully responds with a Point ***"); f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); } @@ -111,14 +123,24 @@ module AtsNg112_TestCases { * Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10 * https://tools.ietf.org/html/rfc5985 * @remark PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD + *
+     * Initial conditions with {
+     *   the IUT entity havingLocationMappingFor the DEVICE_NUMBER containing
+     *     "circle" containing
+     *       "position" indicating value CIRCLE_POS,
+     *       "radius"    indicating value CIRCLE_RADIUS
+     *     ;
+     *   ;
+     * }
+     * 
*/ testcase TC_LIS_HTTP_POST_BV_02() runs on HttpComponent system TestAdapter { // Local variables var HeaderLines v_headers; // Test control - if ((not PICS_HTTP_POST_REQUEST) or (not PICS_LOCATION_HELD)) { - log("*** " & testcasename() & ": PICS_HTTP_POST_REQUEST and PICS_LOCATION_HELD required for executing the TC ***"); + if (not(PICS_LIS_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_LOCATION_HELD)) { + log("*** " & testcasename() & ": PICS_LIS_IUT and PICS_HTTP_POST_REQUEST and PICS_LOCATION_HELD required for executing the TC ***"); setverdict(inconc); stop; } @@ -155,7 +177,8 @@ module AtsNg112_TestCases { mw_locationResponse ))))) { tc_ac.stop; - log("*** " & testcasename() & ": PASS: Security protocol version set to 3 ***"); + // TODO Need to decode content + log("*** " & testcasename() & ": PASS: IUT successfully responds with a Circle ***"); f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); } @@ -169,4 +192,164 @@ module AtsNg112_TestCases { f_cf_01_http_down(); } // End of testcase TC_LIS_HTTP_POST_BV_02 + /** + * @desc "IUT successfully responds with an error response when it receives a HTTP POST location request for an unknown device" + * @reference + * "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", + * "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", + * "https://tools.ietf.org/html/rfc5985" + * @remark PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD + *
+     * Initial conditions with {
+     *   the IUT entity havingLocationMappingFor the DEVICE_NUMBER containing
+     *     "circle" containing
+     *       "position" indicating value CIRCLE_POS,
+     *       "radius"    indicating value CIRCLE_RADIUS
+     *     ;
+     *   ;
+     * }
+     * 
+ */ + testcase TC_LIS_HTTP_POST_BV_03() runs on HttpComponent system TestAdapter { + // Local variables + var HeaderLines v_headers; + + // Test control + if (not(PICS_LIS_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_LOCATION_HELD)) { + log("*** " & testcasename() & ": PICS_LIS_IUT and PICS_HTTP_POST_REQUEST and PICS_LOCATION_HELD required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_01_http_up(); + + // Test adapter configuration + + // Preamble + f_init_default_headers_list(v_headers); + f_remove_headears_list({ c_header_accept }, v_headers); + httpPort.send( + m_http_request( + m_http_request_get( + PICS_LISP_URI, + v_headers, + m_http_message_body_xml( + m_body_xml_location_request( + m_locationRequest( + m_device({PX_UNKNOWN_DEVICE_URI}).elem_list + ))) + ))); + f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success); + + // Test body + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_body_xml_location_response( + mw_locationResponse + ))))) { + tc_ac.stop; + // TODO Need to decode content + log("*** " & testcasename() & ": PASS: IUT successfully responds with 'locationUnknoew' error response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_LIS_HTTP_POST_BV_03 + + } // End of group lis_role + + group ecrf_role { + + /** + * @desc "IUT successfully responds with a service URI for a Point in the service boundary" + * @reference + * "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause XXX EMERGENCY CALL ROUTING FUNCTION (ECRF)", + * "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.4", + * "https://tools.ietf.org/html/rfc5222" + * @remark PICS Selection PICS_HTTP_POST_REQUEST PICS_SERVICE_LOST + *
+     * Initial conditions with {
+     *   the IUT entity havingServiceBoundaryFor the SERVICE_BOUNDARY_1 containing
+     *     serviceMappingFor SERVICE_URN_1 containing
+     *        URI indicating value SIP_URI_1;
+     *   ;
+     *   and the IUT entity havingServiceBoundaryFor the SERVICE_BOUNDARY_2 containing
+     *     serviceMappingFor SERVICE_URN_2 containing
+     *        URI indicating value SIP_URI_2;
+     *   ;
+     * }
+     * 
+ */ + testcase TC_ECRF_HTTP_POST_BV_01() runs on HttpComponent system TestAdapter { + // Local variables + var HeaderLines v_headers; + + // Test control + if (not(PICS_ECRF_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_SERVICE_LOST)) { + log("*** " & testcasename() & ": PICS_ECRF_IUT and PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_01_http_up(); + + // Test adapter configuration + + // Preamble + f_init_default_headers_list(v_headers); + f_remove_headears_list({ c_header_accept }, v_headers); + httpPort.send( + m_http_request( + m_http_request_get( + PICS_ECRF_URI, + v_headers, + m_http_message_body_xml( + m_body_xml_location_request( + m_locationRequest( + m_device({PX_DEVICE_URI}).elem_list + ))) + ))); + f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success); + + // Test body + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_body_xml_location_response( + mw_locationResponse + ))))) { + tc_ac.stop; + // TODO Need to decode content + log("*** " & testcasename() & ": PASS: IUT successfully responds with a Point ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_ECRF_HTTP_POST_BV_01 + + } // End of group ecrf_role + } // End of module AtsNg112_TestCases diff --git a/ttcn/AtsNg112/AtsNg112_TestControl.ttcn b/ttcn/AtsNg112/AtsNg112_TestControl.ttcn index 8fecb5a..0b7ec84 100644 --- a/ttcn/AtsNg112/AtsNg112_TestControl.ttcn +++ b/ttcn/AtsNg112/AtsNg112_TestControl.ttcn @@ -8,10 +8,18 @@ module AtsNg112_TestControl { // Test Execution control { + if (PICS_LIS_IUT) { if (PICS_HTTP_POST_REQUEST and PICS_LOCATION_HELD) { - execute(TC_LIS_HTTP_POST_BV_01()); - execute(TC_LIS_HTTP_POST_BV_02()); + execute(TC_LIS_HTTP_POST_BV_01()); + execute(TC_LIS_HTTP_POST_BV_02()); + execute(TC_LIS_HTTP_POST_BV_03()); } + } + if (PICS_ECRF_IUT) { + if (PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST) { + execute(TC_ECRF_HTTP_POST_BV_01()); + } + } } // End of 'control' statement } // End of module AtsNg112_TestControl diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn index a85c249..d3285ba 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn @@ -1,18 +1,35 @@ module LibNg112_Pics { + modulepar boolean PICS_LIS_IUT := true; + /** - * @desc + * @desc Has the IUT the role of ECRF? + */ + modulepar boolean PICS_ECRF_IUT := false; + + /** + * @desc Does the IUT support HTTP POST request? */ modulepar boolean PICS_HTTP_POST_REQUEST := true; /** - * @desc + * @desc Does the IUT support HELD protocol? */ modulepar boolean PICS_LOCATION_HELD := true; + /** + * @desc Does the IUT support LoST protocol? + */ + modulepar boolean PICS_SERVICE_LOST := true; + + /** + * @desc + */ + modulepar charstring PICS_LISP_URI := "/location"; + /** * @desc */ - modulepar charstring PICS_LISP_URI := "http://www.lisp.com"; + modulepar charstring PICS_ECRF_URI := "/service"; } // End of module LibNg112_Pics diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn index 0e928cd..62f6d27 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn @@ -1,8 +1,28 @@ module LibNg112_Pixits { /** - * @desc + * @desc Device identofoer */ modulepar charstring PX_DEVICE_URI := "sip:user@example.net;gr=kjh29x97us97d"; + /** + * @desc Unknown device identifier + */ + modulepar charstring PX_UNKNOWN_DEVICE_URI := "sip:no_one@example.net;gr=kjh29x97us97d"; + + /** + * @desc Device position + */ + modulepar float PX_DEVICE_POSITION := 0.0; + + /** + * @desc Device position with a circle of conficence + */ + modulepar float PX_DEVICE_CIRCLE_POSITION := 0.0; + + /** + * @desc Device position with a circle of conficence + */ + modulepar float PX_DEVICE_CIRCLE_RADIUS := 0.0; + } // End of module LibNg112_Pixits diff --git a/ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd b/ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd new file mode 100644 index 0000000..fc092d1 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd @@ -0,0 +1,119 @@ + + + + + + Geodetic Shapes for PIDF-LO + + + This document defines geodetic shape types for PIDF-LO. + + Copyright (c) 2007,2009 Open Geospatial Consortium. + To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd b/ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd index 050ecc0..c60828a 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd +++ b/ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd @@ -7,7 +7,8 @@ attributeFormDefault="unqualified"> + schemaLocation="xml_2001.xsd"/> + @@ -68,8 +69,8 @@ attributeFormDefault="unqualified"> - - + diff --git a/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd b/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd index 472b3ed..ca88f4c 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd +++ b/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd @@ -9,7 +9,7 @@ elementFormDefault="qualified" attributeFormDefault="unqualified"> "urn:ietf:params:xml:ns:pidf:geopriv10:basicPolicy" /> + schemaLocation="xml_2001.xsd"/> diff --git a/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd b/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd index 7aecbde..225c4dc 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd +++ b/ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd @@ -6,7 +6,7 @@ elementFormDefault="qualified" attributeFormDefault="unqualified"> + schemaLocation="xml_2001.xsd"/> + + + + + Copyright (c) 2007,2009 Open Geospatial Consortium. + To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd b/ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd new file mode 100644 index 0000000..be5a2e1 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd @@ -0,0 +1,147 @@ + + + + + + Copyright (c) 2007,2009 Open Geospatial Consortium. + To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd b/ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd new file mode 100644 index 0000000..fe08646 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd @@ -0,0 +1,77 @@ + + + + + + Copyright (c) 2007,2009 Open Geospatial Consortium. + To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd b/ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd new file mode 100644 index 0000000..c795062 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd @@ -0,0 +1,218 @@ + + + + + + Copyright (c) 2007,2009 Open Geospatial Consortium. + To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd b/ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd new file mode 100644 index 0000000..2324d63 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd @@ -0,0 +1,25 @@ + + + + + + Copyright (c) 2007,2009 Open Geospatial Consortium. + To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + + + + + + + + diff --git a/ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn b/ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn new file mode 100644 index 0000000..7baef90 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn @@ -0,0 +1,1000 @@ +/******************************************************************************* +* Copyright (c) 2000-2018 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R4A +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: http_www_opengis_net_gml.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Tue Jul 3 08:58:44 2018 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - basicTypes.xsd +// /* xml version = "1.0" */ +// /* targetnamespace = "http://www.opengis.net/gml" */ +// - gmlBase.xsd +// /* xml version = "1.0" */ +// /* targetnamespace = "http://www.opengis.net/gml" */ +// - measures.xsd +// /* xml version = "1.0" */ +// /* targetnamespace = "http://www.opengis.net/gml" */ +// - geometryBasic0d1d.xsd +// /* xml version = "1.0" */ +// /* targetnamespace = "http://www.opengis.net/gml" */ +// - geometryBasic2d.xsd +// /* xml version = "1.0" */ +// /* targetnamespace = "http://www.opengis.net/gml" */ +// - geometryPrimitives.xsd +// /* xml version = "1.0" */ +// /* targetnamespace = "http://www.opengis.net/gml" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module http_www_opengis_net_gml { + + +import from XSD all; + + +/* Copyright (c) 2007,2009 Open Geospatial Consortium. + To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . */ + + +type enumerated SignType +{ + x, + x_1 +} +with { + variant "text 'x' as '-'"; + variant "text 'x_1' as '+'"; +}; + + +type record of XSD.Boolean BooleanList +with { + variant "name as uncapitalized"; + variant "list"; + //variant "text 'true' as '1'"; + //variant "text 'false' as '0'"; +}; + + +type record of XSD.Name NameList +with { + variant "list"; +}; + + +type record of XSD.Double DoubleList +with { + variant "name as uncapitalized"; + variant "list"; +}; + + +type record of XSD.Integer IntegerList +with { + variant "name as uncapitalized"; + variant "list"; +}; + + +type record MeasureType +{ + XSD.AnyURI uom, + XSD.Double base +} +with { + variant (uom) "attribute"; + variant (base) "untagged"; +}; + + +type record of XSD.NCName NCNameList +with { + variant "list"; +}; + + +/* Copyright (c) 2007,2009 Open Geospatial Consortium. + To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . */ + + +type record AbstractGMLType +{ + Id id optional +} +with { + variant "abstract"; + variant (id) "attribute"; +}; + + +type XSD.ID Id +with { + variant "name as uncapitalized"; + variant "attribute"; +}; +/* + +type union Object_group +{ + XSD.AnyType object, + GML_group gML +} +with { + variant "untagged"; + variant (object) "name as '_Object'"; + variant (object) "form as qualified"; + variant (object) "abstract"; + variant (gML) "name as '_GML'"; +}; + + +type union GML_group +{ + AbstractGMLType gML, + Geometry_group geometry +} +with { + variant "untagged"; + variant (gML) "name as '_GML'"; + variant (gML) "form as qualified"; + variant (gML) "abstract"; + variant (geometry) "name as '_Geometry'"; +}; + +*/ +/* Copyright (c) 2007,2009 Open Geospatial Consortium. + To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . */ + + +type MeasureType Measure +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type MeasureType LengthType; + + +type MeasureType Angle +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type MeasureType AngleType; + + +/* Copyright (c) 2007,2009 Open Geospatial Consortium. + To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . */ +/* + +type record GeometryPropertyType +{ + Geometry_group geometry +} +with { + variant (geometry) "name as '_Geometry'"; +}; + + + +type record GeometryArrayPropertyType +{ + record of Geometry_group geometry_list +} +with { + variant (geometry_list) "untagged"; + variant (geometry_list[-]) "name as '_Geometry'"; +}; +*/ + +type record AbstractGeometryType +{ + NCNameList axisLabels optional, + XSD.String gid optional, + Id id optional, + XSD.PositiveInteger srsDimension optional, + XSD.AnyURI srsName optional, + NCNameList uomLabels optional +} +with { + variant "abstract"; + variant (axisLabels) "attribute"; + variant (gid) "attribute"; + variant (id) "attribute"; + variant (srsDimension) "attribute"; + variant (srsName) "attribute"; + variant (uomLabels) "attribute"; +}; + + +type AbstractGeometryType AbstractGeometricPrimitiveType +with { + variant "abstract"; +}; + + +type PointType Point +with { + variant "element"; +}; + + +type record PointType +{ + NCNameList axisLabels optional, + XSD.String gid optional, + Id id optional, + XSD.PositiveInteger srsDimension optional, + XSD.AnyURI srsName optional, + NCNameList uomLabels optional, + Pos pos +} +with { + variant (axisLabels) "attribute"; + variant (gid) "attribute"; + variant (id) "attribute"; + variant (srsDimension) "attribute"; + variant (srsName) "attribute"; + variant (uomLabels) "attribute"; +}; + + +type PointPropertyType PointProperty +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type record PointPropertyType +{ + Point point +} +with { + variant (point) "name as capitalized"; +}; + + +type AbstractGeometricPrimitiveType AbstractCurveType +with { + variant "abstract"; +}; + + +type CurvePropertyType CurveProperty +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type record CurvePropertyType +{ + Curve_group curve +} +with { + variant (curve) "name as '_Curve'"; +}; + + +type LineStringType LineString +with { + variant "element"; +}; + + +type record LineStringType +{ + NCNameList axisLabels optional, + XSD.String gid optional, + Id id optional, + XSD.PositiveInteger srsDimension optional, + XSD.AnyURI srsName optional, + NCNameList uomLabels optional, + union { + record length(2 .. infinity) of union { + Pos pos, + PointProperty pointProperty + } choice_list, + PosList posList + } choice +} +with { + variant (axisLabels) "attribute"; + variant (gid) "attribute"; + variant (id) "attribute"; + variant (srsDimension) "attribute"; + variant (srsName) "attribute"; + variant (uomLabels) "attribute"; + variant (choice) "untagged"; + variant (choice.choice_list) "untagged"; + variant (choice.choice_list[-]) "untagged"; +}; + + +type DirectPositionType Pos +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type DoubleList DirectPositionType; + + +type DirectPositionListType PosList +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type record DirectPositionListType +{ + XSD.PositiveInteger count optional, + DoubleList base +} +with { + variant (count) "attribute"; + variant (base) "untagged"; +}; + + +type EnvelopeType Envelope +with { + variant "element"; +}; + + +type record EnvelopeType +{ + NCNameList axisLabels optional, + XSD.PositiveInteger srsDimension optional, + XSD.AnyURI srsName optional, + NCNameList uomLabels optional, + union { + record { + DirectPositionType lowerCorner, + DirectPositionType upperCorner + } sequence, + record length(2) of Pos pos_list + } choice +} +with { + variant (axisLabels) "attribute"; + variant (srsDimension) "attribute"; + variant (srsName) "attribute"; + variant (uomLabels) "attribute"; + variant (choice) "untagged"; + variant (choice.sequence) "untagged"; + variant (choice.pos_list) "untagged"; + variant (choice.pos_list[-]) "name as 'pos'"; +}; + +/* + +type union Geometry_group +{ + AbstractGeometryType geometry, + GeometricPrimitive_group geometricPrimitive, + Ring_group ring +} +with { + variant "untagged"; + variant (geometry) "name as '_Geometry'"; + variant (geometry) "form as qualified"; + variant (geometry) "abstract"; + variant (geometricPrimitive) "name as '_GeometricPrimitive'"; + variant (ring) "name as '_Ring'"; +}; + + +type union GeometricPrimitive_group +{ + AbstractGeometricPrimitiveType geometricPrimitive, + Curve_group curve, + Point point, + Solid_group solid, + Surface_group_1 surface +} +with { + variant "untagged"; + variant (geometricPrimitive) "name as '_GeometricPrimitive'"; + variant (geometricPrimitive) "form as qualified"; + variant (geometricPrimitive) "abstract"; + variant (curve) "name as '_Curve'"; + variant (point) "name as capitalized"; + variant (solid) "name as '_Solid'"; + variant (surface) "name as '_Surface'"; +}; + +*/ +type union Curve_group +{ + AbstractCurveType curve, + Curve curve_1, + LineString lineString +} +with { + variant "untagged"; + variant (curve) "name as '_Curve'"; + variant (curve) "form as qualified"; + variant (curve) "abstract"; + variant (curve_1) "name as 'Curve'"; + variant (lineString) "name as capitalized"; +}; + + +/* Copyright (c) 2007,2009 Open Geospatial Consortium. + To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . */ + + +type AbstractGeometricPrimitiveType AbstractSurfaceType; + +/* +type SurfacePropertyType SurfaceProperty +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type record SurfacePropertyType +{ + Surface_group_1 surface +} +with { + variant (surface) "name as '_Surface'"; +}; + +*/ + + +type PolygonType Polygon +with { + variant "element"; +}; + + +type record PolygonType +{ + NCNameList axisLabels optional, + XSD.String gid optional, + Id id optional, + XSD.PositiveInteger srsDimension optional, + XSD.AnyURI srsName optional, + NCNameList uomLabels optional, + Exterior exterior optional +} +with { + variant (axisLabels) "attribute"; + variant (gid) "attribute"; + variant (id) "attribute"; + variant (srsDimension) "attribute"; + variant (srsName) "attribute"; + variant (uomLabels) "attribute"; +}; + + +type AbstractGeometryType AbstractRingType +with { + variant "abstract"; +}; + + +type AbstractRingPropertyType Exterior +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type record AbstractRingPropertyType +{ + Ring_group ring +} +with { + variant (ring) "name as '_Ring'"; +}; + + +type LinearRingType LinearRing +with { + variant "element"; +}; + + +type record LinearRingType +{ + NCNameList axisLabels optional, + XSD.String gid optional, + Id id optional, + XSD.PositiveInteger srsDimension optional, + XSD.AnyURI srsName optional, + NCNameList uomLabels optional, + union { + record length(4 .. infinity) of union { + Pos pos, + PointProperty pointProperty + } choice_list, + PosList posList + } choice +} +with { + variant (axisLabels) "attribute"; + variant (gid) "attribute"; + variant (id) "attribute"; + variant (srsDimension) "attribute"; + variant (srsName) "attribute"; + variant (uomLabels) "attribute"; + variant (choice) "untagged"; + variant (choice.choice_list) "untagged"; + variant (choice.choice_list[-]) "untagged"; +}; + +/* +type union Surface_group_1 +{ + AbstractSurfaceType surface, + ArcBand arcBand, + Circle circle, + Ellipse ellipse, + Polygon polygon, + Surface_group surface_1 +} +with { + variant "untagged"; + variant (surface) "name as '_Surface'"; + variant (surface) "form as qualified"; + variant (surface) "abstract"; + variant (arcBand) "name as capitalized"; + variant (circle) "name as capitalized"; + variant (ellipse) "name as capitalized"; + variant (polygon) "name as capitalized"; + variant (surface_1) "name as 'Surface'"; +}; + +*/ +type union Ring_group +{ + AbstractRingType ring, + LinearRing linearRing +} +with { + variant "untagged"; + variant (ring) "name as '_Ring'"; + variant (ring) "form as qualified"; + variant (ring) "abstract"; + variant (linearRing) "name as capitalized"; +}; + + +const XSD.Integer c_defaultForEmpty_1 := 0; + + +const CurveInterpolationType c_defaultForEmpty_2 := linear; + + +const CurveInterpolationType c_defaultForEmpty_3 := circularArcCenterPointWithRadius; + + +const XSD.Integer c_defaultForEmpty_4 := 1; + + +const SurfaceInterpolationType c_defaultForEmpty_5 := planar; + + +/* Copyright (c) 2007,2009 Open Geospatial Consortium. + To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . */ + + +type CurveType Curve +with { + variant "element"; +}; + + +type record CurveType +{ + NCNameList axisLabels optional, + XSD.String gid optional, + Id id optional, + XSD.PositiveInteger srsDimension optional, + XSD.AnyURI srsName optional, + NCNameList uomLabels optional, + Segments segments +} +with { + variant (axisLabels) "attribute"; + variant (gid) "attribute"; + variant (id) "attribute"; + variant (srsDimension) "attribute"; + variant (srsName) "attribute"; + variant (uomLabels) "attribute"; +}; + + +type record AbstractCurveSegmentType +{ + XSD.Integer numDerivativeInterior optional, + XSD.Integer numDerivativesAtEnd optional, + XSD.Integer numDerivativesAtStart optional +} +with { + variant "abstract"; + variant (numDerivativeInterior) "defaultForEmpty as c_defaultForEmpty_1"; + variant (numDerivativeInterior) "attribute"; + variant (numDerivativesAtEnd) "defaultForEmpty as c_defaultForEmpty_1"; + variant (numDerivativesAtEnd) "attribute"; + variant (numDerivativesAtStart) "defaultForEmpty as c_defaultForEmpty_1"; + variant (numDerivativesAtStart) "attribute"; +}; + + +type CurveSegmentArrayPropertyType Segments +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type record CurveSegmentArrayPropertyType +{ + record of CurveSegment_group curveSegment_list +} +with { + variant (curveSegment_list) "untagged"; + variant (curveSegment_list[-]) "name as '_CurveSegment'"; +}; + + +type LineStringSegmentType LineStringSegment +with { + variant "element"; +}; + + +type record LineStringSegmentType +{ + CurveInterpolationType interpolation (c_defaultForEmpty_2) optional, + XSD.Integer numDerivativeInterior optional, + XSD.Integer numDerivativesAtEnd optional, + XSD.Integer numDerivativesAtStart optional, + union { + record length(2 .. infinity) of union { + Pos pos, + PointProperty pointProperty + } choice_list, + PosList posList + } choice +} +with { + variant (interpolation) "defaultForEmpty as c_defaultForEmpty_2"; + variant (interpolation) "attribute"; + variant (numDerivativeInterior) "defaultForEmpty as c_defaultForEmpty_1"; + variant (numDerivativeInterior) "attribute"; + variant (numDerivativesAtEnd) "defaultForEmpty as c_defaultForEmpty_1"; + variant (numDerivativesAtEnd) "attribute"; + variant (numDerivativesAtStart) "defaultForEmpty as c_defaultForEmpty_1"; + variant (numDerivativesAtStart) "attribute"; + variant (choice) "untagged"; + variant (choice.choice_list) "untagged"; + variant (choice.choice_list[-]) "untagged"; +}; + + +type record ArcByCenterPointType +{ + CurveInterpolationType interpolation (c_defaultForEmpty_3) optional, + XSD.Integer numArc (c_defaultForEmpty_4), + XSD.Integer numDerivativeInterior optional, + XSD.Integer numDerivativesAtEnd optional, + XSD.Integer numDerivativesAtStart optional, + union { + Pos pos, + PointProperty pointProperty + } choice, + LengthType radius, + AngleType startAngle optional, + AngleType endAngle optional +} +with { + variant (interpolation) "defaultForEmpty as c_defaultForEmpty_3"; + variant (interpolation) "attribute"; + variant (numArc) "defaultForEmpty as c_defaultForEmpty_4"; + variant (numArc) "attribute"; + variant (numDerivativeInterior) "defaultForEmpty as c_defaultForEmpty_1"; + variant (numDerivativeInterior) "attribute"; + variant (numDerivativesAtEnd) "defaultForEmpty as c_defaultForEmpty_1"; + variant (numDerivativesAtEnd) "attribute"; + variant (numDerivativesAtStart) "defaultForEmpty as c_defaultForEmpty_1"; + variant (numDerivativesAtStart) "attribute"; + variant (choice) "untagged"; +}; + + +type CircleByCenterPointType CircleByCenterPoint +with { + variant "element"; +}; + + +type ArcByCenterPointType CircleByCenterPointType; + + +type record SurfaceType +{ + NCNameList axisLabels optional, + XSD.String gid optional, + Id id optional, + XSD.PositiveInteger srsDimension optional, + XSD.AnyURI srsName optional, + NCNameList uomLabels optional, + Patches_group patches +} +with { + variant (axisLabels) "attribute"; + variant (gid) "attribute"; + variant (id) "attribute"; + variant (srsDimension) "attribute"; + variant (srsName) "attribute"; + variant (uomLabels) "attribute"; +}; + + +type record AbstractSurfacePatchType +{ + +} +with { + variant "abstract"; +}; + + +type record SurfacePatchArrayPropertyType +{ + record of record { + SurfacePatch_group surfacePatch + } sequence_list +} +with { + variant (sequence_list) "untagged"; + variant (sequence_list[-]) "untagged"; + variant (sequence_list[-].surfacePatch) "name as '_SurfacePatch'"; +}; + + +type PolygonPatchType PolygonPatch +with { + variant "element"; +}; + + +type record PolygonPatchType +{ + SurfaceInterpolationType interpolation (c_defaultForEmpty_5) optional, + Exterior exterior optional +} +with { + variant (interpolation) "defaultForEmpty as c_defaultForEmpty_5"; + variant (interpolation) "attribute"; +}; + + +type RectangleType Rectangle +with { + variant "element"; +}; + + +type record RectangleType +{ + SurfaceInterpolationType interpolation (c_defaultForEmpty_5) optional, + Exterior exterior +} +with { + variant (interpolation) "defaultForEmpty as c_defaultForEmpty_5"; + variant (interpolation) "attribute"; +}; + + +type PolyhedralSurfaceType PolyhedralSurface +with { + variant "element"; +}; + + +type record PolyhedralSurfaceType +{ + NCNameList axisLabels optional, + XSD.String gid optional, + Id id optional, + XSD.PositiveInteger srsDimension optional, + XSD.AnyURI srsName optional, + NCNameList uomLabels optional +} +with { + variant (axisLabels) "attribute"; + variant (gid) "attribute"; + variant (id) "attribute"; + variant (srsDimension) "attribute"; + variant (srsName) "attribute"; + variant (uomLabels) "attribute"; +}; + + +type PolygonPatchArrayPropertyType PolygonPatches +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type SurfacePatchArrayPropertyType PolygonPatchArrayPropertyType; + + +type AbstractGeometricPrimitiveType AbstractSolidType; + +/* +type SolidType Solid +with { + variant "element"; +}; + + +type record SolidType +{ + NCNameList axisLabels optional, + XSD.String gid optional, + Id id optional, + XSD.PositiveInteger srsDimension optional, + XSD.AnyURI srsName optional, + NCNameList uomLabels optional, + SurfacePropertyType exterior optional +} +with { + variant (axisLabels) "attribute"; + variant (gid) "attribute"; + variant (id) "attribute"; + variant (srsDimension) "attribute"; + variant (srsName) "attribute"; + variant (uomLabels) "attribute"; +}; + +*/ +type enumerated CurveInterpolationType +{ + circularArc3Points, + circularArcCenterPointWithRadius, + geodesic, + linear +}; + + +type enumerated SurfaceInterpolationType +{ + planar +}; + + +type union CurveSegment_group +{ + AbstractCurveSegmentType curveSegment, + ArcByCenterPoint_group arcByCenterPoint, + LineStringSegment lineStringSegment +} +with { + variant "untagged"; + variant (curveSegment) "name as '_CurveSegment'"; + variant (curveSegment) "form as qualified"; + variant (curveSegment) "abstract"; + variant (arcByCenterPoint) "name as capitalized"; + variant (lineStringSegment) "name as capitalized"; +}; + + +type union ArcByCenterPoint_group +{ + ArcByCenterPointType arcByCenterPoint, + CircleByCenterPoint circleByCenterPoint +} +with { + variant "untagged"; + variant (arcByCenterPoint) "name as capitalized"; + variant (arcByCenterPoint) "form as qualified"; + variant (circleByCenterPoint) "name as capitalized"; +}; + + +type union SurfacePatch_group +{ + AbstractSurfacePatchType surfacePatch, + PolygonPatch polygonPatch, + Rectangle rectangle +} +with { + variant "untagged"; + variant (surfacePatch) "name as '_SurfacePatch'"; + variant (surfacePatch) "form as qualified"; + variant (surfacePatch) "abstract"; + variant (polygonPatch) "name as capitalized"; + variant (rectangle) "name as capitalized"; +}; + + +type union Surface_group +{ + SurfaceType surface, + PolyhedralSurface polyhedralSurface +} +with { + variant "untagged"; + variant (surface) "name as capitalized"; + variant (surface) "form as qualified"; + variant (polyhedralSurface) "name as capitalized"; +}; + + +type union Patches_group +{ + SurfacePatchArrayPropertyType patches, + PolygonPatches polygonPatches +} +with { + variant "untagged"; + variant (patches) "form as qualified"; +}; + +/* +type union Solid_group +{ + AbstractSolidType solid, + Ellipsoid ellipsoid, + Prism prism, + Solid solid_1, + Sphere sphere +} +with { + variant "untagged"; + variant (solid) "name as '_Solid'"; + variant (solid) "form as qualified"; + variant (solid) "abstract"; + variant (ellipsoid) "name as capitalized"; + variant (prism) "name as capitalized"; + variant (solid_1) "name as 'Solid'"; + variant (sphere) "name as capitalized"; +}; +*/ + +} +with { + encode "XML"; + variant "namespace as 'http://www.opengis.net/gml' prefix 'gml'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} diff --git a/ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn b/ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn new file mode 100644 index 0000000..a370b03 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn @@ -0,0 +1,407 @@ +/******************************************************************************* +* Copyright (c) 2000-2018 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R4A +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: http_www_opengis_net_pidflo_1_0.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Tue Jul 3 08:58:44 2018 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - GML-pidf-lo-shape.xsd +// /* xml version = "1.0" */ +// /* targetnamespace = "http://www.opengis.net/pidflo/1.0" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module http_www_opengis_net_pidflo_1_0 { + + +import from XSD all; + + +import from http_www_opengis_net_gml all; + + +/* This document defines geodetic shape types for PIDF-LO. + + Copyright (c) 2007,2009 Open Geospatial Consortium. + To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . */ + + +type CircleType Circle +with { + variant "element"; +}; + + +type record CircleType +{ + NCNameList axisLabels optional, + XSD.String gid optional, + Id id optional, + XSD.PositiveInteger srsDimension optional, + XSD.AnyURI srsName optional, + NCNameList uomLabels optional, + CenterGroup centerGroup, + LengthType radius +} +with { + variant (axisLabels) "attribute"; + variant (gid) "attribute"; + variant (id) "attribute"; + variant (srsDimension) "attribute"; + variant (srsName) "attribute"; + variant (uomLabels) "attribute"; +}; + + +type EllipseType Ellipse +with { + variant "element"; +}; + + +type record EllipseType +{ + NCNameList axisLabels optional, + XSD.String gid optional, + Id id optional, + XSD.PositiveInteger srsDimension optional, + XSD.AnyURI srsName optional, + NCNameList uomLabels optional, + CenterGroup centerGroup, + LengthType semiMajorAxis, + LengthType semiMinorAxis, + AngleType orientation +} +with { + variant (axisLabels) "attribute"; + variant (gid) "attribute"; + variant (id) "attribute"; + variant (srsDimension) "attribute"; + variant (srsName) "attribute"; + variant (uomLabels) "attribute"; +}; + + +type ArcBandType ArcBand +with { + variant "element"; +}; + + +type record ArcBandType +{ + NCNameList axisLabels optional, + XSD.String gid optional, + Id id optional, + XSD.PositiveInteger srsDimension optional, + XSD.AnyURI srsName optional, + NCNameList uomLabels optional, + CenterGroup centerGroup, + LengthType innerRadius, + LengthType outerRadius, + AngleType startAngle, + AngleType openingAngle +} +with { + variant (axisLabels) "attribute"; + variant (gid) "attribute"; + variant (id) "attribute"; + variant (srsDimension) "attribute"; + variant (srsName) "attribute"; + variant (uomLabels) "attribute"; +}; + + +type PrismType Prism +with { + variant "element"; +}; + + +type record PrismType +{ + NCNameList axisLabels optional, + XSD.String gid optional, + Id id optional, + XSD.PositiveInteger srsDimension optional, + XSD.AnyURI srsName optional, + NCNameList uomLabels optional, + SurfacePropertyType base, + LengthType height +} +with { + variant (axisLabels) "attribute"; + variant (gid) "attribute"; + variant (id) "attribute"; + variant (srsDimension) "attribute"; + variant (srsName) "attribute"; + variant (uomLabels) "attribute"; +}; + + +type SphereType Sphere +with { + variant "element"; +}; + + +type record SphereType +{ + NCNameList axisLabels optional, + XSD.String gid optional, + Id id optional, + XSD.PositiveInteger srsDimension optional, + XSD.AnyURI srsName optional, + NCNameList uomLabels optional, + CenterGroup centerGroup, + LengthType radius +} +with { + variant (axisLabels) "attribute"; + variant (gid) "attribute"; + variant (id) "attribute"; + variant (srsDimension) "attribute"; + variant (srsName) "attribute"; + variant (uomLabels) "attribute"; +}; + + +type EllipsoidType Ellipsoid +with { + variant "element"; +}; + + +type record EllipsoidType +{ + NCNameList axisLabels optional, + XSD.String gid optional, + Id id optional, + XSD.PositiveInteger srsDimension optional, + XSD.AnyURI srsName optional, + NCNameList uomLabels optional, + CenterGroup centerGroup, + LengthType semiMajorAxis, + LengthType semiMinorAxis, + LengthType verticalAxis, + AngleType orientation +} +with { + variant (axisLabels) "attribute"; + variant (gid) "attribute"; + variant (id) "attribute"; + variant (srsDimension) "attribute"; + variant (srsName) "attribute"; + variant (uomLabels) "attribute"; +}; + + +type union CenterGroup +{ + Pos pos, + PointProperty pointProperty +} +with { + variant "untagged"; + variant (pos) "namespace as 'http://www.opengis.net/gml' prefix 'gml'"; + variant (pointProperty) "namespace as 'http://www.opengis.net/gml' prefix 'gml'"; +}; + + + + + +type union Object_group +{ + XSD.AnyType object, + GML_group gML +} +with { + variant "untagged"; + variant (object) "name as '_Object'"; + variant (object) "form as qualified"; + variant (object) "abstract"; + variant (gML) "name as '_GML'"; +}; + + +type union GML_group +{ + AbstractGMLType gML, + Geometry_group geometry +} +with { + variant "untagged"; + variant (gML) "name as '_GML'"; + variant (gML) "form as qualified"; + variant (gML) "abstract"; + variant (geometry) "name as '_Geometry'"; +}; + + +type record GeometryPropertyType +{ + Geometry_group geometry +} +with { + variant (geometry) "name as '_Geometry'"; +}; + + +type record GeometryArrayPropertyType +{ + record of Geometry_group geometry_list +} +with { + variant (geometry_list) "untagged"; + variant (geometry_list[-]) "name as '_Geometry'"; +}; + +type union Geometry_group +{ + AbstractGeometryType geometry, + GeometricPrimitive_group geometricPrimitive, + Ring_group ring +} +with { + variant "untagged"; + variant (geometry) "name as '_Geometry'"; + variant (geometry) "form as qualified"; + variant (geometry) "abstract"; + variant (geometricPrimitive) "name as '_GeometricPrimitive'"; + variant (ring) "name as '_Ring'"; +}; + + +type union GeometricPrimitive_group +{ + AbstractGeometricPrimitiveType geometricPrimitive, + Curve_group curve, + Point point, + Solid_group solid, + Surface_group_1 surface +} +with { + variant "untagged"; + variant (geometricPrimitive) "name as '_GeometricPrimitive'"; + variant (geometricPrimitive) "form as qualified"; + variant (geometricPrimitive) "abstract"; + variant (curve) "name as '_Curve'"; + variant (point) "name as capitalized"; + variant (solid) "name as '_Solid'"; + variant (surface) "name as '_Surface'"; +}; + +type SolidType Solid +with { + variant "element"; +}; + + +type record SolidType +{ + NCNameList axisLabels optional, + XSD.String gid optional, + Id id optional, + XSD.PositiveInteger srsDimension optional, + XSD.AnyURI srsName optional, + NCNameList uomLabels optional, + SurfacePropertyType exterior optional +} +with { + variant (axisLabels) "attribute"; + variant (gid) "attribute"; + variant (id) "attribute"; + variant (srsDimension) "attribute"; + variant (srsName) "attribute"; + variant (uomLabels) "attribute"; +}; + + +type union Solid_group +{ + AbstractSolidType solid, + Ellipsoid ellipsoid, + Prism prism, + Solid solid_1, + Sphere sphere +} +with { + variant "untagged"; + variant (solid) "name as '_Solid'"; + variant (solid) "form as qualified"; + variant (solid) "abstract"; + variant (ellipsoid) "name as capitalized"; + variant (prism) "name as capitalized"; + variant (solid_1) "name as 'Solid'"; + variant (sphere) "name as capitalized"; +}; + + +type SurfacePropertyType SurfaceProperty +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type record SurfacePropertyType +{ + Surface_group_1 surface +} +with { + variant (surface) "name as '_Surface'"; +}; + + +type union Surface_group_1 +{ + AbstractSurfaceType surface, + ArcBand arcBand, + Circle circle, + Ellipse ellipse, + Polygon polygon, + Surface_group surface_1 +} +with { + variant "untagged"; + variant (surface) "name as '_Surface'"; + variant (surface) "form as qualified"; + variant (surface) "abstract"; + variant (arcBand) "name as capitalized"; + variant (circle) "name as capitalized"; + variant (ellipse) "name as capitalized"; + variant (polygon) "name as capitalized"; + variant (surface_1) "name as 'Surface'"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://www.opengis.net/pidflo/1.0' prefix 'gs'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} diff --git a/ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn b/ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn new file mode 100644 index 0000000..6f13e87 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn @@ -0,0 +1,154 @@ +/******************************************************************************* +* Copyright (c) 2000-2018 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R4A +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: http_www_w3_org_XML_1998_namespace.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 2 13:12:58 2018 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - xml_2001.xsd +// /* xml version = "1.0" */ +// /* targetnamespace = "http://www.w3.org/XML/1998/namespace" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module http_www_w3_org_XML_1998_namespace { + + +import from XSD all; + + +const Space c_defaultForEmpty_1 := preserve; + + +/* See http://www.w3.org/XML/1998/namespace.html and */ +/* http://www.w3.org/TR/REC-xml for information about this namespace. */ +/* This schema document describes the XML namespace, in a form + suitable for import by other schema documents. + + Note that local names in this namespace are intended to be defined + only by the World Wide Web Consortium or its subgroups. The + following names are currently defined in this namespace and should + not be used with conflicting semantics by any Working Group, + specification, or document instance: + + base (as an attribute name): denotes an attribute whose value + provides a URI to be used as the base for interpreting any + relative URIs in the scope of the element on which it + appears; its value is inherited. This name is reserved + by virtue of its definition in the XML Base specification. + + lang (as an attribute name): denotes an attribute whose value + is a language code for the natural language of the content of + any element; its value is inherited. This name is reserved + by virtue of its definition in the XML specification. + + space (as an attribute name): denotes an attribute whose + value is a keyword indicating what whitespace processing + discipline is intended for the content of the element; its + value is inherited. This name is reserved by virtue of its + definition in the XML specification. + + Father (in any context at all): denotes Jon Bosak, the chair of + the original XML Working Group. This name is reserved by + the following decision of the W3C XML Plenary and + XML Coordination groups: + + In appreciation for his vision, leadership and dedication + the W3C XML Plenary on this 10th day of February, 2000 + reserves for Jon Bosak in perpetuity the XML name + xml:Father */ + + +/* This schema defines attributes and an attribute group */ +/* suitable for use by */ +/* schemas wishing to allow xml:base, xml:lang or xml:space attributes */ +/* on elements they define. */ +/* To enable this, such a schema must import this schema + for the XML namespace, e.g. as follows: + */ +/* . . . */ +/* */ +/* Subsequently, qualified reference to any of the attributes + or the group defined below will have the desired effect, e.g. + + */ +/* . . . */ +/* */ +/* will define a type which will schema-validate an instance */ +/* element with any of those attributes */ + + +/* In keeping with the XML Schema WG's standard versioning */ +/* policy, this schema document will persist at */ +/* http://www.w3.org/2001/03/xml.xsd. */ +/* At the date of issue it can also be found at */ +/* http://www.w3.org/2001/xml.xsd. */ +/* The schema document at that URI may however change in the future, */ +/* in order to remain compatible with the latest version of XML Schema */ +/* itself. In other words, if the XML Schema namespace changes, the version */ +/* of this document at */ +/* http://www.w3.org/2001/xml.xsd will change */ +/* accordingly; the version at */ +/* http://www.w3.org/2001/03/xml.xsd will not change. */ + + +/* In due course, we should install the relevant ISO 2- and 3-letter */ +/* codes as the enumerated possible values . . . */ +type XSD.Language Lang +with { + variant "name as uncapitalized"; + variant "attribute"; +}; + + +type enumerated Space +{ + default_, + preserve +} +with { + variant "text 'default_' as 'default'"; + variant "defaultForEmpty as c_defaultForEmpty_1"; + variant "name as uncapitalized"; + variant "attribute"; +}; + + +/* See http://www.w3.org/TR/xmlbase/ for */ +/* information about this attribute. */ +type XSD.AnyURI Base +with { + variant "name as uncapitalized"; + variant "attribute"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://www.w3.org/XML/1998/namespace' prefix 'xml'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; +} diff --git a/ttcn/LibEmcom/LibNg112/xsd/measures.xsd b/ttcn/LibEmcom/LibNg112/xsd/measures.xsd new file mode 100644 index 0000000..fa70d1c --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/measures.xsd @@ -0,0 +1,30 @@ + + + + + + Copyright (c) 2007,2009 Open Geospatial Consortium. + To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ . + + + + + + + + + + + + + + + + + + + + diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn new file mode 100644 index 0000000..3bdcf2b --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn @@ -0,0 +1,101 @@ +/******************************************************************************* +* Copyright (c) 2000-2018 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R4A +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: urn_ietf_params_xml_ns_geopriv_conf.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Mon Jul 2 13:12:58 2018 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - RFC7459_pidf_lo.xsd +// /* xml version = "1.0" */ +// /* targetnamespace = "urn:ietf:params:xml:ns:geopriv:conf" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module urn_ietf_params_xml_ns_geopriv_conf { + + +import from XSD all; + + +const PdfType c_defaultForEmpty_1 := unknown; + + +/* This schema defines an element that is used for indicating + confidence in PIDF-LO documents. */ + + +type ConfidenceType Confidence +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type record ConfidenceType +{ + PdfType pdf optional, + ConfidenceBase base +} +with { + variant "name as uncapitalized"; + variant (pdf) "defaultForEmpty as c_defaultForEmpty_1"; + variant (pdf) "attribute"; + variant (base) "untagged"; +}; + + +type union ConfidenceBase +{ + XSD.Decimal alt_ (!0.0 .. !100.0), + enumerated { + unknown + } alt_1 +} +with { + variant "name as uncapitalized"; + variant "useUnion"; + variant (alt_) "name as ''"; + variant (alt_1) "name as ''"; +}; + + +type enumerated PdfType +{ + normal, + rectangular, + unknown +} +with { + variant "name as uncapitalized"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'urn:ietf:params:xml:ns:geopriv:conf' prefix 'conf'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn index 716d64d..52ab380 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn @@ -4,9 +4,9 @@ * XSD to TTCN-3 Translator version: CRL 113 200/6 R4A * * All rights reserved. This program and the accompanying materials -* are made available under the terms of the Eclipse Public License v1.0 +* are made available under the terms of the Eclipse Public License v2.0 * which accompanies this distribution, and is available at -* http://www.eclipse.org/legal/epl-v10.html +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html *******************************************************************************/ // // File: urn_ietf_params_xml_ns_geopriv_held.ttcn @@ -14,7 +14,7 @@ // References: // Rev: // Prodnr: -// Updated: Tue May 29 08:00:31 2018 +// Updated: Mon Jul 2 13:12:58 2018 // Contact: http://ttcn.ericsson.se // //////////////////////////////////////////////////////////////////////////////// diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn index c33612e..56cbddf 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn @@ -4,9 +4,9 @@ * XSD to TTCN-3 Translator version: CRL 113 200/6 R4A * * All rights reserved. This program and the accompanying materials -* are made available under the terms of the Eclipse Public License v1.0 +* are made available under the terms of the Eclipse Public License v2.0 * which accompanies this distribution, and is available at -* http://www.eclipse.org/legal/epl-v10.html +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html *******************************************************************************/ // // File: urn_ietf_params_xml_ns_geopriv_held_id.ttcn @@ -14,7 +14,7 @@ // References: // Rev: // Prodnr: -// Updated: Tue May 29 08:00:31 2018 +// Updated: Mon Jul 2 13:12:58 2018 // Contact: http://ttcn.ericsson.se // //////////////////////////////////////////////////////////////////////////////// diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn index 117f4bc..a077855 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn @@ -4,9 +4,9 @@ * XSD to TTCN-3 Translator version: CRL 113 200/6 R4A * * All rights reserved. This program and the accompanying materials -* are made available under the terms of the Eclipse Public License v1.0 +* are made available under the terms of the Eclipse Public License v2.0 * which accompanies this distribution, and is available at -* http://www.eclipse.org/legal/epl-v10.html +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html *******************************************************************************/ // // File: urn_ietf_params_xml_ns_pidf.ttcn @@ -14,7 +14,7 @@ // References: // Rev: // Prodnr: -// Updated: Tue May 29 08:00:31 2018 +// Updated: Mon Jul 2 13:12:58 2018 // Contact: http://ttcn.ericsson.se // //////////////////////////////////////////////////////////////////////////////// @@ -140,6 +140,8 @@ with { }; +/* xs:pattern value="0(.[0-9]{0,3})?"/> + Date: Wed, 4 Jul 2018 11:10:55 +0200 Subject: [PATCH 28/72] Add support of OpenGIS - Circle --- .../ttcn/LibNg112_EncdecDeclarations.ttcn | 55 +++++++++++++++ ttcn/TestCodec/TestCodec_HttpPort.ttcn | 68 ++++++------------- 2 files changed, 77 insertions(+), 46 deletions(-) create mode 100644 ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn new file mode 100644 index 0000000..1a502a8 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn @@ -0,0 +1,55 @@ +module LibNg112_EncdecDeclarations { + + import from XSD all; + + // RFC5985 Held + import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all; + import from urn_ietf_params_xml_ns_geopriv_held_id language "XSD" all; + import from urn_ietf_params_xml_ns_pidf_geopriv10 language "XSD" all; + import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy language "XSD" all; + + import from urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc language "XSD" all; + + // + import from urn_ietf_params_xml_ns_pidf language "XSD" all; + + // OpenGIS + import from urn_ietf_params_xml_ns_pidf_geopriv10_geoShape language "XSD" all; + import from http_www_opengis_net_gml language "XSD" all; + + external function enc_LocationRequest(in LocationRequest p_loction_request) return octetstring + with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; + external function dec_LocationRequest(in octetstring p_pdu) return LocationRequest + with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; + external function enc_LocationResponse(in LocationResponse p_loction_response) return octetstring + with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; + external function dec_LocationResponse(in octetstring p_pdu) return LocationResponse + with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; + + + external function enc_Device(in Device p_device) return octetstring + with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; + external function dec_Device(in octetstring p_pdu) return Device + with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; + + external function enc_Presence(in Presence p_presence) return octetstring + with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; + external function dec_Presence(in octetstring p_pdu) return Presence + with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; + + external function enc_Tuple(in Tuple p_tuple) return octetstring + with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; + external function dec_Tuple(in octetstring p_pdu) return Tuple + with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; + + external function enc_Geopriv(in Geopriv p_geopriv) return octetstring + with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; + external function dec_Geopriv(in octetstring p_pdu) return Geopriv + with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; + + external function enc_Circle(in Circle p_circle) return octetstring + with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; + external function dec_Circle(in octetstring p_pdu) return Circle + with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; + +} // End of module LibNg112_EncdecDeclarations diff --git a/ttcn/TestCodec/TestCodec_HttpPort.ttcn b/ttcn/TestCodec/TestCodec_HttpPort.ttcn index fd1d458..abfa41b 100644 --- a/ttcn/TestCodec/TestCodec_HttpPort.ttcn +++ b/ttcn/TestCodec/TestCodec_HttpPort.ttcn @@ -18,9 +18,16 @@ module TestCodec_HttpPort { import from urn_ietf_params_xml_ns_geopriv_held_id language "XSD" all; import from urn_ietf_params_xml_ns_pidf_geopriv10 language "XSD" all; import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy language "XSD" all; + import from urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc language "XSD" all; + + // import from urn_ietf_params_xml_ns_pidf language "XSD" all; + // OpenGIS + import from urn_ietf_params_xml_ns_pidf_geopriv10_geoShape language "XSD" all; + import from http_www_opengis_net_gml language "XSD" all; + // LibCommon // LibHttp @@ -31,51 +38,10 @@ module TestCodec_HttpPort { import from LibItsHttp_XmlTemplates all; import from LibItsHttp_TestSystem all; - external function enc_LocationRequest(in LocationRequest p_loction_request) return octetstring - with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; - external function dec_LocationRequest(in octetstring p_pdu) return LocationRequest - with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; - external function enc_LocationResponse(in LocationResponse p_loction_response) return octetstring - with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; - external function dec_LocationResponse(in octetstring p_pdu) return LocationResponse - with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; - - - external function enc_Device(in Device p_device) return octetstring - with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; - external function dec_Device(in octetstring p_pdu) return Device - with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; - - external function enc_Presence(in Presence p_presence) return octetstring - with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; - external function dec_Presence(in octetstring p_pdu) return Presence - with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; - - external function enc_Tuple(in Tuple p_tuple) return octetstring - with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; - external function dec_Tuple(in octetstring p_pdu) return Tuple - with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; - - external function enc_Geopriv(in Geopriv p_tuple) return octetstring - with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; - external function dec_Geopriv(in octetstring p_pdu) return Geopriv - with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; - testcase tc_http_map_1() runs on HttpComponent system HttpTestAdapter { // Local variables var HeaderLines v_headers; var HttpMessage v_response; - - log( - "####: m_locationRequest= ", - enc_LocationRequest( - valueof( - m_locationRequest( - { oct2unichar(enc_Device(valueof(m_device({ "+436501234567" })))) }, - m_locationTypeType(m_locationTypeBase_geodetic, true) - ) - ))); - map(self:httpPort, system:httpPort); @@ -88,7 +54,7 @@ module TestCodec_HttpPort { v_headers, m_http_message_body_xml(m_body_xml_location_request( m_locationRequest( - { oct2unichar(enc_Device(valueof(m_device({ "+436501234567" })))) }, + { encvalue_unichar(valueof(m_device({ "+436501234567" }))) }, m_locationTypeType(m_locationTypeBase_geodetic, true) ) ) @@ -102,21 +68,31 @@ module TestCodec_HttpPort { mw_http_response( mw_http_response_ok( mw_http_message_body_xml( - XmlBody: { locationResponse := mw_locationResponse(-, ?) } - )))) -> value v_response { + mw_body_xml_location_response( + mw_locationResponse(-, ?) + ))))) -> value v_response { var Presence v_presence; var Tuple v_tuple; var Geopriv v_geopriv; + var Circle v_circle; + var universal charstring v_temp; + var integer v_result; tc_ac.stop; - v_presence := dec_Presence(unichar2oct(v_response.response.body.xml_body.locationResponse.elem_list[0])); + v_temp := v_response.response.body.xml_body.locationResponse.elem_list[0]; + v_result := decvalue_unichar(v_temp, v_presence); v_tuple := v_presence.tuple_list[0]; log("v_tuple = ", v_tuple); - v_geopriv := dec_Geopriv(unichar2oct(v_tuple.status.elem_list[0])); + v_temp := v_tuple.status.elem_list[0]; + v_result := decvalue_unichar(v_temp, v_geopriv); log("v_geopriv = ", v_geopriv); + v_temp := v_geopriv.location_info.elem_list[0]; + v_result := decvalue_unichar(v_temp, v_circle); + log("v_circle = ", v_circle); + setverdict(pass, "Get a response"); } [] httpPort.receive( -- GitLab From dbccec1ebc6854173657af04cbd2e7351ee29f99 Mon Sep 17 00:00:00 2001 From: Garcia Date: Thu, 5 Jul 2018 09:34:25 +0200 Subject: [PATCH 29/72] Validate execution of AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_01 --- ccsrc/Protocols/Http/http_codec.cc | 2 +- docker/Dockerfile | 8 +- docker/build-container.sh | 2 +- etc/AtsNg112/AtsNg112.cfg | 10 +- scripts/ng112.bash | 2 +- scripts/testcodec_generate_makefile.bash | 23 +- ttcn/AtsNg112/AtsNg112_TestCases.ttcn | 280 +++++++++++++----- .../LibNg112/ttcn/LibNg112_Functions.ttcn | 56 ++++ .../LibNg112/ttcn/LibNg112_Pixits.ttcn | 56 ++-- 9 files changed, 315 insertions(+), 124 deletions(-) diff --git a/ccsrc/Protocols/Http/http_codec.cc b/ccsrc/Protocols/Http/http_codec.cc index 613860c..25d8278 100644 --- a/ccsrc/Protocols/Http/http_codec.cc +++ b/ccsrc/Protocols/Http/http_codec.cc @@ -64,7 +64,7 @@ int http_codec::decode (const OCTETSTRING& data, LibItsHttp__TypesAndValues::Htt loggers::get_instance().log("http_codec::decode: %d - %s", m.size(), m[0].str().c_str()); if (m[0].str().compare("HTTP/") == 0) { // HTTP response LibItsHttp__TypesAndValues::Response response; - std::regex rgx ("\\s*HTTP/(\\d+)\\.(\\d+)\\s+(\\d+)\\s+(\\w+)*"); + std::regex rgx ("\\s*HTTP/(\\d+)\\.(\\d+)\\s+(\\d+)\\s+([\\w\\s\\t\\v\\f]+)*"); std::sregex_iterator begin(str.cbegin(), str.cend(), rgx); std::smatch m = *begin; loggers::get_instance().log("http_codec::decode: Process response: %d", m.size()); diff --git a/docker/Dockerfile b/docker/Dockerfile index 392ba74..5f28f3c 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -7,8 +7,6 @@ LABEL description="STF549 Docker Image" ENV TERM=linux ENV HOSTNAME docker-titan-STF549 -ARG ssh_pub_key - RUN echo "docker-titan-STF549" > /etc/hostname \ && echo "root:etsi" | chpasswd \ && DEBIAN_FRONTEND=noninteractive apt-get update \ @@ -78,11 +76,11 @@ RUN echo "docker-titan-STF549" > /etc/hostname \ USER etsi +ADD ~/.ssh/id_rsa /home/etsi/.ssh/id_rsa +ADD ~/.ssh/id_rsa_pub /home/etsi/.ssh/id_rsa_pub + RUN cd /home/etsi \ && mkdir -p .ssh bin lib include tmp frameworks docs man dev \ - && echo "$ssh_pub_key" > /home/etsi/.ssh/id_rsa \ - && chmod 755 /home/etsi/.ssh/id_rsa \ - && cat /home/etsi/.ssh/id_rsa \ && cd /home/etsi/dev \ && git clone https://forge.etsi.org/gitlab/emergency-communications/NG112 ./STF549_Ng112 \ && git checkout TTCN_3_Developments \ diff --git a/docker/build-container.sh b/docker/build-container.sh index 1726924..8403ff0 100644 --- a/docker/build-container.sh +++ b/docker/build-container.sh @@ -13,7 +13,7 @@ then then docker rmi -f $(docker images -q) fi - docker build --tag stf525_its --force-rm --build-arg ssh_pub_key="$(cat ~/.ssh/id_rsa.pub)" . + docker build --tag stf525_its --force-rm . if [ "$?" != "0" ] then echo "Docker build failed: $?" diff --git a/etc/AtsNg112/AtsNg112.cfg b/etc/AtsNg112/AtsNg112.cfg index b32db62..dc7ea15 100644 --- a/etc/AtsNg112/AtsNg112.cfg +++ b/etc/AtsNg112/AtsNg112.cfg @@ -1,7 +1,8 @@ [MODULE_PARAMETERS] # This section shall contain the values of all parameters that are defined in your TTCN-3 modules. -LibCommon_Time.PX_TAC := 10.0 +LibCommon_Time.PX_TAC := 30.0 +LibItsHttp_Pics.PICS_HEADER_HOST := "ptsv2.com" [LOGGING] # In this section you can specify the name of the log file and the classes of events @@ -19,8 +20,8 @@ LogEventTypes:= Yes [TESTPORT_PARAMETERS] # In this section you can specify parameters that are passed to Test Ports. -system.SIPP.params := "SIP/UDP(dst_ip=192.168.1.250,dst_port=5060,src_ip=192.168.1.253,src_port=5060)/ETH(mac_src=080027d2b658,mac_dst=90fd61e61902,eth_type=0800)/PCAP(mac_src=080027d2b658,nic=eth1,filter=and udp port 12345)" -system.httpPort.params := "APP_LAYERS(codecs=held,html,text)/HTTP/TCP(debug=1,server=httpbin.org,port=80,use_ssl=0)" +system.httpPort.params := "HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0)" +#system.SIPP.params := "SIP/UDP(dst_ip=192.168.1.250,dst_port=5060,src_ip=192.168.1.253,src_port=5060)/ETH(mac_src=080027d2b658,mac_dst=90fd61e61902,eth_type=0800)/PCAP(mac_src=080027d2b658,nic=eth1,filter=and udp port 12345)" [DEFINE] # In this section you can create macro definitions, @@ -45,8 +46,7 @@ system.httpPort.params := "APP_LAYERS(codecs=held,html,text)/HTTP/TCP(debug=1,se [EXECUTE] # In this section you can specify what parts of your test suite you want to execute. -#AtsNg112_TestCases.TC_1 -AtsNg112_TestCases.TC_2 +AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_01 [GROUPS] # In this section you can specify groups of hosts. These groups can be used inside the diff --git a/scripts/ng112.bash b/scripts/ng112.bash index 9c27538..5c4c2c5 100644 --- a/scripts/ng112.bash +++ b/scripts/ng112.bash @@ -237,6 +237,6 @@ if [ "$?" == "1" ] then f_exit "Failed to generate ATS source code" 9 fi -export LD_LIBRARY_PATH=~/tmp/osip_aurelihein/src/osipparser2/.libs:$LD_LIBRARY_PATH +export LD_LIBRARY_PATH=~export LD_LIBRARY_PATH=~/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH ../bin/Ats${ATS_NAME} -v f_exit "Build done successfully" 0 diff --git a/scripts/testcodec_generate_makefile.bash b/scripts/testcodec_generate_makefile.bash index 1d57880..cdec2ac 100644 --- a/scripts/testcodec_generate_makefile.bash +++ b/scripts/testcodec_generate_makefile.bash @@ -77,25 +77,25 @@ do # TTCN code for j in `find ${PATH_DEV_EMCOM}/src/$i/ttcn -type f -name "*.ttcn"`; do - ln -sf $j ../ttcn/`basename $j` + ln -sf $j ../ttcn/`basename $j` done # Include source code files=`find ${PATH_DEV_EMCOM}/src/$i/include -type f` if [ "${files}" != " " ] then - for j in ${files}; - do - ln -sf $j ../include/`basename $j` - done + for j in ${files}; + do + ln -sf $j ../include/`basename $j` + done fi # CC source code files=`find ${PATH_DEV_EMCOM}/src/$i/src -type f` if [ "${files}" != " " ] then - for j in ${files}; - do - ln -sf $j ../src/`basename $j` - done + for j in ${files}; + do + ln -sf $j ../src/`basename $j` + done fi done @@ -153,14 +153,14 @@ for i in `ls ../include/*.hh` do if [ -f ./`basename $i` ] then - rm ./`basename $i` + rm ./`basename $i` fi done for i in `ls ../src/*.cc` do if [ -f ./`basename $i` ] then - rm ./`basename $i` + rm ./`basename $i` fi done @@ -237,5 +237,6 @@ if [ "$?" == "1" ] then f_exit "Failed to generate ATS source code" 9 fi +export LD_LIBRARY_PATH=~/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH ../bin/Ats${ATS_NAME} -v f_exit "Build done successfully" 0 diff --git a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn index 9eb15b1..ceab2d7 100644 --- a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn +++ b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn @@ -12,8 +12,19 @@ module AtsNg112_TestCases { // RFC5985 Held - import from XSD all; import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all; + import from urn_ietf_params_xml_ns_geopriv_held_id language "XSD" all; + import from urn_ietf_params_xml_ns_pidf_geopriv10 language "XSD" all; + import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy language "XSD" all; + + import from urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc language "XSD" all; + + // + import from urn_ietf_params_xml_ns_pidf language "XSD" all; + + // OpenGIS + import from urn_ietf_params_xml_ns_pidf_geopriv10_geoShape language "XSD" all; + import from http_www_opengis_net_gml language "XSD" all; // Libcommon import from LibCommon_Time all; @@ -61,6 +72,7 @@ module AtsNg112_TestCases { testcase TC_LIS_HTTP_POST_BV_01() runs on HttpComponent system TestAdapter { // Local variables var HeaderLines v_headers; + var HttpMessage v_response; // Test control if (not(PICS_LIS_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_LOCATION_HELD)) { @@ -76,40 +88,85 @@ module AtsNg112_TestCases { // Preamble f_init_default_headers_list(v_headers); - f_remove_headears_list({ c_header_accept }, v_headers); httpPort.send( m_http_request( - m_http_request_get( - PICS_LISP_URI, - v_headers, - m_http_message_body_xml( - m_body_xml_location_request( - m_locationRequest( - m_device({PX_DEVICE_URI}).elem_list - ))) - ))); + m_http_request_post( + "/t/r143f-1528105031/post", + v_headers, + m_http_message_body_xml(m_body_xml_location_request( + m_locationRequest( + { encvalue_unichar(valueof(m_device({ PX_DEVICE_URI_TEL }))) }, + m_locationTypeType(m_locationTypeBase_geodetic, true) + ) + ) + ) + ) + ) + ); f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success); // Test body tc_ac.start; alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_location_response( - mw_locationResponse - ))))) { - tc_ac.stop; - // TODO Need to decode content - log("*** " & testcasename() & ": PASS: IUT successfully responds with a Point ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_body_xml_location_response( + mw_locationResponse(-, ?) + ))))) -> value v_response { + var Presence v_presence; + var Tuple v_tuple; + var Geopriv v_geopriv; + var Circle v_circle; + var universal charstring v_temp; + var integer v_result; + + tc_ac.stop; + + // Extract presence element from Location-Response + v_temp := v_response.response.body.xml_body.locationResponse.elem_list[0]; + v_result := decvalue_unichar(v_temp, v_presence); + if (v_result == 0) { + if (match(v_presence, mw_presence)) { + // Extract first Tuple element from Presence + v_tuple := v_presence.tuple_list[0]; + v_temp := v_tuple.status.elem_list[0]; + // Extract Geopriv element from Tuple + v_result := decvalue_unichar(v_temp, v_geopriv); + if (v_result == 0) { + if (match(v_geopriv, mw_geopriv(mw_location_info({ ? })))) { + // Extract Circle element from Tuple + v_temp := v_geopriv.location_info.elem_list[0]; + v_result := decvalue_unichar(v_temp, v_circle); + if (match(v_circle, mw_circle(mw_center_group_pos(PX_CIRCLE_POS), mw_radius(PX_CIRCLE_UOM, PX_CIRCLE_BASE), PX_SRS_NAME))) { + log("*** " & testcasename() & ": PASS: IUT successfully responds with a Point ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } else { + log("*** " & testcasename() & ": FAIL: Incorrect Circle position ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } else { + log("*** " & testcasename() & ": FAIL: Unexpected response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } else { + log("*** " & testcasename() & ": FAIL: Unexpected response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } else { + log("*** " & testcasename() & ": FAIL: Unexpected response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } else { + log("*** " & testcasename() & ": FAIL: Unexpected response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); } + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } } // End of 'alt' statement // Postamble @@ -137,6 +194,7 @@ module AtsNg112_TestCases { testcase TC_LIS_HTTP_POST_BV_02() runs on HttpComponent system TestAdapter { // Local variables var HeaderLines v_headers; + var HttpMessage v_response; // Test control if (not(PICS_LIS_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_LOCATION_HELD)) { @@ -152,40 +210,85 @@ module AtsNg112_TestCases { // Preamble f_init_default_headers_list(v_headers); - f_remove_headears_list({ c_header_accept }, v_headers); httpPort.send( m_http_request( - m_http_request_get( - PICS_LISP_URI, - v_headers, - m_http_message_body_xml( - m_body_xml_location_request( - m_locationRequest( - m_device({PX_DEVICE_URI}).elem_list - ))) - ))); + m_http_request_post( + "/t/r143f-1528105031/post", + v_headers, + m_http_message_body_xml(m_body_xml_location_request( + m_locationRequest( + { encvalue_unichar(valueof(m_device({ PX_DEVICE_URI_TEL }))) }, + m_locationTypeType(m_locationTypeBase_geodetic, true) + ) + ) + ) + ) + ) + ); f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success); // Test body tc_ac.start; alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_location_response( - mw_locationResponse - ))))) { - tc_ac.stop; - // TODO Need to decode content - log("*** " & testcasename() & ": PASS: IUT successfully responds with a Circle ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_body_xml_location_response( + mw_locationResponse(-, ?) + ))))) -> value v_response { + var Presence v_presence; + var Tuple v_tuple; + var Geopriv v_geopriv; + var Circle v_circle; + var universal charstring v_temp; + var integer v_result; + + tc_ac.stop; + + // Extract presence element from Location-Response + v_temp := v_response.response.body.xml_body.locationResponse.elem_list[0]; + v_result := decvalue_unichar(v_temp, v_presence); + if (v_result == 0) { + if (match(v_presence, mw_presence)) { + // Extract first Tuple element from Presence + v_tuple := v_presence.tuple_list[0]; + v_temp := v_tuple.status.elem_list[0]; + // Extract Geopriv element from Tuple + v_result := decvalue_unichar(v_temp, v_geopriv); + if (v_result == 0) { + if (match(v_geopriv, mw_geopriv(mw_location_info({ ? })))) { + // Extract Circle element from Tuple + v_temp := v_geopriv.location_info.elem_list[0]; + v_result := decvalue_unichar(v_temp, v_circle); + if (match(v_circle, mw_circle(mw_center_group_pos(PX_CIRCLE_POS), mw_radius(PX_CIRCLE_UOM, PX_CIRCLE_BASE), PX_SRS_NAME))) { + log("*** " & testcasename() & ": PASS: IUT successfully responds with a Point ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } else { + log("*** " & testcasename() & ": FAIL: Incorrect Circle position ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } else { + log("*** " & testcasename() & ": FAIL: Unexpected response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } else { + log("*** " & testcasename() & ": FAIL: Unexpected response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } else { + log("*** " & testcasename() & ": FAIL: Unexpected response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } else { + log("*** " & testcasename() & ": FAIL: Unexpected response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); } + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } } // End of 'alt' statement // Postamble @@ -213,6 +316,7 @@ module AtsNg112_TestCases { testcase TC_LIS_HTTP_POST_BV_03() runs on HttpComponent system TestAdapter { // Local variables var HeaderLines v_headers; + var HttpMessage v_response; // Test control if (not(PICS_LIS_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_LOCATION_HELD)) { @@ -231,37 +335,57 @@ module AtsNg112_TestCases { f_remove_headears_list({ c_header_accept }, v_headers); httpPort.send( m_http_request( - m_http_request_get( - PICS_LISP_URI, - v_headers, - m_http_message_body_xml( - m_body_xml_location_request( - m_locationRequest( - m_device({PX_UNKNOWN_DEVICE_URI}).elem_list - ))) - ))); + m_http_request_post( + "/t/r143f-1528105031/post", + v_headers, + m_http_message_body_xml(m_body_xml_location_request( + m_locationRequest( + { encvalue_unichar(valueof(m_device({ PX_DEVICE_URI_TEL }))) }, + m_locationTypeType(m_locationTypeBase_geodetic, true) + ) + ) + ) + ) + ) + ); f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success); // Test body tc_ac.start; alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_location_response( - mw_locationResponse - ))))) { - tc_ac.stop; - // TODO Need to decode content - log("*** " & testcasename() & ": PASS: IUT successfully responds with 'locationUnknoew' error response ***"); + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_body_xml_location_response( + mw_locationResponse(-, ?) + ))))) -> value v_response { + var Presence v_presence; + var universal charstring v_temp; + var integer v_result; + + tc_ac.stop; + + // Extract presence element from Location-Response + v_temp := v_response.response.body.xml_body.locationResponse.elem_list[0]; + v_result := decvalue_unichar(v_temp, v_presence); + if (v_result == 0) { + if (match(v_presence, mw_presence)) { + log("*** " & testcasename() & ": PASS: Error message received ***"); f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } else { + log("*** " & testcasename() & ": FAIL: Unexpected response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } else { + log("*** " & testcasename() & ": FAIL: Unexpected response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); } + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } } // End of 'alt' statement // Postamble @@ -319,7 +443,7 @@ module AtsNg112_TestCases { m_http_message_body_xml( m_body_xml_location_request( m_locationRequest( - m_device({PX_DEVICE_URI}).elem_list + m_device({ PX_DEVICE_URI_TEL }).elem_list ))) ))); f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success); diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn index d0768ba..3b407d7 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn @@ -6,6 +6,9 @@ module LibNg112_Functions { import from LibCommon_Sync all; // LibHttp + import from LibItsHttp_TypesAndValues all; + import from LibItsHttp_Templates all; + import from LibItsHttp_XmlTemplates all; import from LibItsHttp_TestSystem all; // LibNg112 @@ -21,7 +24,10 @@ module LibNg112_Functions { // Connect f_connect4SelfOrClientSync(); + activate(a_cf_01_http_down()); + activate(a_default_requests()); + activate(a_default_responses()); } // End of function f_cf_01_http_up @@ -47,8 +53,58 @@ module LibNg112_Functions { // Disconnect ports f_disconnect4SelfOrClientSync(); + + deactivate; } // End of function f_cf_01_http_down } // End of group postambles + + group altsteps { + + altstep a_default_requests() runs on HttpComponent { + [] httpPort.receive(mw_http_request) { + tc_ac.stop; + log("*** " & testcasename() & ": FAIL: Server error: Receive request istead of response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } // End of altstep a_default_requests + + altstep a_default_responses() runs on HttpComponent { + var HttpMessage v_response; + + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml + ))) { + tc_ac.stop; + log("*** " & testcasename() & ": FAIL: Unexpected XML response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_binary + ))) { + tc_ac.stop; + log("*** " & testcasename() & ": FAIL: Unexpected binary response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + [] httpPort.receive( + mw_http_response( + mw_http_response_ko + )) -> value v_response { + tc_ac.stop; + log("*** " & testcasename() & ": FAIL: Server error: " & int2str(v_response.response.statuscode) & "/" & v_response.response.statustext & " ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + [] httpPort.receive(mw_http_response) -> value v_response { + tc_ac.stop; + log("*** " & testcasename() & ": FAIL: Server error: " & int2str(v_response.response.statuscode) & "/" & v_response.response.statustext & " ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } // End of altstep a_default_responses + + } // end of group altsteps } // End of module LibNg112_Functions diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn index 62f6d27..f110e9b 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn @@ -1,28 +1,40 @@ module LibNg112_Pixits { - /** - * @desc Device identofoer - */ - modulepar charstring PX_DEVICE_URI := "sip:user@example.net;gr=kjh29x97us97d"; + import from XSD all; + + // OpenGIS + import from urn_ietf_params_xml_ns_pidf_geopriv10_geoShape language "XSD" all; + import from http_www_opengis_net_gml language "XSD" all; + + /** + * @desc Device identifier using SIP uri + */ + modulepar charstring PX_DEVICE_URI_SIP := "sip:user@example.net;gr=kjh29x97us97d"; - /** - * @desc Unknown device identifier - */ - modulepar charstring PX_UNKNOWN_DEVICE_URI := "sip:no_one@example.net;gr=kjh29x97us97d"; + /** + * @desc Device identifier using TEL uri + */ + modulepar charstring PX_DEVICE_URI_TEL := "+436501234567"; - /** - * @desc Device position - */ - modulepar float PX_DEVICE_POSITION := 0.0; - - /** - * @desc Device position with a circle of conficence - */ - modulepar float PX_DEVICE_CIRCLE_POSITION := 0.0; - - /** - * @desc Device position with a circle of conficence - */ - modulepar float PX_DEVICE_CIRCLE_RADIUS := 0.0; + /** + * @desc Unknown device identifier + */ + modulepar charstring PX_UNKNOWN_DEVICE_URI := "sip:no_one@example.net;gr=kjh29x97us97d"; + + /** + * @desc Device point position + */ + modulepar DoubleList PX_DEVICE_POSITION := { 48.2153879, 16.2903 }; + /** + * @desc Device position with a circle of conficence + */ + modulepar DoubleList PX_CIRCLE_POS := { 48.2153879, 16.2903 }; + + modulepar XSD.AnyURI PX_CIRCLE_UOM := "urn:ogc:def:uom:EPSG::9001"; + + modulepar XSD.Double PX_CIRCLE_BASE := 23.600000381469727; + + modulepar XSD.AnyURI PX_SRS_NAME := "urn:ogc:def:crs:EPSG::4326"; + } // End of module LibNg112_Pixits -- GitLab From 1640dbbb8ca4bae2eccfa50e162c236d151a780f Mon Sep 17 00:00:00 2001 From: Garcia Date: Thu, 5 Jul 2018 15:24:25 +0200 Subject: [PATCH 30/72] Update Dockerfile --- docker/Dockerfile | 11 +++--- docker/build-container.sh | 2 ++ scripts/ng112.bash | 14 ++++---- scripts/testcodec_generate_makefile.bash | 34 +++++++++---------- ttcn/AtsNg112/AtsNg112_TestCases.ttcn | 3 +- .../LibNg112/ttcn/LibNg112_Pixits.ttcn | 3 +- 6 files changed, 36 insertions(+), 31 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 5f28f3c..3914e72 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -76,13 +76,14 @@ RUN echo "docker-titan-STF549" > /etc/hostname \ USER etsi -ADD ~/.ssh/id_rsa /home/etsi/.ssh/id_rsa -ADD ~/.ssh/id_rsa_pub /home/etsi/.ssh/id_rsa_pub - RUN cd /home/etsi \ - && mkdir -p .ssh bin lib include tmp frameworks docs man dev \ - && cd /home/etsi/dev \ + && mkdir -p .ssh bin lib include tmp frameworks docs man dev + +ADD id_rsa* /home/etsi/.ssh/id_rsa + +RUN cd /home/etsi/dev \ && git clone https://forge.etsi.org/gitlab/emergency-communications/NG112 ./STF549_Ng112 \ + && cd /home/etsi/dev/STF549_Ng112 \ && git checkout TTCN_3_Developments \ && cd /home/etsi/dev/STF549_Ng112/ttcn \ && svn co --non-interactive svn+ssh://forge.etsi.org/svn/LibSip/trunk ./LibSip \ diff --git a/docker/build-container.sh b/docker/build-container.sh index 8403ff0..1e8134c 100644 --- a/docker/build-container.sh +++ b/docker/build-container.sh @@ -13,7 +13,9 @@ then then docker rmi -f $(docker images -q) fi + cp ~/.ssh/id_rsa* . docker build --tag stf525_its --force-rm . + rm ./id_rsa* if [ "$?" != "0" ] then echo "Docker build failed: $?" diff --git a/scripts/ng112.bash b/scripts/ng112.bash index 5c4c2c5..7e6a0cc 100644 --- a/scripts/ng112.bash +++ b/scripts/ng112.bash @@ -178,19 +178,19 @@ if [ "$1" == "prof" ] then if [ "${OSTYPE}" == "cygwin" ] then - CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -D_XOPEN_SOURCE=700 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector/g' + CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -D_XOPEN_SOURCE=700 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' else - CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector/g' + CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' fi - LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fstack-check -fstack-protector/g' + LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' else if [ "${OSTYPE}" == "cygwin" ] then - CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector/g' + CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' else - CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -DAS_USE_SSL -pthread -fstack-check -fstack-protector/g' + CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -DAS_USE_SSL -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' fi - LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fstack-check -fstack-protector/g' + LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' fi ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_EMCOM)/include -I$(PATH_DEV_EMCOM)/framework/include -I../include -I../../LibEmcom/Common/include -I../../LibEmcom/LibNg112/include -I$(HOME_FRAMEWORKS)/osip/include -I$(HOME_INC) -I.' ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lpcap -lstdc++fs -lssl -L\$\(HOME_FRAMEWORKS\)\/osip\/src\/osipparser2\/\.libs -losipparser2/g' @@ -237,6 +237,6 @@ if [ "$?" == "1" ] then f_exit "Failed to generate ATS source code" 9 fi -export LD_LIBRARY_PATH=~export LD_LIBRARY_PATH=~/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH +export LD_LIBRARY_PATH=~/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH ../bin/Ats${ATS_NAME} -v f_exit "Build done successfully" 0 diff --git a/scripts/testcodec_generate_makefile.bash b/scripts/testcodec_generate_makefile.bash index cdec2ac..9a4c288 100644 --- a/scripts/testcodec_generate_makefile.bash +++ b/scripts/testcodec_generate_makefile.bash @@ -77,25 +77,25 @@ do # TTCN code for j in `find ${PATH_DEV_EMCOM}/src/$i/ttcn -type f -name "*.ttcn"`; do - ln -sf $j ../ttcn/`basename $j` + ln -sf $j ../ttcn/`basename $j` done # Include source code files=`find ${PATH_DEV_EMCOM}/src/$i/include -type f` if [ "${files}" != " " ] then - for j in ${files}; - do - ln -sf $j ../include/`basename $j` - done + for j in ${files}; + do + ln -sf $j ../include/`basename $j` + done fi # CC source code files=`find ${PATH_DEV_EMCOM}/src/$i/src -type f` if [ "${files}" != " " ] then - for j in ${files}; - do - ln -sf $j ../src/`basename $j` - done + for j in ${files}; + do + ln -sf $j ../src/`basename $j` + done fi done @@ -153,14 +153,14 @@ for i in `ls ../include/*.hh` do if [ -f ./`basename $i` ] then - rm ./`basename $i` + rm ./`basename $i` fi done for i in `ls ../src/*.cc` do if [ -f ./`basename $i` ] then - rm ./`basename $i` + rm ./`basename $i` fi done @@ -178,19 +178,19 @@ if [ "$1" == "prof" ] then if [ "${OSTYPE}" == "cygwin" ] then - CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -D_XOPEN_SOURCE=700 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector/g' + CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -D_XOPEN_SOURCE=700 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' else - CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector/g' + CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' fi - LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fstack-check -fstack-protector/g' + LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' else if [ "${OSTYPE}" == "cygwin" ] then - CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector/g' + CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' else - CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -DAS_USE_SSL -pthread -fstack-check -fstack-protector/g' + CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -DAS_USE_SSL -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' fi - LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fstack-check -fstack-protector/g' + LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fstack-check -fstack-protector -fsanitize=address -fno-omit-frame-pointer -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' fi ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_EMCOM)/include -I$(PATH_DEV_EMCOM)/framework/include -I../include -I../../LibEmcom/Common/include -I../../LibEmcom/LibNg112/include -I$(HOME_FRAMEWORKS)/osip/include -I$(HOME_INC) -I.' ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lpcap -lstdc++fs -lssl -L\$\(HOME_FRAMEWORKS\)\/osip\/src\/osipparser2\/\.libs -losipparser2/g' diff --git a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn index ceab2d7..b67ac1b 100644 --- a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn +++ b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn @@ -139,7 +139,8 @@ module AtsNg112_TestCases { // Extract Circle element from Tuple v_temp := v_geopriv.location_info.elem_list[0]; v_result := decvalue_unichar(v_temp, v_circle); - if (match(v_circle, mw_circle(mw_center_group_pos(PX_CIRCLE_POS), mw_radius(PX_CIRCLE_UOM, PX_CIRCLE_BASE), PX_SRS_NAME))) { + log(match(v_circle, mw_circle(mw_center_group_pos(PX_CIRCLE_POS), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_BASE - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_BASE + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME))); // Required by TITAN to get details in case of mismatch + if (match(v_circle, mw_circle(mw_center_group_pos(PX_CIRCLE_POS), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_BASE - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_BASE + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME))) { log("*** " & testcasename() & ": PASS: IUT successfully responds with a Point ***"); f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); } else { diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn index f110e9b..b437031 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn @@ -5,7 +5,8 @@ module LibNg112_Pixits { // OpenGIS import from urn_ietf_params_xml_ns_pidf_geopriv10_geoShape language "XSD" all; import from http_www_opengis_net_gml language "XSD" all; - + + modulepar XSD.Double PX_DOUBLE_CMP_EPSILON := 0.00001; /** * @desc Device identifier using SIP uri */ -- GitLab From 58ea677fbec58e3118d3ac86fe49f91b2db18b3b Mon Sep 17 00:00:00 2001 From: vagrant Date: Thu, 5 Jul 2018 15:37:15 +0200 Subject: [PATCH 31/72] Add 775 permissions on sh & bash files --- docker/build-container.sh | 0 docker/run-container.sh | 0 docker/validate-in-docker.sh | 0 scripts/build_titan.bash | 0 scripts/ng112.bash | 0 scripts/testcodec_generate_makefile.bash | 0 scripts/update_emcom_project.bash | 0 7 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 docker/build-container.sh mode change 100644 => 100755 docker/run-container.sh mode change 100644 => 100755 docker/validate-in-docker.sh mode change 100644 => 100755 scripts/build_titan.bash mode change 100644 => 100755 scripts/ng112.bash mode change 100644 => 100755 scripts/testcodec_generate_makefile.bash mode change 100644 => 100755 scripts/update_emcom_project.bash diff --git a/docker/build-container.sh b/docker/build-container.sh old mode 100644 new mode 100755 diff --git a/docker/run-container.sh b/docker/run-container.sh old mode 100644 new mode 100755 diff --git a/docker/validate-in-docker.sh b/docker/validate-in-docker.sh old mode 100644 new mode 100755 diff --git a/scripts/build_titan.bash b/scripts/build_titan.bash old mode 100644 new mode 100755 diff --git a/scripts/ng112.bash b/scripts/ng112.bash old mode 100644 new mode 100755 diff --git a/scripts/testcodec_generate_makefile.bash b/scripts/testcodec_generate_makefile.bash old mode 100644 new mode 100755 diff --git a/scripts/update_emcom_project.bash b/scripts/update_emcom_project.bash old mode 100644 new mode 100755 -- GitLab From fe228ad0dc167d215ec009f3efc9569af02d0d45 Mon Sep 17 00:00:00 2001 From: vagrant Date: Thu, 5 Jul 2018 15:43:53 +0200 Subject: [PATCH 32/72] Bug fixed in docker/build-container.sh --- docker/build-container.sh | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/docker/build-container.sh b/docker/build-container.sh index 1e8134c..a798894 100755 --- a/docker/build-container.sh +++ b/docker/build-container.sh @@ -2,19 +2,14 @@ # Copyright ETSI 2018 # See: https://forge.etsi.org/etsi-forge-copyright-statement.txt -set -e +#set -e set -vx DOCKER_FILE=./Dockerfile if [ -f ${DOCKER_FILE} ] then - IMAGES=$(docker images -q) - if [ "${IMAGES}" != "" ] - then - docker rmi -f $(docker images -q) - fi cp ~/.ssh/id_rsa* . - docker build --tag stf525_its --force-rm . + docker build --tag stf549_ng112 --force-rm . rm ./id_rsa* if [ "$?" != "0" ] then -- GitLab From 9cc61fac6c58f695839fa98b5a7db4f8d54e4d69 Mon Sep 17 00:00:00 2001 From: vagrant Date: Thu, 5 Jul 2018 16:00:51 +0200 Subject: [PATCH 33/72] Bug fixed in docker/build-container.sh --- docker/build-container.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/build-container.sh b/docker/build-container.sh index a798894..808e4b0 100755 --- a/docker/build-container.sh +++ b/docker/build-container.sh @@ -17,7 +17,7 @@ then exit -1 fi docker image ls -a - docker inspect stf525_its:latest + docker inspect stf549_ng112:latest if [ "$?" != "0" ] then echo "Docker inspect failed: $?" -- GitLab From 73f79e19d13e1765799c6d6271ae27021c442808 Mon Sep 17 00:00:00 2001 From: vagrant Date: Thu, 5 Jul 2018 16:07:11 +0200 Subject: [PATCH 34/72] Bug fixed in docker/build-container.sh --- docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 3914e72..709e14e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -79,7 +79,7 @@ USER etsi RUN cd /home/etsi \ && mkdir -p .ssh bin lib include tmp frameworks docs man dev -ADD id_rsa* /home/etsi/.ssh/id_rsa +ADD id_rsa* /home/etsi/.ssh RUN cd /home/etsi/dev \ && git clone https://forge.etsi.org/gitlab/emergency-communications/NG112 ./STF549_Ng112 \ -- GitLab From 5007a9d86df48a614c0a842f7b372619213fb99c Mon Sep 17 00:00:00 2001 From: vagrant Date: Thu, 5 Jul 2018 16:16:13 +0200 Subject: [PATCH 35/72] Bug fixed in docker/Dockerfile --- docker/Dockerfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 709e14e..9849a88 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -72,14 +72,14 @@ RUN echo "docker-titan-STF549" > /etc/hostname \ && echo "export LD_LIBRARY_PATH=/home/etsi/TriesAndDelete/etsi_its/lib:$LD_LIBRARY_PATH" >> /etc/profile \ && echo "export PATH=/home/etsi/bin:$PATH" >> /etc/profile \ && echo "cd /home/etsi" >> /etc/profile \ - && echo ". ./devenv.bash" >> /etc/profile + && echo ". ./devenv.bash" >> /etc/profile \ + && cd /home/etsi \ + && mkdir -p .ssh bin lib include tmp frameworks docs man dev \ + && chown etsi:etsi .ssh bin lib include tmp frameworks docs man dev USER etsi -RUN cd /home/etsi \ - && mkdir -p .ssh bin lib include tmp frameworks docs man dev - -ADD id_rsa* /home/etsi/.ssh +ADD id_rsa* /home/etsi/.ssh/ RUN cd /home/etsi/dev \ && git clone https://forge.etsi.org/gitlab/emergency-communications/NG112 ./STF549_Ng112 \ -- GitLab From 371b8233331c614b3c71ed788c71caecd85726be Mon Sep 17 00:00:00 2001 From: Yann Garcia Date: Fri, 6 Jul 2018 09:09:20 +0200 Subject: [PATCH 36/72] Update Dockerfile --- docker/Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 9849a88..16f9d52 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -86,8 +86,9 @@ RUN cd /home/etsi/dev \ && cd /home/etsi/dev/STF549_Ng112 \ && git checkout TTCN_3_Developments \ && cd /home/etsi/dev/STF549_Ng112/ttcn \ - && svn co --non-interactive svn+ssh://forge.etsi.org/svn/LibSip/trunk ./LibSip \ - && svn co --non-interactive svn+ssh://forge.etsi.org/svn/LibCommon/trunk/ttcn ./LibCommon/ttcn \ + && ssh-agent -s \ + && svn+ssh co --non-interactive svn+ssh://forge.etsi.org/svn/LibSip/trunk ./LibSip \ + && svn+ssh co --non-interactive svn+ssh://forge.etsi.org/svn/LibCommon/trunk/ttcn ./LibCommon/ttcn \ && cd /home/etsi/dev/STF549_Ng112/scripts \ && chmod 775 *.bash devenv.bash.* \ && cd /home/etsi \ -- GitLab From d325554538e80cd4260fa8fefe0140557cfe1d87 Mon Sep 17 00:00:00 2001 From: Yann Garcia Date: Fri, 6 Jul 2018 09:16:24 +0200 Subject: [PATCH 37/72] Update Dockerfile --- docker/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 16f9d52..01ded0e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -87,8 +87,8 @@ RUN cd /home/etsi/dev \ && git checkout TTCN_3_Developments \ && cd /home/etsi/dev/STF549_Ng112/ttcn \ && ssh-agent -s \ - && svn+ssh co --non-interactive svn+ssh://forge.etsi.org/svn/LibSip/trunk ./LibSip \ - && svn+ssh co --non-interactive svn+ssh://forge.etsi.org/svn/LibCommon/trunk/ttcn ./LibCommon/ttcn \ + && svn co --non-interactive svn+ssh://forge.etsi.org/svn/LibSip/trunk ./LibSip \ + && svn co --non-interactive svn+ssh://forge.etsi.org/svn/LibCommon/trunk/ttcn ./LibCommon/ttcn \ && cd /home/etsi/dev/STF549_Ng112/scripts \ && chmod 775 *.bash devenv.bash.* \ && cd /home/etsi \ -- GitLab From 9190a00a3879dfa7f6c3175c6c912e0b995eec2f Mon Sep 17 00:00:00 2001 From: Garcia Date: Fri, 6 Jul 2018 10:12:36 +0200 Subject: [PATCH 38/72] Add Vagrant files --- vagrant/Vagrantfile | 73 +++++++++++++++++ vagrant/provisioner.bash | 168 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 241 insertions(+) create mode 100644 vagrant/Vagrantfile create mode 100644 vagrant/provisioner.bash diff --git a/vagrant/Vagrantfile b/vagrant/Vagrantfile new file mode 100644 index 0000000..980c937 --- /dev/null +++ b/vagrant/Vagrantfile @@ -0,0 +1,73 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +# All Vagrant configuration is done below. The "2" in Vagrant.configure +# configures the configuration version (we support older styles for +# backwards compatibility). Please don't change it unless you know what +# you're doing. +Vagrant.configure("2") do |config| + # The most common configuration options are documented and commented below. + # For a complete reference, please see the online documentation at + # https://docs.vagrantup.com. + + # Every Vagrant development environment requires a box. You can search for + # boxes at https://atlas.hashicorp.com/search. + config.vm.box = "bento/ubuntu-18.04" + + # Disable automatic box update checking. If you disable this, then + # boxes will only be checked for updates when the user runs + # `vagrant box outdated`. This is not recommended. + # config.vm.box_check_update = false + + config.vm.boot_timeout = 900 + + # Use this hostname to force provisioner script to using SVN instead of external HDD + #config.vm.hostname = "vagrant-prov" + + # Create a forwarded port mapping which allows access to a specific port + # within the machine from a port on the host machine. In the example below, + # accessing "localhost:8080" will access port 80 on the guest machine. + # config.vm.network "forwarded_port", guest: 80, host: 8080 + + # Create a private network, which allows host-only access to the machine + # using a specific IP. + #config.vm.network "private_network", ip: "192.168.4.94" + + # Create a public network, which generally matched to bridged network. + # Bridged networks make the machine appear as another physical device on + # your network. + #config.vm.network "public_network" + + # Share an additional folder to the guest VM. The first argument is + # the path on the host to the actual folder. The second argument is + # the path on the guest to mount the folder. And the optional third + # argument is a set of non-required options. + + # Provider-specific configuration so you can fine-tune various + # backing providers for Vagrant. These expose provider-specific options. + # Example for VirtualBox: + # + config.vm.provider "virtualbox" do |vb| + # Display the VirtualBox GUI when booting the machine + #vb.gui = true + vb.customize ["modifyvm", :id, "--monitorcount", "1"] + vb.customize ["modifyvm", :id, "--vram", "12"] + # Customize the amount of memory on the VM: + vb.memory = "4096" + end + # + # View the documentation for the provider you are using for more + # information on available options. + + # Define a Vagrant Push strategy for pushing to Atlas. Other push strategies + # such as FTP and Heroku are also available. See the documentation at + # https://docs.vagrantup.com/v2/push/atlas.html for more information. + # config.push.define "atlas" do |push| + # push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME" + # end + + # Enable provisioning with a shell script. Additional provisioners such as + # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the + # documentation for more information about their specific syntax and use. + config.vm.provision "shell", path: "provisioner.bash", args: " ", privileged: false +end diff --git a/vagrant/provisioner.bash b/vagrant/provisioner.bash new file mode 100644 index 0000000..29e9918 --- /dev/null +++ b/vagrant/provisioner.bash @@ -0,0 +1,168 @@ +#!/bin/bash +# Prepare environment for the build +#set -e # Exit with non 0 if any command fails +#set -vx + +# Update system +sudo DEBIAN_FRONTEND=noninteractive apt-get update +sudo DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y +sudo DEBIAN_FRONTEND=noninteractive apt-get install software-properties-common -y +sudo DEBIAN_FRONTEND=noninteractive add-apt-repository ppa:linuxuprising/java -y +sudo DEBIAN_FRONTEND=noninteractive apt-get update +sudo DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated install emacs openjdk-11-jre gcc-8 g++-8 git subversion lsof ntp gdb make cmake flex bison autoconf doxygen graphviz libtool libncurses5-dev expect libssl-dev libxml2-dev xutils-dev tcpdump libpcap-dev libwireshark-dev wget tree unzip sshpass kubuntu-desktop valgrind qt5-default qtmultimedia5-dev libqt5svg5-dev vim tzdata dos2unix xsltproc -y +# Install java +#sudo DEBIAN_FRONTEND=noninteractive apt-get install oracle-java9-installer oracle-java9-set-default -y +#sudo DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated install oracle-java10-installer oracle-java10-set-default -y +#sudo DEBIAN_FRONTEND=noninteractive apt --fix-broken install -y +sudo DEBIAN_FRONTEND=noninteractive apt-get autoremove --purge -y +sudo DEBIAN_FRONTEND=noninteractive apt-get clean + +gcc --version +g++ --version +valgrind --version +java -version + +export USERNAME=$1 +export PASSWORD=$2 + +export HOME=/home/vagrant + +export PATH_DEV=${HOME}/dev +export HOME_FRAMEWORKS=${HOME}/frameworks +export HOME_LIB=${HOME}/lib +export HOME_BIN=${HOME}/bin +export HOME_ETC=${HOME}/etc +export HOME_INC=${HOME}/include +export HOME_TMP=${HOME}/tmp +export HOME_DOCS=${HOME}/docs +export PATH=${HOME_BIN}:${PATH} +export LD_LIBRARY_PATH=${HOME_LIB}:/usr/local/lib:${LD_LIBRARY_PATH} + +OLD_PWD=`pwd` +# Create directories +mkdir -p ${HOME_LIB} +if [ ! -d ${HOME_LIB} ] +then + exit -1 +fi +mkdir -p ${HOME_INC} +if [ ! -d ${HOME_INC} ] +then + exit -1 +fi +mkdir -p ${HOME_BIN} +if [ ! -d ${HOME_BIN} ] +then + exit -1 +fi +mkdir -p ${HOME_TMP} +if [ ! -d ${HOME_TMP} ] +then + exit -1 +fi +mkdir -p ${HOME_DOCS} +if [ ! -d ${HOME_DOCS} ] +then + exit -1 +fi +mkdir -p ${HOME_FRAMEWORKS} +if [ ! -d ${HOME_FRAMEWORKS} ] +then + exit -1 +fi +mkdir -p ${PATH_DEV} +if [ ! -d ${PATH_DEV} ] +then + exit -1 +fi + +cd /home/vagrant/dev +svn co --username $USERNAME --password $PASSWORD --non-interactive https://oldforge.vagrant.org/svn/ITS/branches/STF525 ./STF525_Its +cd /home/vagrant/dev/STF525_Its/scripts +chmod 775 *.bash devenv.bash.* +cd /home/vagrant/dev/STF525_Its/docker +chmod 775 *.sh +cd /home/vagrant/dev/STF525_Its +chmod 775 ./.jenkins.sh +cd /home/vagrant +ln -sf /home/vagrant/dev/STF525_Its/scripts/devenv.bash.ubuntu /home/vagrant/devenv.bash +. /home/vagrant/devenv.bash + +# Install all frameworks +cd ${HOME_FRAMEWORKS} + +# Install asn1c +cd ${HOME_FRAMEWORKS} +git clone https://github.com/vlm/asn1c.git asn1c +cd ${HOME_FRAMEWORKS}/asn1c +test -f configure || autoreconf -iv +./configure +make && sudo make install +cd - + +# Install GoogleTest +cd ${HOME_FRAMEWORKS} +git clone https://github.com/google/googletest.git googletest +cd ${HOME_FRAMEWORKS}/googletest/ +cmake . +make CXX=g++ +sudo make install +cd - + +# Install latest LCOV +mkdir -p ${HOME_FRAMEWORKS}/lcov +cd ${HOME_FRAMEWORKS}/lcov +wget http://ftp.de.debian.org/debian/pool/main/l/lcov/lcov_1.13.orig.tar.gz +tar xf lcov_1.13.orig.tar.gz +sudo make -C lcov-1.13/ install +cd - + +# Install lcov to coveralls conversion +sudo gem install coveralls-lcov + +lcov --version +coveralls-lcov -h + +# Install eclipse +cd ${HOME_FRAMEWORKS} + +wget 'http://ftp.halifax.rwth-aachen.de/eclipse/technology/epp/downloads/release/oxygen/2/eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz' -Oeclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz +tar -zxvf ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz +rm -f ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz + +# Checkout the project +if [ ${USERNAME} != '' ] && [ ${PASSWORD} != '' ] +then + cd ${HOME}/tmp + svn co --username $USERNAME --password $PASSWORD --non-interactive https://oldforge.etsi.org/svn/ITS/branches/STF525 +else + echo "Pease set & in your local Vagrantfile" + exit -1 +fi + +sudo echo "" >> /etc/profile +sudo echo "export HOME=/home/etsi" >> /etc/profile +sudo echo "export LD_LIBRARY_PATH=/home/etsi/TriesAndDelete/etsi_its/lib:$LD_LIBRARY_PATH" >> /etc/profile +sudo echo "export PATH=/home/etsi/bin:$PATH" >> /etc/profile +sudo echo "cd /home/etsi" >> /etc/profile +sudo echo ". ./devenv.bash" >> /etc/profile + +cd /home/vagrant/dev/STF525_Its/scripts +./build_titan.bash +. /home/etsi/devenv.bash +./update_its_project.bash +#ln -sf ~/TriesAndDelete/etsi_its/lib/libItsAsn.so ~/lib/libItsAsn.so +#cd ${HOME}/TriesAndDelete/etsi_its/src/TestCodec/objs +#. ${HOME}/devenv.bash +#../bin/testcodec_generate_makefile.bash +#../bin/run_mtc.bash & +#../bin/run_ptcs.bash + +cd ${OLD_PWD} + +unset USERNAME +unset PASSWORD + +sudo init 6 + +exit 0 -- GitLab From c416ab90f46b5531fb1d0410b2aaf72477347573 Mon Sep 17 00:00:00 2001 From: Garcia Date: Fri, 6 Jul 2018 14:33:34 +0200 Subject: [PATCH 39/72] Add Vagrant files --- scripts/update_emcom_project.bash | 31 +++--------------- vagrant/provisioner.bash | 53 ++++++++++++------------------- 2 files changed, 25 insertions(+), 59 deletions(-) diff --git a/scripts/update_emcom_project.bash b/scripts/update_emcom_project.bash index d1b495d..5b08fbc 100755 --- a/scripts/update_emcom_project.bash +++ b/scripts/update_emcom_project.bash @@ -12,32 +12,9 @@ OLDPWD=`pwd` # Execution path RUN_PATH="${0%/*}" -UNAME=`uname -n` -if [ "${UNAME}" == "Ubuntu64" ] -then # Win7 Virtualbox Ubuntu 16.04 - CHOWN_USER_GROUP=yann:yann - SRC_EMCOM_PATH=/media/sf_F_DRIVE/FSCOM/ETSI/EMCOM/STF549/workspace_titan/STF549_ng112 -elif [ "${UNAME}" == "ubuntu-xenial" ] -then # Vqgrant xenial-ubuntu - CHOWN_USER_GROUP=ubuntu:ubuntu - SRC_EMCOM_PATH=/media/sf_F_DRIVE/FSCOM/ETSI/EMCOM/STF549/workspace_titan/STF549_ng112 -elif [ "${UNAME}" == "vagrant" ] -then # Vagrant xenial-ubuntu - CHOWN_USER_GROUP=vagrant:vagrant - SRC_EMCOM_PATH=/media/sf_F_DRIVE/FSCOM/ETSI/EMCOM/STF549/workspace_titan/STF549_ng112 -elif [ "${UNAME}" == "vagrant-prov" ] -then # Vagrant ubuntu 16.04 with provisioner script to automate ITS project build & test - CHOWN_USER_GROUP=vagrant:vagrant -# CHOWN_USER_GROUP=ubuntu:ubuntu - SRC_EMCOM_PATH=${HOME}/tmp/STF549_ng112 -elif [ "${UNAME}" == "yann-FSCOM" ] -then # Win7 cygwin64 - CHOWN_USER_GROUP=yann:None - SRC_EMCOM_PATH=/cygdrive/f/FSCOM/ETSI/EMCOM/STF549/workspace_titan/STF549_ng112 -else # docket-titan - CHOWN_USER_GROUP=root:root - SRC_EMCOM_PATH=${HOME}/tmp/STF549_ng112 -fi +CHOWN_USER_GROUP=vagrant:vagrant +SRC_EMCOM_PATH=${HOME}/tmp/STF549_ng112 + if [ "${PATH_DEV_EMCOM}" == "" ] then PATH_DEV_EMCOM=`pwd`/../etsi_emcom @@ -198,7 +175,7 @@ done #cd - # Apply patches -PATH_PATCHES=`pwd`/etsi_emcom_patches +PATH_PATCHES=`pwd` if [ -d ${PATH_PATCHES} ] then # Update Ng112 diff --git a/vagrant/provisioner.bash b/vagrant/provisioner.bash index 29e9918..af69ead 100644 --- a/vagrant/provisioner.bash +++ b/vagrant/provisioner.bash @@ -77,19 +77,23 @@ then fi cd /home/vagrant/dev -svn co --username $USERNAME --password $PASSWORD --non-interactive https://oldforge.vagrant.org/svn/ITS/branches/STF525 ./STF525_Its -cd /home/vagrant/dev/STF525_Its/scripts +git clone https://forge.etsi.org/gitlab/emergency-communications/NG112 ./STF549_Ng112 +cd /home/etsi/dev/STF549_Ng112 +git checkout TTCN_3_Developments +cd /home/etsi/dev/STF549_Ng112/ttcn +svn co --username $USERNAME --password $PASSWORD --non-interactive svn+ssh://forge.etsi.org/svn/LibSip/trunk ./LibSip \ +svn co --username $USERNAME --password $PASSWORD --non-interactive svn+ssh://forge.etsi.org/svn/LibCommon/trunk/ttcn ./LibCommon/ttcn \ +cd /home/vagrant/dev/STF549_Ng112/scripts chmod 775 *.bash devenv.bash.* -cd /home/vagrant/dev/STF525_Its/docker +cd /home/vagrant/dev/STF549_Ng112/docker chmod 775 *.sh -cd /home/vagrant/dev/STF525_Its +cd /home/vagrant/dev/STF549_Ng112 chmod 775 ./.jenkins.sh cd /home/vagrant -ln -sf /home/vagrant/dev/STF525_Its/scripts/devenv.bash.ubuntu /home/vagrant/devenv.bash +ln -sf /home/vagrant/dev/STF549_Ng112/scripts/devenv.bash.ubuntu /home/vagrant/devenv.bash . /home/vagrant/devenv.bash # Install all frameworks -cd ${HOME_FRAMEWORKS} # Install asn1c cd ${HOME_FRAMEWORKS} @@ -98,7 +102,6 @@ cd ${HOME_FRAMEWORKS}/asn1c test -f configure || autoreconf -iv ./configure make && sudo make install -cd - # Install GoogleTest cd ${HOME_FRAMEWORKS} @@ -107,15 +110,14 @@ cd ${HOME_FRAMEWORKS}/googletest/ cmake . make CXX=g++ sudo make install -cd - # Install latest LCOV +cd ${HOME_FRAMEWORKS} mkdir -p ${HOME_FRAMEWORKS}/lcov cd ${HOME_FRAMEWORKS}/lcov wget http://ftp.de.debian.org/debian/pool/main/l/lcov/lcov_1.13.orig.tar.gz tar xf lcov_1.13.orig.tar.gz sudo make -C lcov-1.13/ install -cd - # Install lcov to coveralls conversion sudo gem install coveralls-lcov @@ -125,38 +127,25 @@ coveralls-lcov -h # Install eclipse cd ${HOME_FRAMEWORKS} - wget 'http://ftp.halifax.rwth-aachen.de/eclipse/technology/epp/downloads/release/oxygen/2/eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz' -Oeclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz tar -zxvf ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz rm -f ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz -# Checkout the project -if [ ${USERNAME} != '' ] && [ ${PASSWORD} != '' ] -then - cd ${HOME}/tmp - svn co --username $USERNAME --password $PASSWORD --non-interactive https://oldforge.etsi.org/svn/ITS/branches/STF525 -else - echo "Pease set & in your local Vagrantfile" - exit -1 -fi - sudo echo "" >> /etc/profile -sudo echo "export HOME=/home/etsi" >> /etc/profile -sudo echo "export LD_LIBRARY_PATH=/home/etsi/TriesAndDelete/etsi_its/lib:$LD_LIBRARY_PATH" >> /etc/profile -sudo echo "export PATH=/home/etsi/bin:$PATH" >> /etc/profile -sudo echo "cd /home/etsi" >> /etc/profile +sudo echo "export HOME=/home/vagrant" >> /etc/profile +sudo echo "export LD_LIBRARY_PATH=/home/vagrant/dev/etsi_its/lib:$LD_LIBRARY_PATH" >> /etc/profile +sudo echo "export PATH=/home/vagrant/bin:$PATH" >> /etc/profile +sudo echo "cd /home/vagrant" >> /etc/profile sudo echo ". ./devenv.bash" >> /etc/profile -cd /home/vagrant/dev/STF525_Its/scripts +cd /home/vagrant/dev/STF549_Ng112/scripts ./build_titan.bash -. /home/etsi/devenv.bash +. /home/vagrant/devenv.bash ./update_its_project.bash -#ln -sf ~/TriesAndDelete/etsi_its/lib/libItsAsn.so ~/lib/libItsAsn.so -#cd ${HOME}/TriesAndDelete/etsi_its/src/TestCodec/objs -#. ${HOME}/devenv.bash -#../bin/testcodec_generate_makefile.bash -#../bin/run_mtc.bash & -#../bin/run_ptcs.bash +cd /home/vagrant/dev/etsi_emco/src/TestCodec/objs +. ${HOME}/devenv.bash +../bin/testcodec_generate_makefile.bash +../bin/run_all.bash cd ${OLD_PWD} -- GitLab From 22dbbcedd4e92895d95c041bf9389147ce7d26f0 Mon Sep 17 00:00:00 2001 From: Garcia Date: Mon, 9 Jul 2018 14:01:33 +0200 Subject: [PATCH 40/72] Bug fixed in scripts --- docker/Dockerfile | 31 ++- docker/build-container.sh | 4 +- scripts/merge_emcom_project.bash | 261 ++++++++++++++++++ scripts/run_all.bash | 47 ++++ scripts/run_mtc.bash | 55 ++++ scripts/run_ptcs.bash | 38 +++ scripts/run_tshark.bash | 7 + scripts/update_emcom_project.bash | 2 +- ttcn/AtsNg112/AtsNg112_TestCases.ttcn | 11 +- .../LibNg112/ttcn/LibNg112_Pixits.ttcn | 2 +- vagrant/Vagrantfile | 2 +- vagrant/provisioner.bash | 24 +- 12 files changed, 445 insertions(+), 39 deletions(-) create mode 100644 scripts/merge_emcom_project.bash create mode 100644 scripts/run_all.bash create mode 100644 scripts/run_mtc.bash create mode 100644 scripts/run_ptcs.bash create mode 100644 scripts/run_tshark.bash diff --git a/docker/Dockerfile b/docker/Dockerfile index 01ded0e..7995784 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -4,7 +4,7 @@ MAINTAINER ETSI STF 549 LABEL description="STF549 Docker Image" -ENV TERM=linux +ENV TERM=linux ENV HOSTNAME docker-titan-STF549 RUN echo "docker-titan-STF549" > /etc/hostname \ @@ -67,28 +67,26 @@ RUN echo "docker-titan-STF549" > /etc/hostname \ && useradd --create-home --shell /bin/bash etsi \ && echo "etsi:etsi" | chpasswd \ && adduser etsi sudo \ - && echo "" >> /etc/profile \ - && echo "export HOME=/home/etsi" >> /etc/profile \ - && echo "export LD_LIBRARY_PATH=/home/etsi/TriesAndDelete/etsi_its/lib:$LD_LIBRARY_PATH" >> /etc/profile \ - && echo "export PATH=/home/etsi/bin:$PATH" >> /etc/profile \ - && echo "cd /home/etsi" >> /etc/profile \ - && echo ". ./devenv.bash" >> /etc/profile \ && cd /home/etsi \ - && mkdir -p .ssh bin lib include tmp frameworks docs man dev \ - && chown etsi:etsi .ssh bin lib include tmp frameworks docs man dev + && echo "" >> /home/etsi/.bashrc \ + && echo "export HOME=/home/etsi" >> /home/etsi/.bashrc \ + && echo "export LD_LIBRARY_PATH=/home/etsi/dev/etsi_its/lib:$LD_LIBRARY_PATH" >> /home/etsi/.bashrc \ + && echo "export PATH=/home/etsi/bin:$PATH" >> /home/etsi/.bashrc \ + && echo "cd /home/etsi" >> /home/etsi/.bashrc \ + && echo ". ./devenv.bash" >> /home/etsi/.bashrc \ + && . /home/etsi/.bashrc \ + && mkdir -p bin lib include tmp frameworks docs man dev \ + && chown etsi:etsi bin lib include tmp frameworks docs man dev USER etsi -ADD id_rsa* /home/etsi/.ssh/ - RUN cd /home/etsi/dev \ && git clone https://forge.etsi.org/gitlab/emergency-communications/NG112 ./STF549_Ng112 \ && cd /home/etsi/dev/STF549_Ng112 \ && git checkout TTCN_3_Developments \ && cd /home/etsi/dev/STF549_Ng112/ttcn \ - && ssh-agent -s \ - && svn co --non-interactive svn+ssh://forge.etsi.org/svn/LibSip/trunk ./LibSip \ - && svn co --non-interactive svn+ssh://forge.etsi.org/svn/LibCommon/trunk/ttcn ./LibCommon/ttcn \ + && svn co --username svnusers --password svnusers --non-interactive --trust-server-cert https://oldforge.etsi.org/svn/LibSip/trunk ./LibSip \ + && svn co --username svnusers --password svnusers --non-interactive --trust-server-cert https://oldforge.etsi.org/svn/LibCommon/trunk/ttcn ./LibCommon/ttcn \ && cd /home/etsi/dev/STF549_Ng112/scripts \ && chmod 775 *.bash devenv.bash.* \ && cd /home/etsi \ @@ -109,7 +107,10 @@ RUN cd /home/etsi/dev \ && cd /home/etsi/dev/STF549_Ng112/scripts \ && ./build_titan.bash \ && . /home/etsi/devenv.bash \ - && ./update_emcom_project.bash + && ./update_emcom_project.bash \ + && cd ${HOME}/dev/etsi_emco/src/TestCodec/objs \ + && ../bin/testcodec_generate_makefile.bash \ + && ../bin/run_all.bash CMD ["/bin/bash"] diff --git a/docker/build-container.sh b/docker/build-container.sh index 808e4b0..5590d2e 100755 --- a/docker/build-container.sh +++ b/docker/build-container.sh @@ -3,14 +3,12 @@ # See: https://forge.etsi.org/etsi-forge-copyright-statement.txt #set -e -set -vx +#set -vx DOCKER_FILE=./Dockerfile if [ -f ${DOCKER_FILE} ] then - cp ~/.ssh/id_rsa* . docker build --tag stf549_ng112 --force-rm . - rm ./id_rsa* if [ "$?" != "0" ] then echo "Docker build failed: $?" diff --git a/scripts/merge_emcom_project.bash b/scripts/merge_emcom_project.bash new file mode 100644 index 0000000..d131d5d --- /dev/null +++ b/scripts/merge_emcom_project.bash @@ -0,0 +1,261 @@ +#!/bin/bash + +# Debug mode +#set -e +set -vx + +# Usage: sudo ./merge_emcom_project.bash +# TODO Use git clone in temporary directory + +OLDPWD=`pwd` + +# Storing path +VAGRANT_DIR=/vagrant +if [ ! -d ${VAGRANT_DIR} ] +then + exit -1 +else + VAGRANT_DIR=/vagrant/to_be_merged + if [ -d ${VAGRANT_DIR} ] + then + rm -f ${VAGRANT_DIR}/* + else + mkdir ${VAGRANT_DIR} + fi +fi + +# Execution path +RUN_PATH="${0%/*}" +UNAME=`uname -n` +if [ "${UNAME}" == "Ubuntu64" ] +then # Win7 Virtualbox Ubuntu 16.04 + SRC_EMCOM_PATH=/media/sf_F_DRIVE/FSCOM/ETSI/EMCOM/STF549/workspace_titan/STF549_ng112 +elif [ "${UNAME}" == "ubuntu-xenial" ] +then # Vqgrant xenial-ubuntu + SRC_EMCOM_PATH=/media/sf_F_DRIVE/FSCOM/ETSI/EMCOM/STF549/workspace_titan/STF549_ng112 +elif [ "${UNAME}" == "vagrant" ] +then # Vagrant xenial-ubuntu + SRC_EMCOM_PATH=/media/sf_F_DRIVE/FSCOM/ETSI/EMCOM/STF549/workspace_titan/STF549_ng112 +elif [ "${UNAME}" == "vagrant-prov" ] +then # Vagrant ubuntu 16.04 with provisioner script to automate EMCOM project build & test +# CHOWN_USER_GROUP=ubuntu:ubuntu + SRC_EMCOM_PATH=${HOME}/tmp/STF549 +elif [ "${UNAME}" == "yann-FSCOM" ] +then # Win7 cygwin64 + SRC_EMCOM_PATH=/cygdrive/f/FSCOM/ETSI/EMCOM/STF549/workspace_titan/STF549_ng112 +else # docket-titan + SRC_EMCOM_PATH=${HOME}/tmp/STF549_ng112 +fi +if [ "${PATH_DEV_EMCOM}" == "" ] +then + PATH_DEV_EMCOM=`pwd`/../etsi_emcom +fi + +# Update ETSI Framework files +echo 'Merging ETSI Framework files' +FWK_SRC_PATH=${SRC_EMCOM_PATH}/ccsrc +FWK_DST_PATH=${PATH_DEV_EMCOM}/framework +FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/Protocols/ -name "*.h*" -type f` +for i in ${FWK_DIR_LIST_HH} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/include/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/include/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/include/${BN}~ ] + then + rm ${FWK_DST_PATH}/include/${BN}~ + fi + fi +done +FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/Protocols/ -name "*.c*" -type f` +for i in ${FWK_DIR_LIST_CC} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/src/${BN}~ ] + then + rm ${FWK_DST_PATH}/src/${BN}~ + fi + fi +done +FWK_DIR_LIST_Y=`find ${FWK_SRC_PATH}/Protocols/ -name "*.y" -type f` +for i in ${FWK_DIR_LIST_Y} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/src/${BN}~ ] + then + rm ${FWK_DST_PATH}/src/${BN}~ + fi + fi +done +FWK_DIR_LIST_L=`find ${FWK_SRC_PATH}/Protocols/ -name "*.l" -type f` +for i in ${FWK_DIR_LIST_L} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/src/${BN}~ ] + then + rm ${FWK_DST_PATH}/src/${BN}~ + fi + fi +done +FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/Framework/ -name "*.h*" -type f` +FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/Framework/ -name "*.c*" -type f` +for i in ${FWK_DIR_LIST_HH} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/include/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/include/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/include/${BN}~ ] + then + rm ${FWK_DST_PATH}/include/${BN}~ + fi + fi +done +for i in ${FWK_DIR_LIST_CC} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/src/${BN}~ ] + then + rm ${FWK_DST_PATH}/src/${BN}~ + fi + fi +done +FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/loggers/ -name "*.h*" -type f` +for i in ${FWK_DIR_LIST_HH} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/include/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/include/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/include/${BN}~ ] + then + rm ${FWK_DST_PATH}/include/${BN}~ + fi + fi +done +FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/loggers/ -name "*.c*" -type f` +for i in ${FWK_DIR_LIST_CC} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/src/${BN}~ ] + then + rm ${FWK_DST_PATH}/src/${BN}~ + fi + fi +done +# Update ATS TTCN-3 files +echo 'Update TTCN-3 files' +TTCN_3_ORG_PATH=${SRC_EMCOM_PATH}/ttcn +TTCN_3_DST_PATH=${PATH_DEV_EMCOM}/src +TTCN_3_ATS_LIST='AtsNg112 LibEmcom/LibNg112 LibCommon LibSip LibItsHttp' +for i in ${TTCN_3_ATS_LIST} +do + # TTCN-3 files + LIST_TTCN_FILES=`find ${TTCN_3_ORG_PATH}/$i -name "*.ttcn" -type f` + for j in ${LIST_TTCN_FILES} + do + BN=`basename $j` + s1=`sha256sum -b $j | cut -d' ' -f1` + s2=`sha256sum -b ${TTCN_3_DST_PATH}/$i/ttcn/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${TTCN_3_DST_PATH}/$i/ttcn/${BN} ${VAGRANT_DIR} + fi + done + # XSD files + LIST_TTCN_FILES=`find ${TTCN_3_ORG_PATH}/$i -name "*.xsd" -type f` + for j in ${LIST_TTCN_FILES} + do + BN=`basename $j` + s1=`sha256sum -b $j | cut -d' ' -f1` + s2=`sha256sum -b ${TTCN_3_DST_PATH}/$i/ttcn/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${TTCN_3_DST_PATH}/$i/xsd/${BN} ${VAGRANT_DIR} + fi + done + # Other files + if [ -f ${SRC_EMCOM_PATH}/docs/$i/o2.cfg ] + then + s1=`sha256sum -b ${PATH_DEV_EMCOM}/src/$i/docs/o2.cfg | cut -d' ' -f1` + s2=`sha256sum -b ${SRC_EMCOM_PATH}/docs/$i/o2.cfg | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + mkdir -p ${VAGRANT_DIR}/docs/$i + cp ${PATH_DEV_EMCOM}/src/$i/docs/o2.cfg ${VAGRANT_DIR}/docs/$i + fi + fi + if [ -f ${SRC_EMCOM_PATH}/etc/$i/$i.cfg ] + then + s1=`sha256sum -b ${PATH_DEV_EMCOM}/src/$i/etc/$i.cfg | cut -d' ' -f1` + s2=`sha256sum -b ${SRC_EMCOM_PATH}/etc/$i/$i.cfg | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + mkdir -p ${VAGRANT_DIR}/etc/$i + cp ${PATH_DEV_EMCOM}/src/$i/etc/%i.cfg ${VAGRANT_DIR}/etc/$i + fi + fi +done + +TTCN_3_LIB_LIST='LibHttp LibPemea' +for i in ${TTCN_3_LIB_LIST} +do + LIST_TTCN_FILES=`find ${TTCN_3_ORG_PATH}/$i -name "*.ttcn" -type f` + for j in ${LIST_TTCN_FILES} + do + BN=`basename $j` + s1=`sha256sum -b $j | cut -d' ' -f1` + s2=`sha256sum -b ${TTCN_3_DST_PATH}/$i/ttcn/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${TTCN_3_DST_PATH}/$i/ttcn/${BN} ${VAGRANT_DIR} + rm ${TTCN_3_DST_PATH}/$i/ttcn/${BN}~ + fi + done +done + + +LIST_FILES=`find ${PATH_DEV_EMCOM} -name "*~" -type f` +for i in ${LIST_FILES} +do + BN=$i + BN=${BN:: -1} # Remove the last character + cp ${BN} ${VAGRANT_DIR} + rm $i +done + +chmod -R 664 ${VAGRANT_DIR} +exit 0 + diff --git a/scripts/run_all.bash b/scripts/run_all.bash new file mode 100644 index 0000000..9329847 --- /dev/null +++ b/scripts/run_all.bash @@ -0,0 +1,47 @@ +#!/bin/bash +#set -e +#set -vx + +clear + +export LD_LIBRARY_PATH=/home/vagrant/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH + +if ! [[ $1 =~ "^[0-9]+$" ]] +then + COUNTER=$1 +else + COUNTER=1 +fi + +CURPWD=`pwd` +if [ ! "${PWD##*/}" == "objs" ] +then + cd ../objs + if [ ! $? == 0 ] + then + echo "Please move to PROJECT/obj directory" + exit 1 + fi +fi + +rm ../logs/merged.log.* + +for i in $(seq 1 1 $COUNTER) +do + LD_LIBRARY_PATH=/home/vagrant/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH ../bin/run_mtc.bash & + LD_LIBRARY_PATH=/home/vagrant/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH ../bin/run_ptcs.bash $2 + + dup=$(ps -ef | grep "$0" | grep -v grep | wc -l) + while [ ${dup} -eq 3 ] + do + sleep 1 + dup=$(ps -ef | grep "$0" | grep -v grep | wc -l) + done + sleep 1 + + mv ../logs/merged.log ../logs/merged.log.`date +'%Y%m%d%S'` +done + +exit 0 + + diff --git a/scripts/run_mtc.bash b/scripts/run_mtc.bash new file mode 100644 index 0000000..a4932c2 --- /dev/null +++ b/scripts/run_mtc.bash @@ -0,0 +1,55 @@ +#!/bin/bash +#set -evx + +clear + +CURPWD=`pwd` +if [ ! "${PWD##*/}" == "objs" ] +then + cd ../objs + if [ ! $? == 0 ] + then + echo "Please move to PROJECT/obj directory" + exit 1 + fi +fi + +TITAN_LOG_DIR=../logs +if [ ! -d ${TITAN_LOG_DIR} ] +then + mkdir ${TITAN_LOG_DIR} +else + rm -f ${TITAN_LOG_DIR}/*.log +fi + +CFG_FILES=`find ../etc -name '*.cfg'` +#LOG_FILES=`find ${TITAN_LOG_DIR} -name '*.log'` +#mv ${LOG_FILES} ../logs + +#if [ "${OSTYPE}" == "cygwin" ] +#then +# # Remove dll +# rm ./*.dll +# ## Copy the new ones +# cp ~/lib/libhelper.dll . +# cp ~/lib/libconverter.dll . +# cp ~/lib/liblogger.dll . +# cp ~/lib/libttcn3_tri.dll . +# cp ~/lib/libcomm.dll . +#fi + +echo "> cmtc: to create the MTC server" +echo "> smtc [module_name[[.control]|.testcase_name|.*]: when MyExample is connected, run the TCs in [EXECUTE] section" +echo "> emtc: Terminate MTC." +mctr ${CFG_FILES} + +LOG_FILES=`find ${TITAN_LOG_DIR} -name '*.log'` +if [ "${TITAN_LOG_DIR}" != "" ] +then + ttcn3_logmerge -o ${TITAN_LOG_DIR}/merged.log ${LOG_FILES} + ttcn3_logformat -o ${TITAN_LOG_DIR}/merged_formated.log ${TITAN_LOG_DIR}/merged.log + mv ${TITAN_LOG_DIR}/merged_formated.log ${TITAN_LOG_DIR}/merged.log + echo "log files were merged into ${TITAN_LOG_DIR}/merged.log" +fi + +cd ${CURPWD} diff --git a/scripts/run_ptcs.bash b/scripts/run_ptcs.bash new file mode 100644 index 0000000..869220b --- /dev/null +++ b/scripts/run_ptcs.bash @@ -0,0 +1,38 @@ +#!/bin/bash +#set -e +#set -vx + +clear + +CURPWD=`pwd` +if [ ! "${PWD##*/}" == "objs" ] +then + cd ../objs + if [ ! $? == 0 ] + then + echo "Please move to PROJECT/obj directory" + exit 1 + fi +fi + +if [ -f ./core ] +then + rm -f ./core +fi +if [ "$1" == "d" ] +then + make run_d +elif [ "$1" == "v" ] +then + make run_v +else + make run +fi +#if [ "${OSTYPE}" == "cygwin" ] +#then +# ../bin/SIPmsg.exe 127.0.0.1 12000 +#else +# ../bin/SIPmsg 127.0.0.1 12000 +#fi + +cd ${CURPWD} diff --git a/scripts/run_tshark.bash b/scripts/run_tshark.bash new file mode 100644 index 0000000..7b12fa4 --- /dev/null +++ b/scripts/run_tshark.bash @@ -0,0 +1,7 @@ +#!/bin/bash + +# Debug mode +#set -vx +set -e + +~/frameworks/wireshark-build/run/tshark -ieth1 -V -f"ether proto 0x8947 or udp src port 12345 or udp dst port 12345" -Tfields -eframe.time -eeth.dst -eeth.src -eeth.type -edata diff --git a/scripts/update_emcom_project.bash b/scripts/update_emcom_project.bash index 5b08fbc..462e61e 100755 --- a/scripts/update_emcom_project.bash +++ b/scripts/update_emcom_project.bash @@ -13,7 +13,7 @@ OLDPWD=`pwd` RUN_PATH="${0%/*}" CHOWN_USER_GROUP=vagrant:vagrant -SRC_EMCOM_PATH=${HOME}/tmp/STF549_ng112 +SRC_EMCOM_PATH=${HOME}/dev/STF549_ng112 if [ "${PATH_DEV_EMCOM}" == "" ] then diff --git a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn index b67ac1b..1f71ef1 100644 --- a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn +++ b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn @@ -91,7 +91,7 @@ module AtsNg112_TestCases { httpPort.send( m_http_request( m_http_request_post( - "/t/r143f-1528105031/post", + "/t/9rk8l-1531130342/post", v_headers, m_http_message_body_xml(m_body_xml_location_request( m_locationRequest( @@ -118,7 +118,7 @@ module AtsNg112_TestCases { var Presence v_presence; var Tuple v_tuple; var Geopriv v_geopriv; - var Circle v_circle; + var PointProperty v_point; var universal charstring v_temp; var integer v_result; @@ -138,9 +138,9 @@ module AtsNg112_TestCases { if (match(v_geopriv, mw_geopriv(mw_location_info({ ? })))) { // Extract Circle element from Tuple v_temp := v_geopriv.location_info.elem_list[0]; - v_result := decvalue_unichar(v_temp, v_circle); - log(match(v_circle, mw_circle(mw_center_group_pos(PX_CIRCLE_POS), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_BASE - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_BASE + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME))); // Required by TITAN to get details in case of mismatch - if (match(v_circle, mw_circle(mw_center_group_pos(PX_CIRCLE_POS), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_BASE - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_BASE + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME))) { + v_result := decvalue_unichar(v_temp, v_point); + log(match(v_point, mw_point(PX_DEVICE_POSITION))); // FIXME Required by TITAN to get details in case of mismatch + if (match(v_point, mw_point(PX_DEVICE_POSITION))) { log("*** " & testcasename() & ": PASS: IUT successfully responds with a Point ***"); f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); } else { @@ -262,6 +262,7 @@ module AtsNg112_TestCases { // Extract Circle element from Tuple v_temp := v_geopriv.location_info.elem_list[0]; v_result := decvalue_unichar(v_temp, v_circle); + log(match(v_circle, mw_circle(mw_center_group_pos(PX_CIRCLE_POS), mw_radius(PX_CIRCLE_UOM, PX_CIRCLE_BASE), PX_SRS_NAME))); // FIXME Required by TITAN to get details in case of mismatch if (match(v_circle, mw_circle(mw_center_group_pos(PX_CIRCLE_POS), mw_radius(PX_CIRCLE_UOM, PX_CIRCLE_BASE), PX_SRS_NAME))) { log("*** " & testcasename() & ": PASS: IUT successfully responds with a Point ***"); f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn index b437031..83aaf4a 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn @@ -25,7 +25,7 @@ module LibNg112_Pixits { /** * @desc Device point position */ - modulepar DoubleList PX_DEVICE_POSITION := { 48.2153879, 16.2903 }; + modulepar DoubleList PX_DEVICE_POSITION := { -34.407, 150.883, 24.8 }; /** * @desc Device position with a circle of conficence diff --git a/vagrant/Vagrantfile b/vagrant/Vagrantfile index 980c937..86b0359 100644 --- a/vagrant/Vagrantfile +++ b/vagrant/Vagrantfile @@ -69,5 +69,5 @@ Vagrant.configure("2") do |config| # Enable provisioning with a shell script. Additional provisioners such as # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the # documentation for more information about their specific syntax and use. - config.vm.provision "shell", path: "provisioner.bash", args: " ", privileged: false + config.vm.provision "shell", path: "provisioner.bash", privileged: false end diff --git a/vagrant/provisioner.bash b/vagrant/provisioner.bash index af69ead..ae57513 100644 --- a/vagrant/provisioner.bash +++ b/vagrant/provisioner.bash @@ -22,9 +22,6 @@ g++ --version valgrind --version java -version -export USERNAME=$1 -export PASSWORD=$2 - export HOME=/home/vagrant export PATH_DEV=${HOME}/dev @@ -81,8 +78,8 @@ git clone https://forge.etsi.org/gitlab/emergency-communications/NG112 ./STF549_ cd /home/etsi/dev/STF549_Ng112 git checkout TTCN_3_Developments cd /home/etsi/dev/STF549_Ng112/ttcn -svn co --username $USERNAME --password $PASSWORD --non-interactive svn+ssh://forge.etsi.org/svn/LibSip/trunk ./LibSip \ -svn co --username $USERNAME --password $PASSWORD --non-interactive svn+ssh://forge.etsi.org/svn/LibCommon/trunk/ttcn ./LibCommon/ttcn \ +svn co --username svnusers --password svnusers --non-interactive https://oldforge.etsi.org/svn/LibSip/trunk ./LibSip \ +svn co --username svnusers --password svnusers --non-interactive https://oldforge.etsi.org/svn/LibCommon/trunk/ttcn ./LibCommon/ttcn \ cd /home/vagrant/dev/STF549_Ng112/scripts chmod 775 *.bash devenv.bash.* cd /home/vagrant/dev/STF549_Ng112/docker @@ -131,19 +128,20 @@ wget 'http://ftp.halifax.rwth-aachen.de/eclipse/technology/epp/downloads/release tar -zxvf ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz rm -f ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz -sudo echo "" >> /etc/profile -sudo echo "export HOME=/home/vagrant" >> /etc/profile -sudo echo "export LD_LIBRARY_PATH=/home/vagrant/dev/etsi_its/lib:$LD_LIBRARY_PATH" >> /etc/profile -sudo echo "export PATH=/home/vagrant/bin:$PATH" >> /etc/profile -sudo echo "cd /home/vagrant" >> /etc/profile -sudo echo ". ./devenv.bash" >> /etc/profile - +cd /home/vagrant +echo "" >> /home/vagrant/.bashrc +echo "export HOME=/home/vagrant" >> /home/vagrant/.bashrc +echo "export LD_LIBRARY_PATH=/home/vagrant/dev/etsi_its/lib:$LD_LIBRARY_PATH" >> /home/vagrant/.bashrc +echo "export PATH=/home/vagrant/bin:$PATH" >> /home/vagrant/.bashrc +echo "cd /home/vagrant" >> /home/vagrant/.bashrc +echo ". ./devenv.bash" >> /home/vagrant/.bashrc + +. /home/vagrant/.bashrc cd /home/vagrant/dev/STF549_Ng112/scripts ./build_titan.bash . /home/vagrant/devenv.bash ./update_its_project.bash cd /home/vagrant/dev/etsi_emco/src/TestCodec/objs -. ${HOME}/devenv.bash ../bin/testcodec_generate_makefile.bash ../bin/run_all.bash -- GitLab From 42fffc2d2682ba6b5490cb852bab8ab85ce7a17c Mon Sep 17 00:00:00 2001 From: Garcia Date: Mon, 9 Jul 2018 14:13:02 +0200 Subject: [PATCH 41/72] Bug fixed in scripts --- scripts/update_emcom_project.bash | 54 +++++++++++++++---------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/scripts/update_emcom_project.bash b/scripts/update_emcom_project.bash index 462e61e..d321106 100755 --- a/scripts/update_emcom_project.bash +++ b/scripts/update_emcom_project.bash @@ -24,7 +24,7 @@ if [ -d ${PATH_DEV_EMCOM} ] then if [ -f ${HOME}/tmp/emcom.tar.bz2 ] then - mv ${HOME}/tmp/emcom.tar.bz2 ${HOME}/tmp/emcom.tar.`date +'%Y%m%d'`.bz2 + mv ${HOME}/tmp/emcom.tar.bz2 ${HOME}/tmp/emcom.tar.`date +'%Y%m%d'`.bz2 fi find ${PATH_DEV_EMCOM} -name "*.o" -exec rm {} \; tar jcvf ${HOME}/tmp/emcom.tar.bz2 ${PATH_DEV_EMCOM} @@ -60,28 +60,28 @@ FWK_DIR_LIST_L=`find ${FWK_SRC_PATH}/Protocols/ -name "*.l" -type f` FWK_DIR_LIST_Y=`find ${FWK_SRC_PATH}/Protocols/ -name "*.y" -type f` for i in ${FWK_DIR_LIST_HH} do - cp $i ${FWK_DST_PATH}/include + cp $i ${FWK_DST_PATH}/include done for i in ${FWK_DIR_LIST_THH} do - cp $i ${FWK_DST_PATH}/include + cp $i ${FWK_DST_PATH}/include done for i in ${FWK_DIR_LIST_CC} do - cp $i ${FWK_DST_PATH}/src + cp $i ${FWK_DST_PATH}/src done if [ "${FWK_DIR_LIST_L}" != "" ] then for i in ${FWK_DIR_LIST_L} do - cp $i ${FWK_DST_PATH}/src + cp $i ${FWK_DST_PATH}/src done fi if [ "${FWK_DIR_LIST_Y}" != "" ] then for i in ${FWK_DIR_LIST_Y} do - cp $i ${FWK_DST_PATH}/src + cp $i ${FWK_DST_PATH}/src done fi FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/Framework/ -name "*.h*" -type f` @@ -105,8 +105,8 @@ for i in ${TTCN_3_ATS_LIST} do if [ ! -d ${TTCN_3_DST_PATH}/$i ] then - mkdir -p ${TTCN_3_DST_PATH}/$i/bin ${TTCN_3_DST_PATH}/$i/lib ${TTCN_3_DST_PATH}/$i/src ${TTCN_3_DST_PATH}/$i/include ${TTCN_3_DST_PATH}/$i/ttcn ${TTCN_3_DST_PATH}/$i/objs ${TTCN_3_DST_PATH}/$i/etc ${TTCN_3_DST_PATH}/$i/docs - chmod -R 775 ${TTCN_3_DST_PATH}/$i + mkdir -p ${TTCN_3_DST_PATH}/$i/bin ${TTCN_3_DST_PATH}/$i/lib ${TTCN_3_DST_PATH}/$i/src ${TTCN_3_DST_PATH}/$i/include ${TTCN_3_DST_PATH}/$i/ttcn ${TTCN_3_DST_PATH}/$i/objs ${TTCN_3_DST_PATH}/$i/etc ${TTCN_3_DST_PATH}/$i/docs + chmod -R 775 ${TTCN_3_DST_PATH}/$i fi cp ${TTCN_3_ORG_PATH}/$i/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn cp ${TTCN_3_ORG_PATH}/../etc/$i/*.cfg ${TTCN_3_DST_PATH}/$i/etc @@ -119,7 +119,7 @@ for i in ${TTCN_3_LIB_LIST} do if [ ! -d ${TTCN_3_DST_PATH}/$i ] then - mkdir -p ${TTCN_3_DST_PATH}/$i/docs ${TTCN_3_DST_PATH}/$i/src ${TTCN_3_DST_PATH}/$i/include ${TTCN_3_DST_PATH}/$i/ttcn ${TTCN_3_DST_PATH}/$i/xsd + mkdir -p ${TTCN_3_DST_PATH}/$i/docs ${TTCN_3_DST_PATH}/$i/src ${TTCN_3_DST_PATH}/$i/include ${TTCN_3_DST_PATH}/$i/ttcn ${TTCN_3_DST_PATH}/$i/xsd fi cp ${TTCN_3_ORG_PATH}/$i/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn # Update files @@ -128,28 +128,28 @@ do cp ${TTCN_3_ORG_PATH}/$i/ttcn/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn cp ${TTCN_3_ORG_PATH}/$i/xsd/*.xsd ${TTCN_3_DST_PATH}/$i/xsd cp ${TTCN_3_ORG_PATH}/$i/xsd/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn - cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include - cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include + cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src fi if [ "$i" == "LibSip" ] then cp ${TTCN_3_ORG_PATH}/$i/ttcn/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn cp ${TTCN_3_ORG_PATH}/$i/xsd/*.xsd ${TTCN_3_DST_PATH}/$i/xsd cp ${TTCN_3_ORG_PATH}/$i/xsd/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn - cp ${CC_SRC_PATH}/EncDec/$i/*_Encdec.cc ${TTCN_3_DST_PATH}/$i/src - cp ${CC_SRC_PATH}/Ports/$i/*.hh ${TTCN_3_DST_PATH}/$i/include - cp ${CC_SRC_PATH}/Ports/$i/*.cc ${TTCN_3_DST_PATH}/$i/src - cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include - cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/EncDec/$i/*_Encdec.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/Ports/$i/*.hh ${TTCN_3_DST_PATH}/$i/include + cp ${CC_SRC_PATH}/Ports/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include + cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src fi if [ "$i" == "LibHttp" ] then cp ${TTCN_3_ORG_PATH}/$i/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn - cp ${CC_SRC_PATH}/EncDec/$i/*_Encdec.cc ${TTCN_3_DST_PATH}/$i/src - cp ${CC_SRC_PATH}/Ports/$i/*.hh ${TTCN_3_DST_PATH}/$i/include - cp ${CC_SRC_PATH}/Ports/$i/*.cc ${TTCN_3_DST_PATH}/$i/src - cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include - cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/EncDec/$i/*_Encdec.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/Ports/$i/*.hh ${TTCN_3_DST_PATH}/$i/include + cp ${CC_SRC_PATH}/Ports/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include + cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src fi done @@ -180,14 +180,14 @@ if [ -d ${PATH_PATCHES} ] then # Update Ng112 cp ${PATH_PATCHES}/ng112.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin - cp ${PATH_PATCHES}/../run_mtc.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin - cp ${PATH_PATCHES}/../run_ptcs.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin - cp ${PATH_PATCHES}/../run_all.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin + cp ${PATH_PATCHES}/run_mtc.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin + cp ${PATH_PATCHES}/run_ptcs.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin + cp ${PATH_PATCHES}/run_all.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin # Update TestCodec cp ${PATH_PATCHES}/testcodec_generate_makefile.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin - cp ${PATH_PATCHES}/../run_mtc.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin - cp ${PATH_PATCHES}/../run_ptcs.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin - cp ${PATH_PATCHES}/../run_all.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin + cp ${PATH_PATCHES}/run_mtc.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin + cp ${PATH_PATCHES}/run_ptcs.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin + cp ${PATH_PATCHES}/run_all.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin fi # Set rights -- GitLab From d7f252aaa0f31f95dbbb563e433576edb053c5de Mon Sep 17 00:00:00 2001 From: vagrant Date: Mon, 9 Jul 2018 14:15:06 +0200 Subject: [PATCH 42/72] Add 775 permissions on sh & bash files --- scripts/merge_emcom_project.bash | 0 scripts/run_all.bash | 0 scripts/run_mtc.bash | 0 scripts/run_ptcs.bash | 0 scripts/run_tshark.bash | 0 5 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 scripts/merge_emcom_project.bash mode change 100644 => 100755 scripts/run_all.bash mode change 100644 => 100755 scripts/run_mtc.bash mode change 100644 => 100755 scripts/run_ptcs.bash mode change 100644 => 100755 scripts/run_tshark.bash diff --git a/scripts/merge_emcom_project.bash b/scripts/merge_emcom_project.bash old mode 100644 new mode 100755 diff --git a/scripts/run_all.bash b/scripts/run_all.bash old mode 100644 new mode 100755 diff --git a/scripts/run_mtc.bash b/scripts/run_mtc.bash old mode 100644 new mode 100755 diff --git a/scripts/run_ptcs.bash b/scripts/run_ptcs.bash old mode 100644 new mode 100755 diff --git a/scripts/run_tshark.bash b/scripts/run_tshark.bash old mode 100644 new mode 100755 -- GitLab From c1b0f3e0126ded0b1c4b08d9bb6a0a02c75a93f9 Mon Sep 17 00:00:00 2001 From: Garcia Date: Tue, 10 Jul 2018 08:55:06 +0200 Subject: [PATCH 43/72] Validate LIS test cases --- ccsrc/Protocols/Held/held.codec.cc | 11 ++- docker/Dockerfile | 14 +-- etc/AtsNg112/AtsNg112.cfg | 2 + scripts/devenv.bash.ubuntu | 4 +- ttcn/AtsNg112/AtsNg112_TestCases.ttcn | 91 ++++++++++--------- .../LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn | 64 +++++++------ .../LibNg112/ttcn/LibNg112_Pixits.ttcn | 3 + 7 files changed, 106 insertions(+), 83 deletions(-) diff --git a/ccsrc/Protocols/Held/held.codec.cc b/ccsrc/Protocols/Held/held.codec.cc index 1acae8c..8b65a0f 100644 --- a/ccsrc/Protocols/Held/held.codec.cc +++ b/ccsrc/Protocols/Held/held.codec.cc @@ -58,14 +58,21 @@ int held_codec::decode (const OCTETSTRING& p_data, LibItsHttp__XmlMessageBodyTyp } } - if (it->second.find("LocationRequest") != std::string::npos) { + if (it->second.find("second.find("second.find(" /etc/hostname \ libxml2-dev \ lsof \ ntp \ + openssh-server \ pkg-config \ qt5-default \ qtmultimedia5-dev \ @@ -64,7 +65,7 @@ RUN echo "docker-titan-STF549" > /etc/hostname \ xsltproc \ && DEBIAN_FRONTEND=noninteractive apt-get autoremove --purge -y \ && DEBIAN_FRONTEND=noninteractive apt-get autoclean \ - && useradd --create-home --shell /bin/bash etsi \ + && useradd --create-home --shell /bin/bash etsi --groups sudo username \ && echo "etsi:etsi" | chpasswd \ && adduser etsi sudo \ && cd /home/etsi \ @@ -94,11 +95,10 @@ RUN cd /home/etsi/dev \ && ls -ltr /home/etsi \ && export HOME=/home/etsi \ && cd /home/etsi/frameworks \ - && git clone https://github.com/vlm/asn1c.git asn1c \ - && cd asn1c \ - && test -f configure || autoreconf -iv \ + && git clone https://github.com/YannGarcia/osip.git osip \ + && cd osip \ && ./configure --prefix=/home/etsi \ - && make && make install \ + && make \ && cd /home/etsi/frameworks \ && wget 'http://ftp.halifax.rwth-aachen.de/eclipse//technology/epp/downloads/release/oxygen/2/eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz' -Oeclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ && tar -zxvf ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ @@ -108,8 +108,8 @@ RUN cd /home/etsi/dev \ && ./build_titan.bash \ && . /home/etsi/devenv.bash \ && ./update_emcom_project.bash \ - && cd ${HOME}/dev/etsi_emco/src/TestCodec/objs \ - && ../bin/testcodec_generate_makefile.bash \ + && cd ${HOME}/dev/etsi_emco/src/AtsNg112/objs \ + && ../bin/ng112.bash \ && ../bin/run_all.bash CMD ["/bin/bash"] diff --git a/etc/AtsNg112/AtsNg112.cfg b/etc/AtsNg112/AtsNg112.cfg index dc7ea15..8bdd7f6 100644 --- a/etc/AtsNg112/AtsNg112.cfg +++ b/etc/AtsNg112/AtsNg112.cfg @@ -47,6 +47,8 @@ system.httpPort.params := "HTTP(codecs=held:held_codec;html:html_codec;json:json [EXECUTE] # In this section you can specify what parts of your test suite you want to execute. AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_01 +AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_02 +AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_03 [GROUPS] # In this section you can specify groups of hosts. These groups can be used inside the diff --git a/scripts/devenv.bash.ubuntu b/scripts/devenv.bash.ubuntu index ea2777a..9667d0d 100644 --- a/scripts/devenv.bash.ubuntu +++ b/scripts/devenv.bash.ubuntu @@ -58,9 +58,9 @@ then export TTCN3_LICENSE_FILE=${TTCN3_DIR}/etc/license/license.dat export PATH_DEV_TTCN=${HOME}/dev/ttcn3 # ITS support - export PATH_DEV_ITS=${HOME}/TriesAndDelete/etsi_its + export PATH_DEV_ITS=${HOME}/dev/etsi_its # Emergency Communication support - export PATH_DEV_EMCOM=${HOME}/TriesAndDelete/etsi_emcom + export PATH_DEV_EMCOM=${HOME}/dev/etsi_emcom fi export BROWSER=netsurf diff --git a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn index 1f71ef1..138b233 100644 --- a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn +++ b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn @@ -12,15 +12,34 @@ module AtsNg112_TestCases { // RFC5985 Held - import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all; - import from urn_ietf_params_xml_ns_geopriv_held_id language "XSD" all; - import from urn_ietf_params_xml_ns_pidf_geopriv10 language "XSD" all; - import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy language "XSD" all; + import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all + with { + extension "File:../xsd/RFC5985_held.xsd"; + } + // RFC6155 Held ID + import from urn_ietf_params_xml_ns_geopriv_held_id language "XSD" all + with { + extension "File:../xsd/RFC6155_held_id.xsd"; + } + import from urn_ietf_params_xml_ns_pidf_geopriv10 language "XSD" all + with { + extension "File:../xsd/RFC4119_geopriv10.xsd"; + } + import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy language "XSD" all + with { + extension "File:../xsd/RFC4119_geopriv10_basic_policy.xsd"; + } - import from urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc language "XSD" all; + import from urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc language "XSD" all + with { + extension "File:../xsd/RFC4119_geopriv10_civicloc.xsd"; + } - // - import from urn_ietf_params_xml_ns_pidf language "XSD" all; + // RFC3863 + import from urn_ietf_params_xml_ns_pidf language "XSD" all + with { + extension "File:../xsd/RFC3863_pidf.xsd"; + } // OpenGIS import from urn_ietf_params_xml_ns_pidf_geopriv10_geoShape language "XSD" all; @@ -91,7 +110,7 @@ module AtsNg112_TestCases { httpPort.send( m_http_request( m_http_request_post( - "/t/9rk8l-1531130342/post", + PICS_LIS_REQUEST_URIs[0], v_headers, m_http_message_body_xml(m_body_xml_location_request( m_locationRequest( @@ -128,6 +147,7 @@ module AtsNg112_TestCases { v_temp := v_response.response.body.xml_body.locationResponse.elem_list[0]; v_result := decvalue_unichar(v_temp, v_presence); if (v_result == 0) { + log(match(v_presence, mw_presence)); // FIXME Required by TITAN to get details in case of mismatch if (match(v_presence, mw_presence)) { // Extract first Tuple element from Presence v_tuple := v_presence.tuple_list[0]; @@ -135,6 +155,7 @@ module AtsNg112_TestCases { // Extract Geopriv element from Tuple v_result := decvalue_unichar(v_temp, v_geopriv); if (v_result == 0) { + log(match(v_geopriv, mw_geopriv(mw_location_info({ ? })))); // FIXME Required by TITAN to get details in case of mismatch if (match(v_geopriv, mw_geopriv(mw_location_info({ ? })))) { // Extract Circle element from Tuple v_temp := v_geopriv.location_info.elem_list[0]; @@ -214,7 +235,7 @@ module AtsNg112_TestCases { httpPort.send( m_http_request( m_http_request_post( - "/t/r143f-1528105031/post", + PICS_LIS_REQUEST_URIs[1], v_headers, m_http_message_body_xml(m_body_xml_location_request( m_locationRequest( @@ -251,6 +272,7 @@ module AtsNg112_TestCases { v_temp := v_response.response.body.xml_body.locationResponse.elem_list[0]; v_result := decvalue_unichar(v_temp, v_presence); if (v_result == 0) { + log(match(v_presence, mw_presence)); // FIXME Required by TITAN to get details in case of mismatch if (match(v_presence, mw_presence)) { // Extract first Tuple element from Presence v_tuple := v_presence.tuple_list[0]; @@ -258,12 +280,13 @@ module AtsNg112_TestCases { // Extract Geopriv element from Tuple v_result := decvalue_unichar(v_temp, v_geopriv); if (v_result == 0) { + log(match(v_geopriv, mw_geopriv(mw_location_info({ ? })))); // FIXME Required by TITAN to get details in case of mismatch if (match(v_geopriv, mw_geopriv(mw_location_info({ ? })))) { // Extract Circle element from Tuple v_temp := v_geopriv.location_info.elem_list[0]; v_result := decvalue_unichar(v_temp, v_circle); - log(match(v_circle, mw_circle(mw_center_group_pos(PX_CIRCLE_POS), mw_radius(PX_CIRCLE_UOM, PX_CIRCLE_BASE), PX_SRS_NAME))); // FIXME Required by TITAN to get details in case of mismatch - if (match(v_circle, mw_circle(mw_center_group_pos(PX_CIRCLE_POS), mw_radius(PX_CIRCLE_UOM, PX_CIRCLE_BASE), PX_SRS_NAME))) { + log(match(v_circle, mw_circle(mw_center_group_pos(PX_CIRCLE_POS), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_BASE - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_BASE + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME))); // FIXME Required by TITAN to get details in case of mismatch + if (match(v_circle, mw_circle(mw_center_group_pos(PX_CIRCLE_POS), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_BASE - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_BASE + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME))) { log("*** " & testcasename() & ": PASS: IUT successfully responds with a Point ***"); f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); } else { @@ -338,7 +361,7 @@ module AtsNg112_TestCases { httpPort.send( m_http_request( m_http_request_post( - "/t/r143f-1528105031/post", + PICS_LIS_REQUEST_URIs[2], v_headers, m_http_message_body_xml(m_body_xml_location_request( m_locationRequest( @@ -359,30 +382,12 @@ module AtsNg112_TestCases { mw_http_response( mw_http_response_ok( mw_http_message_body_xml( - mw_body_xml_location_response( - mw_locationResponse(-, ?) - ))))) -> value v_response { - var Presence v_presence; - var universal charstring v_temp; - var integer v_result; - + mw_body_xml_location_response_error( + mw_error_type + ))))) { tc_ac.stop; - - // Extract presence element from Location-Response - v_temp := v_response.response.body.xml_body.locationResponse.elem_list[0]; - v_result := decvalue_unichar(v_temp, v_presence); - if (v_result == 0) { - if (match(v_presence, mw_presence)) { - log("*** " & testcasename() & ": PASS: Error message received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } else { - log("*** " & testcasename() & ": FAIL: Unexpected response ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } else { - log("*** " & testcasename() & ": FAIL: Unexpected response ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } + log("*** " & testcasename() & ": PASS: Error message received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Expected message not received ***"); @@ -439,14 +444,14 @@ module AtsNg112_TestCases { f_remove_headears_list({ c_header_accept }, v_headers); httpPort.send( m_http_request( - m_http_request_get( - PICS_ECRF_URI, - v_headers, - m_http_message_body_xml( - m_body_xml_location_request( - m_locationRequest( - m_device({ PX_DEVICE_URI_TEL }).elem_list - ))) + m_http_request_post( + PICS_ECRF_URI, + v_headers, + m_http_message_body_xml( + m_body_xml_location_request( + m_locationRequest( + m_device({ PX_DEVICE_URI_TEL }).elem_list + ))) ))); f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success); diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn index d3285ba..c710754 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn @@ -1,35 +1,41 @@ module LibNg112_Pics { - modulepar boolean PICS_LIS_IUT := true; - - /** - * @desc Has the IUT the role of ECRF? - */ + type record of charstring request_uri_list; + + /** + * @desc Has the IUT the role of LIS? + */ + modulepar boolean PICS_LIS_IUT := true; + + /** + * @desc Has the IUT the role of ECRF? + */ modulepar boolean PICS_ECRF_IUT := false; - /** - * @desc Does the IUT support HTTP POST request? - */ + /** + * @desc Does the IUT support HTTP POST request? + */ modulepar boolean PICS_HTTP_POST_REQUEST := true; - - /** - * @desc Does the IUT support HELD protocol? - */ - modulepar boolean PICS_LOCATION_HELD := true; - - /** - * @desc Does the IUT support LoST protocol? - */ - modulepar boolean PICS_SERVICE_LOST := true; - - /** - * @desc - */ - modulepar charstring PICS_LISP_URI := "/location"; - - /** - * @desc - */ - modulepar charstring PICS_ECRF_URI := "/service"; - + + /** + * @desc Does the IUT support HELD protocol? + */ + modulepar boolean PICS_LOCATION_HELD := true; + + /** + * @desc Does the IUT support LoST protocol? + */ + modulepar boolean PICS_SERVICE_LOST := true; + + /** + * @desc HTTP POST Uris + * @see RFC 2616 Hypertext Transfer Protocol -- HTTP/1.1 + */ + modulepar request_uri_list PICS_LIS_REQUEST_URIs := { "/t/9rk8l-1531130342/post", "/t/r143f-1528105031/post", "/t/6ouem-1531201238/post" }; + + /** + * @desc + */ + modulepar charstring PICS_ECRF_URI := "/service"; + } // End of module LibNg112_Pics diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn index 83aaf4a..6bed37a 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn @@ -6,6 +6,9 @@ module LibNg112_Pixits { import from urn_ietf_params_xml_ns_pidf_geopriv10_geoShape language "XSD" all; import from http_www_opengis_net_gml language "XSD" all; + /** + * @desc Epsilon for Double valules comparison + */ modulepar XSD.Double PX_DOUBLE_CMP_EPSILON := 0.00001; /** * @desc Device identifier using SIP uri -- GitLab From 2b4b202046a72e27c15f5d6786cb3391d10e2707 Mon Sep 17 00:00:00 2001 From: Garcia Date: Tue, 10 Jul 2018 08:56:59 +0200 Subject: [PATCH 44/72] Rename held.codec.cc into held_codec.cc --- ccsrc/Protocols/Held/{held.codec.cc => held_codec.cc} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ccsrc/Protocols/Held/{held.codec.cc => held_codec.cc} (100%) diff --git a/ccsrc/Protocols/Held/held.codec.cc b/ccsrc/Protocols/Held/held_codec.cc similarity index 100% rename from ccsrc/Protocols/Held/held.codec.cc rename to ccsrc/Protocols/Held/held_codec.cc -- GitLab From 9e645e883f1291400635fd9d8c26833d2d4a291b Mon Sep 17 00:00:00 2001 From: Garcia Date: Tue, 10 Jul 2018 09:06:29 +0200 Subject: [PATCH 45/72] Bug fixed in Dockerfile --- docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index d069f5c..539e8f0 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -65,7 +65,7 @@ RUN echo "docker-titan-STF549" > /etc/hostname \ xsltproc \ && DEBIAN_FRONTEND=noninteractive apt-get autoremove --purge -y \ && DEBIAN_FRONTEND=noninteractive apt-get autoclean \ - && useradd --create-home --shell /bin/bash etsi --groups sudo username \ + && useradd --create-home --shell /bin/bash --groups sudo etsi \ && echo "etsi:etsi" | chpasswd \ && adduser etsi sudo \ && cd /home/etsi \ -- GitLab From 4e9ca04ad3b5191c02ccf75a42bb807ad11964a8 Mon Sep 17 00:00:00 2001 From: vagrant Date: Tue, 10 Jul 2018 10:47:52 +0200 Subject: [PATCH 46/72] Add 775 permissions on sh & bash files --- .jenkins.sh | 0 scripts/devenv.bash.ubuntu | 0 vagrant/provisioner.bash | 0 3 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 .jenkins.sh mode change 100644 => 100755 scripts/devenv.bash.ubuntu mode change 100644 => 100755 vagrant/provisioner.bash diff --git a/.jenkins.sh b/.jenkins.sh old mode 100644 new mode 100755 diff --git a/scripts/devenv.bash.ubuntu b/scripts/devenv.bash.ubuntu old mode 100644 new mode 100755 diff --git a/vagrant/provisioner.bash b/vagrant/provisioner.bash old mode 100644 new mode 100755 -- GitLab From ac8fdef97503b75cc4240ce6a4be13a93f8b9d11 Mon Sep 17 00:00:00 2001 From: vagrant Date: Wed, 11 Jul 2018 07:51:26 +0000 Subject: [PATCH 47/72] Bugs fixed in scripts --- docker/Dockerfile | 235 +++++------ scripts/build_titan.bash | 206 +++++----- scripts/merge_emcom_project.bash | 500 +++++++++++------------ scripts/ng112.bash | 484 +++++++++++----------- scripts/run_all.bash | 94 ++--- scripts/run_mtc.bash | 110 ++--- scripts/run_ptcs.bash | 76 ++-- scripts/run_tshark.bash | 14 +- scripts/testcodec_generate_makefile.bash | 484 +++++++++++----------- scripts/update_emcom_project.bash | 402 +++++++++--------- vagrant/provisioner.bash | 25 +- 11 files changed, 1302 insertions(+), 1328 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 539e8f0..d58a23e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,117 +1,118 @@ -FROM ubuntu:18.04 - -MAINTAINER ETSI STF 549 - -LABEL description="STF549 Docker Image" - -ENV TERM=linux -ENV HOSTNAME docker-titan-STF549 - -RUN echo "docker-titan-STF549" > /etc/hostname \ - && echo "root:etsi" | chpasswd \ - && DEBIAN_FRONTEND=noninteractive apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ - && DEBIAN_FRONTEND=noninteractive apt-get install software-properties-common -y \ - && DEBIAN_FRONTEND=noninteractive add-apt-repository ppa:linuxuprising/java -y \ - && DEBIAN_FRONTEND=noninteractive apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated install -y \ - autoconf \ - bison \ - build-essential \ - cmake \ - curl \ - dos2unix \ - doxygen \ - emacs \ - expect \ - flex \ - g++-8 \ - gcc-8 \ - gdb \ - git-core \ - gnutls-bin \ - graphviz \ - inetutils-ping \ - libglib2.0-dev \ - libpcap-dev \ - libgcrypt-dev \ - libncurses5-dev \ - libssl-dev \ - libtool-bin \ - libtool \ - libwireshark-dev \ - libxml2-dev \ - lsof \ - ntp \ - openssh-server \ - pkg-config \ - qt5-default \ - qtmultimedia5-dev \ - libqt5svg5-dev \ - subversion \ - sudo \ - sshpass \ - tcpdump \ - texlive-font-utils \ - tshark \ - tzdata \ - valgrind \ - vim \ - vsftpd \ - xutils-dev \ - tree \ - unzip \ - wget \ - xsltproc \ - && DEBIAN_FRONTEND=noninteractive apt-get autoremove --purge -y \ - && DEBIAN_FRONTEND=noninteractive apt-get autoclean \ - && useradd --create-home --shell /bin/bash --groups sudo etsi \ - && echo "etsi:etsi" | chpasswd \ - && adduser etsi sudo \ - && cd /home/etsi \ - && echo "" >> /home/etsi/.bashrc \ - && echo "export HOME=/home/etsi" >> /home/etsi/.bashrc \ - && echo "export LD_LIBRARY_PATH=/home/etsi/dev/etsi_its/lib:$LD_LIBRARY_PATH" >> /home/etsi/.bashrc \ - && echo "export PATH=/home/etsi/bin:$PATH" >> /home/etsi/.bashrc \ - && echo "cd /home/etsi" >> /home/etsi/.bashrc \ - && echo ". ./devenv.bash" >> /home/etsi/.bashrc \ - && . /home/etsi/.bashrc \ - && mkdir -p bin lib include tmp frameworks docs man dev \ - && chown etsi:etsi bin lib include tmp frameworks docs man dev - -USER etsi - -RUN cd /home/etsi/dev \ - && git clone https://forge.etsi.org/gitlab/emergency-communications/NG112 ./STF549_Ng112 \ - && cd /home/etsi/dev/STF549_Ng112 \ - && git checkout TTCN_3_Developments \ - && cd /home/etsi/dev/STF549_Ng112/ttcn \ - && svn co --username svnusers --password svnusers --non-interactive --trust-server-cert https://oldforge.etsi.org/svn/LibSip/trunk ./LibSip \ - && svn co --username svnusers --password svnusers --non-interactive --trust-server-cert https://oldforge.etsi.org/svn/LibCommon/trunk/ttcn ./LibCommon/ttcn \ - && cd /home/etsi/dev/STF549_Ng112/scripts \ - && chmod 775 *.bash devenv.bash.* \ - && cd /home/etsi \ - && ln -sf /home/etsi/dev/STF549_Ng112/scripts/devenv.bash.ubuntu /home/etsi/devenv.bash \ - && ls -ltr /home/etsi \ - && export HOME=/home/etsi \ - && cd /home/etsi/frameworks \ - && git clone https://github.com/YannGarcia/osip.git osip \ - && cd osip \ - && ./configure --prefix=/home/etsi \ - && make \ - && cd /home/etsi/frameworks \ - && wget 'http://ftp.halifax.rwth-aachen.de/eclipse//technology/epp/downloads/release/oxygen/2/eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz' -Oeclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ - && tar -zxvf ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ - && rm -f ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ - && . /home/etsi/devenv.bash \ - && cd /home/etsi/dev/STF549_Ng112/scripts \ - && ./build_titan.bash \ - && . /home/etsi/devenv.bash \ - && ./update_emcom_project.bash \ - && cd ${HOME}/dev/etsi_emco/src/AtsNg112/objs \ - && ../bin/ng112.bash \ - && ../bin/run_all.bash - -CMD ["/bin/bash"] - -# That's all Floks +FROM ubuntu:18.04 + +MAINTAINER ETSI STF 549 + +LABEL description="STF549 Docker Image" + +ENV TERM=linux +ENV HOSTNAME docker-titan-STF549 + +RUN echo "docker-titan-STF549" > /etc/hostname \ + && echo "root:etsi" | chpasswd \ + && DEBIAN_FRONTEND=noninteractive apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ + && DEBIAN_FRONTEND=noninteractive apt-get install software-properties-common -y \ + && DEBIAN_FRONTEND=noninteractive add-apt-repository ppa:linuxuprising/java -y \ + && DEBIAN_FRONTEND=noninteractive apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated install -y \ + autoconf \ + bison \ + build-essential \ + cmake \ + curl \ + dos2unix \ + doxygen \ + emacs \ + expect \ + flex \ + g++-8 \ + gcc-8 \ + gdb \ + git-core \ + gnutls-bin \ + graphviz \ + inetutils-ping \ + libglib2.0-dev \ + libpcap-dev \ + libgcrypt-dev \ + libncurses5-dev \ + libssl-dev \ + libtool-bin \ + libtool \ + libwireshark-dev \ + libxml2-dev \ + lsof \ + ntp \ + openssh-server \ + pkg-config \ + qt5-default \ + qtmultimedia5-dev \ + libqt5svg5-dev \ + subversion \ + sudo \ + sshpass \ + tcpdump \ + texlive-font-utils \ + tshark \ + tzdata \ + valgrind \ + vim \ + vsftpd \ + xutils-dev \ + tree \ + unzip \ + wget \ + xsltproc \ + && DEBIAN_FRONTEND=noninteractive apt-get autoremove --purge -y \ + && DEBIAN_FRONTEND=noninteractive apt-get autoclean \ + && useradd --create-home --shell /bin/bash --groups sudo etsi \ + && echo "etsi:etsi" | chpasswd \ + && adduser etsi sudo \ + && cd /home/etsi \ + && echo "" >> /home/etsi/.bashrc \ + && echo "export HOME=/home/etsi" >> /home/etsi/.bashrc \ + && echo "export LD_LIBRARY_PATH=/home/etsi/dev/etsi_emco/lib:$LD_LIBRARY_PATH" >> /home/etsi/.bashrc \ + && echo "export PATH=/home/etsi/bin:$PATH" >> /home/etsi/.bashrc \ + && echo "cd /home/etsi" >> /home/etsi/.bashrc \ + && echo ". ./devenv.bash" >> /home/etsi/.bashrc \ + && . /home/etsi/.bashrc \ + && mkdir -p bin lib include tmp frameworks docs man dev \ + && chown etsi:etsi bin lib include tmp frameworks docs man dev + +USER etsi + +RUN cd /home/etsi/dev \ + && git clone https://forge.etsi.org/gitlab/emergency-communications/NG112 ./STF549_Ng112 \ + && cd /home/etsi/dev/STF549_Ng112 \ + && git checkout TTCN_3_Developments \ + && cd /home/etsi/dev/STF549_Ng112/ttcn \ + && svn co --username svnusers --password svnusers --non-interactive --trust-server-cert https://oldforge.etsi.org/svn/LibSip/trunk ./LibSip \ + && svn co --username svnusers --password svnusers --non-interactive --trust-server-cert https://oldforge.etsi.org/svn/LibCommon/trunk/ttcn ./LibCommon/ttcn \ + && cd /home/etsi/dev/STF549_Ng112/scripts \ + && chmod 775 *.bash devenv.bash.* \ + && cd /home/etsi \ + && ln -sf /home/etsi/dev/STF549_Ng112/scripts/devenv.bash.ubuntu /home/etsi/devenv.bash \ + && ls -ltr /home/etsi \ + && export HOME=/home/etsi \ + && cd /home/etsi/frameworks \ + && git clone https://github.com/YannGarcia/osip.git ./osip \ + && cd osip \ + && ./autogen.sh \ + && ./configure --prefix=/home/etsi \ + && make && make install \ + && cd /home/etsi/frameworks \ + && wget 'http://ftp.halifax.rwth-aachen.de/eclipse//technology/epp/downloads/release/oxygen/2/eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz' -Oeclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ + && tar -zxvf ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ + && rm -f ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ + && . /home/etsi/devenv.bash \ + && cd /home/etsi/dev/STF549_Ng112/scripts \ + && ./build_titan.bash \ + && . /home/etsi/devenv.bash \ + && ./update_emcom_project.bash \ + && cd ${HOME}/dev/etsi_emco/src/AtsNg112/objs \ + && ../bin/ng112.bash \ + && ../bin/run_all.bash + +CMD ["/bin/bash"] + +# That's all Floks diff --git a/scripts/build_titan.bash b/scripts/build_titan.bash index 7305264..9506c7c 100755 --- a/scripts/build_titan.bash +++ b/scripts/build_titan.bash @@ -1,103 +1,103 @@ -#!/bin/bash -# Copyright ETSI 2018 -# See: https://forge.etsi.org/etsi-forge-copyright-statement.txt - -set -e -#set -vx - -clear - -if [ -z "${TOP}" ] -then - echo "Failed, TOP variable not defined, exit" - exit 1 -fi - -CURDIR=`pwd` -TITAN_DIR=${TOP}/.. - -# Move to the right directory -if [ ! -d ${TITAN_DIR} ] -then - echo "Titan directory does not exist, create it" - # Create TITAN directories - mkdir -p ${TITAN_DIR} - if [ ! "$?" -eq "0" ] - then - echo "Failed, TOP variable not defined, exit" - exit 2 - fi - cd ${TITAN_DIR} - # Clone all TITAN repositories - if [ ! -f ${CURDIR}/titan_repos.txt ] - then - echo "${HOME_BIN}/titan_repos.txt file does not exist, exit" - rm -fr ${TOP} - rm -fr ${TOP}/.. - exit 3 - fi - TITAN_REPOS=`cat ${CURDIR}/titan_repos.txt` - for i in ${TITAN_REPOS}; - do - git clone $i - if [ ! "$?" -eq "0" ] - then - echo "Failed to clone $i, exit" - exit 4 - fi - done -else - cd ${TITAN_DIR} - # Update github folders - DIRS=`find . -type d -name ".git" -exec dirname {} \;` - for i in ${DIRS}; - do - echo "Processing $i..." - cd $i - git fetch - if [ ! "$?" -eq "0" ] - then - echo "Failed to fetch $i, continue" - else - git pull - if [ ! "$?" -eq "0" ] - then - echo "Failed to pull $i, continue" - fi - fi - cd - - done -fi - -# Build TITAN core -export JNI=no -export GUI=no -export DEBUG=no -export GEN_PDF=no -if [ -d ${TTCN3_DIR} ] -then - rm -fr ${TTCN3_DIR} -fi -mkdir ${TTCN3_DIR} -cd ./titan.core -/bin/cat < Makefile.personal -JNI:=no -GUI:=no -DEBUG:=no -GEN_PDF:=no -EOF - -echo "Starting build..." -make clean -if [ "${OSTYPE}" == "cygwin" ] -then - make -j -else - make -fi -make install -echo "Build done" - -# Go back to initial directory -cd ${CURDIR} -exit 0 +#!/bin/bash +# Copyright ETSI 2018 +# See: https://forge.etsi.org/etsi-forge-copyright-statement.txt + +set -e +#set -vx + +clear + +if [ -z "${TOP}" ] +then + echo "Failed, TOP variable not defined, exit" + exit 1 +fi + +CURDIR=`pwd` +TITAN_DIR=${TOP}/.. + +# Move to the right directory +if [ ! -d ${TITAN_DIR} ] +then + echo "Titan directory does not exist, create it" + # Create TITAN directories + mkdir -p ${TITAN_DIR} + if [ ! "$?" -eq "0" ] + then + echo "Failed, TOP variable not defined, exit" + exit 2 + fi + cd ${TITAN_DIR} + # Clone all TITAN repositories + if [ ! -f ${CURDIR}/titan_repos.txt ] + then + echo "${HOME_BIN}/titan_repos.txt file does not exist, exit" + rm -fr ${TOP} + rm -fr ${TOP}/.. + exit 3 + fi + TITAN_REPOS=`cat ${CURDIR}/titan_repos.txt` + for i in ${TITAN_REPOS}; + do + git clone $i + if [ ! "$?" -eq "0" ] + then + echo "Failed to clone $i, exit" + exit 4 + fi + done +else + cd ${TITAN_DIR} + # Update github folders + DIRS=`find . -type d -name ".git" -exec dirname {} \;` + for i in ${DIRS}; + do + echo "Processing $i..." + cd $i + git fetch + if [ ! "$?" -eq "0" ] + then + echo "Failed to fetch $i, continue" + else + git pull + if [ ! "$?" -eq "0" ] + then + echo "Failed to pull $i, continue" + fi + fi + cd - + done +fi + +# Build TITAN core +export JNI=no +export GUI=no +export DEBUG=no +export GEN_PDF=no +if [ -d ${TTCN3_DIR} ] +then + rm -fr ${TTCN3_DIR} +fi +mkdir ${TTCN3_DIR} +cd ./titan.core +/bin/cat < Makefile.personal +JNI:=no +GUI:=no +DEBUG:=no +GEN_PDF:=no +EOF + +echo "Starting build..." +make clean +if [ "${OSTYPE}" == "cygwin" ] +then + make -j +else + make +fi +make install +echo "Build done" + +# Go back to initial directory +cd ${CURDIR} +exit 0 diff --git a/scripts/merge_emcom_project.bash b/scripts/merge_emcom_project.bash index d131d5d..a85dd14 100755 --- a/scripts/merge_emcom_project.bash +++ b/scripts/merge_emcom_project.bash @@ -1,261 +1,239 @@ -#!/bin/bash - -# Debug mode -#set -e -set -vx - -# Usage: sudo ./merge_emcom_project.bash -# TODO Use git clone in temporary directory - -OLDPWD=`pwd` - -# Storing path -VAGRANT_DIR=/vagrant -if [ ! -d ${VAGRANT_DIR} ] -then - exit -1 -else - VAGRANT_DIR=/vagrant/to_be_merged - if [ -d ${VAGRANT_DIR} ] - then - rm -f ${VAGRANT_DIR}/* - else - mkdir ${VAGRANT_DIR} - fi -fi - -# Execution path -RUN_PATH="${0%/*}" -UNAME=`uname -n` -if [ "${UNAME}" == "Ubuntu64" ] -then # Win7 Virtualbox Ubuntu 16.04 - SRC_EMCOM_PATH=/media/sf_F_DRIVE/FSCOM/ETSI/EMCOM/STF549/workspace_titan/STF549_ng112 -elif [ "${UNAME}" == "ubuntu-xenial" ] -then # Vqgrant xenial-ubuntu - SRC_EMCOM_PATH=/media/sf_F_DRIVE/FSCOM/ETSI/EMCOM/STF549/workspace_titan/STF549_ng112 -elif [ "${UNAME}" == "vagrant" ] -then # Vagrant xenial-ubuntu - SRC_EMCOM_PATH=/media/sf_F_DRIVE/FSCOM/ETSI/EMCOM/STF549/workspace_titan/STF549_ng112 -elif [ "${UNAME}" == "vagrant-prov" ] -then # Vagrant ubuntu 16.04 with provisioner script to automate EMCOM project build & test -# CHOWN_USER_GROUP=ubuntu:ubuntu - SRC_EMCOM_PATH=${HOME}/tmp/STF549 -elif [ "${UNAME}" == "yann-FSCOM" ] -then # Win7 cygwin64 - SRC_EMCOM_PATH=/cygdrive/f/FSCOM/ETSI/EMCOM/STF549/workspace_titan/STF549_ng112 -else # docket-titan - SRC_EMCOM_PATH=${HOME}/tmp/STF549_ng112 -fi -if [ "${PATH_DEV_EMCOM}" == "" ] -then - PATH_DEV_EMCOM=`pwd`/../etsi_emcom -fi - -# Update ETSI Framework files -echo 'Merging ETSI Framework files' -FWK_SRC_PATH=${SRC_EMCOM_PATH}/ccsrc -FWK_DST_PATH=${PATH_DEV_EMCOM}/framework -FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/Protocols/ -name "*.h*" -type f` -for i in ${FWK_DIR_LIST_HH} -do - BN=`basename $i` - s1=`sha256sum -b $i | cut -d' ' -f1` - s2=`sha256sum -b ${FWK_DST_PATH}/include/${BN} | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - cp ${FWK_DST_PATH}/include/${BN} ${VAGRANT_DIR} - if [ -f ${FWK_DST_PATH}/include/${BN}~ ] - then - rm ${FWK_DST_PATH}/include/${BN}~ - fi - fi -done -FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/Protocols/ -name "*.c*" -type f` -for i in ${FWK_DIR_LIST_CC} -do - BN=`basename $i` - s1=`sha256sum -b $i | cut -d' ' -f1` - s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} - if [ -f ${FWK_DST_PATH}/src/${BN}~ ] - then - rm ${FWK_DST_PATH}/src/${BN}~ - fi - fi -done -FWK_DIR_LIST_Y=`find ${FWK_SRC_PATH}/Protocols/ -name "*.y" -type f` -for i in ${FWK_DIR_LIST_Y} -do - BN=`basename $i` - s1=`sha256sum -b $i | cut -d' ' -f1` - s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} - if [ -f ${FWK_DST_PATH}/src/${BN}~ ] - then - rm ${FWK_DST_PATH}/src/${BN}~ - fi - fi -done -FWK_DIR_LIST_L=`find ${FWK_SRC_PATH}/Protocols/ -name "*.l" -type f` -for i in ${FWK_DIR_LIST_L} -do - BN=`basename $i` - s1=`sha256sum -b $i | cut -d' ' -f1` - s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} - if [ -f ${FWK_DST_PATH}/src/${BN}~ ] - then - rm ${FWK_DST_PATH}/src/${BN}~ - fi - fi -done -FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/Framework/ -name "*.h*" -type f` -FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/Framework/ -name "*.c*" -type f` -for i in ${FWK_DIR_LIST_HH} -do - BN=`basename $i` - s1=`sha256sum -b $i | cut -d' ' -f1` - s2=`sha256sum -b ${FWK_DST_PATH}/include/${BN} | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - cp ${FWK_DST_PATH}/include/${BN} ${VAGRANT_DIR} - if [ -f ${FWK_DST_PATH}/include/${BN}~ ] - then - rm ${FWK_DST_PATH}/include/${BN}~ - fi - fi -done -for i in ${FWK_DIR_LIST_CC} -do - BN=`basename $i` - s1=`sha256sum -b $i | cut -d' ' -f1` - s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} - if [ -f ${FWK_DST_PATH}/src/${BN}~ ] - then - rm ${FWK_DST_PATH}/src/${BN}~ - fi - fi -done -FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/loggers/ -name "*.h*" -type f` -for i in ${FWK_DIR_LIST_HH} -do - BN=`basename $i` - s1=`sha256sum -b $i | cut -d' ' -f1` - s2=`sha256sum -b ${FWK_DST_PATH}/include/${BN} | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - cp ${FWK_DST_PATH}/include/${BN} ${VAGRANT_DIR} - if [ -f ${FWK_DST_PATH}/include/${BN}~ ] - then - rm ${FWK_DST_PATH}/include/${BN}~ - fi - fi -done -FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/loggers/ -name "*.c*" -type f` -for i in ${FWK_DIR_LIST_CC} -do - BN=`basename $i` - s1=`sha256sum -b $i | cut -d' ' -f1` - s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} - if [ -f ${FWK_DST_PATH}/src/${BN}~ ] - then - rm ${FWK_DST_PATH}/src/${BN}~ - fi - fi -done -# Update ATS TTCN-3 files -echo 'Update TTCN-3 files' -TTCN_3_ORG_PATH=${SRC_EMCOM_PATH}/ttcn -TTCN_3_DST_PATH=${PATH_DEV_EMCOM}/src -TTCN_3_ATS_LIST='AtsNg112 LibEmcom/LibNg112 LibCommon LibSip LibItsHttp' -for i in ${TTCN_3_ATS_LIST} -do - # TTCN-3 files - LIST_TTCN_FILES=`find ${TTCN_3_ORG_PATH}/$i -name "*.ttcn" -type f` - for j in ${LIST_TTCN_FILES} - do - BN=`basename $j` - s1=`sha256sum -b $j | cut -d' ' -f1` - s2=`sha256sum -b ${TTCN_3_DST_PATH}/$i/ttcn/${BN} | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - cp ${TTCN_3_DST_PATH}/$i/ttcn/${BN} ${VAGRANT_DIR} - fi - done - # XSD files - LIST_TTCN_FILES=`find ${TTCN_3_ORG_PATH}/$i -name "*.xsd" -type f` - for j in ${LIST_TTCN_FILES} - do - BN=`basename $j` - s1=`sha256sum -b $j | cut -d' ' -f1` - s2=`sha256sum -b ${TTCN_3_DST_PATH}/$i/ttcn/${BN} | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - cp ${TTCN_3_DST_PATH}/$i/xsd/${BN} ${VAGRANT_DIR} - fi - done - # Other files - if [ -f ${SRC_EMCOM_PATH}/docs/$i/o2.cfg ] - then - s1=`sha256sum -b ${PATH_DEV_EMCOM}/src/$i/docs/o2.cfg | cut -d' ' -f1` - s2=`sha256sum -b ${SRC_EMCOM_PATH}/docs/$i/o2.cfg | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - mkdir -p ${VAGRANT_DIR}/docs/$i - cp ${PATH_DEV_EMCOM}/src/$i/docs/o2.cfg ${VAGRANT_DIR}/docs/$i - fi - fi - if [ -f ${SRC_EMCOM_PATH}/etc/$i/$i.cfg ] - then - s1=`sha256sum -b ${PATH_DEV_EMCOM}/src/$i/etc/$i.cfg | cut -d' ' -f1` - s2=`sha256sum -b ${SRC_EMCOM_PATH}/etc/$i/$i.cfg | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - mkdir -p ${VAGRANT_DIR}/etc/$i - cp ${PATH_DEV_EMCOM}/src/$i/etc/%i.cfg ${VAGRANT_DIR}/etc/$i - fi - fi -done - -TTCN_3_LIB_LIST='LibHttp LibPemea' -for i in ${TTCN_3_LIB_LIST} -do - LIST_TTCN_FILES=`find ${TTCN_3_ORG_PATH}/$i -name "*.ttcn" -type f` - for j in ${LIST_TTCN_FILES} - do - BN=`basename $j` - s1=`sha256sum -b $j | cut -d' ' -f1` - s2=`sha256sum -b ${TTCN_3_DST_PATH}/$i/ttcn/${BN} | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - cp ${TTCN_3_DST_PATH}/$i/ttcn/${BN} ${VAGRANT_DIR} - rm ${TTCN_3_DST_PATH}/$i/ttcn/${BN}~ - fi - done -done - - -LIST_FILES=`find ${PATH_DEV_EMCOM} -name "*~" -type f` -for i in ${LIST_FILES} -do - BN=$i - BN=${BN:: -1} # Remove the last character - cp ${BN} ${VAGRANT_DIR} - rm $i -done - -chmod -R 664 ${VAGRANT_DIR} -exit 0 - +#!/bin/bash + +# Debug mode +#set -e +set -vx + +# Usage: sudo ./merge_emcom_project.bash +# TODO Use git clone in temporary directory + +OLDPWD=`pwd` + +# Storing path +VAGRANT_DIR=~/tmp +if [ ! -d ${VAGRANT_DIR} ] +then + exit -1 +else + VAGRANT_DIR=$VAGRANT_DIR/to_be_merged + if [ -d ${VAGRANT_DIR} ] + then + rm -f ${VAGRANT_DIR}/* + else + mkdir ${VAGRANT_DIR} + fi +fi + +# Execution path +RUN_PATH="${0%/*}" +PATH_DEV_EMCOM=`pwd`/../etsi_emcom + + +# Update ETSI Framework files +echo 'Merging ETSI Framework files' +FWK_SRC_PATH=${SRC_EMCOM_PATH}/ccsrc +FWK_DST_PATH=${PATH_DEV_EMCOM}/framework +FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/Protocols/ -name "*.h*" -type f` +for i in ${FWK_DIR_LIST_HH} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/include/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/include/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/include/${BN}~ ] + then + rm ${FWK_DST_PATH}/include/${BN}~ + fi + fi +done +FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/Protocols/ -name "*.c*" -type f` +for i in ${FWK_DIR_LIST_CC} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/src/${BN}~ ] + then + rm ${FWK_DST_PATH}/src/${BN}~ + fi + fi +done +FWK_DIR_LIST_Y=`find ${FWK_SRC_PATH}/Protocols/ -name "*.y" -type f` +for i in ${FWK_DIR_LIST_Y} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/src/${BN}~ ] + then + rm ${FWK_DST_PATH}/src/${BN}~ + fi + fi +done +FWK_DIR_LIST_L=`find ${FWK_SRC_PATH}/Protocols/ -name "*.l" -type f` +for i in ${FWK_DIR_LIST_L} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/src/${BN}~ ] + then + rm ${FWK_DST_PATH}/src/${BN}~ + fi + fi +done +FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/Framework/ -name "*.h*" -type f` +FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/Framework/ -name "*.c*" -type f` +for i in ${FWK_DIR_LIST_HH} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/include/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/include/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/include/${BN}~ ] + then + rm ${FWK_DST_PATH}/include/${BN}~ + fi + fi +done +for i in ${FWK_DIR_LIST_CC} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/src/${BN}~ ] + then + rm ${FWK_DST_PATH}/src/${BN}~ + fi + fi +done +FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/loggers/ -name "*.h*" -type f` +for i in ${FWK_DIR_LIST_HH} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/include/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/include/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/include/${BN}~ ] + then + rm ${FWK_DST_PATH}/include/${BN}~ + fi + fi +done +FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/loggers/ -name "*.c*" -type f` +for i in ${FWK_DIR_LIST_CC} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/src/${BN}~ ] + then + rm ${FWK_DST_PATH}/src/${BN}~ + fi + fi +done +# Update ATS TTCN-3 files +echo 'Update TTCN-3 files' +TTCN_3_ORG_PATH=${SRC_EMCOM_PATH}/ttcn +TTCN_3_DST_PATH=${PATH_DEV_EMCOM}/src +TTCN_3_ATS_LIST='AtsNg112 LibEmcom/LibNg112 LibCommon LibSip LibItsHttp' +for i in ${TTCN_3_ATS_LIST} +do + # TTCN-3 files + LIST_TTCN_FILES=`find ${TTCN_3_ORG_PATH}/$i -name "*.ttcn" -type f` + for j in ${LIST_TTCN_FILES} + do + BN=`basename $j` + s1=`sha256sum -b $j | cut -d' ' -f1` + s2=`sha256sum -b ${TTCN_3_DST_PATH}/$i/ttcn/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${TTCN_3_DST_PATH}/$i/ttcn/${BN} ${VAGRANT_DIR} + fi + done + # XSD files + LIST_TTCN_FILES=`find ${TTCN_3_ORG_PATH}/$i -name "*.xsd" -type f` + for j in ${LIST_TTCN_FILES} + do + BN=`basename $j` + s1=`sha256sum -b $j | cut -d' ' -f1` + s2=`sha256sum -b ${TTCN_3_DST_PATH}/$i/ttcn/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${TTCN_3_DST_PATH}/$i/xsd/${BN} ${VAGRANT_DIR} + fi + done + # Other files + if [ -f ${SRC_EMCOM_PATH}/docs/$i/o2.cfg ] + then + s1=`sha256sum -b ${PATH_DEV_EMCOM}/src/$i/docs/o2.cfg | cut -d' ' -f1` + s2=`sha256sum -b ${SRC_EMCOM_PATH}/docs/$i/o2.cfg | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + mkdir -p ${VAGRANT_DIR}/docs/$i + cp ${PATH_DEV_EMCOM}/src/$i/docs/o2.cfg ${VAGRANT_DIR}/docs/$i + fi + fi + if [ -f ${SRC_EMCOM_PATH}/etc/$i/$i.cfg ] + then + s1=`sha256sum -b ${PATH_DEV_EMCOM}/src/$i/etc/$i.cfg | cut -d' ' -f1` + s2=`sha256sum -b ${SRC_EMCOM_PATH}/etc/$i/$i.cfg | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + mkdir -p ${VAGRANT_DIR}/etc/$i + cp ${PATH_DEV_EMCOM}/src/$i/etc/%i.cfg ${VAGRANT_DIR}/etc/$i + fi + fi +done + +TTCN_3_LIB_LIST='LibHttp LibPemea' +for i in ${TTCN_3_LIB_LIST} +do + LIST_TTCN_FILES=`find ${TTCN_3_ORG_PATH}/$i -name "*.ttcn" -type f` + for j in ${LIST_TTCN_FILES} + do + BN=`basename $j` + s1=`sha256sum -b $j | cut -d' ' -f1` + s2=`sha256sum -b ${TTCN_3_DST_PATH}/$i/ttcn/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${TTCN_3_DST_PATH}/$i/ttcn/${BN} ${VAGRANT_DIR} + rm ${TTCN_3_DST_PATH}/$i/ttcn/${BN}~ + fi + done +done + + +LIST_FILES=`find ${PATH_DEV_EMCOM} -name "*~" -type f` +for i in ${LIST_FILES} +do + BN=$i + BN=${BN:: -1} # Remove the last character + cp ${BN} ${VAGRANT_DIR} + rm $i +done + +chmod -R 664 ${VAGRANT_DIR} +exit 0 + diff --git a/scripts/ng112.bash b/scripts/ng112.bash index 7e6a0cc..f15ee65 100755 --- a/scripts/ng112.bash +++ b/scripts/ng112.bash @@ -1,242 +1,242 @@ -#!/bin/bash -#set -e -set -vx - -function f_exit { - cd ${CURPWD} - - unset TTCN_FILES - unset CC_FILES - unset CFG_FILES - unset EXECUTABLE - echo $1 - exit $2 -} - -function f_usage { - echo "build.bash: This script import from External Disk the " - echo "Optional arguments:" - echo " prof: Generate a makefile including profiling options (e.g. ./build.bash prof)" - exit 0 -} - -clear - -if [ "$1" == "help" ] -then - f_usage -fi - -ATS_NAME=Ng112 - -#CURPWD=`pwd` -if [ ! "${PWD##*/}" == "objs" ] -then - cd ../objs - if [ ! $? == 0 ] - then - echo "Please move to PROJECT/obj directory" - exit 1 - fi -fi -# Remove everything -rm -fr ../objs/*.hh -rm -fr ../objs/*.cc -rm -fr ../objs/*.log -rm -fr ../objs/*.o -rm -fr ../objs/Makefile - -# Remove useless files -find .. -type f -name "*~" -exec rm {} \; -find .. -type f -name "*.bak" -exec rm {} \; -find .. -type f -name "*.log" -exec rm {} \; - -# Build XSD files if any and put them in objs directory -#XSD_PATH=${PATH_DEV_EMCOM}/xsd -XSD_PATH=${PATH_DEV_EMCOM}/null # Do not use xsd2ttcn for now, need to fix issues first -if [ -d ${XSD_PATH} ] -then - XSD_FILES=`find ${XSD_PATH} -name '*.xsd'` - - if [ "${OSTYPE}" == "cygwin" ] - then - xsd2ttcn.exe ${XSD_FILES} - else - xsd2ttcn ${XSD_FILES} - fi - if [ "$?" != "0" ] - then - f_exit "Failed to generate XSD source code" 2 - fi - XSD_FILES=`find . -name '*.ttcn'` -fi - -REFERENCES="LibCommon LibHttp LibEmcom/LibNg112 LibSip" -for i in ${REFERENCES} -do - # TTCN code - for j in `find ${PATH_DEV_EMCOM}/src/$i/ttcn -type f -name "*.ttcn"`; - do - ln -sf $j ../ttcn/`basename $j` - done - # Include source code - files=`find ${PATH_DEV_EMCOM}/src/$i/include -type f` - if [ "${files}" != " " ] - then - for j in ${files}; - do - ln -sf $j ../include/`basename $j` - done - fi - # CC source code - files=`find ${PATH_DEV_EMCOM}/src/$i/src -type f` - if [ "${files}" != " " ] - then - for j in ${files}; - do - ln -sf $j ../src/`basename $j` - done - fi -done - -# Generate the list of the TTCN-3 files -TTCN_FILES=`find .. -name '*.ttcn*'` - -# Start ATS generation - Step 1 -if [ "${OSTYPE}" == "cygwin" ] -then - rm ../bin/*.exe ../lib/*.dll - compiler.exe -e -f -g -l -L -M -n -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log - if [ "$?" == "1" ] - then - f_exit "Failed to compile ATS" 4 - fi -else - compiler -e -f -g -l -L -M -n -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log - if [ "$?" == "1" ] - then - f_exit "Failed to generate ATS source code" 6 - fi -fi - -# Sart ATS generation - Step 2 -# Create working variables -CC_FILES=`find ../src -name '*.c*'` -FWK_FILES=`find ${PATH_DEV_EMCOM}/framework/ -name '*.c*'` -CFG_FILES=`find ../etc -name '*.cfg'` - -# Sart ATS generation - Step 3 -if [ "${OSTYPE}" == "cygwin" ] -then - ttcn3_makefilegen.exe -d -f -g -m -M -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log - if [ "$?" == "1" ] - then - f_exit "Failed to compile ATS" 5 - fi -else - ttcn3_makefilegen -d -f -g -m -M -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log - if [ "$?" == "1" ] - then - f_exit "Failed to generate ATS source code" 7 - fi -fi - -# Bug xsd2ttcn -for i in ${XSD_FILES} -do - VARIANT='s/ variant (\[\-\]) ;//g' - sed --in-place "${VARIANT}" $i -done - -# Remove port skeletons to use src/ -for i in `ls ../include/*.hh` -do - if [ -f ./`basename $i` ] - then - rm ./`basename $i` - fi -done -for i in `ls ../src/*.cc` -do - if [ -f ./`basename $i` ] - then - rm ./`basename $i` - fi -done - -# Check if Makefile was generated -if [ ! -f ./Makefile ] -then - f_exit "Failed to generate ATS source code" 8 -fi - -# Patch ATS generated files -#./bin/patch.bash 2>&1 3>&1 | tee --append build.log -# Add compiler/linker options -# -DASN_DISABLE_OER_SUPPORT is required for CAMCodec and DENMCodec -if [ "$1" == "prof" ] -then - if [ "${OSTYPE}" == "cygwin" ] - then - CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -D_XOPEN_SOURCE=700 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' - else - CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' - fi - LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' -else - if [ "${OSTYPE}" == "cygwin" ] - then - CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' - else - CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -DAS_USE_SSL -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' - fi - LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' -fi -ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_EMCOM)/include -I$(PATH_DEV_EMCOM)/framework/include -I../include -I../../LibEmcom/Common/include -I../../LibEmcom/LibNg112/include -I$(HOME_FRAMEWORKS)/osip/include -I$(HOME_INC) -I.' -ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lpcap -lstdc++fs -lssl -L\$\(HOME_FRAMEWORKS\)\/osip\/src\/osipparser2\/\.libs -losipparser2/g' -sed --in-place "${CXXFLAGS_DEBUG_MODE}" ./Makefile -sed --in-place "${LDFLAGS_DEBUG_MODE}" ./Makefile -sed --in-place "${ADD_INCLUDE}" ./Makefile -sed --in-place "${ADD_LIBRARIES}" ./Makefile -# Update COMPILER_FLAGS -COMPILER_FLAGS='s/COMPILER_FLAGS = /COMPILER_FLAGS = -e -O /g' -sed --in-place "${COMPILER_FLAGS}" ./Makefile -# Update clean clause -CLEAN_LINE='s/$(RM) $(EXECUTABLE)/$(RM) ..\/bin\/$(EXECUTABLE) ..\/src\/*.o/g' -sed --in-place "${CLEAN_LINE}" ./Makefile -# Move binary file command -EXECUTABLE=MyExample -MV_CMD='s/all: $(TARGET) ;/all: $(TARGET) ; @if [ -f ..\/objs\/$(EXECUTABLE) ]; then mv ..\/objs\/$(EXECUTABLE) ..\/bin; fi ;/g' -sed --in-place "${MV_CMD}" ./Makefile -# Add run command -ADD_HOST='/PLATFORM = /aHOST=127.0.0.1' -ADD_PORT='/PLATFORM = /aPORT=12000' -sed --in-place "${ADD_PORT}" ./Makefile -sed --in-place "${ADD_HOST}" ./Makefile -ADD_RUN_LINE_1='$arun: all' -ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' -sed --in-place "${ADD_RUN_LINE_1}" ./Makefile -sed --in-place "${ADD_RUN_LINE_2}" ./Makefile -ADD_RUN_LINE_1='$arun_d: all' -ADD_RUN_LINE_2='$a\\t@gdb --args $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' -sed --in-place "${ADD_RUN_LINE_1}" ./Makefile -sed --in-place "${ADD_RUN_LINE_2}" ./Makefile -ADD_RUN_LINE_1='$arun_v: all' -ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --track-fds=yes --run-cxx-freeres=yes $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' -sed --in-place "${ADD_RUN_LINE_1}" ./Makefile -sed --in-place "${ADD_RUN_LINE_2}" ./Makefile -# Add gendoc entry -ADD_RUN_LINE_1='$agendoc: ../docs/o2.cfg' -ADD_RUN_LINE_2='$a\\tdoxygen ../docs/o2.cfg' -sed --in-place "${ADD_RUN_LINE_1}" ./Makefile -sed --in-place "${ADD_RUN_LINE_2}" ./Makefile - -# Build all -make all 2>&1 3>&1 | tee --append build.log -if [ "$?" == "1" ] -then - f_exit "Failed to generate ATS source code" 9 -fi -export LD_LIBRARY_PATH=~/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH -../bin/Ats${ATS_NAME} -v -f_exit "Build done successfully" 0 +#!/bin/bash +#set -e +set -vx + +function f_exit { + cd ${CURPWD} + + unset TTCN_FILES + unset CC_FILES + unset CFG_FILES + unset EXECUTABLE + echo $1 + exit $2 +} + +function f_usage { + echo "build.bash: This script import from External Disk the " + echo "Optional arguments:" + echo " prof: Generate a makefile including profiling options (e.g. ./build.bash prof)" + exit 0 +} + +clear + +if [ "$1" == "help" ] +then + f_usage +fi + +ATS_NAME=Ng112 + +#CURPWD=`pwd` +if [ ! "${PWD##*/}" == "objs" ] +then + cd ../objs + if [ ! $? == 0 ] + then + echo "Please move to PROJECT/obj directory" + exit 1 + fi +fi +# Remove everything +rm -fr ../objs/*.hh +rm -fr ../objs/*.cc +rm -fr ../objs/*.log +rm -fr ../objs/*.o +rm -fr ../objs/Makefile + +# Remove useless files +find .. -type f -name "*~" -exec rm {} \; +find .. -type f -name "*.bak" -exec rm {} \; +find .. -type f -name "*.log" -exec rm {} \; + +# Build XSD files if any and put them in objs directory +#XSD_PATH=${PATH_DEV_EMCOM}/xsd +XSD_PATH=${PATH_DEV_EMCOM}/null # Do not use xsd2ttcn for now, need to fix issues first +if [ -d ${XSD_PATH} ] +then + XSD_FILES=`find ${XSD_PATH} -name '*.xsd'` + + if [ "${OSTYPE}" == "cygwin" ] + then + xsd2ttcn.exe ${XSD_FILES} + else + xsd2ttcn ${XSD_FILES} + fi + if [ "$?" != "0" ] + then + f_exit "Failed to generate XSD source code" 2 + fi + XSD_FILES=`find . -name '*.ttcn'` +fi + +REFERENCES="LibCommon LibHttp LibEmcom/LibNg112 LibSip" +for i in ${REFERENCES} +do + # TTCN code + for j in `find ${PATH_DEV_EMCOM}/src/$i/ttcn -type f -name "*.ttcn"`; + do + ln -sf $j ../ttcn/`basename $j` + done + # Include source code + files=`find ${PATH_DEV_EMCOM}/src/$i/include -type f` + if [ "${files}" != " " ] + then + for j in ${files}; + do + ln -sf $j ../include/`basename $j` + done + fi + # CC source code + files=`find ${PATH_DEV_EMCOM}/src/$i/src -type f` + if [ "${files}" != " " ] + then + for j in ${files}; + do + ln -sf $j ../src/`basename $j` + done + fi +done + +# Generate the list of the TTCN-3 files +TTCN_FILES=`find .. -name '*.ttcn*'` + +# Start ATS generation - Step 1 +if [ "${OSTYPE}" == "cygwin" ] +then + rm ../bin/*.exe ../lib/*.dll + compiler.exe -e -f -g -l -L -M -n -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log + if [ "$?" == "1" ] + then + f_exit "Failed to compile ATS" 4 + fi +else + compiler -e -f -g -l -L -M -n -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log + if [ "$?" == "1" ] + then + f_exit "Failed to generate ATS source code" 6 + fi +fi + +# Sart ATS generation - Step 2 +# Create working variables +CC_FILES=`find ../src -name '*.c*'` +FWK_FILES=`find ${PATH_DEV_EMCOM}/framework/ -name '*.c*'` +CFG_FILES=`find ../etc -name '*.cfg'` + +# Sart ATS generation - Step 3 +if [ "${OSTYPE}" == "cygwin" ] +then + ttcn3_makefilegen.exe -d -f -g -m -M -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log + if [ "$?" == "1" ] + then + f_exit "Failed to compile ATS" 5 + fi +else + ttcn3_makefilegen -d -f -g -m -M -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log + if [ "$?" == "1" ] + then + f_exit "Failed to generate ATS source code" 7 + fi +fi + +# Bug xsd2ttcn +for i in ${XSD_FILES} +do + VARIANT='s/ variant (\[\-\]) ;//g' + sed --in-place "${VARIANT}" $i +done + +# Remove port skeletons to use src/ +for i in `ls ../include/*.hh` +do + if [ -f ./`basename $i` ] + then + rm ./`basename $i` + fi +done +for i in `ls ../src/*.cc` +do + if [ -f ./`basename $i` ] + then + rm ./`basename $i` + fi +done + +# Check if Makefile was generated +if [ ! -f ./Makefile ] +then + f_exit "Failed to generate ATS source code" 8 +fi + +# Patch ATS generated files +#./bin/patch.bash 2>&1 3>&1 | tee --append build.log +# Add compiler/linker options +# -DASN_DISABLE_OER_SUPPORT is required for CAMCodec and DENMCodec +if [ "$1" == "prof" ] +then + if [ "${OSTYPE}" == "cygwin" ] + then + CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -D_XOPEN_SOURCE=700 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' + else + CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' + fi + LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' +else + if [ "${OSTYPE}" == "cygwin" ] + then + CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' + else + CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' + fi + LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' +fi +ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_EMCOM)/include -I$(PATH_DEV_EMCOM)/framework/include -I../include -I../../LibEmcom/Common/include -I../../LibEmcom/LibNg112/include -I$(HOME_FRAMEWORKS)/osip/include -I$(HOME_INC) -I.' +ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lpcap -lstdc++fs -lssl -L\$\(HOME_FRAMEWORKS\)\/osip\/src\/osipparser2\/\.libs -losipparser2/g' +sed --in-place "${CXXFLAGS_DEBUG_MODE}" ./Makefile +sed --in-place "${LDFLAGS_DEBUG_MODE}" ./Makefile +sed --in-place "${ADD_INCLUDE}" ./Makefile +sed --in-place "${ADD_LIBRARIES}" ./Makefile +# Update COMPILER_FLAGS +COMPILER_FLAGS='s/COMPILER_FLAGS = /COMPILER_FLAGS = -e -O /g' +sed --in-place "${COMPILER_FLAGS}" ./Makefile +# Update clean clause +CLEAN_LINE='s/$(RM) $(EXECUTABLE)/$(RM) ..\/bin\/$(EXECUTABLE) ..\/src\/*.o/g' +sed --in-place "${CLEAN_LINE}" ./Makefile +# Move binary file command +EXECUTABLE=MyExample +MV_CMD='s/all: $(TARGET) ;/all: $(TARGET) ; @if [ -f ..\/objs\/$(EXECUTABLE) ]; then mv ..\/objs\/$(EXECUTABLE) ..\/bin; fi ;/g' +sed --in-place "${MV_CMD}" ./Makefile +# Add run command +ADD_HOST='/PLATFORM = /aHOST=127.0.0.1' +ADD_PORT='/PLATFORM = /aPORT=12000' +sed --in-place "${ADD_PORT}" ./Makefile +sed --in-place "${ADD_HOST}" ./Makefile +ADD_RUN_LINE_1='$arun: all' +ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile +ADD_RUN_LINE_1='$arun_d: all' +ADD_RUN_LINE_2='$a\\t@gdb --args $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile +ADD_RUN_LINE_1='$arun_v: all' +ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --track-fds=yes --run-cxx-freeres=yes $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile +# Add gendoc entry +ADD_RUN_LINE_1='$agendoc: ../docs/o2.cfg' +ADD_RUN_LINE_2='$a\\tdoxygen ../docs/o2.cfg' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile + +# Build all +make all 2>&1 3>&1 | tee --append build.log +if [ "$?" == "1" ] +then + f_exit "Failed to generate ATS source code" 9 +fi +export LD_LIBRARY_PATH=~/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH +../bin/Ats${ATS_NAME} -v +f_exit "Build done successfully" 0 diff --git a/scripts/run_all.bash b/scripts/run_all.bash index 9329847..6b68a68 100755 --- a/scripts/run_all.bash +++ b/scripts/run_all.bash @@ -1,47 +1,47 @@ -#!/bin/bash -#set -e -#set -vx - -clear - -export LD_LIBRARY_PATH=/home/vagrant/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH - -if ! [[ $1 =~ "^[0-9]+$" ]] -then - COUNTER=$1 -else - COUNTER=1 -fi - -CURPWD=`pwd` -if [ ! "${PWD##*/}" == "objs" ] -then - cd ../objs - if [ ! $? == 0 ] - then - echo "Please move to PROJECT/obj directory" - exit 1 - fi -fi - -rm ../logs/merged.log.* - -for i in $(seq 1 1 $COUNTER) -do - LD_LIBRARY_PATH=/home/vagrant/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH ../bin/run_mtc.bash & - LD_LIBRARY_PATH=/home/vagrant/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH ../bin/run_ptcs.bash $2 - - dup=$(ps -ef | grep "$0" | grep -v grep | wc -l) - while [ ${dup} -eq 3 ] - do - sleep 1 - dup=$(ps -ef | grep "$0" | grep -v grep | wc -l) - done - sleep 1 - - mv ../logs/merged.log ../logs/merged.log.`date +'%Y%m%d%S'` -done - -exit 0 - - +#!/bin/bash +#set -e +#set -vx + +clear + +export LD_LIBRARY_PATH=/home/vagrant/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH + +if ! [[ $1 =~ "^[0-9]+$" ]] +then + COUNTER=$1 +else + COUNTER=1 +fi + +CURPWD=`pwd` +if [ ! "${PWD##*/}" == "objs" ] +then + cd ../objs + if [ ! $? == 0 ] + then + echo "Please move to PROJECT/obj directory" + exit 1 + fi +fi + +rm ../logs/merged.log.* + +for i in $(seq 1 1 $COUNTER) +do + LD_LIBRARY_PATH=/home/vagrant/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH ../bin/run_mtc.bash & + LD_LIBRARY_PATH=/home/vagrant/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH ../bin/run_ptcs.bash $2 + + dup=$(ps -ef | grep "$0" | grep -v grep | wc -l) + while [ ${dup} -eq 3 ] + do + sleep 1 + dup=$(ps -ef | grep "$0" | grep -v grep | wc -l) + done + sleep 1 + + mv ../logs/merged.log ../logs/merged.log.`date +'%Y%m%d%S'` +done + +exit 0 + + diff --git a/scripts/run_mtc.bash b/scripts/run_mtc.bash index a4932c2..bc283fd 100755 --- a/scripts/run_mtc.bash +++ b/scripts/run_mtc.bash @@ -1,55 +1,55 @@ -#!/bin/bash -#set -evx - -clear - -CURPWD=`pwd` -if [ ! "${PWD##*/}" == "objs" ] -then - cd ../objs - if [ ! $? == 0 ] - then - echo "Please move to PROJECT/obj directory" - exit 1 - fi -fi - -TITAN_LOG_DIR=../logs -if [ ! -d ${TITAN_LOG_DIR} ] -then - mkdir ${TITAN_LOG_DIR} -else - rm -f ${TITAN_LOG_DIR}/*.log -fi - -CFG_FILES=`find ../etc -name '*.cfg'` -#LOG_FILES=`find ${TITAN_LOG_DIR} -name '*.log'` -#mv ${LOG_FILES} ../logs - -#if [ "${OSTYPE}" == "cygwin" ] -#then -# # Remove dll -# rm ./*.dll -# ## Copy the new ones -# cp ~/lib/libhelper.dll . -# cp ~/lib/libconverter.dll . -# cp ~/lib/liblogger.dll . -# cp ~/lib/libttcn3_tri.dll . -# cp ~/lib/libcomm.dll . -#fi - -echo "> cmtc: to create the MTC server" -echo "> smtc [module_name[[.control]|.testcase_name|.*]: when MyExample is connected, run the TCs in [EXECUTE] section" -echo "> emtc: Terminate MTC." -mctr ${CFG_FILES} - -LOG_FILES=`find ${TITAN_LOG_DIR} -name '*.log'` -if [ "${TITAN_LOG_DIR}" != "" ] -then - ttcn3_logmerge -o ${TITAN_LOG_DIR}/merged.log ${LOG_FILES} - ttcn3_logformat -o ${TITAN_LOG_DIR}/merged_formated.log ${TITAN_LOG_DIR}/merged.log - mv ${TITAN_LOG_DIR}/merged_formated.log ${TITAN_LOG_DIR}/merged.log - echo "log files were merged into ${TITAN_LOG_DIR}/merged.log" -fi - -cd ${CURPWD} +#!/bin/bash +#set -evx + +clear + +CURPWD=`pwd` +if [ ! "${PWD##*/}" == "objs" ] +then + cd ../objs + if [ ! $? == 0 ] + then + echo "Please move to PROJECT/obj directory" + exit 1 + fi +fi + +TITAN_LOG_DIR=../logs +if [ ! -d ${TITAN_LOG_DIR} ] +then + mkdir ${TITAN_LOG_DIR} +else + rm -f ${TITAN_LOG_DIR}/*.log +fi + +CFG_FILES=`find ../etc -name '*.cfg'` +#LOG_FILES=`find ${TITAN_LOG_DIR} -name '*.log'` +#mv ${LOG_FILES} ../logs + +#if [ "${OSTYPE}" == "cygwin" ] +#then +# # Remove dll +# rm ./*.dll +# ## Copy the new ones +# cp ~/lib/libhelper.dll . +# cp ~/lib/libconverter.dll . +# cp ~/lib/liblogger.dll . +# cp ~/lib/libttcn3_tri.dll . +# cp ~/lib/libcomm.dll . +#fi + +echo "> cmtc: to create the MTC server" +echo "> smtc [module_name[[.control]|.testcase_name|.*]: when MyExample is connected, run the TCs in [EXECUTE] section" +echo "> emtc: Terminate MTC." +mctr ${CFG_FILES} + +LOG_FILES=`find ${TITAN_LOG_DIR} -name '*.log'` +if [ "${TITAN_LOG_DIR}" != "" ] +then + ttcn3_logmerge -o ${TITAN_LOG_DIR}/merged.log ${LOG_FILES} + ttcn3_logformat -o ${TITAN_LOG_DIR}/merged_formated.log ${TITAN_LOG_DIR}/merged.log + mv ${TITAN_LOG_DIR}/merged_formated.log ${TITAN_LOG_DIR}/merged.log + echo "log files were merged into ${TITAN_LOG_DIR}/merged.log" +fi + +cd ${CURPWD} diff --git a/scripts/run_ptcs.bash b/scripts/run_ptcs.bash index 869220b..3a201d3 100755 --- a/scripts/run_ptcs.bash +++ b/scripts/run_ptcs.bash @@ -1,38 +1,38 @@ -#!/bin/bash -#set -e -#set -vx - -clear - -CURPWD=`pwd` -if [ ! "${PWD##*/}" == "objs" ] -then - cd ../objs - if [ ! $? == 0 ] - then - echo "Please move to PROJECT/obj directory" - exit 1 - fi -fi - -if [ -f ./core ] -then - rm -f ./core -fi -if [ "$1" == "d" ] -then - make run_d -elif [ "$1" == "v" ] -then - make run_v -else - make run -fi -#if [ "${OSTYPE}" == "cygwin" ] -#then -# ../bin/SIPmsg.exe 127.0.0.1 12000 -#else -# ../bin/SIPmsg 127.0.0.1 12000 -#fi - -cd ${CURPWD} +#!/bin/bash +#set -e +#set -vx + +clear + +CURPWD=`pwd` +if [ ! "${PWD##*/}" == "objs" ] +then + cd ../objs + if [ ! $? == 0 ] + then + echo "Please move to PROJECT/obj directory" + exit 1 + fi +fi + +if [ -f ./core ] +then + rm -f ./core +fi +if [ "$1" == "d" ] +then + make run_d +elif [ "$1" == "v" ] +then + make run_v +else + make run +fi +#if [ "${OSTYPE}" == "cygwin" ] +#then +# ../bin/SIPmsg.exe 127.0.0.1 12000 +#else +# ../bin/SIPmsg 127.0.0.1 12000 +#fi + +cd ${CURPWD} diff --git a/scripts/run_tshark.bash b/scripts/run_tshark.bash index 7b12fa4..932d7fc 100755 --- a/scripts/run_tshark.bash +++ b/scripts/run_tshark.bash @@ -1,7 +1,7 @@ -#!/bin/bash - -# Debug mode -#set -vx -set -e - -~/frameworks/wireshark-build/run/tshark -ieth1 -V -f"ether proto 0x8947 or udp src port 12345 or udp dst port 12345" -Tfields -eframe.time -eeth.dst -eeth.src -eeth.type -edata +#!/bin/bash + +# Debug mode +#set -vx +set -e + +~/frameworks/wireshark-build/run/tshark -ieth1 -V -f"ether proto 0x8947 or udp src port 12345 or udp dst port 12345" -Tfields -eframe.time -eeth.dst -eeth.src -eeth.type -edata diff --git a/scripts/testcodec_generate_makefile.bash b/scripts/testcodec_generate_makefile.bash index 9a4c288..9cf59eb 100755 --- a/scripts/testcodec_generate_makefile.bash +++ b/scripts/testcodec_generate_makefile.bash @@ -1,242 +1,242 @@ -#!/bin/bash -#set -e -set -vx - -function f_exit { - cd ${CURPWD} - - unset TTCN_FILES - unset CC_FILES - unset CFG_FILES - unset EXECUTABLE - echo $1 - exit $2 -} - -function f_usage { - echo "build.bash: This script import from External Disk the " - echo "Optional arguments:" - echo " prof: Generate a makefile including profiling options (e.g. ./build.bash prof)" - exit 0 -} - -clear - -if [ "$1" == "help" ] -then - f_usage -fi - -ATS_NAME=TestCodec - -#CURPWD=`pwd` -if [ ! "${PWD##*/}" == "objs" ] -then - cd ../objs - if [ ! $? == 0 ] - then - echo "Please move to PROJECT/obj directory" - exit 1 - fi -fi -# Remove everything -rm -fr ../objs/*.hh -rm -fr ../objs/*.cc -rm -fr ../objs/*.log -rm -fr ../objs/*.o -rm -fr ../objs/Makefile - -# Remove useless files -find .. -type f -name "*~" -exec rm {} \; -find .. -type f -name "*.bak" -exec rm {} \; -find .. -type f -name "*.log" -exec rm {} \; - -# Build XSD files if any and put them in objs directory -#XSD_PATH=${PATH_DEV_EMCOM}/xsd -XSD_PATH=${PATH_DEV_EMCOM}/null # Do not use xsd2ttcn for now, need to fix issues first -if [ -d ${XSD_PATH} ] -then - XSD_FILES=`find ${XSD_PATH} -name '*.xsd'` - - if [ "${OSTYPE}" == "cygwin" ] - then - xsd2ttcn.exe ${XSD_FILES} - else - xsd2ttcn ${XSD_FILES} - fi - if [ "$?" != "0" ] - then - f_exit "Failed to generate XSD source code" 2 - fi - XSD_FILES=`find . -name '*.ttcn'` -fi - -REFERENCES="LibCommon LibHttp LibEmcom/LibNg112 LibSip" -for i in ${REFERENCES} -do - # TTCN code - for j in `find ${PATH_DEV_EMCOM}/src/$i/ttcn -type f -name "*.ttcn"`; - do - ln -sf $j ../ttcn/`basename $j` - done - # Include source code - files=`find ${PATH_DEV_EMCOM}/src/$i/include -type f` - if [ "${files}" != " " ] - then - for j in ${files}; - do - ln -sf $j ../include/`basename $j` - done - fi - # CC source code - files=`find ${PATH_DEV_EMCOM}/src/$i/src -type f` - if [ "${files}" != " " ] - then - for j in ${files}; - do - ln -sf $j ../src/`basename $j` - done - fi -done - -# Generate the list of the TTCN-3 files -TTCN_FILES=`find .. -name '*.ttcn*'` - -# Start ATS generation - Step 1 -if [ "${OSTYPE}" == "cygwin" ] -then - rm ../bin/*.exe ../lib/*.dll - compiler.exe -e -f -g -l -L -M -n -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log - if [ "$?" == "1" ] - then - f_exit "Failed to compile ATS" 4 - fi -else - compiler -e -f -g -l -L -M -n -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log - if [ "$?" == "1" ] - then - f_exit "Failed to generate ATS source code" 6 - fi -fi - -# Sart ATS generation - Step 2 -# Create working variables -CC_FILES=`find ../src -name '*.c*'` -FWK_FILES=`find ${PATH_DEV_EMCOM}/framework/ -name '*.c*'` -CFG_FILES=`find ../etc -name '*.cfg'` - -# Sart ATS generation - Step 3 -if [ "${OSTYPE}" == "cygwin" ] -then - ttcn3_makefilegen.exe -d -f -g -m -M -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log - if [ "$?" == "1" ] - then - f_exit "Failed to compile ATS" 5 - fi -else - ttcn3_makefilegen -d -f -g -m -M -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log - if [ "$?" == "1" ] - then - f_exit "Failed to generate ATS source code" 7 - fi -fi - -# Bug xsd2ttcn -for i in ${XSD_FILES} -do - VARIANT='s/ variant (\[\-\]) ;//g' - sed --in-place "${VARIANT}" $i -done - -# Remove port skeletons to use src/ -for i in `ls ../include/*.hh` -do - if [ -f ./`basename $i` ] - then - rm ./`basename $i` - fi -done -for i in `ls ../src/*.cc` -do - if [ -f ./`basename $i` ] - then - rm ./`basename $i` - fi -done - -# Check if Makefile was generated -if [ ! -f ./Makefile ] -then - f_exit "Failed to generate ATS source code" 8 -fi - -# Patch ATS generated files -#./bin/patch.bash 2>&1 3>&1 | tee --append build.log -# Add compiler/linker options -# -DASN_DISABLE_OER_SUPPORT is required for CAMCodec and DENMCodec -if [ "$1" == "prof" ] -then - if [ "${OSTYPE}" == "cygwin" ] - then - CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -D_XOPEN_SOURCE=700 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' - else - CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' - fi - LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' -else - if [ "${OSTYPE}" == "cygwin" ] - then - CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' - else - CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -DAS_USE_SSL -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' - fi - LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fstack-check -fstack-protector -fsanitize=address -fno-omit-frame-pointer -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' -fi -ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_EMCOM)/include -I$(PATH_DEV_EMCOM)/framework/include -I../include -I../../LibEmcom/Common/include -I../../LibEmcom/LibNg112/include -I$(HOME_FRAMEWORKS)/osip/include -I$(HOME_INC) -I.' -ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lpcap -lstdc++fs -lssl -L\$\(HOME_FRAMEWORKS\)\/osip\/src\/osipparser2\/\.libs -losipparser2/g' -sed --in-place "${CXXFLAGS_DEBUG_MODE}" ./Makefile -sed --in-place "${LDFLAGS_DEBUG_MODE}" ./Makefile -sed --in-place "${ADD_INCLUDE}" ./Makefile -sed --in-place "${ADD_LIBRARIES}" ./Makefile -# Update COMPILER_FLAGS -COMPILER_FLAGS='s/COMPILER_FLAGS = /COMPILER_FLAGS = -e -O /g' -sed --in-place "${COMPILER_FLAGS}" ./Makefile -# Update clean clause -CLEAN_LINE='s/$(RM) $(EXECUTABLE)/$(RM) ..\/bin\/$(EXECUTABLE) ..\/src\/*.o/g' -sed --in-place "${CLEAN_LINE}" ./Makefile -# Move binary file command -EXECUTABLE=MyExample -MV_CMD='s/all: $(TARGET) ;/all: $(TARGET) ; @if [ -f ..\/objs\/$(EXECUTABLE) ]; then mv ..\/objs\/$(EXECUTABLE) ..\/bin; fi ;/g' -sed --in-place "${MV_CMD}" ./Makefile -# Add run command -ADD_HOST='/PLATFORM = /aHOST=127.0.0.1' -ADD_PORT='/PLATFORM = /aPORT=12000' -sed --in-place "${ADD_PORT}" ./Makefile -sed --in-place "${ADD_HOST}" ./Makefile -ADD_RUN_LINE_1='$arun: all' -ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' -sed --in-place "${ADD_RUN_LINE_1}" ./Makefile -sed --in-place "${ADD_RUN_LINE_2}" ./Makefile -ADD_RUN_LINE_1='$arun_d: all' -ADD_RUN_LINE_2='$a\\t@gdb --args $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' -sed --in-place "${ADD_RUN_LINE_1}" ./Makefile -sed --in-place "${ADD_RUN_LINE_2}" ./Makefile -ADD_RUN_LINE_1='$arun_v: all' -ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --track-fds=yes --run-cxx-freeres=yes $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' -sed --in-place "${ADD_RUN_LINE_1}" ./Makefile -sed --in-place "${ADD_RUN_LINE_2}" ./Makefile -# Add gendoc entry -ADD_RUN_LINE_1='$agendoc: ../docs/o2.cfg' -ADD_RUN_LINE_2='$a\\tdoxygen ../docs/o2.cfg' -sed --in-place "${ADD_RUN_LINE_1}" ./Makefile -sed --in-place "${ADD_RUN_LINE_2}" ./Makefile - -# Build all -make all 2>&1 3>&1 | tee --append build.log -if [ "$?" == "1" ] -then - f_exit "Failed to generate ATS source code" 9 -fi -export LD_LIBRARY_PATH=~/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH -../bin/Ats${ATS_NAME} -v -f_exit "Build done successfully" 0 +#!/bin/bash +#set -e +set -vx + +function f_exit { + cd ${CURPWD} + + unset TTCN_FILES + unset CC_FILES + unset CFG_FILES + unset EXECUTABLE + echo $1 + exit $2 +} + +function f_usage { + echo "build.bash: This script import from External Disk the " + echo "Optional arguments:" + echo " prof: Generate a makefile including profiling options (e.g. ./build.bash prof)" + exit 0 +} + +clear + +if [ "$1" == "help" ] +then + f_usage +fi + +ATS_NAME=TestCodec + +#CURPWD=`pwd` +if [ ! "${PWD##*/}" == "objs" ] +then + cd ../objs + if [ ! $? == 0 ] + then + echo "Please move to PROJECT/obj directory" + exit 1 + fi +fi +# Remove everything +rm -fr ../objs/*.hh +rm -fr ../objs/*.cc +rm -fr ../objs/*.log +rm -fr ../objs/*.o +rm -fr ../objs/Makefile + +# Remove useless files +find .. -type f -name "*~" -exec rm {} \; +find .. -type f -name "*.bak" -exec rm {} \; +find .. -type f -name "*.log" -exec rm {} \; + +# Build XSD files if any and put them in objs directory +#XSD_PATH=${PATH_DEV_EMCOM}/xsd +XSD_PATH=${PATH_DEV_EMCOM}/null # Do not use xsd2ttcn for now, need to fix issues first +if [ -d ${XSD_PATH} ] +then + XSD_FILES=`find ${XSD_PATH} -name '*.xsd'` + + if [ "${OSTYPE}" == "cygwin" ] + then + xsd2ttcn.exe ${XSD_FILES} + else + xsd2ttcn ${XSD_FILES} + fi + if [ "$?" != "0" ] + then + f_exit "Failed to generate XSD source code" 2 + fi + XSD_FILES=`find . -name '*.ttcn'` +fi + +REFERENCES="LibCommon LibHttp LibEmcom/LibNg112 LibSip" +for i in ${REFERENCES} +do + # TTCN code + for j in `find ${PATH_DEV_EMCOM}/src/$i/ttcn -type f -name "*.ttcn"`; + do + ln -sf $j ../ttcn/`basename $j` + done + # Include source code + files=`find ${PATH_DEV_EMCOM}/src/$i/include -type f` + if [ "${files}" != " " ] + then + for j in ${files}; + do + ln -sf $j ../include/`basename $j` + done + fi + # CC source code + files=`find ${PATH_DEV_EMCOM}/src/$i/src -type f` + if [ "${files}" != " " ] + then + for j in ${files}; + do + ln -sf $j ../src/`basename $j` + done + fi +done + +# Generate the list of the TTCN-3 files +TTCN_FILES=`find .. -name '*.ttcn*'` + +# Start ATS generation - Step 1 +if [ "${OSTYPE}" == "cygwin" ] +then + rm ../bin/*.exe ../lib/*.dll + compiler.exe -e -f -g -l -L -M -n -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log + if [ "$?" == "1" ] + then + f_exit "Failed to compile ATS" 4 + fi +else + compiler -e -f -g -l -L -M -n -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log + if [ "$?" == "1" ] + then + f_exit "Failed to generate ATS source code" 6 + fi +fi + +# Sart ATS generation - Step 2 +# Create working variables +CC_FILES=`find ../src -name '*.c*'` +FWK_FILES=`find ${PATH_DEV_EMCOM}/framework/ -name '*.c*'` +CFG_FILES=`find ../etc -name '*.cfg'` + +# Sart ATS generation - Step 3 +if [ "${OSTYPE}" == "cygwin" ] +then + ttcn3_makefilegen.exe -d -f -g -m -M -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log + if [ "$?" == "1" ] + then + f_exit "Failed to compile ATS" 5 + fi +else + ttcn3_makefilegen -d -f -g -m -M -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log + if [ "$?" == "1" ] + then + f_exit "Failed to generate ATS source code" 7 + fi +fi + +# Bug xsd2ttcn +for i in ${XSD_FILES} +do + VARIANT='s/ variant (\[\-\]) ;//g' + sed --in-place "${VARIANT}" $i +done + +# Remove port skeletons to use src/ +for i in `ls ../include/*.hh` +do + if [ -f ./`basename $i` ] + then + rm ./`basename $i` + fi +done +for i in `ls ../src/*.cc` +do + if [ -f ./`basename $i` ] + then + rm ./`basename $i` + fi +done + +# Check if Makefile was generated +if [ ! -f ./Makefile ] +then + f_exit "Failed to generate ATS source code" 8 +fi + +# Patch ATS generated files +#./bin/patch.bash 2>&1 3>&1 | tee --append build.log +# Add compiler/linker options +# -DASN_DISABLE_OER_SUPPORT is required for CAMCodec and DENMCodec +if [ "$1" == "prof" ] +then + if [ "${OSTYPE}" == "cygwin" ] + then + CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -D_XOPEN_SOURCE=700 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' + else + CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' + fi + LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' +else + if [ "${OSTYPE}" == "cygwin" ] + then + CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' + else + CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' + fi + LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fPIC -fstack-check -fstack-protector -fsanitize=address -fno-omit-frame-pointer -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' +fi +ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_EMCOM)/include -I$(PATH_DEV_EMCOM)/framework/include -I../include -I../../LibEmcom/Common/include -I../../LibEmcom/LibNg112/include -I$(HOME_FRAMEWORKS)/osip/include -I$(HOME_INC) -I.' +ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lpcap -lstdc++fs -lssl -L\$\(HOME_FRAMEWORKS\)\/osip\/src\/osipparser2\/\.libs -losipparser2/g' +sed --in-place "${CXXFLAGS_DEBUG_MODE}" ./Makefile +sed --in-place "${LDFLAGS_DEBUG_MODE}" ./Makefile +sed --in-place "${ADD_INCLUDE}" ./Makefile +sed --in-place "${ADD_LIBRARIES}" ./Makefile +# Update COMPILER_FLAGS +COMPILER_FLAGS='s/COMPILER_FLAGS = /COMPILER_FLAGS = -e -O /g' +sed --in-place "${COMPILER_FLAGS}" ./Makefile +# Update clean clause +CLEAN_LINE='s/$(RM) $(EXECUTABLE)/$(RM) ..\/bin\/$(EXECUTABLE) ..\/src\/*.o/g' +sed --in-place "${CLEAN_LINE}" ./Makefile +# Move binary file command +EXECUTABLE=MyExample +MV_CMD='s/all: $(TARGET) ;/all: $(TARGET) ; @if [ -f ..\/objs\/$(EXECUTABLE) ]; then mv ..\/objs\/$(EXECUTABLE) ..\/bin; fi ;/g' +sed --in-place "${MV_CMD}" ./Makefile +# Add run command +ADD_HOST='/PLATFORM = /aHOST=127.0.0.1' +ADD_PORT='/PLATFORM = /aPORT=12000' +sed --in-place "${ADD_PORT}" ./Makefile +sed --in-place "${ADD_HOST}" ./Makefile +ADD_RUN_LINE_1='$arun: all' +ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile +ADD_RUN_LINE_1='$arun_d: all' +ADD_RUN_LINE_2='$a\\t@gdb --args $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile +ADD_RUN_LINE_1='$arun_v: all' +ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --track-fds=yes --run-cxx-freeres=yes $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile +# Add gendoc entry +ADD_RUN_LINE_1='$agendoc: ../docs/o2.cfg' +ADD_RUN_LINE_2='$a\\tdoxygen ../docs/o2.cfg' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile + +# Build all +make all 2>&1 3>&1 | tee --append build.log +if [ "$?" == "1" ] +then + f_exit "Failed to generate ATS source code" 9 +fi +export LD_LIBRARY_PATH=~/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH +../bin/Ats${ATS_NAME} -v +f_exit "Build done successfully" 0 diff --git a/scripts/update_emcom_project.bash b/scripts/update_emcom_project.bash index d321106..310b05d 100755 --- a/scripts/update_emcom_project.bash +++ b/scripts/update_emcom_project.bash @@ -1,201 +1,201 @@ -#!/bin/bash - -# Debug mode -#set -e -set -vx - -# Usage: sudo ./update_emcom_project.bash -# TODO Use git clone in temporary directory - -OLDPWD=`pwd` - -# Execution path -RUN_PATH="${0%/*}" - -CHOWN_USER_GROUP=vagrant:vagrant -SRC_EMCOM_PATH=${HOME}/dev/STF549_ng112 - -if [ "${PATH_DEV_EMCOM}" == "" ] -then - PATH_DEV_EMCOM=`pwd`/../etsi_emcom -fi - -if [ -d ${PATH_DEV_EMCOM} ] -then - if [ -f ${HOME}/tmp/emcom.tar.bz2 ] - then - mv ${HOME}/tmp/emcom.tar.bz2 ${HOME}/tmp/emcom.tar.`date +'%Y%m%d'`.bz2 - fi - find ${PATH_DEV_EMCOM} -name "*.o" -exec rm {} \; - tar jcvf ${HOME}/tmp/emcom.tar.bz2 ${PATH_DEV_EMCOM} - rm -fr ${PATH_DEV_EMCOM} -fi - -# Check if target directory exist -if [ ! -d ${PATH_DEV_EMCOM} ] -then - mkdir -p ${PATH_DEV_EMCOM}/xsd ${PATH_DEV_EMCOM}/framework ${PATH_DEV_EMCOM}/include ${PATH_DEV_EMCOM}/bin ${PATH_DEV_EMCOM}/lib ${PATH_DEV_EMCOM}/objs ${PATH_DEV_EMCOM}/src ${PATH_DEV_EMCOM}/docs -fi - -# Update XSD files -echo 'Updating XSD files' -XSD_SRC_PATH=${SRC_EMCOM_PATH}/xsd -XSD_DST_PATH=${PATH_DEV_EMCOM}/xsd -cp ${XSD_SRC_PATH}/*.xsd ${XSD_DST_PATH} -cp ${XSD_SRC_PATH}/*.dtd ${XSD_DST_PATH} - -# Update ETSI Framework files -echo 'Updating ETSI Framework files' -FWK_SRC_PATH=${SRC_EMCOM_PATH}/ccsrc -FWK_DST_PATH=${PATH_DEV_EMCOM}/framework -mkdir -p ${FWK_DST_PATH}/src ${FWK_DST_PATH}/include -chmod -R 775 ${FWK_DST_PATH} -# Create link to TITAN Abstract_Socket -ln -sf $TOP/../titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ${FWK_DST_PATH}/src/Abstract_Socket.cc -ln -sf $TOP/../titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ${FWK_DST_PATH}/include/Abstract_Socket.hh -FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/Protocols/ -name "*.h*" -type f` -FWK_DIR_LIST_THH=`find ${FWK_SRC_PATH}/Protocols/ -name "*.t.h*" -type f` -FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/Protocols/ -name "*.c*" -type f` -FWK_DIR_LIST_L=`find ${FWK_SRC_PATH}/Protocols/ -name "*.l" -type f` -FWK_DIR_LIST_Y=`find ${FWK_SRC_PATH}/Protocols/ -name "*.y" -type f` -for i in ${FWK_DIR_LIST_HH} -do - cp $i ${FWK_DST_PATH}/include -done -for i in ${FWK_DIR_LIST_THH} -do - cp $i ${FWK_DST_PATH}/include -done -for i in ${FWK_DIR_LIST_CC} -do - cp $i ${FWK_DST_PATH}/src -done -if [ "${FWK_DIR_LIST_L}" != "" ] -then - for i in ${FWK_DIR_LIST_L} - do - cp $i ${FWK_DST_PATH}/src - done -fi -if [ "${FWK_DIR_LIST_Y}" != "" ] -then - for i in ${FWK_DIR_LIST_Y} - do - cp $i ${FWK_DST_PATH}/src - done -fi -FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/Framework/ -name "*.h*" -type f` -FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/Framework/ -name "*.c*" -type f` -for i in ${FWK_DIR_LIST_HH} -do - cp $i ${FWK_DST_PATH}/include -done -for i in ${FWK_DIR_LIST_CC} -do - cp $i ${FWK_DST_PATH}/src -done - -# Update ATS TTCN-3 files -echo 'Update TTCN-3 files' -TTCN_3_ORG_PATH=${SRC_EMCOM_PATH}/ttcn -TTCN_3_DST_PATH=${PATH_DEV_EMCOM}/src -CC_SRC_PATH=${SRC_EMCOM_PATH}/ccsrc -TTCN_3_ATS_LIST='AtsNg112 TestCodec' -for i in ${TTCN_3_ATS_LIST} -do - if [ ! -d ${TTCN_3_DST_PATH}/$i ] - then - mkdir -p ${TTCN_3_DST_PATH}/$i/bin ${TTCN_3_DST_PATH}/$i/lib ${TTCN_3_DST_PATH}/$i/src ${TTCN_3_DST_PATH}/$i/include ${TTCN_3_DST_PATH}/$i/ttcn ${TTCN_3_DST_PATH}/$i/objs ${TTCN_3_DST_PATH}/$i/etc ${TTCN_3_DST_PATH}/$i/docs - chmod -R 775 ${TTCN_3_DST_PATH}/$i - fi - cp ${TTCN_3_ORG_PATH}/$i/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn - cp ${TTCN_3_ORG_PATH}/../etc/$i/*.cfg ${TTCN_3_DST_PATH}/$i/etc - cp ${TTCN_3_ORG_PATH}/../docs/$i/o2.cfg ${TTCN_3_DST_PATH}/$i/docs -done - -# Update libraries & CC files -TTCN_3_LIB_LIST='LibEmcom/LibNg112 LibHttp LibSip LibCommon' -for i in ${TTCN_3_LIB_LIST} -do - if [ ! -d ${TTCN_3_DST_PATH}/$i ] - then - mkdir -p ${TTCN_3_DST_PATH}/$i/docs ${TTCN_3_DST_PATH}/$i/src ${TTCN_3_DST_PATH}/$i/include ${TTCN_3_DST_PATH}/$i/ttcn ${TTCN_3_DST_PATH}/$i/xsd - fi - cp ${TTCN_3_ORG_PATH}/$i/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn - # Update files - if [ "$i" == "LibEmcom/LibNg112" ] - then - cp ${TTCN_3_ORG_PATH}/$i/ttcn/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn - cp ${TTCN_3_ORG_PATH}/$i/xsd/*.xsd ${TTCN_3_DST_PATH}/$i/xsd - cp ${TTCN_3_ORG_PATH}/$i/xsd/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn - cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include - cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src - fi - if [ "$i" == "LibSip" ] - then - cp ${TTCN_3_ORG_PATH}/$i/ttcn/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn - cp ${TTCN_3_ORG_PATH}/$i/xsd/*.xsd ${TTCN_3_DST_PATH}/$i/xsd - cp ${TTCN_3_ORG_PATH}/$i/xsd/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn - cp ${CC_SRC_PATH}/EncDec/$i/*_Encdec.cc ${TTCN_3_DST_PATH}/$i/src - cp ${CC_SRC_PATH}/Ports/$i/*.hh ${TTCN_3_DST_PATH}/$i/include - cp ${CC_SRC_PATH}/Ports/$i/*.cc ${TTCN_3_DST_PATH}/$i/src - cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include - cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src - fi - if [ "$i" == "LibHttp" ] - then - cp ${TTCN_3_ORG_PATH}/$i/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn - cp ${CC_SRC_PATH}/EncDec/$i/*_Encdec.cc ${TTCN_3_DST_PATH}/$i/src - cp ${CC_SRC_PATH}/Ports/$i/*.hh ${TTCN_3_DST_PATH}/$i/include - cp ${CC_SRC_PATH}/Ports/$i/*.cc ${TTCN_3_DST_PATH}/$i/src - cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include - cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src - fi -done - -# Generate Bison parsers is any -#cd ${FWK_DST_PATH}/src -#if [ "${FWK_DIR_LIST_Y}" != "" ] -#then -# for i in ${FWK_DIR_LIST_Y} -# do -# BASE_NAME=$(basename "$i" .y) -# bison -dv -p${BASE_NAME}_ -b${BASE_NAME}_ ${BASE_NAME}.y #--defines=../include/${BASE_NAME}.h -o${BASE_NAME}.c -# done -#fi -#if [ "${FWK_DIR_LIST_L}" != "" ] -#then -# for i in ${FWK_DIR_LIST_L} -# do -# BASE_NAME=$(basename "$i" .l) -# flex -Cfr -8 -Bvpp -P${BASE_NAME}_ ${BASE_NAME}.l # -o${BASE_NAME}_flex.c ${BASE_NAME}.l -# done -# mv ${BASE_NAME}_.tab.h ../include -#fi -#cd - - -# Apply patches -PATH_PATCHES=`pwd` -if [ -d ${PATH_PATCHES} ] -then - # Update Ng112 - cp ${PATH_PATCHES}/ng112.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin - cp ${PATH_PATCHES}/run_mtc.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin - cp ${PATH_PATCHES}/run_ptcs.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin - cp ${PATH_PATCHES}/run_all.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin - # Update TestCodec - cp ${PATH_PATCHES}/testcodec_generate_makefile.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin - cp ${PATH_PATCHES}/run_mtc.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin - cp ${PATH_PATCHES}/run_ptcs.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin - cp ${PATH_PATCHES}/run_all.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin -fi - -# Set rights -find ${PATH_DEV_EMCOM} -type f -exec chmod 664 {} \; -find ${PATH_DEV_EMCOM} -name "*.bash" -type f -exec chmod 775 {} \; -find ${PATH_DEV_EMCOM} -type d -exec chmod 775 {} \; -chown -R ${CHOWN_USER_GROUP} ${PATH_DEV_EMCOM} - -cd ${OLDPWD} - -exit 0 +#!/bin/bash + +# Debug mode +#set -e +set -vx + +# Usage: sudo ./update_emcom_project.bash +# TODO Use git clone in temporary directory + +OLDPWD=`pwd` + +# Execution path +RUN_PATH="${0%/*}" + +CHOWN_USER_GROUP=vagrant:vagrant +SRC_EMCOM_PATH=${HOME}/dev/STF549_ng112 + +if [ "${PATH_DEV_EMCOM}" == "" ] +then + PATH_DEV_EMCOM=`pwd`/../etsi_emcom +fi + +if [ -d ${PATH_DEV_EMCOM} ] +then + if [ -f ${HOME}/tmp/emcom.tar.bz2 ] + then + mv ${HOME}/tmp/emcom.tar.bz2 ${HOME}/tmp/emcom.tar.`date +'%Y%m%d'`.bz2 + fi + find ${PATH_DEV_EMCOM} -name "*.o" -exec rm {} \; + tar jcvf ${HOME}/tmp/emcom.tar.bz2 ${PATH_DEV_EMCOM} + rm -fr ${PATH_DEV_EMCOM} +fi + +# Check if target directory exist +if [ ! -d ${PATH_DEV_EMCOM} ] +then + mkdir -p ${PATH_DEV_EMCOM}/xsd ${PATH_DEV_EMCOM}/framework ${PATH_DEV_EMCOM}/include ${PATH_DEV_EMCOM}/bin ${PATH_DEV_EMCOM}/lib ${PATH_DEV_EMCOM}/objs ${PATH_DEV_EMCOM}/src ${PATH_DEV_EMCOM}/docs +fi + +# Update XSD files +echo 'Updating XSD files' +XSD_SRC_PATH=${SRC_EMCOM_PATH}/xsd +XSD_DST_PATH=${PATH_DEV_EMCOM}/xsd +cp ${XSD_SRC_PATH}/*.xsd ${XSD_DST_PATH} +cp ${XSD_SRC_PATH}/*.dtd ${XSD_DST_PATH} + +# Update ETSI Framework files +echo 'Updating ETSI Framework files' +FWK_SRC_PATH=${SRC_EMCOM_PATH}/ccsrc +FWK_DST_PATH=${PATH_DEV_EMCOM}/framework +mkdir -p ${FWK_DST_PATH}/src ${FWK_DST_PATH}/include +chmod -R 775 ${FWK_DST_PATH} +# Create link to TITAN Abstract_Socket +ln -sf $TOP/../titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ${FWK_DST_PATH}/src/Abstract_Socket.cc +ln -sf $TOP/../titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ${FWK_DST_PATH}/include/Abstract_Socket.hh +FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/Protocols/ -name "*.h*" -type f` +FWK_DIR_LIST_THH=`find ${FWK_SRC_PATH}/Protocols/ -name "*.t.h*" -type f` +FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/Protocols/ -name "*.c*" -type f` +FWK_DIR_LIST_L=`find ${FWK_SRC_PATH}/Protocols/ -name "*.l" -type f` +FWK_DIR_LIST_Y=`find ${FWK_SRC_PATH}/Protocols/ -name "*.y" -type f` +for i in ${FWK_DIR_LIST_HH} +do + cp $i ${FWK_DST_PATH}/include +done +for i in ${FWK_DIR_LIST_THH} +do + cp $i ${FWK_DST_PATH}/include +done +for i in ${FWK_DIR_LIST_CC} +do + cp $i ${FWK_DST_PATH}/src +done +if [ "${FWK_DIR_LIST_L}" != "" ] +then + for i in ${FWK_DIR_LIST_L} + do + cp $i ${FWK_DST_PATH}/src + done +fi +if [ "${FWK_DIR_LIST_Y}" != "" ] +then + for i in ${FWK_DIR_LIST_Y} + do + cp $i ${FWK_DST_PATH}/src + done +fi +FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/Framework/ -name "*.h*" -type f` +FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/Framework/ -name "*.c*" -type f` +for i in ${FWK_DIR_LIST_HH} +do + cp $i ${FWK_DST_PATH}/include +done +for i in ${FWK_DIR_LIST_CC} +do + cp $i ${FWK_DST_PATH}/src +done + +# Update ATS TTCN-3 files +echo 'Update TTCN-3 files' +TTCN_3_ORG_PATH=${SRC_EMCOM_PATH}/ttcn +TTCN_3_DST_PATH=${PATH_DEV_EMCOM}/src +CC_SRC_PATH=${SRC_EMCOM_PATH}/ccsrc +TTCN_3_ATS_LIST='AtsNg112 TestCodec' +for i in ${TTCN_3_ATS_LIST} +do + if [ ! -d ${TTCN_3_DST_PATH}/$i ] + then + mkdir -p ${TTCN_3_DST_PATH}/$i/bin ${TTCN_3_DST_PATH}/$i/lib ${TTCN_3_DST_PATH}/$i/src ${TTCN_3_DST_PATH}/$i/include ${TTCN_3_DST_PATH}/$i/ttcn ${TTCN_3_DST_PATH}/$i/objs ${TTCN_3_DST_PATH}/$i/etc ${TTCN_3_DST_PATH}/$i/docs + chmod -R 775 ${TTCN_3_DST_PATH}/$i + fi + cp ${TTCN_3_ORG_PATH}/$i/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn + cp ${TTCN_3_ORG_PATH}/../etc/$i/*.cfg ${TTCN_3_DST_PATH}/$i/etc + cp ${TTCN_3_ORG_PATH}/../docs/$i/o2.cfg ${TTCN_3_DST_PATH}/$i/docs +done + +# Update libraries & CC files +TTCN_3_LIB_LIST='LibEmcom/LibNg112 LibHttp LibSip LibCommon' +for i in ${TTCN_3_LIB_LIST} +do + if [ ! -d ${TTCN_3_DST_PATH}/$i ] + then + mkdir -p ${TTCN_3_DST_PATH}/$i/docs ${TTCN_3_DST_PATH}/$i/src ${TTCN_3_DST_PATH}/$i/include ${TTCN_3_DST_PATH}/$i/ttcn ${TTCN_3_DST_PATH}/$i/xsd + fi + cp ${TTCN_3_ORG_PATH}/$i/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn + # Update files + if [ "$i" == "LibEmcom/LibNg112" ] + then + cp ${TTCN_3_ORG_PATH}/$i/ttcn/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn + cp ${TTCN_3_ORG_PATH}/$i/xsd/*.xsd ${TTCN_3_DST_PATH}/$i/xsd + cp ${TTCN_3_ORG_PATH}/$i/xsd/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn + cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include + cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + fi + if [ "$i" == "LibSip" ] + then + cp ${TTCN_3_ORG_PATH}/$i/ttcn/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn + cp ${TTCN_3_ORG_PATH}/$i/xsd/*.xsd ${TTCN_3_DST_PATH}/$i/xsd + cp ${TTCN_3_ORG_PATH}/$i/xsd/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn + cp ${CC_SRC_PATH}/EncDec/$i/*_Encdec.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/Ports/$i/*.hh ${TTCN_3_DST_PATH}/$i/include + cp ${CC_SRC_PATH}/Ports/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include + cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + fi + if [ "$i" == "LibHttp" ] + then + cp ${TTCN_3_ORG_PATH}/$i/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn + cp ${CC_SRC_PATH}/EncDec/$i/*_Encdec.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/Ports/$i/*.hh ${TTCN_3_DST_PATH}/$i/include + cp ${CC_SRC_PATH}/Ports/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include + cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + fi +done + +# Generate Bison parsers is any +#cd ${FWK_DST_PATH}/src +#if [ "${FWK_DIR_LIST_Y}" != "" ] +#then +# for i in ${FWK_DIR_LIST_Y} +# do +# BASE_NAME=$(basename "$i" .y) +# bison -dv -p${BASE_NAME}_ -b${BASE_NAME}_ ${BASE_NAME}.y #--defines=../include/${BASE_NAME}.h -o${BASE_NAME}.c +# done +#fi +#if [ "${FWK_DIR_LIST_L}" != "" ] +#then +# for i in ${FWK_DIR_LIST_L} +# do +# BASE_NAME=$(basename "$i" .l) +# flex -Cfr -8 -Bvpp -P${BASE_NAME}_ ${BASE_NAME}.l # -o${BASE_NAME}_flex.c ${BASE_NAME}.l +# done +# mv ${BASE_NAME}_.tab.h ../include +#fi +#cd - + +# Apply patches +PATH_PATCHES=`pwd` +if [ -d ${PATH_PATCHES} ] +then + # Update Ng112 + cp ${PATH_PATCHES}/ng112.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin + cp ${PATH_PATCHES}/run_mtc.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin + cp ${PATH_PATCHES}/run_ptcs.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin + cp ${PATH_PATCHES}/run_all.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin + # Update TestCodec + cp ${PATH_PATCHES}/testcodec_generate_makefile.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin + cp ${PATH_PATCHES}/run_mtc.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin + cp ${PATH_PATCHES}/run_ptcs.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin + cp ${PATH_PATCHES}/run_all.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin +fi + +# Set rights +find ${PATH_DEV_EMCOM} -type f -exec chmod 664 {} \; +find ${PATH_DEV_EMCOM} -name "*.bash" -type f -exec chmod 775 {} \; +find ${PATH_DEV_EMCOM} -type d -exec chmod 775 {} \; +chown -R ${CHOWN_USER_GROUP} ${PATH_DEV_EMCOM} + +cd ${OLDPWD} + +exit 0 diff --git a/vagrant/provisioner.bash b/vagrant/provisioner.bash index ae57513..b8aa5c4 100755 --- a/vagrant/provisioner.bash +++ b/vagrant/provisioner.bash @@ -75,9 +75,9 @@ fi cd /home/vagrant/dev git clone https://forge.etsi.org/gitlab/emergency-communications/NG112 ./STF549_Ng112 -cd /home/etsi/dev/STF549_Ng112 +cd /home/vagrant/dev/STF549_Ng112 git checkout TTCN_3_Developments -cd /home/etsi/dev/STF549_Ng112/ttcn +cd /home/vagrant/dev/STF549_Ng112/ttcn svn co --username svnusers --password svnusers --non-interactive https://oldforge.etsi.org/svn/LibSip/trunk ./LibSip \ svn co --username svnusers --password svnusers --non-interactive https://oldforge.etsi.org/svn/LibCommon/trunk/ttcn ./LibCommon/ttcn \ cd /home/vagrant/dev/STF549_Ng112/scripts @@ -92,13 +92,13 @@ ln -sf /home/vagrant/dev/STF549_Ng112/scripts/devenv.bash.ubuntu /home/vagrant/d # Install all frameworks -# Install asn1c +# Install osip cd ${HOME_FRAMEWORKS} -git clone https://github.com/vlm/asn1c.git asn1c -cd ${HOME_FRAMEWORKS}/asn1c -test -f configure || autoreconf -iv -./configure -make && sudo make install +git clone https://github.com/YannGarcia/osip.git ./osip +cd ./osip +./autogen.sh +./configure --prefix=/home/vagrant +make && make install # Install GoogleTest cd ${HOME_FRAMEWORKS} @@ -130,11 +130,9 @@ rm -f ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz cd /home/vagrant echo "" >> /home/vagrant/.bashrc -echo "export HOME=/home/vagrant" >> /home/vagrant/.bashrc -echo "export LD_LIBRARY_PATH=/home/vagrant/dev/etsi_its/lib:$LD_LIBRARY_PATH" >> /home/vagrant/.bashrc +echo "export LD_LIBRARY_PATH=/home/vagrant/dev/etsi_emco/lib:$LD_LIBRARY_PATH" >> /home/vagrant/.bashrc echo "export PATH=/home/vagrant/bin:$PATH" >> /home/vagrant/.bashrc -echo "cd /home/vagrant" >> /home/vagrant/.bashrc -echo ". ./devenv.bash" >> /home/vagrant/.bashrc +echo ". ~/devenv.bash" >> /home/vagrant/.bashrc . /home/vagrant/.bashrc cd /home/vagrant/dev/STF549_Ng112/scripts @@ -147,9 +145,6 @@ cd /home/vagrant/dev/etsi_emco/src/TestCodec/objs cd ${OLD_PWD} -unset USERNAME -unset PASSWORD - sudo init 6 exit 0 -- GitLab From 171ba15efabccaeec029a143a1512b670670592e Mon Sep 17 00:00:00 2001 From: garciay Date: Wed, 11 Jul 2018 07:59:11 +0000 Subject: [PATCH 48/72] Apply dos2unix to all scripts --- scripts/build_titan.bash | 206 +++++----- scripts/merge_emcom_project.bash | 478 +++++++++++----------- scripts/ng112.bash | 484 +++++++++++------------ scripts/run_all.bash | 94 ++--- scripts/run_mtc.bash | 110 +++--- scripts/run_ptcs.bash | 76 ++-- scripts/run_tshark.bash | 14 +- scripts/testcodec_generate_makefile.bash | 484 +++++++++++------------ scripts/update_emcom_project.bash | 402 +++++++++---------- 9 files changed, 1174 insertions(+), 1174 deletions(-) diff --git a/scripts/build_titan.bash b/scripts/build_titan.bash index 9506c7c..7305264 100755 --- a/scripts/build_titan.bash +++ b/scripts/build_titan.bash @@ -1,103 +1,103 @@ -#!/bin/bash -# Copyright ETSI 2018 -# See: https://forge.etsi.org/etsi-forge-copyright-statement.txt - -set -e -#set -vx - -clear - -if [ -z "${TOP}" ] -then - echo "Failed, TOP variable not defined, exit" - exit 1 -fi - -CURDIR=`pwd` -TITAN_DIR=${TOP}/.. - -# Move to the right directory -if [ ! -d ${TITAN_DIR} ] -then - echo "Titan directory does not exist, create it" - # Create TITAN directories - mkdir -p ${TITAN_DIR} - if [ ! "$?" -eq "0" ] - then - echo "Failed, TOP variable not defined, exit" - exit 2 - fi - cd ${TITAN_DIR} - # Clone all TITAN repositories - if [ ! -f ${CURDIR}/titan_repos.txt ] - then - echo "${HOME_BIN}/titan_repos.txt file does not exist, exit" - rm -fr ${TOP} - rm -fr ${TOP}/.. - exit 3 - fi - TITAN_REPOS=`cat ${CURDIR}/titan_repos.txt` - for i in ${TITAN_REPOS}; - do - git clone $i - if [ ! "$?" -eq "0" ] - then - echo "Failed to clone $i, exit" - exit 4 - fi - done -else - cd ${TITAN_DIR} - # Update github folders - DIRS=`find . -type d -name ".git" -exec dirname {} \;` - for i in ${DIRS}; - do - echo "Processing $i..." - cd $i - git fetch - if [ ! "$?" -eq "0" ] - then - echo "Failed to fetch $i, continue" - else - git pull - if [ ! "$?" -eq "0" ] - then - echo "Failed to pull $i, continue" - fi - fi - cd - - done -fi - -# Build TITAN core -export JNI=no -export GUI=no -export DEBUG=no -export GEN_PDF=no -if [ -d ${TTCN3_DIR} ] -then - rm -fr ${TTCN3_DIR} -fi -mkdir ${TTCN3_DIR} -cd ./titan.core -/bin/cat < Makefile.personal -JNI:=no -GUI:=no -DEBUG:=no -GEN_PDF:=no -EOF - -echo "Starting build..." -make clean -if [ "${OSTYPE}" == "cygwin" ] -then - make -j -else - make -fi -make install -echo "Build done" - -# Go back to initial directory -cd ${CURDIR} -exit 0 +#!/bin/bash +# Copyright ETSI 2018 +# See: https://forge.etsi.org/etsi-forge-copyright-statement.txt + +set -e +#set -vx + +clear + +if [ -z "${TOP}" ] +then + echo "Failed, TOP variable not defined, exit" + exit 1 +fi + +CURDIR=`pwd` +TITAN_DIR=${TOP}/.. + +# Move to the right directory +if [ ! -d ${TITAN_DIR} ] +then + echo "Titan directory does not exist, create it" + # Create TITAN directories + mkdir -p ${TITAN_DIR} + if [ ! "$?" -eq "0" ] + then + echo "Failed, TOP variable not defined, exit" + exit 2 + fi + cd ${TITAN_DIR} + # Clone all TITAN repositories + if [ ! -f ${CURDIR}/titan_repos.txt ] + then + echo "${HOME_BIN}/titan_repos.txt file does not exist, exit" + rm -fr ${TOP} + rm -fr ${TOP}/.. + exit 3 + fi + TITAN_REPOS=`cat ${CURDIR}/titan_repos.txt` + for i in ${TITAN_REPOS}; + do + git clone $i + if [ ! "$?" -eq "0" ] + then + echo "Failed to clone $i, exit" + exit 4 + fi + done +else + cd ${TITAN_DIR} + # Update github folders + DIRS=`find . -type d -name ".git" -exec dirname {} \;` + for i in ${DIRS}; + do + echo "Processing $i..." + cd $i + git fetch + if [ ! "$?" -eq "0" ] + then + echo "Failed to fetch $i, continue" + else + git pull + if [ ! "$?" -eq "0" ] + then + echo "Failed to pull $i, continue" + fi + fi + cd - + done +fi + +# Build TITAN core +export JNI=no +export GUI=no +export DEBUG=no +export GEN_PDF=no +if [ -d ${TTCN3_DIR} ] +then + rm -fr ${TTCN3_DIR} +fi +mkdir ${TTCN3_DIR} +cd ./titan.core +/bin/cat < Makefile.personal +JNI:=no +GUI:=no +DEBUG:=no +GEN_PDF:=no +EOF + +echo "Starting build..." +make clean +if [ "${OSTYPE}" == "cygwin" ] +then + make -j +else + make +fi +make install +echo "Build done" + +# Go back to initial directory +cd ${CURDIR} +exit 0 diff --git a/scripts/merge_emcom_project.bash b/scripts/merge_emcom_project.bash index a85dd14..67d78b0 100755 --- a/scripts/merge_emcom_project.bash +++ b/scripts/merge_emcom_project.bash @@ -1,239 +1,239 @@ -#!/bin/bash - -# Debug mode -#set -e -set -vx - -# Usage: sudo ./merge_emcom_project.bash -# TODO Use git clone in temporary directory - -OLDPWD=`pwd` - -# Storing path -VAGRANT_DIR=~/tmp -if [ ! -d ${VAGRANT_DIR} ] -then - exit -1 -else - VAGRANT_DIR=$VAGRANT_DIR/to_be_merged - if [ -d ${VAGRANT_DIR} ] - then - rm -f ${VAGRANT_DIR}/* - else - mkdir ${VAGRANT_DIR} - fi -fi - -# Execution path -RUN_PATH="${0%/*}" -PATH_DEV_EMCOM=`pwd`/../etsi_emcom - - -# Update ETSI Framework files -echo 'Merging ETSI Framework files' -FWK_SRC_PATH=${SRC_EMCOM_PATH}/ccsrc -FWK_DST_PATH=${PATH_DEV_EMCOM}/framework -FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/Protocols/ -name "*.h*" -type f` -for i in ${FWK_DIR_LIST_HH} -do - BN=`basename $i` - s1=`sha256sum -b $i | cut -d' ' -f1` - s2=`sha256sum -b ${FWK_DST_PATH}/include/${BN} | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - cp ${FWK_DST_PATH}/include/${BN} ${VAGRANT_DIR} - if [ -f ${FWK_DST_PATH}/include/${BN}~ ] - then - rm ${FWK_DST_PATH}/include/${BN}~ - fi - fi -done -FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/Protocols/ -name "*.c*" -type f` -for i in ${FWK_DIR_LIST_CC} -do - BN=`basename $i` - s1=`sha256sum -b $i | cut -d' ' -f1` - s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} - if [ -f ${FWK_DST_PATH}/src/${BN}~ ] - then - rm ${FWK_DST_PATH}/src/${BN}~ - fi - fi -done -FWK_DIR_LIST_Y=`find ${FWK_SRC_PATH}/Protocols/ -name "*.y" -type f` -for i in ${FWK_DIR_LIST_Y} -do - BN=`basename $i` - s1=`sha256sum -b $i | cut -d' ' -f1` - s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} - if [ -f ${FWK_DST_PATH}/src/${BN}~ ] - then - rm ${FWK_DST_PATH}/src/${BN}~ - fi - fi -done -FWK_DIR_LIST_L=`find ${FWK_SRC_PATH}/Protocols/ -name "*.l" -type f` -for i in ${FWK_DIR_LIST_L} -do - BN=`basename $i` - s1=`sha256sum -b $i | cut -d' ' -f1` - s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} - if [ -f ${FWK_DST_PATH}/src/${BN}~ ] - then - rm ${FWK_DST_PATH}/src/${BN}~ - fi - fi -done -FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/Framework/ -name "*.h*" -type f` -FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/Framework/ -name "*.c*" -type f` -for i in ${FWK_DIR_LIST_HH} -do - BN=`basename $i` - s1=`sha256sum -b $i | cut -d' ' -f1` - s2=`sha256sum -b ${FWK_DST_PATH}/include/${BN} | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - cp ${FWK_DST_PATH}/include/${BN} ${VAGRANT_DIR} - if [ -f ${FWK_DST_PATH}/include/${BN}~ ] - then - rm ${FWK_DST_PATH}/include/${BN}~ - fi - fi -done -for i in ${FWK_DIR_LIST_CC} -do - BN=`basename $i` - s1=`sha256sum -b $i | cut -d' ' -f1` - s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} - if [ -f ${FWK_DST_PATH}/src/${BN}~ ] - then - rm ${FWK_DST_PATH}/src/${BN}~ - fi - fi -done -FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/loggers/ -name "*.h*" -type f` -for i in ${FWK_DIR_LIST_HH} -do - BN=`basename $i` - s1=`sha256sum -b $i | cut -d' ' -f1` - s2=`sha256sum -b ${FWK_DST_PATH}/include/${BN} | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - cp ${FWK_DST_PATH}/include/${BN} ${VAGRANT_DIR} - if [ -f ${FWK_DST_PATH}/include/${BN}~ ] - then - rm ${FWK_DST_PATH}/include/${BN}~ - fi - fi -done -FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/loggers/ -name "*.c*" -type f` -for i in ${FWK_DIR_LIST_CC} -do - BN=`basename $i` - s1=`sha256sum -b $i | cut -d' ' -f1` - s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} - if [ -f ${FWK_DST_PATH}/src/${BN}~ ] - then - rm ${FWK_DST_PATH}/src/${BN}~ - fi - fi -done -# Update ATS TTCN-3 files -echo 'Update TTCN-3 files' -TTCN_3_ORG_PATH=${SRC_EMCOM_PATH}/ttcn -TTCN_3_DST_PATH=${PATH_DEV_EMCOM}/src -TTCN_3_ATS_LIST='AtsNg112 LibEmcom/LibNg112 LibCommon LibSip LibItsHttp' -for i in ${TTCN_3_ATS_LIST} -do - # TTCN-3 files - LIST_TTCN_FILES=`find ${TTCN_3_ORG_PATH}/$i -name "*.ttcn" -type f` - for j in ${LIST_TTCN_FILES} - do - BN=`basename $j` - s1=`sha256sum -b $j | cut -d' ' -f1` - s2=`sha256sum -b ${TTCN_3_DST_PATH}/$i/ttcn/${BN} | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - cp ${TTCN_3_DST_PATH}/$i/ttcn/${BN} ${VAGRANT_DIR} - fi - done - # XSD files - LIST_TTCN_FILES=`find ${TTCN_3_ORG_PATH}/$i -name "*.xsd" -type f` - for j in ${LIST_TTCN_FILES} - do - BN=`basename $j` - s1=`sha256sum -b $j | cut -d' ' -f1` - s2=`sha256sum -b ${TTCN_3_DST_PATH}/$i/ttcn/${BN} | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - cp ${TTCN_3_DST_PATH}/$i/xsd/${BN} ${VAGRANT_DIR} - fi - done - # Other files - if [ -f ${SRC_EMCOM_PATH}/docs/$i/o2.cfg ] - then - s1=`sha256sum -b ${PATH_DEV_EMCOM}/src/$i/docs/o2.cfg | cut -d' ' -f1` - s2=`sha256sum -b ${SRC_EMCOM_PATH}/docs/$i/o2.cfg | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - mkdir -p ${VAGRANT_DIR}/docs/$i - cp ${PATH_DEV_EMCOM}/src/$i/docs/o2.cfg ${VAGRANT_DIR}/docs/$i - fi - fi - if [ -f ${SRC_EMCOM_PATH}/etc/$i/$i.cfg ] - then - s1=`sha256sum -b ${PATH_DEV_EMCOM}/src/$i/etc/$i.cfg | cut -d' ' -f1` - s2=`sha256sum -b ${SRC_EMCOM_PATH}/etc/$i/$i.cfg | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - mkdir -p ${VAGRANT_DIR}/etc/$i - cp ${PATH_DEV_EMCOM}/src/$i/etc/%i.cfg ${VAGRANT_DIR}/etc/$i - fi - fi -done - -TTCN_3_LIB_LIST='LibHttp LibPemea' -for i in ${TTCN_3_LIB_LIST} -do - LIST_TTCN_FILES=`find ${TTCN_3_ORG_PATH}/$i -name "*.ttcn" -type f` - for j in ${LIST_TTCN_FILES} - do - BN=`basename $j` - s1=`sha256sum -b $j | cut -d' ' -f1` - s2=`sha256sum -b ${TTCN_3_DST_PATH}/$i/ttcn/${BN} | cut -d' ' -f1` - if [ "${s1}" != "${s2}" ] - then - cp ${TTCN_3_DST_PATH}/$i/ttcn/${BN} ${VAGRANT_DIR} - rm ${TTCN_3_DST_PATH}/$i/ttcn/${BN}~ - fi - done -done - - -LIST_FILES=`find ${PATH_DEV_EMCOM} -name "*~" -type f` -for i in ${LIST_FILES} -do - BN=$i - BN=${BN:: -1} # Remove the last character - cp ${BN} ${VAGRANT_DIR} - rm $i -done - -chmod -R 664 ${VAGRANT_DIR} -exit 0 - +#!/bin/bash + +# Debug mode +#set -e +set -vx + +# Usage: sudo ./merge_emcom_project.bash +# TODO Use git clone in temporary directory + +OLDPWD=`pwd` + +# Storing path +VAGRANT_DIR=~/tmp +if [ ! -d ${VAGRANT_DIR} ] +then + exit -1 +else + VAGRANT_DIR=$VAGRANT_DIR/to_be_merged + if [ -d ${VAGRANT_DIR} ] + then + rm -f ${VAGRANT_DIR}/* + else + mkdir ${VAGRANT_DIR} + fi +fi + +# Execution path +RUN_PATH="${0%/*}" +PATH_DEV_EMCOM=`pwd`/../etsi_emcom + + +# Update ETSI Framework files +echo 'Merging ETSI Framework files' +FWK_SRC_PATH=${SRC_EMCOM_PATH}/ccsrc +FWK_DST_PATH=${PATH_DEV_EMCOM}/framework +FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/Protocols/ -name "*.h*" -type f` +for i in ${FWK_DIR_LIST_HH} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/include/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/include/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/include/${BN}~ ] + then + rm ${FWK_DST_PATH}/include/${BN}~ + fi + fi +done +FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/Protocols/ -name "*.c*" -type f` +for i in ${FWK_DIR_LIST_CC} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/src/${BN}~ ] + then + rm ${FWK_DST_PATH}/src/${BN}~ + fi + fi +done +FWK_DIR_LIST_Y=`find ${FWK_SRC_PATH}/Protocols/ -name "*.y" -type f` +for i in ${FWK_DIR_LIST_Y} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/src/${BN}~ ] + then + rm ${FWK_DST_PATH}/src/${BN}~ + fi + fi +done +FWK_DIR_LIST_L=`find ${FWK_SRC_PATH}/Protocols/ -name "*.l" -type f` +for i in ${FWK_DIR_LIST_L} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/src/${BN}~ ] + then + rm ${FWK_DST_PATH}/src/${BN}~ + fi + fi +done +FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/Framework/ -name "*.h*" -type f` +FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/Framework/ -name "*.c*" -type f` +for i in ${FWK_DIR_LIST_HH} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/include/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/include/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/include/${BN}~ ] + then + rm ${FWK_DST_PATH}/include/${BN}~ + fi + fi +done +for i in ${FWK_DIR_LIST_CC} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/src/${BN}~ ] + then + rm ${FWK_DST_PATH}/src/${BN}~ + fi + fi +done +FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/loggers/ -name "*.h*" -type f` +for i in ${FWK_DIR_LIST_HH} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/include/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/include/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/include/${BN}~ ] + then + rm ${FWK_DST_PATH}/include/${BN}~ + fi + fi +done +FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/loggers/ -name "*.c*" -type f` +for i in ${FWK_DIR_LIST_CC} +do + BN=`basename $i` + s1=`sha256sum -b $i | cut -d' ' -f1` + s2=`sha256sum -b ${FWK_DST_PATH}/src/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${FWK_DST_PATH}/src/${BN} ${VAGRANT_DIR} + if [ -f ${FWK_DST_PATH}/src/${BN}~ ] + then + rm ${FWK_DST_PATH}/src/${BN}~ + fi + fi +done +# Update ATS TTCN-3 files +echo 'Update TTCN-3 files' +TTCN_3_ORG_PATH=${SRC_EMCOM_PATH}/ttcn +TTCN_3_DST_PATH=${PATH_DEV_EMCOM}/src +TTCN_3_ATS_LIST='AtsNg112 LibEmcom/LibNg112 LibCommon LibSip LibItsHttp' +for i in ${TTCN_3_ATS_LIST} +do + # TTCN-3 files + LIST_TTCN_FILES=`find ${TTCN_3_ORG_PATH}/$i -name "*.ttcn" -type f` + for j in ${LIST_TTCN_FILES} + do + BN=`basename $j` + s1=`sha256sum -b $j | cut -d' ' -f1` + s2=`sha256sum -b ${TTCN_3_DST_PATH}/$i/ttcn/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${TTCN_3_DST_PATH}/$i/ttcn/${BN} ${VAGRANT_DIR} + fi + done + # XSD files + LIST_TTCN_FILES=`find ${TTCN_3_ORG_PATH}/$i -name "*.xsd" -type f` + for j in ${LIST_TTCN_FILES} + do + BN=`basename $j` + s1=`sha256sum -b $j | cut -d' ' -f1` + s2=`sha256sum -b ${TTCN_3_DST_PATH}/$i/ttcn/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${TTCN_3_DST_PATH}/$i/xsd/${BN} ${VAGRANT_DIR} + fi + done + # Other files + if [ -f ${SRC_EMCOM_PATH}/docs/$i/o2.cfg ] + then + s1=`sha256sum -b ${PATH_DEV_EMCOM}/src/$i/docs/o2.cfg | cut -d' ' -f1` + s2=`sha256sum -b ${SRC_EMCOM_PATH}/docs/$i/o2.cfg | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + mkdir -p ${VAGRANT_DIR}/docs/$i + cp ${PATH_DEV_EMCOM}/src/$i/docs/o2.cfg ${VAGRANT_DIR}/docs/$i + fi + fi + if [ -f ${SRC_EMCOM_PATH}/etc/$i/$i.cfg ] + then + s1=`sha256sum -b ${PATH_DEV_EMCOM}/src/$i/etc/$i.cfg | cut -d' ' -f1` + s2=`sha256sum -b ${SRC_EMCOM_PATH}/etc/$i/$i.cfg | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + mkdir -p ${VAGRANT_DIR}/etc/$i + cp ${PATH_DEV_EMCOM}/src/$i/etc/%i.cfg ${VAGRANT_DIR}/etc/$i + fi + fi +done + +TTCN_3_LIB_LIST='LibHttp LibPemea' +for i in ${TTCN_3_LIB_LIST} +do + LIST_TTCN_FILES=`find ${TTCN_3_ORG_PATH}/$i -name "*.ttcn" -type f` + for j in ${LIST_TTCN_FILES} + do + BN=`basename $j` + s1=`sha256sum -b $j | cut -d' ' -f1` + s2=`sha256sum -b ${TTCN_3_DST_PATH}/$i/ttcn/${BN} | cut -d' ' -f1` + if [ "${s1}" != "${s2}" ] + then + cp ${TTCN_3_DST_PATH}/$i/ttcn/${BN} ${VAGRANT_DIR} + rm ${TTCN_3_DST_PATH}/$i/ttcn/${BN}~ + fi + done +done + + +LIST_FILES=`find ${PATH_DEV_EMCOM} -name "*~" -type f` +for i in ${LIST_FILES} +do + BN=$i + BN=${BN:: -1} # Remove the last character + cp ${BN} ${VAGRANT_DIR} + rm $i +done + +chmod -R 664 ${VAGRANT_DIR} +exit 0 + diff --git a/scripts/ng112.bash b/scripts/ng112.bash index f15ee65..8f514a2 100755 --- a/scripts/ng112.bash +++ b/scripts/ng112.bash @@ -1,242 +1,242 @@ -#!/bin/bash -#set -e -set -vx - -function f_exit { - cd ${CURPWD} - - unset TTCN_FILES - unset CC_FILES - unset CFG_FILES - unset EXECUTABLE - echo $1 - exit $2 -} - -function f_usage { - echo "build.bash: This script import from External Disk the " - echo "Optional arguments:" - echo " prof: Generate a makefile including profiling options (e.g. ./build.bash prof)" - exit 0 -} - -clear - -if [ "$1" == "help" ] -then - f_usage -fi - -ATS_NAME=Ng112 - -#CURPWD=`pwd` -if [ ! "${PWD##*/}" == "objs" ] -then - cd ../objs - if [ ! $? == 0 ] - then - echo "Please move to PROJECT/obj directory" - exit 1 - fi -fi -# Remove everything -rm -fr ../objs/*.hh -rm -fr ../objs/*.cc -rm -fr ../objs/*.log -rm -fr ../objs/*.o -rm -fr ../objs/Makefile - -# Remove useless files -find .. -type f -name "*~" -exec rm {} \; -find .. -type f -name "*.bak" -exec rm {} \; -find .. -type f -name "*.log" -exec rm {} \; - -# Build XSD files if any and put them in objs directory -#XSD_PATH=${PATH_DEV_EMCOM}/xsd -XSD_PATH=${PATH_DEV_EMCOM}/null # Do not use xsd2ttcn for now, need to fix issues first -if [ -d ${XSD_PATH} ] -then - XSD_FILES=`find ${XSD_PATH} -name '*.xsd'` - - if [ "${OSTYPE}" == "cygwin" ] - then - xsd2ttcn.exe ${XSD_FILES} - else - xsd2ttcn ${XSD_FILES} - fi - if [ "$?" != "0" ] - then - f_exit "Failed to generate XSD source code" 2 - fi - XSD_FILES=`find . -name '*.ttcn'` -fi - -REFERENCES="LibCommon LibHttp LibEmcom/LibNg112 LibSip" -for i in ${REFERENCES} -do - # TTCN code - for j in `find ${PATH_DEV_EMCOM}/src/$i/ttcn -type f -name "*.ttcn"`; - do - ln -sf $j ../ttcn/`basename $j` - done - # Include source code - files=`find ${PATH_DEV_EMCOM}/src/$i/include -type f` - if [ "${files}" != " " ] - then - for j in ${files}; - do - ln -sf $j ../include/`basename $j` - done - fi - # CC source code - files=`find ${PATH_DEV_EMCOM}/src/$i/src -type f` - if [ "${files}" != " " ] - then - for j in ${files}; - do - ln -sf $j ../src/`basename $j` - done - fi -done - -# Generate the list of the TTCN-3 files -TTCN_FILES=`find .. -name '*.ttcn*'` - -# Start ATS generation - Step 1 -if [ "${OSTYPE}" == "cygwin" ] -then - rm ../bin/*.exe ../lib/*.dll - compiler.exe -e -f -g -l -L -M -n -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log - if [ "$?" == "1" ] - then - f_exit "Failed to compile ATS" 4 - fi -else - compiler -e -f -g -l -L -M -n -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log - if [ "$?" == "1" ] - then - f_exit "Failed to generate ATS source code" 6 - fi -fi - -# Sart ATS generation - Step 2 -# Create working variables -CC_FILES=`find ../src -name '*.c*'` -FWK_FILES=`find ${PATH_DEV_EMCOM}/framework/ -name '*.c*'` -CFG_FILES=`find ../etc -name '*.cfg'` - -# Sart ATS generation - Step 3 -if [ "${OSTYPE}" == "cygwin" ] -then - ttcn3_makefilegen.exe -d -f -g -m -M -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log - if [ "$?" == "1" ] - then - f_exit "Failed to compile ATS" 5 - fi -else - ttcn3_makefilegen -d -f -g -m -M -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log - if [ "$?" == "1" ] - then - f_exit "Failed to generate ATS source code" 7 - fi -fi - -# Bug xsd2ttcn -for i in ${XSD_FILES} -do - VARIANT='s/ variant (\[\-\]) ;//g' - sed --in-place "${VARIANT}" $i -done - -# Remove port skeletons to use src/ -for i in `ls ../include/*.hh` -do - if [ -f ./`basename $i` ] - then - rm ./`basename $i` - fi -done -for i in `ls ../src/*.cc` -do - if [ -f ./`basename $i` ] - then - rm ./`basename $i` - fi -done - -# Check if Makefile was generated -if [ ! -f ./Makefile ] -then - f_exit "Failed to generate ATS source code" 8 -fi - -# Patch ATS generated files -#./bin/patch.bash 2>&1 3>&1 | tee --append build.log -# Add compiler/linker options -# -DASN_DISABLE_OER_SUPPORT is required for CAMCodec and DENMCodec -if [ "$1" == "prof" ] -then - if [ "${OSTYPE}" == "cygwin" ] - then - CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -D_XOPEN_SOURCE=700 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' - else - CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' - fi - LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' -else - if [ "${OSTYPE}" == "cygwin" ] - then - CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' - else - CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' - fi - LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' -fi -ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_EMCOM)/include -I$(PATH_DEV_EMCOM)/framework/include -I../include -I../../LibEmcom/Common/include -I../../LibEmcom/LibNg112/include -I$(HOME_FRAMEWORKS)/osip/include -I$(HOME_INC) -I.' -ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lpcap -lstdc++fs -lssl -L\$\(HOME_FRAMEWORKS\)\/osip\/src\/osipparser2\/\.libs -losipparser2/g' -sed --in-place "${CXXFLAGS_DEBUG_MODE}" ./Makefile -sed --in-place "${LDFLAGS_DEBUG_MODE}" ./Makefile -sed --in-place "${ADD_INCLUDE}" ./Makefile -sed --in-place "${ADD_LIBRARIES}" ./Makefile -# Update COMPILER_FLAGS -COMPILER_FLAGS='s/COMPILER_FLAGS = /COMPILER_FLAGS = -e -O /g' -sed --in-place "${COMPILER_FLAGS}" ./Makefile -# Update clean clause -CLEAN_LINE='s/$(RM) $(EXECUTABLE)/$(RM) ..\/bin\/$(EXECUTABLE) ..\/src\/*.o/g' -sed --in-place "${CLEAN_LINE}" ./Makefile -# Move binary file command -EXECUTABLE=MyExample -MV_CMD='s/all: $(TARGET) ;/all: $(TARGET) ; @if [ -f ..\/objs\/$(EXECUTABLE) ]; then mv ..\/objs\/$(EXECUTABLE) ..\/bin; fi ;/g' -sed --in-place "${MV_CMD}" ./Makefile -# Add run command -ADD_HOST='/PLATFORM = /aHOST=127.0.0.1' -ADD_PORT='/PLATFORM = /aPORT=12000' -sed --in-place "${ADD_PORT}" ./Makefile -sed --in-place "${ADD_HOST}" ./Makefile -ADD_RUN_LINE_1='$arun: all' -ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' -sed --in-place "${ADD_RUN_LINE_1}" ./Makefile -sed --in-place "${ADD_RUN_LINE_2}" ./Makefile -ADD_RUN_LINE_1='$arun_d: all' -ADD_RUN_LINE_2='$a\\t@gdb --args $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' -sed --in-place "${ADD_RUN_LINE_1}" ./Makefile -sed --in-place "${ADD_RUN_LINE_2}" ./Makefile -ADD_RUN_LINE_1='$arun_v: all' -ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --track-fds=yes --run-cxx-freeres=yes $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' -sed --in-place "${ADD_RUN_LINE_1}" ./Makefile -sed --in-place "${ADD_RUN_LINE_2}" ./Makefile -# Add gendoc entry -ADD_RUN_LINE_1='$agendoc: ../docs/o2.cfg' -ADD_RUN_LINE_2='$a\\tdoxygen ../docs/o2.cfg' -sed --in-place "${ADD_RUN_LINE_1}" ./Makefile -sed --in-place "${ADD_RUN_LINE_2}" ./Makefile - -# Build all -make all 2>&1 3>&1 | tee --append build.log -if [ "$?" == "1" ] -then - f_exit "Failed to generate ATS source code" 9 -fi -export LD_LIBRARY_PATH=~/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH -../bin/Ats${ATS_NAME} -v -f_exit "Build done successfully" 0 +#!/bin/bash +#set -e +set -vx + +function f_exit { + cd ${CURPWD} + + unset TTCN_FILES + unset CC_FILES + unset CFG_FILES + unset EXECUTABLE + echo $1 + exit $2 +} + +function f_usage { + echo "build.bash: This script import from External Disk the " + echo "Optional arguments:" + echo " prof: Generate a makefile including profiling options (e.g. ./build.bash prof)" + exit 0 +} + +clear + +if [ "$1" == "help" ] +then + f_usage +fi + +ATS_NAME=Ng112 + +#CURPWD=`pwd` +if [ ! "${PWD##*/}" == "objs" ] +then + cd ../objs + if [ ! $? == 0 ] + then + echo "Please move to PROJECT/obj directory" + exit 1 + fi +fi +# Remove everything +rm -fr ../objs/*.hh +rm -fr ../objs/*.cc +rm -fr ../objs/*.log +rm -fr ../objs/*.o +rm -fr ../objs/Makefile + +# Remove useless files +find .. -type f -name "*~" -exec rm {} \; +find .. -type f -name "*.bak" -exec rm {} \; +find .. -type f -name "*.log" -exec rm {} \; + +# Build XSD files if any and put them in objs directory +#XSD_PATH=${PATH_DEV_EMCOM}/xsd +XSD_PATH=${PATH_DEV_EMCOM}/null # Do not use xsd2ttcn for now, need to fix issues first +if [ -d ${XSD_PATH} ] +then + XSD_FILES=`find ${XSD_PATH} -name '*.xsd'` + + if [ "${OSTYPE}" == "cygwin" ] + then + xsd2ttcn.exe ${XSD_FILES} + else + xsd2ttcn ${XSD_FILES} + fi + if [ "$?" != "0" ] + then + f_exit "Failed to generate XSD source code" 2 + fi + XSD_FILES=`find . -name '*.ttcn'` +fi + +REFERENCES="LibCommon LibHttp LibEmcom/LibNg112 LibSip" +for i in ${REFERENCES} +do + # TTCN code + for j in `find ${PATH_DEV_EMCOM}/src/$i/ttcn -type f -name "*.ttcn"`; + do + ln -sf $j ../ttcn/`basename $j` + done + # Include source code + files=`find ${PATH_DEV_EMCOM}/src/$i/include -type f` + if [ "${files}" != " " ] + then + for j in ${files}; + do + ln -sf $j ../include/`basename $j` + done + fi + # CC source code + files=`find ${PATH_DEV_EMCOM}/src/$i/src -type f` + if [ "${files}" != " " ] + then + for j in ${files}; + do + ln -sf $j ../src/`basename $j` + done + fi +done + +# Generate the list of the TTCN-3 files +TTCN_FILES=`find .. -name '*.ttcn*'` + +# Start ATS generation - Step 1 +if [ "${OSTYPE}" == "cygwin" ] +then + rm ../bin/*.exe ../lib/*.dll + compiler.exe -e -f -g -l -L -M -n -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log + if [ "$?" == "1" ] + then + f_exit "Failed to compile ATS" 4 + fi +else + compiler -e -f -g -l -L -M -n -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log + if [ "$?" == "1" ] + then + f_exit "Failed to generate ATS source code" 6 + fi +fi + +# Sart ATS generation - Step 2 +# Create working variables +CC_FILES=`find ../src -name '*.c*'` +FWK_FILES=`find ${PATH_DEV_EMCOM}/framework/ -name '*.c*'` +CFG_FILES=`find ../etc -name '*.cfg'` + +# Sart ATS generation - Step 3 +if [ "${OSTYPE}" == "cygwin" ] +then + ttcn3_makefilegen.exe -d -f -g -m -M -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log + if [ "$?" == "1" ] + then + f_exit "Failed to compile ATS" 5 + fi +else + ttcn3_makefilegen -d -f -g -m -M -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log + if [ "$?" == "1" ] + then + f_exit "Failed to generate ATS source code" 7 + fi +fi + +# Bug xsd2ttcn +for i in ${XSD_FILES} +do + VARIANT='s/ variant (\[\-\]) ;//g' + sed --in-place "${VARIANT}" $i +done + +# Remove port skeletons to use src/ +for i in `ls ../include/*.hh` +do + if [ -f ./`basename $i` ] + then + rm ./`basename $i` + fi +done +for i in `ls ../src/*.cc` +do + if [ -f ./`basename $i` ] + then + rm ./`basename $i` + fi +done + +# Check if Makefile was generated +if [ ! -f ./Makefile ] +then + f_exit "Failed to generate ATS source code" 8 +fi + +# Patch ATS generated files +#./bin/patch.bash 2>&1 3>&1 | tee --append build.log +# Add compiler/linker options +# -DASN_DISABLE_OER_SUPPORT is required for CAMCodec and DENMCodec +if [ "$1" == "prof" ] +then + if [ "${OSTYPE}" == "cygwin" ] + then + CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -D_XOPEN_SOURCE=700 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' + else + CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' + fi + LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' +else + if [ "${OSTYPE}" == "cygwin" ] + then + CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' + else + CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' + fi + LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' +fi +ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_EMCOM)/include -I$(PATH_DEV_EMCOM)/framework/include -I../include -I../../LibEmcom/Common/include -I../../LibEmcom/LibNg112/include -I$(HOME_FRAMEWORKS)/osip/include -I$(HOME_INC) -I.' +ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lpcap -lstdc++fs -lssl -L\$\(HOME_FRAMEWORKS\)\/osip\/src\/osipparser2\/\.libs -losipparser2/g' +sed --in-place "${CXXFLAGS_DEBUG_MODE}" ./Makefile +sed --in-place "${LDFLAGS_DEBUG_MODE}" ./Makefile +sed --in-place "${ADD_INCLUDE}" ./Makefile +sed --in-place "${ADD_LIBRARIES}" ./Makefile +# Update COMPILER_FLAGS +COMPILER_FLAGS='s/COMPILER_FLAGS = /COMPILER_FLAGS = -e -O /g' +sed --in-place "${COMPILER_FLAGS}" ./Makefile +# Update clean clause +CLEAN_LINE='s/$(RM) $(EXECUTABLE)/$(RM) ..\/bin\/$(EXECUTABLE) ..\/src\/*.o/g' +sed --in-place "${CLEAN_LINE}" ./Makefile +# Move binary file command +EXECUTABLE=MyExample +MV_CMD='s/all: $(TARGET) ;/all: $(TARGET) ; @if [ -f ..\/objs\/$(EXECUTABLE) ]; then mv ..\/objs\/$(EXECUTABLE) ..\/bin; fi ;/g' +sed --in-place "${MV_CMD}" ./Makefile +# Add run command +ADD_HOST='/PLATFORM = /aHOST=127.0.0.1' +ADD_PORT='/PLATFORM = /aPORT=12000' +sed --in-place "${ADD_PORT}" ./Makefile +sed --in-place "${ADD_HOST}" ./Makefile +ADD_RUN_LINE_1='$arun: all' +ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile +ADD_RUN_LINE_1='$arun_d: all' +ADD_RUN_LINE_2='$a\\t@gdb --args $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile +ADD_RUN_LINE_1='$arun_v: all' +ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --track-fds=yes --run-cxx-freeres=yes $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile +# Add gendoc entry +ADD_RUN_LINE_1='$agendoc: ../docs/o2.cfg' +ADD_RUN_LINE_2='$a\\tdoxygen ../docs/o2.cfg' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile + +# Build all +make all 2>&1 3>&1 | tee --append build.log +if [ "$?" == "1" ] +then + f_exit "Failed to generate ATS source code" 9 +fi +export LD_LIBRARY_PATH=~/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH +../bin/Ats${ATS_NAME} -v +f_exit "Build done successfully" 0 diff --git a/scripts/run_all.bash b/scripts/run_all.bash index 6b68a68..9329847 100755 --- a/scripts/run_all.bash +++ b/scripts/run_all.bash @@ -1,47 +1,47 @@ -#!/bin/bash -#set -e -#set -vx - -clear - -export LD_LIBRARY_PATH=/home/vagrant/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH - -if ! [[ $1 =~ "^[0-9]+$" ]] -then - COUNTER=$1 -else - COUNTER=1 -fi - -CURPWD=`pwd` -if [ ! "${PWD##*/}" == "objs" ] -then - cd ../objs - if [ ! $? == 0 ] - then - echo "Please move to PROJECT/obj directory" - exit 1 - fi -fi - -rm ../logs/merged.log.* - -for i in $(seq 1 1 $COUNTER) -do - LD_LIBRARY_PATH=/home/vagrant/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH ../bin/run_mtc.bash & - LD_LIBRARY_PATH=/home/vagrant/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH ../bin/run_ptcs.bash $2 - - dup=$(ps -ef | grep "$0" | grep -v grep | wc -l) - while [ ${dup} -eq 3 ] - do - sleep 1 - dup=$(ps -ef | grep "$0" | grep -v grep | wc -l) - done - sleep 1 - - mv ../logs/merged.log ../logs/merged.log.`date +'%Y%m%d%S'` -done - -exit 0 - - +#!/bin/bash +#set -e +#set -vx + +clear + +export LD_LIBRARY_PATH=/home/vagrant/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH + +if ! [[ $1 =~ "^[0-9]+$" ]] +then + COUNTER=$1 +else + COUNTER=1 +fi + +CURPWD=`pwd` +if [ ! "${PWD##*/}" == "objs" ] +then + cd ../objs + if [ ! $? == 0 ] + then + echo "Please move to PROJECT/obj directory" + exit 1 + fi +fi + +rm ../logs/merged.log.* + +for i in $(seq 1 1 $COUNTER) +do + LD_LIBRARY_PATH=/home/vagrant/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH ../bin/run_mtc.bash & + LD_LIBRARY_PATH=/home/vagrant/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH ../bin/run_ptcs.bash $2 + + dup=$(ps -ef | grep "$0" | grep -v grep | wc -l) + while [ ${dup} -eq 3 ] + do + sleep 1 + dup=$(ps -ef | grep "$0" | grep -v grep | wc -l) + done + sleep 1 + + mv ../logs/merged.log ../logs/merged.log.`date +'%Y%m%d%S'` +done + +exit 0 + + diff --git a/scripts/run_mtc.bash b/scripts/run_mtc.bash index bc283fd..a4932c2 100755 --- a/scripts/run_mtc.bash +++ b/scripts/run_mtc.bash @@ -1,55 +1,55 @@ -#!/bin/bash -#set -evx - -clear - -CURPWD=`pwd` -if [ ! "${PWD##*/}" == "objs" ] -then - cd ../objs - if [ ! $? == 0 ] - then - echo "Please move to PROJECT/obj directory" - exit 1 - fi -fi - -TITAN_LOG_DIR=../logs -if [ ! -d ${TITAN_LOG_DIR} ] -then - mkdir ${TITAN_LOG_DIR} -else - rm -f ${TITAN_LOG_DIR}/*.log -fi - -CFG_FILES=`find ../etc -name '*.cfg'` -#LOG_FILES=`find ${TITAN_LOG_DIR} -name '*.log'` -#mv ${LOG_FILES} ../logs - -#if [ "${OSTYPE}" == "cygwin" ] -#then -# # Remove dll -# rm ./*.dll -# ## Copy the new ones -# cp ~/lib/libhelper.dll . -# cp ~/lib/libconverter.dll . -# cp ~/lib/liblogger.dll . -# cp ~/lib/libttcn3_tri.dll . -# cp ~/lib/libcomm.dll . -#fi - -echo "> cmtc: to create the MTC server" -echo "> smtc [module_name[[.control]|.testcase_name|.*]: when MyExample is connected, run the TCs in [EXECUTE] section" -echo "> emtc: Terminate MTC." -mctr ${CFG_FILES} - -LOG_FILES=`find ${TITAN_LOG_DIR} -name '*.log'` -if [ "${TITAN_LOG_DIR}" != "" ] -then - ttcn3_logmerge -o ${TITAN_LOG_DIR}/merged.log ${LOG_FILES} - ttcn3_logformat -o ${TITAN_LOG_DIR}/merged_formated.log ${TITAN_LOG_DIR}/merged.log - mv ${TITAN_LOG_DIR}/merged_formated.log ${TITAN_LOG_DIR}/merged.log - echo "log files were merged into ${TITAN_LOG_DIR}/merged.log" -fi - -cd ${CURPWD} +#!/bin/bash +#set -evx + +clear + +CURPWD=`pwd` +if [ ! "${PWD##*/}" == "objs" ] +then + cd ../objs + if [ ! $? == 0 ] + then + echo "Please move to PROJECT/obj directory" + exit 1 + fi +fi + +TITAN_LOG_DIR=../logs +if [ ! -d ${TITAN_LOG_DIR} ] +then + mkdir ${TITAN_LOG_DIR} +else + rm -f ${TITAN_LOG_DIR}/*.log +fi + +CFG_FILES=`find ../etc -name '*.cfg'` +#LOG_FILES=`find ${TITAN_LOG_DIR} -name '*.log'` +#mv ${LOG_FILES} ../logs + +#if [ "${OSTYPE}" == "cygwin" ] +#then +# # Remove dll +# rm ./*.dll +# ## Copy the new ones +# cp ~/lib/libhelper.dll . +# cp ~/lib/libconverter.dll . +# cp ~/lib/liblogger.dll . +# cp ~/lib/libttcn3_tri.dll . +# cp ~/lib/libcomm.dll . +#fi + +echo "> cmtc: to create the MTC server" +echo "> smtc [module_name[[.control]|.testcase_name|.*]: when MyExample is connected, run the TCs in [EXECUTE] section" +echo "> emtc: Terminate MTC." +mctr ${CFG_FILES} + +LOG_FILES=`find ${TITAN_LOG_DIR} -name '*.log'` +if [ "${TITAN_LOG_DIR}" != "" ] +then + ttcn3_logmerge -o ${TITAN_LOG_DIR}/merged.log ${LOG_FILES} + ttcn3_logformat -o ${TITAN_LOG_DIR}/merged_formated.log ${TITAN_LOG_DIR}/merged.log + mv ${TITAN_LOG_DIR}/merged_formated.log ${TITAN_LOG_DIR}/merged.log + echo "log files were merged into ${TITAN_LOG_DIR}/merged.log" +fi + +cd ${CURPWD} diff --git a/scripts/run_ptcs.bash b/scripts/run_ptcs.bash index 3a201d3..869220b 100755 --- a/scripts/run_ptcs.bash +++ b/scripts/run_ptcs.bash @@ -1,38 +1,38 @@ -#!/bin/bash -#set -e -#set -vx - -clear - -CURPWD=`pwd` -if [ ! "${PWD##*/}" == "objs" ] -then - cd ../objs - if [ ! $? == 0 ] - then - echo "Please move to PROJECT/obj directory" - exit 1 - fi -fi - -if [ -f ./core ] -then - rm -f ./core -fi -if [ "$1" == "d" ] -then - make run_d -elif [ "$1" == "v" ] -then - make run_v -else - make run -fi -#if [ "${OSTYPE}" == "cygwin" ] -#then -# ../bin/SIPmsg.exe 127.0.0.1 12000 -#else -# ../bin/SIPmsg 127.0.0.1 12000 -#fi - -cd ${CURPWD} +#!/bin/bash +#set -e +#set -vx + +clear + +CURPWD=`pwd` +if [ ! "${PWD##*/}" == "objs" ] +then + cd ../objs + if [ ! $? == 0 ] + then + echo "Please move to PROJECT/obj directory" + exit 1 + fi +fi + +if [ -f ./core ] +then + rm -f ./core +fi +if [ "$1" == "d" ] +then + make run_d +elif [ "$1" == "v" ] +then + make run_v +else + make run +fi +#if [ "${OSTYPE}" == "cygwin" ] +#then +# ../bin/SIPmsg.exe 127.0.0.1 12000 +#else +# ../bin/SIPmsg 127.0.0.1 12000 +#fi + +cd ${CURPWD} diff --git a/scripts/run_tshark.bash b/scripts/run_tshark.bash index 932d7fc..7b12fa4 100755 --- a/scripts/run_tshark.bash +++ b/scripts/run_tshark.bash @@ -1,7 +1,7 @@ -#!/bin/bash - -# Debug mode -#set -vx -set -e - -~/frameworks/wireshark-build/run/tshark -ieth1 -V -f"ether proto 0x8947 or udp src port 12345 or udp dst port 12345" -Tfields -eframe.time -eeth.dst -eeth.src -eeth.type -edata +#!/bin/bash + +# Debug mode +#set -vx +set -e + +~/frameworks/wireshark-build/run/tshark -ieth1 -V -f"ether proto 0x8947 or udp src port 12345 or udp dst port 12345" -Tfields -eframe.time -eeth.dst -eeth.src -eeth.type -edata diff --git a/scripts/testcodec_generate_makefile.bash b/scripts/testcodec_generate_makefile.bash index 9cf59eb..4b79492 100755 --- a/scripts/testcodec_generate_makefile.bash +++ b/scripts/testcodec_generate_makefile.bash @@ -1,242 +1,242 @@ -#!/bin/bash -#set -e -set -vx - -function f_exit { - cd ${CURPWD} - - unset TTCN_FILES - unset CC_FILES - unset CFG_FILES - unset EXECUTABLE - echo $1 - exit $2 -} - -function f_usage { - echo "build.bash: This script import from External Disk the " - echo "Optional arguments:" - echo " prof: Generate a makefile including profiling options (e.g. ./build.bash prof)" - exit 0 -} - -clear - -if [ "$1" == "help" ] -then - f_usage -fi - -ATS_NAME=TestCodec - -#CURPWD=`pwd` -if [ ! "${PWD##*/}" == "objs" ] -then - cd ../objs - if [ ! $? == 0 ] - then - echo "Please move to PROJECT/obj directory" - exit 1 - fi -fi -# Remove everything -rm -fr ../objs/*.hh -rm -fr ../objs/*.cc -rm -fr ../objs/*.log -rm -fr ../objs/*.o -rm -fr ../objs/Makefile - -# Remove useless files -find .. -type f -name "*~" -exec rm {} \; -find .. -type f -name "*.bak" -exec rm {} \; -find .. -type f -name "*.log" -exec rm {} \; - -# Build XSD files if any and put them in objs directory -#XSD_PATH=${PATH_DEV_EMCOM}/xsd -XSD_PATH=${PATH_DEV_EMCOM}/null # Do not use xsd2ttcn for now, need to fix issues first -if [ -d ${XSD_PATH} ] -then - XSD_FILES=`find ${XSD_PATH} -name '*.xsd'` - - if [ "${OSTYPE}" == "cygwin" ] - then - xsd2ttcn.exe ${XSD_FILES} - else - xsd2ttcn ${XSD_FILES} - fi - if [ "$?" != "0" ] - then - f_exit "Failed to generate XSD source code" 2 - fi - XSD_FILES=`find . -name '*.ttcn'` -fi - -REFERENCES="LibCommon LibHttp LibEmcom/LibNg112 LibSip" -for i in ${REFERENCES} -do - # TTCN code - for j in `find ${PATH_DEV_EMCOM}/src/$i/ttcn -type f -name "*.ttcn"`; - do - ln -sf $j ../ttcn/`basename $j` - done - # Include source code - files=`find ${PATH_DEV_EMCOM}/src/$i/include -type f` - if [ "${files}" != " " ] - then - for j in ${files}; - do - ln -sf $j ../include/`basename $j` - done - fi - # CC source code - files=`find ${PATH_DEV_EMCOM}/src/$i/src -type f` - if [ "${files}" != " " ] - then - for j in ${files}; - do - ln -sf $j ../src/`basename $j` - done - fi -done - -# Generate the list of the TTCN-3 files -TTCN_FILES=`find .. -name '*.ttcn*'` - -# Start ATS generation - Step 1 -if [ "${OSTYPE}" == "cygwin" ] -then - rm ../bin/*.exe ../lib/*.dll - compiler.exe -e -f -g -l -L -M -n -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log - if [ "$?" == "1" ] - then - f_exit "Failed to compile ATS" 4 - fi -else - compiler -e -f -g -l -L -M -n -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log - if [ "$?" == "1" ] - then - f_exit "Failed to generate ATS source code" 6 - fi -fi - -# Sart ATS generation - Step 2 -# Create working variables -CC_FILES=`find ../src -name '*.c*'` -FWK_FILES=`find ${PATH_DEV_EMCOM}/framework/ -name '*.c*'` -CFG_FILES=`find ../etc -name '*.cfg'` - -# Sart ATS generation - Step 3 -if [ "${OSTYPE}" == "cygwin" ] -then - ttcn3_makefilegen.exe -d -f -g -m -M -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log - if [ "$?" == "1" ] - then - f_exit "Failed to compile ATS" 5 - fi -else - ttcn3_makefilegen -d -f -g -m -M -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log - if [ "$?" == "1" ] - then - f_exit "Failed to generate ATS source code" 7 - fi -fi - -# Bug xsd2ttcn -for i in ${XSD_FILES} -do - VARIANT='s/ variant (\[\-\]) ;//g' - sed --in-place "${VARIANT}" $i -done - -# Remove port skeletons to use src/ -for i in `ls ../include/*.hh` -do - if [ -f ./`basename $i` ] - then - rm ./`basename $i` - fi -done -for i in `ls ../src/*.cc` -do - if [ -f ./`basename $i` ] - then - rm ./`basename $i` - fi -done - -# Check if Makefile was generated -if [ ! -f ./Makefile ] -then - f_exit "Failed to generate ATS source code" 8 -fi - -# Patch ATS generated files -#./bin/patch.bash 2>&1 3>&1 | tee --append build.log -# Add compiler/linker options -# -DASN_DISABLE_OER_SUPPORT is required for CAMCodec and DENMCodec -if [ "$1" == "prof" ] -then - if [ "${OSTYPE}" == "cygwin" ] - then - CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -D_XOPEN_SOURCE=700 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' - else - CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' - fi - LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' -else - if [ "${OSTYPE}" == "cygwin" ] - then - CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' - else - CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' - fi - LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fPIC -fstack-check -fstack-protector -fsanitize=address -fno-omit-frame-pointer -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' -fi -ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_EMCOM)/include -I$(PATH_DEV_EMCOM)/framework/include -I../include -I../../LibEmcom/Common/include -I../../LibEmcom/LibNg112/include -I$(HOME_FRAMEWORKS)/osip/include -I$(HOME_INC) -I.' -ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lpcap -lstdc++fs -lssl -L\$\(HOME_FRAMEWORKS\)\/osip\/src\/osipparser2\/\.libs -losipparser2/g' -sed --in-place "${CXXFLAGS_DEBUG_MODE}" ./Makefile -sed --in-place "${LDFLAGS_DEBUG_MODE}" ./Makefile -sed --in-place "${ADD_INCLUDE}" ./Makefile -sed --in-place "${ADD_LIBRARIES}" ./Makefile -# Update COMPILER_FLAGS -COMPILER_FLAGS='s/COMPILER_FLAGS = /COMPILER_FLAGS = -e -O /g' -sed --in-place "${COMPILER_FLAGS}" ./Makefile -# Update clean clause -CLEAN_LINE='s/$(RM) $(EXECUTABLE)/$(RM) ..\/bin\/$(EXECUTABLE) ..\/src\/*.o/g' -sed --in-place "${CLEAN_LINE}" ./Makefile -# Move binary file command -EXECUTABLE=MyExample -MV_CMD='s/all: $(TARGET) ;/all: $(TARGET) ; @if [ -f ..\/objs\/$(EXECUTABLE) ]; then mv ..\/objs\/$(EXECUTABLE) ..\/bin; fi ;/g' -sed --in-place "${MV_CMD}" ./Makefile -# Add run command -ADD_HOST='/PLATFORM = /aHOST=127.0.0.1' -ADD_PORT='/PLATFORM = /aPORT=12000' -sed --in-place "${ADD_PORT}" ./Makefile -sed --in-place "${ADD_HOST}" ./Makefile -ADD_RUN_LINE_1='$arun: all' -ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' -sed --in-place "${ADD_RUN_LINE_1}" ./Makefile -sed --in-place "${ADD_RUN_LINE_2}" ./Makefile -ADD_RUN_LINE_1='$arun_d: all' -ADD_RUN_LINE_2='$a\\t@gdb --args $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' -sed --in-place "${ADD_RUN_LINE_1}" ./Makefile -sed --in-place "${ADD_RUN_LINE_2}" ./Makefile -ADD_RUN_LINE_1='$arun_v: all' -ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --track-fds=yes --run-cxx-freeres=yes $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' -sed --in-place "${ADD_RUN_LINE_1}" ./Makefile -sed --in-place "${ADD_RUN_LINE_2}" ./Makefile -# Add gendoc entry -ADD_RUN_LINE_1='$agendoc: ../docs/o2.cfg' -ADD_RUN_LINE_2='$a\\tdoxygen ../docs/o2.cfg' -sed --in-place "${ADD_RUN_LINE_1}" ./Makefile -sed --in-place "${ADD_RUN_LINE_2}" ./Makefile - -# Build all -make all 2>&1 3>&1 | tee --append build.log -if [ "$?" == "1" ] -then - f_exit "Failed to generate ATS source code" 9 -fi -export LD_LIBRARY_PATH=~/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH -../bin/Ats${ATS_NAME} -v -f_exit "Build done successfully" 0 +#!/bin/bash +#set -e +set -vx + +function f_exit { + cd ${CURPWD} + + unset TTCN_FILES + unset CC_FILES + unset CFG_FILES + unset EXECUTABLE + echo $1 + exit $2 +} + +function f_usage { + echo "build.bash: This script import from External Disk the " + echo "Optional arguments:" + echo " prof: Generate a makefile including profiling options (e.g. ./build.bash prof)" + exit 0 +} + +clear + +if [ "$1" == "help" ] +then + f_usage +fi + +ATS_NAME=TestCodec + +#CURPWD=`pwd` +if [ ! "${PWD##*/}" == "objs" ] +then + cd ../objs + if [ ! $? == 0 ] + then + echo "Please move to PROJECT/obj directory" + exit 1 + fi +fi +# Remove everything +rm -fr ../objs/*.hh +rm -fr ../objs/*.cc +rm -fr ../objs/*.log +rm -fr ../objs/*.o +rm -fr ../objs/Makefile + +# Remove useless files +find .. -type f -name "*~" -exec rm {} \; +find .. -type f -name "*.bak" -exec rm {} \; +find .. -type f -name "*.log" -exec rm {} \; + +# Build XSD files if any and put them in objs directory +#XSD_PATH=${PATH_DEV_EMCOM}/xsd +XSD_PATH=${PATH_DEV_EMCOM}/null # Do not use xsd2ttcn for now, need to fix issues first +if [ -d ${XSD_PATH} ] +then + XSD_FILES=`find ${XSD_PATH} -name '*.xsd'` + + if [ "${OSTYPE}" == "cygwin" ] + then + xsd2ttcn.exe ${XSD_FILES} + else + xsd2ttcn ${XSD_FILES} + fi + if [ "$?" != "0" ] + then + f_exit "Failed to generate XSD source code" 2 + fi + XSD_FILES=`find . -name '*.ttcn'` +fi + +REFERENCES="LibCommon LibHttp LibEmcom/LibNg112 LibSip" +for i in ${REFERENCES} +do + # TTCN code + for j in `find ${PATH_DEV_EMCOM}/src/$i/ttcn -type f -name "*.ttcn"`; + do + ln -sf $j ../ttcn/`basename $j` + done + # Include source code + files=`find ${PATH_DEV_EMCOM}/src/$i/include -type f` + if [ "${files}" != " " ] + then + for j in ${files}; + do + ln -sf $j ../include/`basename $j` + done + fi + # CC source code + files=`find ${PATH_DEV_EMCOM}/src/$i/src -type f` + if [ "${files}" != " " ] + then + for j in ${files}; + do + ln -sf $j ../src/`basename $j` + done + fi +done + +# Generate the list of the TTCN-3 files +TTCN_FILES=`find .. -name '*.ttcn*'` + +# Start ATS generation - Step 1 +if [ "${OSTYPE}" == "cygwin" ] +then + rm ../bin/*.exe ../lib/*.dll + compiler.exe -e -f -g -l -L -M -n -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log + if [ "$?" == "1" ] + then + f_exit "Failed to compile ATS" 4 + fi +else + compiler -e -f -g -l -L -M -n -O -t -R -U none ${TTCN_FILES} 2>&1 3>&1 | tee build.log + if [ "$?" == "1" ] + then + f_exit "Failed to generate ATS source code" 6 + fi +fi + +# Sart ATS generation - Step 2 +# Create working variables +CC_FILES=`find ../src -name '*.c*'` +FWK_FILES=`find ${PATH_DEV_EMCOM}/framework/ -name '*.c*'` +CFG_FILES=`find ../etc -name '*.cfg'` + +# Sart ATS generation - Step 3 +if [ "${OSTYPE}" == "cygwin" ] +then + ttcn3_makefilegen.exe -d -f -g -m -M -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log + if [ "$?" == "1" ] + then + f_exit "Failed to compile ATS" 5 + fi +else + ttcn3_makefilegen -d -f -g -m -M -R -U none -e Ats${ATS_NAME} ${TTCN_FILES} ${CC_FILES} ${FWK_FILES} ${CFG_FILES} | tee --append build.log + if [ "$?" == "1" ] + then + f_exit "Failed to generate ATS source code" 7 + fi +fi + +# Bug xsd2ttcn +for i in ${XSD_FILES} +do + VARIANT='s/ variant (\[\-\]) ;//g' + sed --in-place "${VARIANT}" $i +done + +# Remove port skeletons to use src/ +for i in `ls ../include/*.hh` +do + if [ -f ./`basename $i` ] + then + rm ./`basename $i` + fi +done +for i in `ls ../src/*.cc` +do + if [ -f ./`basename $i` ] + then + rm ./`basename $i` + fi +done + +# Check if Makefile was generated +if [ ! -f ./Makefile ] +then + f_exit "Failed to generate ATS source code" 8 +fi + +# Patch ATS generated files +#./bin/patch.bash 2>&1 3>&1 | tee --append build.log +# Add compiler/linker options +# -DASN_DISABLE_OER_SUPPORT is required for CAMCodec and DENMCodec +if [ "$1" == "prof" ] +then + if [ "${OSTYPE}" == "cygwin" ] + then + CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -D_XOPEN_SOURCE=700 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' + else + CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' + fi + LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' +else + if [ "${OSTYPE}" == "cygwin" ] + then + CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' + else + CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' + fi + LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fPIC -fstack-check -fstack-protector -fsanitize=address -fno-omit-frame-pointer -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g' +fi +ADD_INCLUDE='/CPPFLAGS = /a\\CPPFLAGS += -I/usr/local/share -I$(PATH_DEV_EMCOM)/include -I$(PATH_DEV_EMCOM)/framework/include -I../include -I../../LibEmcom/Common/include -I../../LibEmcom/LibNg112/include -I$(HOME_FRAMEWORKS)/osip/include -I$(HOME_INC) -I.' +ADD_LIBRARIES='s/LINUX_LIBS = -lxml2/LINUX_LIBS = -lrt -lxml2 -lpcap -lstdc++fs -lssl -L\$\(HOME_FRAMEWORKS\)\/osip\/src\/osipparser2\/\.libs -losipparser2/g' +sed --in-place "${CXXFLAGS_DEBUG_MODE}" ./Makefile +sed --in-place "${LDFLAGS_DEBUG_MODE}" ./Makefile +sed --in-place "${ADD_INCLUDE}" ./Makefile +sed --in-place "${ADD_LIBRARIES}" ./Makefile +# Update COMPILER_FLAGS +COMPILER_FLAGS='s/COMPILER_FLAGS = /COMPILER_FLAGS = -e -O /g' +sed --in-place "${COMPILER_FLAGS}" ./Makefile +# Update clean clause +CLEAN_LINE='s/$(RM) $(EXECUTABLE)/$(RM) ..\/bin\/$(EXECUTABLE) ..\/src\/*.o/g' +sed --in-place "${CLEAN_LINE}" ./Makefile +# Move binary file command +EXECUTABLE=MyExample +MV_CMD='s/all: $(TARGET) ;/all: $(TARGET) ; @if [ -f ..\/objs\/$(EXECUTABLE) ]; then mv ..\/objs\/$(EXECUTABLE) ..\/bin; fi ;/g' +sed --in-place "${MV_CMD}" ./Makefile +# Add run command +ADD_HOST='/PLATFORM = /aHOST=127.0.0.1' +ADD_PORT='/PLATFORM = /aPORT=12000' +sed --in-place "${ADD_PORT}" ./Makefile +sed --in-place "${ADD_HOST}" ./Makefile +ADD_RUN_LINE_1='$arun: all' +ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile +ADD_RUN_LINE_1='$arun_d: all' +ADD_RUN_LINE_2='$a\\t@gdb --args $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile +ADD_RUN_LINE_1='$arun_v: all' +ADD_RUN_LINE_2='$a\\t@sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) valgrind -v --tool=memcheck --leak-check=yes --show-reachable=yes --track-fds=yes --run-cxx-freeres=yes $(PWD)/../bin/$(EXECUTABLE) $(HOST) $(PORT)' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile +# Add gendoc entry +ADD_RUN_LINE_1='$agendoc: ../docs/o2.cfg' +ADD_RUN_LINE_2='$a\\tdoxygen ../docs/o2.cfg' +sed --in-place "${ADD_RUN_LINE_1}" ./Makefile +sed --in-place "${ADD_RUN_LINE_2}" ./Makefile + +# Build all +make all 2>&1 3>&1 | tee --append build.log +if [ "$?" == "1" ] +then + f_exit "Failed to generate ATS source code" 9 +fi +export LD_LIBRARY_PATH=~/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH +../bin/Ats${ATS_NAME} -v +f_exit "Build done successfully" 0 diff --git a/scripts/update_emcom_project.bash b/scripts/update_emcom_project.bash index 310b05d..d321106 100755 --- a/scripts/update_emcom_project.bash +++ b/scripts/update_emcom_project.bash @@ -1,201 +1,201 @@ -#!/bin/bash - -# Debug mode -#set -e -set -vx - -# Usage: sudo ./update_emcom_project.bash -# TODO Use git clone in temporary directory - -OLDPWD=`pwd` - -# Execution path -RUN_PATH="${0%/*}" - -CHOWN_USER_GROUP=vagrant:vagrant -SRC_EMCOM_PATH=${HOME}/dev/STF549_ng112 - -if [ "${PATH_DEV_EMCOM}" == "" ] -then - PATH_DEV_EMCOM=`pwd`/../etsi_emcom -fi - -if [ -d ${PATH_DEV_EMCOM} ] -then - if [ -f ${HOME}/tmp/emcom.tar.bz2 ] - then - mv ${HOME}/tmp/emcom.tar.bz2 ${HOME}/tmp/emcom.tar.`date +'%Y%m%d'`.bz2 - fi - find ${PATH_DEV_EMCOM} -name "*.o" -exec rm {} \; - tar jcvf ${HOME}/tmp/emcom.tar.bz2 ${PATH_DEV_EMCOM} - rm -fr ${PATH_DEV_EMCOM} -fi - -# Check if target directory exist -if [ ! -d ${PATH_DEV_EMCOM} ] -then - mkdir -p ${PATH_DEV_EMCOM}/xsd ${PATH_DEV_EMCOM}/framework ${PATH_DEV_EMCOM}/include ${PATH_DEV_EMCOM}/bin ${PATH_DEV_EMCOM}/lib ${PATH_DEV_EMCOM}/objs ${PATH_DEV_EMCOM}/src ${PATH_DEV_EMCOM}/docs -fi - -# Update XSD files -echo 'Updating XSD files' -XSD_SRC_PATH=${SRC_EMCOM_PATH}/xsd -XSD_DST_PATH=${PATH_DEV_EMCOM}/xsd -cp ${XSD_SRC_PATH}/*.xsd ${XSD_DST_PATH} -cp ${XSD_SRC_PATH}/*.dtd ${XSD_DST_PATH} - -# Update ETSI Framework files -echo 'Updating ETSI Framework files' -FWK_SRC_PATH=${SRC_EMCOM_PATH}/ccsrc -FWK_DST_PATH=${PATH_DEV_EMCOM}/framework -mkdir -p ${FWK_DST_PATH}/src ${FWK_DST_PATH}/include -chmod -R 775 ${FWK_DST_PATH} -# Create link to TITAN Abstract_Socket -ln -sf $TOP/../titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ${FWK_DST_PATH}/src/Abstract_Socket.cc -ln -sf $TOP/../titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ${FWK_DST_PATH}/include/Abstract_Socket.hh -FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/Protocols/ -name "*.h*" -type f` -FWK_DIR_LIST_THH=`find ${FWK_SRC_PATH}/Protocols/ -name "*.t.h*" -type f` -FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/Protocols/ -name "*.c*" -type f` -FWK_DIR_LIST_L=`find ${FWK_SRC_PATH}/Protocols/ -name "*.l" -type f` -FWK_DIR_LIST_Y=`find ${FWK_SRC_PATH}/Protocols/ -name "*.y" -type f` -for i in ${FWK_DIR_LIST_HH} -do - cp $i ${FWK_DST_PATH}/include -done -for i in ${FWK_DIR_LIST_THH} -do - cp $i ${FWK_DST_PATH}/include -done -for i in ${FWK_DIR_LIST_CC} -do - cp $i ${FWK_DST_PATH}/src -done -if [ "${FWK_DIR_LIST_L}" != "" ] -then - for i in ${FWK_DIR_LIST_L} - do - cp $i ${FWK_DST_PATH}/src - done -fi -if [ "${FWK_DIR_LIST_Y}" != "" ] -then - for i in ${FWK_DIR_LIST_Y} - do - cp $i ${FWK_DST_PATH}/src - done -fi -FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/Framework/ -name "*.h*" -type f` -FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/Framework/ -name "*.c*" -type f` -for i in ${FWK_DIR_LIST_HH} -do - cp $i ${FWK_DST_PATH}/include -done -for i in ${FWK_DIR_LIST_CC} -do - cp $i ${FWK_DST_PATH}/src -done - -# Update ATS TTCN-3 files -echo 'Update TTCN-3 files' -TTCN_3_ORG_PATH=${SRC_EMCOM_PATH}/ttcn -TTCN_3_DST_PATH=${PATH_DEV_EMCOM}/src -CC_SRC_PATH=${SRC_EMCOM_PATH}/ccsrc -TTCN_3_ATS_LIST='AtsNg112 TestCodec' -for i in ${TTCN_3_ATS_LIST} -do - if [ ! -d ${TTCN_3_DST_PATH}/$i ] - then - mkdir -p ${TTCN_3_DST_PATH}/$i/bin ${TTCN_3_DST_PATH}/$i/lib ${TTCN_3_DST_PATH}/$i/src ${TTCN_3_DST_PATH}/$i/include ${TTCN_3_DST_PATH}/$i/ttcn ${TTCN_3_DST_PATH}/$i/objs ${TTCN_3_DST_PATH}/$i/etc ${TTCN_3_DST_PATH}/$i/docs - chmod -R 775 ${TTCN_3_DST_PATH}/$i - fi - cp ${TTCN_3_ORG_PATH}/$i/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn - cp ${TTCN_3_ORG_PATH}/../etc/$i/*.cfg ${TTCN_3_DST_PATH}/$i/etc - cp ${TTCN_3_ORG_PATH}/../docs/$i/o2.cfg ${TTCN_3_DST_PATH}/$i/docs -done - -# Update libraries & CC files -TTCN_3_LIB_LIST='LibEmcom/LibNg112 LibHttp LibSip LibCommon' -for i in ${TTCN_3_LIB_LIST} -do - if [ ! -d ${TTCN_3_DST_PATH}/$i ] - then - mkdir -p ${TTCN_3_DST_PATH}/$i/docs ${TTCN_3_DST_PATH}/$i/src ${TTCN_3_DST_PATH}/$i/include ${TTCN_3_DST_PATH}/$i/ttcn ${TTCN_3_DST_PATH}/$i/xsd - fi - cp ${TTCN_3_ORG_PATH}/$i/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn - # Update files - if [ "$i" == "LibEmcom/LibNg112" ] - then - cp ${TTCN_3_ORG_PATH}/$i/ttcn/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn - cp ${TTCN_3_ORG_PATH}/$i/xsd/*.xsd ${TTCN_3_DST_PATH}/$i/xsd - cp ${TTCN_3_ORG_PATH}/$i/xsd/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn - cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include - cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src - fi - if [ "$i" == "LibSip" ] - then - cp ${TTCN_3_ORG_PATH}/$i/ttcn/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn - cp ${TTCN_3_ORG_PATH}/$i/xsd/*.xsd ${TTCN_3_DST_PATH}/$i/xsd - cp ${TTCN_3_ORG_PATH}/$i/xsd/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn - cp ${CC_SRC_PATH}/EncDec/$i/*_Encdec.cc ${TTCN_3_DST_PATH}/$i/src - cp ${CC_SRC_PATH}/Ports/$i/*.hh ${TTCN_3_DST_PATH}/$i/include - cp ${CC_SRC_PATH}/Ports/$i/*.cc ${TTCN_3_DST_PATH}/$i/src - cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include - cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src - fi - if [ "$i" == "LibHttp" ] - then - cp ${TTCN_3_ORG_PATH}/$i/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn - cp ${CC_SRC_PATH}/EncDec/$i/*_Encdec.cc ${TTCN_3_DST_PATH}/$i/src - cp ${CC_SRC_PATH}/Ports/$i/*.hh ${TTCN_3_DST_PATH}/$i/include - cp ${CC_SRC_PATH}/Ports/$i/*.cc ${TTCN_3_DST_PATH}/$i/src - cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include - cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src - fi -done - -# Generate Bison parsers is any -#cd ${FWK_DST_PATH}/src -#if [ "${FWK_DIR_LIST_Y}" != "" ] -#then -# for i in ${FWK_DIR_LIST_Y} -# do -# BASE_NAME=$(basename "$i" .y) -# bison -dv -p${BASE_NAME}_ -b${BASE_NAME}_ ${BASE_NAME}.y #--defines=../include/${BASE_NAME}.h -o${BASE_NAME}.c -# done -#fi -#if [ "${FWK_DIR_LIST_L}" != "" ] -#then -# for i in ${FWK_DIR_LIST_L} -# do -# BASE_NAME=$(basename "$i" .l) -# flex -Cfr -8 -Bvpp -P${BASE_NAME}_ ${BASE_NAME}.l # -o${BASE_NAME}_flex.c ${BASE_NAME}.l -# done -# mv ${BASE_NAME}_.tab.h ../include -#fi -#cd - - -# Apply patches -PATH_PATCHES=`pwd` -if [ -d ${PATH_PATCHES} ] -then - # Update Ng112 - cp ${PATH_PATCHES}/ng112.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin - cp ${PATH_PATCHES}/run_mtc.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin - cp ${PATH_PATCHES}/run_ptcs.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin - cp ${PATH_PATCHES}/run_all.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin - # Update TestCodec - cp ${PATH_PATCHES}/testcodec_generate_makefile.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin - cp ${PATH_PATCHES}/run_mtc.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin - cp ${PATH_PATCHES}/run_ptcs.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin - cp ${PATH_PATCHES}/run_all.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin -fi - -# Set rights -find ${PATH_DEV_EMCOM} -type f -exec chmod 664 {} \; -find ${PATH_DEV_EMCOM} -name "*.bash" -type f -exec chmod 775 {} \; -find ${PATH_DEV_EMCOM} -type d -exec chmod 775 {} \; -chown -R ${CHOWN_USER_GROUP} ${PATH_DEV_EMCOM} - -cd ${OLDPWD} - -exit 0 +#!/bin/bash + +# Debug mode +#set -e +set -vx + +# Usage: sudo ./update_emcom_project.bash +# TODO Use git clone in temporary directory + +OLDPWD=`pwd` + +# Execution path +RUN_PATH="${0%/*}" + +CHOWN_USER_GROUP=vagrant:vagrant +SRC_EMCOM_PATH=${HOME}/dev/STF549_ng112 + +if [ "${PATH_DEV_EMCOM}" == "" ] +then + PATH_DEV_EMCOM=`pwd`/../etsi_emcom +fi + +if [ -d ${PATH_DEV_EMCOM} ] +then + if [ -f ${HOME}/tmp/emcom.tar.bz2 ] + then + mv ${HOME}/tmp/emcom.tar.bz2 ${HOME}/tmp/emcom.tar.`date +'%Y%m%d'`.bz2 + fi + find ${PATH_DEV_EMCOM} -name "*.o" -exec rm {} \; + tar jcvf ${HOME}/tmp/emcom.tar.bz2 ${PATH_DEV_EMCOM} + rm -fr ${PATH_DEV_EMCOM} +fi + +# Check if target directory exist +if [ ! -d ${PATH_DEV_EMCOM} ] +then + mkdir -p ${PATH_DEV_EMCOM}/xsd ${PATH_DEV_EMCOM}/framework ${PATH_DEV_EMCOM}/include ${PATH_DEV_EMCOM}/bin ${PATH_DEV_EMCOM}/lib ${PATH_DEV_EMCOM}/objs ${PATH_DEV_EMCOM}/src ${PATH_DEV_EMCOM}/docs +fi + +# Update XSD files +echo 'Updating XSD files' +XSD_SRC_PATH=${SRC_EMCOM_PATH}/xsd +XSD_DST_PATH=${PATH_DEV_EMCOM}/xsd +cp ${XSD_SRC_PATH}/*.xsd ${XSD_DST_PATH} +cp ${XSD_SRC_PATH}/*.dtd ${XSD_DST_PATH} + +# Update ETSI Framework files +echo 'Updating ETSI Framework files' +FWK_SRC_PATH=${SRC_EMCOM_PATH}/ccsrc +FWK_DST_PATH=${PATH_DEV_EMCOM}/framework +mkdir -p ${FWK_DST_PATH}/src ${FWK_DST_PATH}/include +chmod -R 775 ${FWK_DST_PATH} +# Create link to TITAN Abstract_Socket +ln -sf $TOP/../titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ${FWK_DST_PATH}/src/Abstract_Socket.cc +ln -sf $TOP/../titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ${FWK_DST_PATH}/include/Abstract_Socket.hh +FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/Protocols/ -name "*.h*" -type f` +FWK_DIR_LIST_THH=`find ${FWK_SRC_PATH}/Protocols/ -name "*.t.h*" -type f` +FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/Protocols/ -name "*.c*" -type f` +FWK_DIR_LIST_L=`find ${FWK_SRC_PATH}/Protocols/ -name "*.l" -type f` +FWK_DIR_LIST_Y=`find ${FWK_SRC_PATH}/Protocols/ -name "*.y" -type f` +for i in ${FWK_DIR_LIST_HH} +do + cp $i ${FWK_DST_PATH}/include +done +for i in ${FWK_DIR_LIST_THH} +do + cp $i ${FWK_DST_PATH}/include +done +for i in ${FWK_DIR_LIST_CC} +do + cp $i ${FWK_DST_PATH}/src +done +if [ "${FWK_DIR_LIST_L}" != "" ] +then + for i in ${FWK_DIR_LIST_L} + do + cp $i ${FWK_DST_PATH}/src + done +fi +if [ "${FWK_DIR_LIST_Y}" != "" ] +then + for i in ${FWK_DIR_LIST_Y} + do + cp $i ${FWK_DST_PATH}/src + done +fi +FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/Framework/ -name "*.h*" -type f` +FWK_DIR_LIST_CC=`find ${FWK_SRC_PATH}/Framework/ -name "*.c*" -type f` +for i in ${FWK_DIR_LIST_HH} +do + cp $i ${FWK_DST_PATH}/include +done +for i in ${FWK_DIR_LIST_CC} +do + cp $i ${FWK_DST_PATH}/src +done + +# Update ATS TTCN-3 files +echo 'Update TTCN-3 files' +TTCN_3_ORG_PATH=${SRC_EMCOM_PATH}/ttcn +TTCN_3_DST_PATH=${PATH_DEV_EMCOM}/src +CC_SRC_PATH=${SRC_EMCOM_PATH}/ccsrc +TTCN_3_ATS_LIST='AtsNg112 TestCodec' +for i in ${TTCN_3_ATS_LIST} +do + if [ ! -d ${TTCN_3_DST_PATH}/$i ] + then + mkdir -p ${TTCN_3_DST_PATH}/$i/bin ${TTCN_3_DST_PATH}/$i/lib ${TTCN_3_DST_PATH}/$i/src ${TTCN_3_DST_PATH}/$i/include ${TTCN_3_DST_PATH}/$i/ttcn ${TTCN_3_DST_PATH}/$i/objs ${TTCN_3_DST_PATH}/$i/etc ${TTCN_3_DST_PATH}/$i/docs + chmod -R 775 ${TTCN_3_DST_PATH}/$i + fi + cp ${TTCN_3_ORG_PATH}/$i/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn + cp ${TTCN_3_ORG_PATH}/../etc/$i/*.cfg ${TTCN_3_DST_PATH}/$i/etc + cp ${TTCN_3_ORG_PATH}/../docs/$i/o2.cfg ${TTCN_3_DST_PATH}/$i/docs +done + +# Update libraries & CC files +TTCN_3_LIB_LIST='LibEmcom/LibNg112 LibHttp LibSip LibCommon' +for i in ${TTCN_3_LIB_LIST} +do + if [ ! -d ${TTCN_3_DST_PATH}/$i ] + then + mkdir -p ${TTCN_3_DST_PATH}/$i/docs ${TTCN_3_DST_PATH}/$i/src ${TTCN_3_DST_PATH}/$i/include ${TTCN_3_DST_PATH}/$i/ttcn ${TTCN_3_DST_PATH}/$i/xsd + fi + cp ${TTCN_3_ORG_PATH}/$i/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn + # Update files + if [ "$i" == "LibEmcom/LibNg112" ] + then + cp ${TTCN_3_ORG_PATH}/$i/ttcn/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn + cp ${TTCN_3_ORG_PATH}/$i/xsd/*.xsd ${TTCN_3_DST_PATH}/$i/xsd + cp ${TTCN_3_ORG_PATH}/$i/xsd/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn + cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include + cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + fi + if [ "$i" == "LibSip" ] + then + cp ${TTCN_3_ORG_PATH}/$i/ttcn/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn + cp ${TTCN_3_ORG_PATH}/$i/xsd/*.xsd ${TTCN_3_DST_PATH}/$i/xsd + cp ${TTCN_3_ORG_PATH}/$i/xsd/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn + cp ${CC_SRC_PATH}/EncDec/$i/*_Encdec.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/Ports/$i/*.hh ${TTCN_3_DST_PATH}/$i/include + cp ${CC_SRC_PATH}/Ports/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include + cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + fi + if [ "$i" == "LibHttp" ] + then + cp ${TTCN_3_ORG_PATH}/$i/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn + cp ${CC_SRC_PATH}/EncDec/$i/*_Encdec.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/Ports/$i/*.hh ${TTCN_3_DST_PATH}/$i/include + cp ${CC_SRC_PATH}/Ports/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include + cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + fi +done + +# Generate Bison parsers is any +#cd ${FWK_DST_PATH}/src +#if [ "${FWK_DIR_LIST_Y}" != "" ] +#then +# for i in ${FWK_DIR_LIST_Y} +# do +# BASE_NAME=$(basename "$i" .y) +# bison -dv -p${BASE_NAME}_ -b${BASE_NAME}_ ${BASE_NAME}.y #--defines=../include/${BASE_NAME}.h -o${BASE_NAME}.c +# done +#fi +#if [ "${FWK_DIR_LIST_L}" != "" ] +#then +# for i in ${FWK_DIR_LIST_L} +# do +# BASE_NAME=$(basename "$i" .l) +# flex -Cfr -8 -Bvpp -P${BASE_NAME}_ ${BASE_NAME}.l # -o${BASE_NAME}_flex.c ${BASE_NAME}.l +# done +# mv ${BASE_NAME}_.tab.h ../include +#fi +#cd - + +# Apply patches +PATH_PATCHES=`pwd` +if [ -d ${PATH_PATCHES} ] +then + # Update Ng112 + cp ${PATH_PATCHES}/ng112.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin + cp ${PATH_PATCHES}/run_mtc.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin + cp ${PATH_PATCHES}/run_ptcs.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin + cp ${PATH_PATCHES}/run_all.bash ${PATH_DEV_EMCOM}/src/AtsNg112/bin + # Update TestCodec + cp ${PATH_PATCHES}/testcodec_generate_makefile.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin + cp ${PATH_PATCHES}/run_mtc.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin + cp ${PATH_PATCHES}/run_ptcs.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin + cp ${PATH_PATCHES}/run_all.bash ${PATH_DEV_EMCOM}/src/TestCodec/bin +fi + +# Set rights +find ${PATH_DEV_EMCOM} -type f -exec chmod 664 {} \; +find ${PATH_DEV_EMCOM} -name "*.bash" -type f -exec chmod 775 {} \; +find ${PATH_DEV_EMCOM} -type d -exec chmod 775 {} \; +chown -R ${CHOWN_USER_GROUP} ${PATH_DEV_EMCOM} + +cd ${OLDPWD} + +exit 0 -- GitLab From 1516bdce50b59d26aab55dfabeec96067770060d Mon Sep 17 00:00:00 2001 From: garciay Date: Wed, 11 Jul 2018 14:03:31 +0000 Subject: [PATCH 49/72] Add patch for TITAN xsd2ttcn issues and LibItsHttp architecture not defined yet --- docker/Dockerfile | 3 +- scripts/ng112.bash | 2 +- scripts/update_emcom_project.bash | 50 +- .../LibNg112/xsd/NoTargetNamespace.ttcn | 183 + .../LibNg112/xsd/UsefulTtcn3Types.ttcn | 95 + ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn | 337 ++ ttcn/LibEmcom/LibNg112/xsd/xml.xsd | 56 + ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn | 19 + .../LibItsHttp_XmlMessageBodyTypes.ttcn | 27 + .../LibItsHttp_XmlTemplates.ttcn | 267 + ttcn/patch_sip_titan/LibSip_Common.ttcn | 42 + .../LibSip_EncdecDeclarations.ttcn | 120 + .../LibSip_MessageBodyTypes.ttcn | 62 + ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn | 406 ++ .../LibSip_SIPTypesAndValues.ttcn | 1984 +++++++ ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn | 48 + ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn | 304 + .../LibSip_SMSTypesAndValues.ttcn | 485 ++ .../LibSip_SimpleMsgSummaryTypes.ttcn | 61 + ttcn/patch_sip_titan/LibSip_Steps.ttcn | 4925 +++++++++++++++++ ttcn/patch_sip_titan/LibSip_Templates.ttcn | 4612 +++++++++++++++ ...etsi_org_ngn_params_xml_comm_div_info.ttcn | 389 ++ ...etsi_org_ngn_params_xml_simservs_mcid.ttcn | 105 + ...etsi_org_ngn_params_xml_simservs_pstn.ttcn | 689 +++ ...etsi_org_ngn_params_xml_simservs_xcap.ttcn | 621 +++ ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn | 79 + .../urn_ietf_params_xml_ns_common_policy.ttcn | 223 + ...rn_ietf_params_xml_ns_conference_info.ttcn | 572 ++ .../urn_ietf_params_xml_ns_reginfo.ttcn | 165 + ...urn_ietf_params_xml_ns_resource_lists.ttcn | 194 + .../urn_oma_xml_xdm_common_policy.ttcn | 98 + vagrant/provisioner.bash | 5 +- 32 files changed, 17201 insertions(+), 27 deletions(-) create mode 100644 ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn create mode 100644 ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn create mode 100644 ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn create mode 100644 ttcn/LibEmcom/LibNg112/xsd/xml.xsd create mode 100644 ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn create mode 100644 ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn create mode 100644 ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn create mode 100755 ttcn/patch_sip_titan/LibSip_Common.ttcn create mode 100755 ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn create mode 100755 ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn create mode 100755 ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn create mode 100755 ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn create mode 100755 ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn create mode 100755 ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn create mode 100755 ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn create mode 100755 ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn create mode 100755 ttcn/patch_sip_titan/LibSip_Steps.ttcn create mode 100755 ttcn/patch_sip_titan/LibSip_Templates.ttcn create mode 100644 ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn create mode 100644 ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn create mode 100644 ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn create mode 100644 ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn create mode 100644 ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn create mode 100644 ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn create mode 100644 ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn create mode 100644 ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn create mode 100644 ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn create mode 100644 ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn diff --git a/docker/Dockerfile b/docker/Dockerfile index d58a23e..8422437 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -87,7 +87,8 @@ RUN cd /home/etsi/dev \ && git checkout TTCN_3_Developments \ && cd /home/etsi/dev/STF549_Ng112/ttcn \ && svn co --username svnusers --password svnusers --non-interactive --trust-server-cert https://oldforge.etsi.org/svn/LibSip/trunk ./LibSip \ - && svn co --username svnusers --password svnusers --non-interactive --trust-server-cert https://oldforge.etsi.org/svn/LibCommon/trunk/ttcn ./LibCommon/ttcn \ + && svn co --username svnusers --password svnusers --non-interactive --trust-server-cert https://oldforge.etsi.org/svn/LibCommon/trunk/ttcn ./LibCommon \ + && svn co --username svnusers --password svnusers --non-interactive --trust-server-cert https://oldforge.etsi.org/svn/LibIts/branches/STF525/ttcn/Http ./LibHttp \ && cd /home/etsi/dev/STF549_Ng112/scripts \ && chmod 775 *.bash devenv.bash.* \ && cd /home/etsi \ diff --git a/scripts/ng112.bash b/scripts/ng112.bash index 8f514a2..cb18dc3 100755 --- a/scripts/ng112.bash +++ b/scripts/ng112.bash @@ -52,7 +52,7 @@ find .. -type f -name "*.bak" -exec rm {} \; find .. -type f -name "*.log" -exec rm {} \; # Build XSD files if any and put them in objs directory -#XSD_PATH=${PATH_DEV_EMCOM}/xsd +#XSD_PATH=${PATH_DEV_EMCOM}/src/LibSip/xsd XSD_PATH=${PATH_DEV_EMCOM}/null # Do not use xsd2ttcn for now, need to fix issues first if [ -d ${XSD_PATH} ] then diff --git a/scripts/update_emcom_project.bash b/scripts/update_emcom_project.bash index d321106..a6e54d8 100755 --- a/scripts/update_emcom_project.bash +++ b/scripts/update_emcom_project.bash @@ -13,18 +13,18 @@ OLDPWD=`pwd` RUN_PATH="${0%/*}" CHOWN_USER_GROUP=vagrant:vagrant -SRC_EMCOM_PATH=${HOME}/dev/STF549_ng112 +SRC_EMCOM_PATH=${HOME}/dev/STF549_Ng112 if [ "${PATH_DEV_EMCOM}" == "" ] then - PATH_DEV_EMCOM=`pwd`/../etsi_emcom + PATH_DEV_EMCOM=${HOME}/dev/etsi_emcom fi if [ -d ${PATH_DEV_EMCOM} ] then if [ -f ${HOME}/tmp/emcom.tar.bz2 ] then - mv ${HOME}/tmp/emcom.tar.bz2 ${HOME}/tmp/emcom.tar.`date +'%Y%m%d'`.bz2 + mv ${HOME}/tmp/emcom.tar.bz2 ${HOME}/tmp/emcom.tar.`date +'%Y%m%d'`.bz2 fi find ${PATH_DEV_EMCOM} -name "*.o" -exec rm {} \; tar jcvf ${HOME}/tmp/emcom.tar.bz2 ${PATH_DEV_EMCOM} @@ -60,28 +60,28 @@ FWK_DIR_LIST_L=`find ${FWK_SRC_PATH}/Protocols/ -name "*.l" -type f` FWK_DIR_LIST_Y=`find ${FWK_SRC_PATH}/Protocols/ -name "*.y" -type f` for i in ${FWK_DIR_LIST_HH} do - cp $i ${FWK_DST_PATH}/include + cp $i ${FWK_DST_PATH}/include done for i in ${FWK_DIR_LIST_THH} do - cp $i ${FWK_DST_PATH}/include + cp $i ${FWK_DST_PATH}/include done for i in ${FWK_DIR_LIST_CC} do - cp $i ${FWK_DST_PATH}/src + cp $i ${FWK_DST_PATH}/src done if [ "${FWK_DIR_LIST_L}" != "" ] then for i in ${FWK_DIR_LIST_L} do - cp $i ${FWK_DST_PATH}/src + cp $i ${FWK_DST_PATH}/src done fi if [ "${FWK_DIR_LIST_Y}" != "" ] then for i in ${FWK_DIR_LIST_Y} do - cp $i ${FWK_DST_PATH}/src + cp $i ${FWK_DST_PATH}/src done fi FWK_DIR_LIST_HH=`find ${FWK_SRC_PATH}/Framework/ -name "*.h*" -type f` @@ -105,8 +105,8 @@ for i in ${TTCN_3_ATS_LIST} do if [ ! -d ${TTCN_3_DST_PATH}/$i ] then - mkdir -p ${TTCN_3_DST_PATH}/$i/bin ${TTCN_3_DST_PATH}/$i/lib ${TTCN_3_DST_PATH}/$i/src ${TTCN_3_DST_PATH}/$i/include ${TTCN_3_DST_PATH}/$i/ttcn ${TTCN_3_DST_PATH}/$i/objs ${TTCN_3_DST_PATH}/$i/etc ${TTCN_3_DST_PATH}/$i/docs - chmod -R 775 ${TTCN_3_DST_PATH}/$i + mkdir -p ${TTCN_3_DST_PATH}/$i/bin ${TTCN_3_DST_PATH}/$i/lib ${TTCN_3_DST_PATH}/$i/src ${TTCN_3_DST_PATH}/$i/include ${TTCN_3_DST_PATH}/$i/ttcn ${TTCN_3_DST_PATH}/$i/objs ${TTCN_3_DST_PATH}/$i/etc ${TTCN_3_DST_PATH}/$i/docs + chmod -R 775 ${TTCN_3_DST_PATH}/$i fi cp ${TTCN_3_ORG_PATH}/$i/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn cp ${TTCN_3_ORG_PATH}/../etc/$i/*.cfg ${TTCN_3_DST_PATH}/$i/etc @@ -119,7 +119,7 @@ for i in ${TTCN_3_LIB_LIST} do if [ ! -d ${TTCN_3_DST_PATH}/$i ] then - mkdir -p ${TTCN_3_DST_PATH}/$i/docs ${TTCN_3_DST_PATH}/$i/src ${TTCN_3_DST_PATH}/$i/include ${TTCN_3_DST_PATH}/$i/ttcn ${TTCN_3_DST_PATH}/$i/xsd + mkdir -p ${TTCN_3_DST_PATH}/$i/docs ${TTCN_3_DST_PATH}/$i/src ${TTCN_3_DST_PATH}/$i/include ${TTCN_3_DST_PATH}/$i/ttcn ${TTCN_3_DST_PATH}/$i/xsd fi cp ${TTCN_3_ORG_PATH}/$i/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn # Update files @@ -128,28 +128,32 @@ do cp ${TTCN_3_ORG_PATH}/$i/ttcn/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn cp ${TTCN_3_ORG_PATH}/$i/xsd/*.xsd ${TTCN_3_DST_PATH}/$i/xsd cp ${TTCN_3_ORG_PATH}/$i/xsd/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn - cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include - cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include + cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src fi if [ "$i" == "LibSip" ] then cp ${TTCN_3_ORG_PATH}/$i/ttcn/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn cp ${TTCN_3_ORG_PATH}/$i/xsd/*.xsd ${TTCN_3_DST_PATH}/$i/xsd cp ${TTCN_3_ORG_PATH}/$i/xsd/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn - cp ${CC_SRC_PATH}/EncDec/$i/*_Encdec.cc ${TTCN_3_DST_PATH}/$i/src - cp ${CC_SRC_PATH}/Ports/$i/*.hh ${TTCN_3_DST_PATH}/$i/include - cp ${CC_SRC_PATH}/Ports/$i/*.cc ${TTCN_3_DST_PATH}/$i/src - cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include - cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/EncDec/$i/*_Encdec.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/Ports/$i/*.hh ${TTCN_3_DST_PATH}/$i/include + cp ${CC_SRC_PATH}/Ports/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include + cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + # Patch TITAN due to issues in xsd2ttcn + cp ${SRC_EMCOM_PATH}/ttcn/patch_sip_titan/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn fi if [ "$i" == "LibHttp" ] then cp ${TTCN_3_ORG_PATH}/$i/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn - cp ${CC_SRC_PATH}/EncDec/$i/*_Encdec.cc ${TTCN_3_DST_PATH}/$i/src - cp ${CC_SRC_PATH}/Ports/$i/*.hh ${TTCN_3_DST_PATH}/$i/include - cp ${CC_SRC_PATH}/Ports/$i/*.cc ${TTCN_3_DST_PATH}/$i/src - cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include - cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/EncDec/$i/*_Encdec.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/Ports/$i/*.hh ${TTCN_3_DST_PATH}/$i/include + cp ${CC_SRC_PATH}/Ports/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include + cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src + # Patch due to svn/gitlab moving + cp ${SRC_EMCOM_PATH}/ttcn/patch_lib_http/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn fi done diff --git a/ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn b/ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn new file mode 100644 index 0000000..9bf9d29 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn @@ -0,0 +1,183 @@ +/******************************************************************************* +* Copyright (c) 2000-2016 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/5 R4D +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: NoTargetNamespace.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Fri Mar 4 09:23:30 2016 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - Ims3gpp.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "NoTargetNamespace" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module NoTargetNamespace { + + +import from XSD all; + + +type record TIMS3GPP +{ + XSD.Decimal version, + record of XSD.String attr optional, + union { + TAlternativeService alternative_service, + XSD.String service_info + } choice, + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (version) "attribute"; + variant (attr) "anyAttributes"; + variant (choice) "untagged"; + variant (choice.alternative_service) "name as 'alternative-service'"; + variant (choice.service_info) "name as 'service-info'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement"; +}; + + +type record TAlternativeService +{ + record of XSD.String attr optional, + TType type_, + XSD.String reason, + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (attr) "anyAttributes"; + variant (type_) "name as 'type'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement"; +}; + + +type record TType +{ + record of XSD.String attr optional, + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (attr) "anyAttributes"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement"; +}; + + +type record TAction +{ + record of XSD.String attr optional, + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (attr) "anyAttributes"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement"; +}; + + +/* root element */ + + +type TIMS3GPP Ims_3gpp +with { + variant "name as 'ims-3gpp'"; + variant "element"; +}; + + +/* emergency element for //ims-3gpp//alternative-service//type */ + + +type record Emergency +{ + +} +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +/* restoration element for //ims-3gpp//alternative-service//type */ + + +type record Restoration +{ + +} +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +/* action element for //ims-3gpp//alternative-service */ + + +type TAction Action +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +/* emergency-registration element for //ims-3gpp//alternative-service//action */ + + +type record Emergency_registration +{ + +} +with { + variant "name as 'emergency-registration'"; + variant "element"; +}; + + +/* initial-registration element for //ims-3gpp//alternative-service//action */ + + +type record Initial_registration +{ + +} +with { + variant "name as 'initial-registration'"; + variant "element"; +}; + + +} +with { + encode "XML"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} diff --git a/ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn b/ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn new file mode 100644 index 0000000..8301238 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn @@ -0,0 +1,95 @@ +/******************************************************************************* +* Copyright (c) 2000-2016 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/5 R4D +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: UsefulTtcn3Types.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +module UsefulTtcn3Types { + + + type integer byte (-128 .. 127) with { variant "/* 8 bit */" }; + + type integer unsignedbyte (0 .. 255) with { variant "/*unsigned 8 bit*/" }; + + type integer short (-32768 .. 32767) with { variant "/*16 bit*/" }; + + type integer unsignedshort (0 .. 65535) with { variant "/*unsigned 16 bit*/" }; + + type integer long (-2147483648 .. 2147483647) with { variant "/*32 bit*/" }; + + type integer unsignedlong (0 .. 4294967295) with { variant "/*unsigned 32 bit*/" }; + + type integer longlong /* ( -9223372036854775808 .. 9223372036854775807 ) */ with { variant "/*64 bit*/" }; + + type integer unsignedlonglong /* ( 0 .. 18446744073709551615 ) */ with { variant "/*unsigned 64 bit*/" }; + + type float IEEE754float with { variant "/*IEEE754 float*/" }; + + type float IEEE754double with { variant "/*IEEE754 double*/" }; + + type float IEEE754extfloat with { variant "/*IEEE754 extended float*/" }; + + type float IEEE754extdouble with { variant "/*IEEE754 extended double*/" }; + + type universal charstring utf8string with { variant "/*UTF-8*/" }; + + type universal charstring bmpstring ( char ( 0,0,0,0 ) .. char ( 0,0,255,255) ) with { variant "/*UCS-2*/" }; + + type universal charstring utf16string ( char ( 0,0,0,0 ) .. char ( 0,16,255,255) ) with { variant "/*UTF-16*/" }; + + type universal charstring iso8859string ( char ( 0,0,0,0 ) .. char ( 0,0,0,255) ) with { variant "/*8 bit*/" }; + + type record IDLfixed + { + unsignedshort digits, + short scale, + charstring value_ + } + with { + variant "/*IDL:fixed FORMAL/01-12-01 v.2.6*/"; + }; + + /* + type charstring char length (1); + + NOTE 1: The name of this useful type is the same as the TTCN-3 keyword used to denote universal + charstring values in the quadraple form. In general it is disallowed to use TTCN-3 keywords as + identifiers. The "char" useful type is a solitary exception and allowed only for backward compatibility + with previous versions of the TTCN-3 standard. (except Titan doesn't) + + NOTE 2: The special string "8 bit" defined in clause 28.2.3 may be used with this type to specify a given encoding + for its values. Also, other properties of the base type can be changed by using attribute mechanisms. + */ + + type universal charstring uchar length (1); + + /* + NOTE: Special strings defined in clause 28.2.3 except "8 bit" may be used with this type to specify a given + encoding for its values. Also, other properties of the base type can be changed by using attribute + mechanisms. + */ + + type bitstring bit length (1); + + type hexstring hex length (1); + + type octetstring octet length (1); + +} +with { +encode "XML"; +} diff --git a/ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn b/ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn new file mode 100644 index 0000000..00fba8f --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn @@ -0,0 +1,337 @@ +/******************************************************************************* +* Copyright (c) 2000-2016 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/5 R4D +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: XSD.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +module XSD { + +import from UsefulTtcn3Types all; + +//These constants are used in the XSD date/time type definitions +const charstring + dash := "-", + cln := ":", + year := "[0-9]#4", + yearExpansion := "(-([1-9][0-9]#(0,))#(,1))#(,1)", + month := "(0[1-9]|1[0-2])", + dayOfMonth := "(0[1-9]|[12][0-9]|3[01])", + hour := "([01][0-9]|2[0-3])", + minute := "([0-5][0-9])", + second := "([0-5][0-9])", + sFraction := "(.[0-9]#(1,))#(,1)", + endOfDayExt := "24:00:00(.0#(1,))#(,1)", + nums := "[0-9]#(1,)", + ZorTimeZoneExt := "(Z|[+-]((0[0-9]|1[0-3]):[0-5][0-9]|14:00))#(,1)", + durTime := "(T[0-9]#(1,)"& + "(H([0-9]#(1,)(M([0-9]#(1,)(S|.[0-9]#(1,)S))#(,1)|.[0-9]#(1,)S|S))#(,1)|"& + "M([0-9]#(1,)(S|.[0-9]#(1,)S)|.[0-9]#(1,)M)#(,1)|"& + "S|"& + ".[0-9]#(1,)S))" + +//anySimpleType + +type XMLCompatibleString AnySimpleType +with { +variant "XSD:anySimpleType"; +}; + +//anyType; + +type record AnyType +{ + record of String embed_values optional, + record of String attr optional, + record of String elem_list +} +with { +variant "XSD:anyType"; +variant "embedValues"; +variant (attr) "anyAttributes"; +variant (elem_list) "anyElement"; +}; +// String types + +type XMLCompatibleString String +with { +variant "XSD:string"; +}; + +type XMLStringWithNoCRLFHT NormalizedString +with { +variant "XSD:normalizedString"; +}; + +type NormalizedString Token +with { +variant "XSD:token"; +}; + +type XMLStringWithNoWhitespace Name +with { +variant "XSD:Name"; +}; + +type XMLStringWithNoWhitespace NMTOKEN +with { +variant "XSD:NMTOKEN"; +}; + +type Name NCName +with { +variant "XSD:NCName"; +}; + +type NCName ID +with { +variant "XSD:ID"; +}; + +type NCName IDREF +with { +variant "XSD:IDREF"; +}; + +type NCName ENTITY +with { +variant "XSD:ENTITY"; +}; + +type octetstring HexBinary +with { +variant "XSD:hexBinary"; +}; + +type octetstring Base64Binary +with { +variant "XSD:base64Binary"; +}; + +type XMLStringWithNoCRLFHT AnyURI +with { +variant "XSD:anyURI"; +}; + +type charstring Language (pattern "[a-zA-Z]#(1,8)(-\w#(1,8))#(0,)") +with { +variant "XSD:language"; +}; +// Integer types + +type integer Integer +with { +variant "XSD:integer"; +}; + +type integer PositiveInteger (1 .. infinity) +with { +variant "XSD:positiveInteger"; +}; + +type integer NonPositiveInteger (-infinity .. 0) +with { +variant "XSD:nonPositiveInteger"; +}; + +type integer NegativeInteger (-infinity .. -1) +with { +variant "XSD:negativeInteger"; +}; + +type integer NonNegativeInteger (0 .. infinity) +with { +variant "XSD:nonNegativeInteger"; +}; + +type longlong Long +with { +variant "XSD:long"; +}; + +type unsignedlonglong UnsignedLong +with { +variant "XSD:unsignedLong"; +}; + +type long Int +with { +variant "XSD:int"; +}; + +type unsignedlong UnsignedInt +with { +variant "XSD:unsignedInt"; +}; + +type short Short +with { +variant "XSD:short"; +}; + +type unsignedshort UnsignedShort +with { +variant "XSD:unsignedShort"; +}; + +type byte Byte +with { +variant "XSD:byte"; +}; + +type unsignedbyte UnsignedByte +with { +variant "XSD:unsignedByte"; +}; + +// Float types + +type float Decimal +with { +variant "XSD:decimal"; +}; + +type IEEE754float Float +with { +variant "XSD:float"; +}; + +type IEEE754double Double +with { +variant "XSD:double"; +}; + +// Time types + +type charstring Duration (pattern + "{dash}#(,1)P({nums}(Y({nums}(M({nums}D{durTime}#(,1)|{durTime}#(,1))|D{durTime}#(,1))|" & + "{durTime}#(,1))|M({nums}D{durTime}#(,1)|{durTime}#(,1))|D{durTime}#(,1))|{durTime})") +with { +variant "XSD:duration"; +}; + +type charstring DateTime (pattern + "{yearExpansion}{year}{dash}{month}{dash}{dayOfMonth}T({hour}{cln}{minute}{cln}{second}" & + "{sFraction}|{endOfDayExt}){ZorTimeZoneExt}" ) +with { +variant "XSD:dateTime"; +}; + +type charstring Time (pattern + "({hour}{cln}{minute}{cln}{second}{sFraction}|{endOfDayExt}){ZorTimeZoneExt}" ) +with { +variant "XSD:time"; +}; + +type charstring Date (pattern + "{yearExpansion}{year}{dash}{month}{dash}{dayOfMonth}{ZorTimeZoneExt}" ) +with { +variant "XSD:date"; +}; + +type charstring GYearMonth (pattern + "{yearExpansion}{year}{dash}{month}{ZorTimeZoneExt}" ) +with { +variant "XSD:gYearMonth"; +}; + +type charstring GYear (pattern + "{yearExpansion}{year}{ZorTimeZoneExt}" ) +with { +variant "XSD:gYear"; +}; + +type charstring GMonthDay (pattern + "{dash}{dash}{month}{dash}{dayOfMonth}{ZorTimeZoneExt}" ) +with { +variant "XSD:gMonthDay"; +}; + +type charstring GDay (pattern + "{dash}{dash}{dash}{dayOfMonth}{ZorTimeZoneExt}" ) +with { +variant "XSD:gDay"; +}; + +type charstring GMonth (pattern + "{dash}{dash}{month}{ZorTimeZoneExt}" ) +with { +variant "XSD:gMonth"; +}; + +// Sequence types + +type record of NMTOKEN NMTOKENS +with { +variant "XSD:NMTOKENS"; +}; + +type record of IDREF IDREFS +with { +variant "XSD:IDREFS"; +}; + +type record of ENTITY ENTITIES +with { +variant "XSD:ENTITIES"; +}; + +type record QName +{ + AnyURI uri optional, + NCName name +} +with { +variant "XSD:QName"; +}; + +// Boolean type + +type boolean Boolean +with { +variant "XSD:boolean"; +}; + +//TTCN-3 type definitions supporting the mapping of W3C XML Schema built-in datatypes + +type utf8string XMLCompatibleString +( + char(0,0,0,9)..char(0,0,0,9), + char(0,0,0,10)..char(0,0,0,10), + char(0,0,0,12)..char(0,0,0,12), + char(0,0,0,32)..char(0,0,215,255), + char(0,0,224,0)..char(0,0,255,253), + char(0,1,0,0)..char(0,16,255,253) +) + +type utf8string XMLStringWithNoWhitespace +( + char(0,0,0,33)..char(0,0,215,255), + char(0,0,224,0)..char(0,0,255,253), + char(0,1,0,0)..char(0,16,255,253) +) + +type utf8string XMLStringWithNoCRLFHT +( + char(0,0,0,32)..char(0,0,215,255), + char(0,0,224,0)..char(0,0,255,253), + char(0,1,0,0)..char(0,16,255,253) +) + +} +with{ +encode "XML" +} diff --git a/ttcn/LibEmcom/LibNg112/xsd/xml.xsd b/ttcn/LibEmcom/LibNg112/xsd/xml.xsd new file mode 100644 index 0000000..2dacc9c --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/xml.xsd @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn b/ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn new file mode 100644 index 0000000..fb110ad --- /dev/null +++ b/ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn @@ -0,0 +1,19 @@ +module LibItsHttp_XMLTypes { // FIXME To be removed + + /** + * This file is volontary empry. You have to declare all XSD files required by your project + * In addition, the TTCN-3 module LibItsHttp_XmlMessageBodyTypes have to be updated too. + */ + // TODO Add here your custom RFCs import + + import from XSD all; + + // RFC5985 Held + import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all; + import from urn_ietf_params_xml_ns_geopriv_held_id language "XSD" all; + import from urn_ietf_params_xml_ns_pidf_geopriv10 language "XSD" all; + import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy language "XSD" all; + import from urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc language "XSD" all; + import from urn_ietf_params_xml_ns_pidf language "XSD" all; + +} // End of module LibItsHttp_XMLTypes diff --git a/ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn b/ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn new file mode 100644 index 0000000..00040ef --- /dev/null +++ b/ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn @@ -0,0 +1,27 @@ +module LibItsHttp_XmlMessageBodyTypes { + + // LibItsHttp + import from LibItsHttp_XMLTypes all; + // RFC5985 Held + import from XSD all; + import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all; + + /** + * This file volontary contains a trivial declaration of the type XmlBodu. + * In accordance with your TTCN-3 module LibItsHttp_XMLTypes, you have to change the XmlBody typing. + */ + // TODO Add here your custom RFCs import + + type union XmlBody { + // TODO Add here your custom variants + LocationRequest locationRequest, + LocationResponse locationResponse, + ErrorType errorType, + charstring raw + } with { + variant "" + } + +} with { + variant "" +} // End of LibItsHttp_XmlMessageBodyTypes diff --git a/ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn b/ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn new file mode 100644 index 0000000..07ad8da --- /dev/null +++ b/ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn @@ -0,0 +1,267 @@ +/** + * @author ETSI / STF545 + * @version $URL: https://oldforge.etsi.org/svn/LibIts/branches/STF525/ttcn/Http/LibItsHttp_Templates.ttcn $ + * $ID:$ + * @desc This module provides the custom templates for ITS HTTP based protocols. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + */ +module LibItsHttp_XmlTemplates { + + import from XSD all; + + // RFC5985 Held + import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all + with { + extension "File:../xsd/RFC5985_held.xsd"; + } + // RFC6155 Held ID + import from urn_ietf_params_xml_ns_geopriv_held_id language "XSD" all + with { + extension "File:../xsd/RFC6155_held_id.xsd"; + } + import from urn_ietf_params_xml_ns_pidf_geopriv10 language "XSD" all + with { + extension "File:../xsd/RFC4119_geopriv10.xsd"; + } + import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy language "XSD" all + with { + extension "File:../xsd/RFC4119_geopriv10_basic_policy.xsd"; + } + + import from urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc language "XSD" all + with { + extension "File:../xsd/RFC4119_geopriv10_civicloc.xsd"; + } + + // RFC3863 + import from urn_ietf_params_xml_ns_pidf language "XSD" all + with { + extension "File:../xsd/RFC3863_pidf.xsd"; + } + + // OpenGIS + import from urn_ietf_params_xml_ns_pidf_geopriv10_geoShape language "XSD" all; + import from http_www_opengis_net_gml language "XSD" all; + + // LibHttp + import from LibItsHttp_XmlMessageBodyTypes all; + import from LibItsHttp_XMLTypes all; + + template (value) XmlBody m_xml_body_raw( + in template (value) charstring p_raw + ) := { + raw := p_raw + } // End of template m_xml_body_raw + + template (present) XmlBody mw_xml_body_raw( + template (present) charstring p_raw := ? + ) := { + raw := p_raw + } // End of template mw_xml_body_raw + + group rfc5985_held { + + group http_xml_body { + + template (value) XmlBody m_body_xml_location_request( + in template (value) LocationRequest p_locationRequest + ) := { + locationRequest := p_locationRequest + } // End of template m_body_xml_location_request + + template (present) XmlBody mw_body_xml_location_response( + in template (present) LocationResponse p_locationResponse := ? + ) := { + locationResponse := p_locationResponse + } // End of template mw_body_xml_location_response + + template (present) XmlBody mw_body_xml_location_response_error( + in template (present) ErrorType p_error_type := ? + ) := { + errorType := p_error_type + } // End of template mw_body_xml_location_response_error + + } // End of group http_xml_body + + template (omit) LocationRequest m_locationRequest( + in template (value) LocationRequestType.elem_list p_elem_list, + in template (omit) LocationTypeType p_locationType := omit, + in template (omit) ResponseTimeType p_responseTime := omit, + in template (omit) LocationRequestType.attr p_attr := omit + ) := { + responseTime := p_responseTime, + attr := p_attr, + locationType := p_locationType, + elem_list := p_elem_list + } // End of template m_locationRequest + + template LocationResponseType mw_locationResponse( + template ReturnLocationType p_locationUriSet := *, + template LocationResponseType.elem_list p_elem_list := * + ) := { + locationUriSet := p_locationUriSet, + elem_list := p_elem_list + } // End of template mw_locationResponse + + template (omit) LocationTypeType m_locationTypeType( + in template (value) LocationTypeBase p_base, + in template (omit) XSD.Boolean p_exact := omit + ) := { + exact := p_exact, + base := p_base + } // End of template m_locationTypeType + + template (value) LocationTypeBase m_locationTypeBase_civic := { + alt_1 := { + civic + } + } // End of template m_locationTypeBase_civic + + template (value) LocationTypeBase m_locationTypeBase_geodetic := { + alt_1 := { + geodetic + } + } // End of template m_locationTypeBase_geodetic + + template (value) LocationTypeBase m_locationTypeBase_all := { + alt_1 := { + geodetic, civic + } + } // End of template m_locationTypeBase_all + + template ErrorType mw_error_type( + template (present) XSD.Token p_code := ?, + template (present) ErrorType.message_list p_message_list := ?, + template (present) ErrorType.elem_list p_elem_list := {}, + template ErrorType.attr p_attr := * + ) := { + code := p_code, + attr := p_attr, + message_list := p_message_list, + elem_list := p_elem_list + } // End of template mw_error_type + + } // End of group rfc5985_held + + group rfc6155_held_id { + + template (value) Device m_device( + in template (value) Device.elem_list p_elem_list + ) := { + elem_list := p_elem_list + } // End of template m_device + + template (present) Device mw_device( + template (present) DeviceIdentity.elem_list p_elem_list := ? + ) := { + elem_list := p_elem_list + } // End of template mw_device + + } // End of group rfc6155_held_id + + group rfc3863_pidf { + + template (present) Presence mw_presence( + template (present) XSD.AnyURI p_entity := ?, + template (present) Presence.tuple_list p_tuple_list := ? + ) := { + entity := p_entity, + tuple_list := p_tuple_list, + note_list := {}, + elem_list := {} + } // End of template mw_presence + + template (present) Tuple mw_tuple( + template (present) universal charstring p_id, + template (present) Status p_status := ?, + template (present) Tuple.elem_list p_elem_list := {}, + template (present) Tuple.note_list p_note_list := {}, + template Contact p_contact := * + // TODO To be completed + ) := { + id := p_id, + status := p_status, + elem_list := p_elem_list, + contact := p_contact, + note_list := p_note_list, + timestamp := * + } // End of template mw_tuple + + } // End of group rfc3863_pidf + + group rfc4119_geopriv10 { + + template (present) LocInfoType mw_location_info( + template (present) LocInfoType.elem_list p_elem_list := ? + ) := { + elem_list := p_elem_list + } // End of template mw_location_info + + template (present) Geopriv mw_geopriv( + template (present) LocInfoType p_location_info := ?, + template (present) LocPolicyType p_usage_rules := ?, + template LocMethod p_method := ?, + template LocProvidedBy p_provided_by := *, + template Geopriv.elem_list p_elem_list := * + ) := { + location_info := p_location_info, + usage_rules := p_usage_rules, + method := p_method, + provided_by := p_provided_by, + elem_list := p_elem_list + } // End of template mw_geopriv + + } // End of group rfc4119_geopriv10 + + group open_gis { + + template PointProperty mw_point( + template (present) Pos p_position := ?, + template XSD.AnyURI p_srsName := * + ) := { + point := { + axisLabels := *, + gid := *, + id := *, + srsDimension := *, + srsName := p_srsName, + uomLabels := *, + pos := p_position + } + } // End of template mw_point + + template CircleType mw_circle( + template (present) CenterGroup p_centerGroup := ?, + template (present) LengthType p_radius := ?, + template XSD.AnyURI p_srsName := * + ) := { + axisLabels := *, + gid := *, + id := *, + srsDimension := *, + srsName := p_srsName, + uomLabels := *, + centerGroup := p_centerGroup, + radius := p_radius + } // End of template mw_circle + + template (present) CenterGroup mw_center_group_pos( + template (present) CenterGroup.pos p_pos := ? + ) := { + pos := p_pos + } // End of template mw_center_group_pos + + template (present) LengthType mw_radius( + template (present) XSD.AnyURI p_uom := ?, + template (present) XSD.Double p_base := ? + ) := { + uom := p_uom, + base := p_base + } // End of template mw_radius + + } // End of group open_gis + +} // End of module LibItsHttp_XmlTemplates diff --git a/ttcn/patch_sip_titan/LibSip_Common.ttcn b/ttcn/patch_sip_titan/LibSip_Common.ttcn new file mode 100755 index 0000000..88beed8 --- /dev/null +++ b/ttcn/patch_sip_titan/LibSip_Common.ttcn @@ -0,0 +1,42 @@ +/** + * @author STF160, STF471 + * @version $Id: LibSip_Common.ttcn 488 2014-09-18 10:17:19Z rennoch $ + * @desc This module provides the common definitions for SIP messages. + * This module is part of LibSipV3. +*/ +module LibSip_Common { + + type set length (1..infinity) of charstring Charstring_List; + + // [20.1, 20.3, 20.4, 20.7, 20.9, 20.10, 20.11, 20.18, 20.20, 20.27, 20.28, 20.30, 20.31, + // 20.33, 20.34, 20.39, 20.42, 20.44] + + + type union GenValue { + charstring tokenOrHost, + charstring quotedString + } + + type record GenericParam + { + charstring id, + GenValue paramValue optional + } + + + type set of GenericParam GenericParam_List; + + // [?] + type set of GenericParam SemicolonParam_List; + + // [?] + type set of GenericParam AmpersandParam_List; + + // [?] + type set of GenericParam CommaParam_List; + //------------------------------------------------------------------------------ + +} +with { + encode "LibSip V3"; +} // end module LibSip_Common diff --git a/ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn b/ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn new file mode 100755 index 0000000..13c0f78 --- /dev/null +++ b/ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn @@ -0,0 +1,120 @@ +module LibSip_EncdecDeclarations { + + import from LibSip_SIPTypesAndValues all; + import from LibSip_SMSTypesAndValues all; + import from LibSip_SimpleMsgSummaryTypes all; + import from LibSip_MessageBodyTypes all; + + external function fx_enc_Request (Request p) return bitstring + with {extension "prototype(convert) encode(SIPCodec)"} + + external function fx_enc_REGISTER_Request (REGISTER_Request p) return bitstring + with {extension "prototype(convert) encode(SIPCodec)"} + + external function fx_enc_INVITE_Request (INVITE_Request p) return bitstring + with {extension "prototype(convert) encode(SIPCodec)"} + + external function fx_enc_OPTIONS_Request (OPTIONS_Request p) return bitstring + with {extension "prototype(convert) encode(SIPCodec)"} + + external function fx_enc_BYE_Request (BYE_Request p) return bitstring + with {extension "prototype(convert) encode(SIPCodec)"} + + + external function fx_enc_CANCEL_Request (CANCEL_Request p) return bitstring + with {extension "prototype(convert) encode(SIPCodec)"} + + external function fx_enc_ACK_Request (ACK_Request p) return bitstring + with {extension "prototype(convert) encode(SIPCodec)"} + + external function fx_enc_PRACK_Request (PRACK_Request p) return bitstring + with {extension "prototype(convert) encode(SIPCodec)"} + + external function fx_enc_NOTIFY_Request (NOTIFY_Request p) return bitstring + with {extension "prototype(convert) encode(SIPCodec)"} + + external function fx_enc_SUBSCRIBE_Request (SUBSCRIBE_Request p) return bitstring + with {extension "prototype(convert) encode(SIPCodec)"} + + external function fx_enc_PUBLISH_Request (PUBLISH_Request p) return bitstring + with {extension "prototype(convert) encode(SIPCodec)"} + + external function fx_enc_UPDATE_Request (UPDATE_Request p) return bitstring + with {extension "prototype(convert) encode(SIPCodec)"} + + external function fx_enc_REFER_Request (REFER_Request p) return bitstring + with {extension "prototype(convert) encode(SIPCodec)"} + + external function fx_enc_MESSAGE_Request (MESSAGE_Request p) return bitstring + with {extension "prototype(convert) encode(SIPCodec)"} + + external function fx_enc_INFO_Request (INFO_Request p) return bitstring + with {extension "prototype(convert) encode(SIPCodec)"} + + external function fx_enc_Response (Response p) return bitstring + with {extension "prototype(convert) encode(SIPCodec)"} + + external function fx_enc_Raw (Raw p) return bitstring + with {extension "prototype(convert) encode(SIPCodec)"} + + external function fx_enc_SMS(SimpleMsgSummary pdu) return bitstring + with { extension "prototype(convert) encode(SIPCodec)" }; + + external function fx_enc_MessageBody(in MessageBody pdu) return bitstring + with { extension "prototype(convert) encode(SIPCodec)" }; + + external function fx_dec_Request (inout bitstring pdu, out Request p) return integer + with {extension "prototype(sliding) decode(SIPCodec)"} + + external function fx_dec_REGISTER_Request (inout bitstring pdu, out REGISTER_Request p) return integer + with {extension "prototype(sliding) decode(SIPCodec)"} + + external function fx_dec_INVITE_Request (inout bitstring pdu, out INVITE_Request p) return integer + with {extension "prototype(sliding) decode(SIPCodec)"} + + external function fx_dec_OPTIONS_Request (inout bitstring pdu, out OPTIONS_Request p) return integer + with {extension "prototype(sliding) decode(SIPCodec)"} + + external function fx_dec_BYE_Request (inout bitstring pdu, out BYE_Request p) return integer + with {extension "prototype(sliding) decode(SIPCodec)"} + + external function fx_dec_CANCEL_Request (inout bitstring pdu, out CANCEL_Request p) return integer + with {extension "prototype(sliding) decode(SIPCodec)"} + + external function fx_dec_ACK_Request (inout bitstring pdu, out ACK_Request p) return integer + with {extension "prototype(sliding) decode(SIPCodec)"} + + external function fx_dec_PRACK_Request (inout bitstring pdu, out PRACK_Request p) return integer + with {extension "prototype(sliding) decode(SIPCodec)"} + + external function fx_dec_NOTIFY_Request (inout bitstring pdu, out NOTIFY_Request p) return integer + with {extension "prototype(sliding) decode(SIPCodec)"} + + external function fx_dec_SUBSCRIBE_Request (inout bitstring pdu, out SUBSCRIBE_Request p) return integer + with {extension "prototype(sliding) decode(SIPCodec)"} + + external function fx_dec_PUBLISH_Request (inout bitstring pdu, out PUBLISH_Request p) return integer + with {extension "prototype(sliding) decode(SIPCodec)"} + + external function fx_dec_UPDATE_Request (inout bitstring pdu, out UPDATE_Request p) return integer + with {extension "prototype(sliding) decode(SIPCodec)"} + + external function fx_dec_REFER_Request (inout bitstring pdu, out REFER_Request p) return integer + with {extension "prototype(sliding) decode(SIPCodec)"} + + external function fx_dec_MESSAGE_Request (inout bitstring pdu, out MESSAGE_Request p) return integer + with {extension "prototype(sliding) decode(SIPCodec)"} + + external function fx_dec_INFO_Request (inout bitstring pdu, out INFO_Request p) return integer + with {extension "prototype(sliding) decode(SIPCodec)"} + + external function fx_dec_Response (inout bitstring pdu, out Response p) return integer + with {extension "prototype(sliding) decode(SIPCodec)"} + + external function fx_dec_SMS(inout bitstring pdu, out SimpleMsgSummary p) return integer + with { extension "prototype(sliding) decode(SIPCodec)" }; + + external function fx_dec_MessageBody(inout bitstring pdu, out MessageBody p) return integer + with { extension "prototype(sliding) decode(SIPCodec)" }; + +} // End of module module LibSip_EncdecDeclarations diff --git a/ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn b/ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn new file mode 100755 index 0000000..332c989 --- /dev/null +++ b/ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn @@ -0,0 +1,62 @@ +/****************************************************************************** + * @author STF 346, STF366, STF368, STF369, STF450, STF471 + * @version $Id: LibSip_MessageBodyTypes.ttcn 622 2014-07-10 14:50:54Z nikolajev $ + * @desc This module provides the types used for alternative SIP message + * body variants and combinations. + * This module is part of LibSipV3. + */ + +module LibSip_MessageBodyTypes { + import from LibSip_SDPTypes all; + import from LibSip_SimpleMsgSummaryTypes all; + import from LibSip_XMLTypes all; + + /* + * Simple body types that can be used instead of the more detailed XML and SDP + * without codec support + * */ + //type charstring XmlBody; + //type charstring SDP_Message; + type octetstring MsdBody; + + group MIMETypes { + type union MIME_Encapsulated_Parts { + SDP_Message sdpMessageBody, + XmlBody xmlBody, // if there is XML body + MsdBody msdBody // RFC 8147: Minimum Set of Data octets + } + + type record MIME_Encapsulated_Part { + charstring content_type, + charstring content_disposition optional, + charstring content_id optional, + MIME_Encapsulated_Parts mime_encapsulated_part + } + + type record MIME_Message { + charstring boundary, // len: + MimeEncapsulatedList mimeEncapsulatedList + } + + type record of MIME_Encapsulated_Part MimeEncapsulatedList; + + + } // group MIMETypes + + type union MessageBody { + SDP_Message sdpMessageBody, // if there is only SDP part + // XMLMessage xmlMessage, // if there is XML message (with header and body) + XmlBody xmlBody, // if there is XML body + MIME_Message mimeMessageBody, // if there is SDP and encapsulated ISUP part + charstring sipfrag, // if content-Type is message/sipfrag (cp. NOTIFY, cp TS124147 A.4.3.1.2) + charstring textplain, // if content type is text/plain (for testing long messages) + SimpleMsgSummary simpleMsgSummary, // RFC 3842 + octetstring smsMessage // encoded SMS message 3GPP 23.040, 24.011 + } with { + variant "" + } + +} with { + variant "" + encode "SIPCodec" +} diff --git a/ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn b/ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn new file mode 100755 index 0000000..1d866f5 --- /dev/null +++ b/ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn @@ -0,0 +1,406 @@ +/** + * @author STF 346, STF366, STF368, STF369, STF450, STF471 + * @version $Id: LibSip_SDPTypes.ttcn 653 2017-12-14 11:16:59Z rennoch $ + * @desc This module defines message, attribute, structured and simple + * SDP types as well constants used by LipSip constructs.
+ * Note that any changes made to the definitions in this module + * may be overwritten by future releases of this library + * End users are encouraged to contact the distributers of this + * module regarding their modifications or additions + * This module is part of LibSipV3. + * @remark Adding of new attributes types is ok; Adding of new optional attributes in @see SDP_attribute type is ok; Existing attribute types shall not be changed or removed - change requests shall be made to http://t-ort.etsi.org + */ +module LibSip_SDPTypes { + import from LibSip_Common all; + group Constants { + group SimpleConstants { + // SDP net_type + const charstring c_in := "IN"; + + // SDP addr_type + const charstring c_ip4 := "IP4"; + const charstring c_ip6 := "IP6"; + + // SDP_media_desc: media + const charstring c_audio := "audio"; + const charstring c_image := "image"; + const charstring c_video := "video"; + const charstring c_text := "text"; + const charstring c_msrp := "msrp"; + + // SDP_media_desc: transport + const charstring c_rtpAvp := "RTP/AVP"; + const charstring c_rtpAvpf := "RTP/AVPF"; + const charstring c_msrpTcp := "TCP/MSRP"; + const charstring c_udptl := "Udptl"; + + // SDP_attribute_list constants: + const charstring c_local := "local"; + const charstring c_mandatory := "mandatory"; + const charstring c_optional := "optional"; + const charstring c_none := "none"; + const charstring c_qos := "qos"; + const charstring c_remote := "remote"; + const charstring c_sendrecv := "sendrecv"; + const charstring c_sendonly := "sendonly"; + const charstring c_inactive := "inactive"; + const charstring c_send := "send"; + const charstring c_recv := "recv"; + const charstring c_e2e := "e2e"; + } + } + group Types { + group SubTypes { + group AttributeTypes { + type record SDP_attribute_cat { + charstring attr_value + } + + type record SDP_attribute_keywds { + charstring attr_value + } + + type record SDP_attribute_tool { + charstring attr_value + } + + type record SDP_attribute_ptime { + charstring attr_value + } + + type record SDP_attribute_recvonly { + } + + type record SDP_attribute_sendrecv { + } + + type record SDP_attribute_sendonly { + } + + type record SDP_attribute_inactive { + } + + type record SDP_attribute_orient { + charstring attr_value + } + + type record SDP_attribute_type { + charstring attr_value + } + + type record SDP_attribute_charset { + charstring attr_value + } + + type record SDP_attribute_sdplang { + charstring attr_value + } + + type record SDP_attribute_lang { + charstring attr_value + } + + type record SDP_attribute_framerate { + charstring attr_value + } + + type record SDP_attribute_quality { + charstring attr_value + } + + type union SDP_attribute_fmtp_format_specific_params { + SemicolonParam_List paramList, + charstring unstructured + } + + type record SDP_attribute_fmtp { + charstring format, + SDP_attribute_fmtp_format_specific_params params + } + + type record SDP_attribute_curr { + charstring preconditionType, + charstring statusType, + charstring direction + } + + type record SDP_attribute_des { + charstring preconditionType, + charstring strength, + charstring statusType, + charstring direction + } + + type record SDP_attribute_conf { + charstring preconditionType, + charstring statusType, + charstring direction + } + + type record SDP_attribute_rtpmap_codec { + charstring encoding, + charstring clockrate, + charstring parameters optional + } + + type record SDP_attribute_rtpmap { + charstring payload_type, + SDP_attribute_rtpmap_codec codec + } + + type record SDP_attribute_rtcp { + integer portnumber, + SDP_connection connection optional + } + + type record SDP_attribute_msrp { + charstring attr_value + } + + type record SDP_attribute_unknown { + charstring name, + charstring attr_value optional + } + + type record SDP_attribute_maxptime { + charstring attr_value + } + + type record SDP_attribute_tcap { + integer trpr_cap_num, + Charstring_List proto_list + } + + type record SDP_attribute_pcfg { + integer config_number, + Charstring_List pot_cfg_list optional + } + + type record SDP_attribute_acfg { + integer config_number, + Charstring_List sel_cfg_list optional + } + + type record SDP_attribute_ecn_capable_rtp { + Charstring_List init_list, + Charstring_List parm_list optional + } + + type record SDP_attribute_rtcp_fb { + charstring rtcp_fb_pt, + charstring rtcp_fb_val + } + + type record SDP_attribute_rtcp_xr { + Charstring_List xr_format_list optional + } + + type record SDP_attribute_rtcp_rsize { + } + + type record SDP_attribute_3ge2ae { + charstring indicator + } + + type record SDP_attribute_crypto { + charstring tag, + charstring crypto_suite, + charstring key_params, + Charstring_List session_params optional + } + + type record SDP_attribute_content { + Charstring_List content_params + } + + type record SDP_attribute_keymgmt { + charstring prtcl_id, + charstring data + } + + type union SDP_attribute { + SDP_attribute_cat cat, + SDP_attribute_keywds keywds, + SDP_attribute_tool tool, + SDP_attribute_ptime ptime, + SDP_attribute_recvonly recvonly, + SDP_attribute_sendrecv sendrecv, + SDP_attribute_sendonly sendonly, + SDP_attribute_inactive inactive, + SDP_attribute_orient orient, + SDP_attribute_type sdp_type, + SDP_attribute_charset charset, + SDP_attribute_sdplang sdplang, + SDP_attribute_lang lang, + SDP_attribute_framerate framerate, + SDP_attribute_quality quality, + SDP_attribute_fmtp fmtp, + SDP_attribute_curr curr, + SDP_attribute_des des, + SDP_attribute_conf conf, + SDP_attribute_rtpmap rtpmap, + SDP_attribute_rtcp rtcp, + SDP_attribute_msrp msrp, + SDP_attribute_maxptime maxptime, + SDP_attribute_tcap tcap, + SDP_attribute_pcfg pcfg, + SDP_attribute_acfg acfg, + SDP_attribute_ecn_capable_rtp ecn_capable_rtp, + SDP_attribute_rtcp_fb rtcp_fb, + SDP_attribute_rtcp_xr rtcp_xr, + SDP_attribute_rtcp_rsize rtcp_rsize, + SDP_attribute_3ge2ae e2ae, + SDP_attribute_crypto crypto, + SDP_attribute_content content, + SDP_attribute_keymgmt keymgmt, + //* unknown has to be the last else encoding/decoding won't work! + SDP_attribute_unknown unknown + } + + } //* group AttributeTypes + + type set of SDP_attribute SDP_attribute_list; + + type record SDP_bandwidth { + charstring modifier, + integer bandwidth + } + + type set of SDP_bandwidth SDP_bandwidth_list; + + type record SDP_connection { + charstring net_type, + charstring addr_type, + SDP_conn_addr conn_addr + } + + type record SDP_conn_addr { + charstring addr, + integer ttl optional, + integer num_of_addr optional + } + + type set of SDP_connection SDP_connection_list; + + type record SDP_contact { + charstring addr_or_phone, + charstring disp_name optional + } + + type SDP_contact SDP_contact_tel; + + type SDP_contact SDP_contact_email; + + type set of SDP_contact_email SDP_email_list; + + type record of charstring SDP_fmt_list; + + type record SDP_key { + charstring method, + charstring key optional + } + + type record SDP_media_desc { + SDP_media_field media_field, + charstring information optional, + SDP_connection_list connections optional, + SDP_bandwidth_list bandwidth optional, + SDP_key key optional, + SDP_attribute_list attributes optional + } + + type set of SDP_media_desc SDP_media_desc_list; + + type record SDP_media_port { + integer port_number, + integer num_of_ports optional + } + + type record SDP_media_field { + charstring media, + SDP_media_port ports, + charstring transport, + SDP_fmt_list fmts + } + + type record SDP_time { + SDP_time_field time_field, + SDP_repeat_list time_repeat optional + } + + type record SDP_time_field { + charstring start_time, + //* field is numeric strings that may not fit into 32-bit signed int + charstring + stop_time //* field is numeric strings that may not fit into 32-bit signed int + } + + type record SDP_repeat { + SDP_typed_time repeat_interval, + SDP_typed_time active, + SDP_typed_time_list offsets + } + + type set of SDP_repeat SDP_repeat_list; + + type record SDP_typed_time { + integer time, + charstring unit optional + } + + type set of SDP_typed_time SDP_typed_time_list; + + type set of SDP_time SDP_time_list; + + type record SDP_timezone { + charstring adjustment_time, + SDP_typed_time offset + } + + type set of SDP_timezone SDP_timezone_list; + + type record SDP_Origin { + charstring user_name, + charstring session_id, + //* field is numeric strings that may not fit into 32-bit signed int + charstring session_version, + //* field is numeric strings that may not fit into 32-bit signed int + charstring net_type, + charstring addr_type, + charstring addr + } + + type set of SDP_contact_tel SDP_phone_list; + + } //* group SubTypes + + + group MessageTypes { + type record SDP_Message { + integer protocol_version, + SDP_Origin origin, + charstring session_name, + charstring information optional, + charstring uri optional, + SDP_email_list emails optional, + SDP_phone_list phone_numbers optional, + SDP_connection connection optional, + SDP_bandwidth_list bandwidth optional, + SDP_time_list times, + SDP_timezone_list timezone_adjustments optional, + SDP_key key optional, + SDP_attribute_list attributes optional, + SDP_media_desc_list media_list optional + } + with { + encode "SDPCodec"; + } + + } // group MessageTypes + + } // group Types +} +with { + variant "" + encode "SIPCodec" +} // end module LibSip_SDPTypes diff --git a/ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn b/ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn new file mode 100755 index 0000000..4d0ac33 --- /dev/null +++ b/ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn @@ -0,0 +1,1984 @@ +/** + * @author STF 346, STF366, STF368, STF369, STF450, STF471, STF160 + * @version $Id: LibSip_SIPTypesAndValues.ttcn 658 2018-06-14 06:44:44Z genoudoli $ + * @desc This module defines message, header, structured and simple SIP + * types as well constants used by LipSip constructs.
+ * Note that any changes made to the definitions in this module + * may be overwritten by future releases of this library + * End users are encouraged to contact the distributers of this + * module regarding their modifications or additions + * This module is part of LibSipV3. + * @remark Adding of new message and header types is ok; Adding of new optional header fields in + * @see MessageHeader type is ok but should be done at same time as dummy template updates; Existing message or header types shall not be changed or removed - change requests shall be made to http://t-ort.etsi.org + */ +module LibSip_SIPTypesAndValues { + import from LibSip_MessageBodyTypes all; + import from LibSip_Common all; + + group Constants { + group SimpleConstants { + // SIP name protocol plus version + const charstring c_sipNameVersion := "SIP/2.0"; + + // SIP name protocol + const charstring c_sipName := "SIP"; + + // SIP version + const charstring c_sipVersion := "2.0"; + + // SIP scheme + const charstring c_sipScheme := "sip"; + + // TEL scheme + const charstring c_telScheme := "tel"; + + // URN schema + const charstring c_urnScheme := "urn"; + + // TAG_ID + const charstring c_tagId := "tag"; + + // BRANCH_ID + const charstring c_branchId := "branch"; + + // BRANCH_COOKIE + const charstring c_branchCookie := "z9hG4bK"; + + // EXPIRES_ID + const charstring c_expiresId := "expires"; + + // MADDR_ID + const charstring c_maddrId := "maddr"; + + // METHOD_ID + const charstring c_methodId := "method"; + + // RECEIVED_ID + const charstring c_receivedId := "received"; + + // TTL_ID + const charstring c_ttlId := "ttl"; + + // USER_ID + const charstring c_userId := "user"; + + // SDP name application + const charstring c_sdpApplication := "application/sdp"; + + // XML name application + const charstring c_xmlApplication := "application/xml"; + + // XML name application + const charstring c_xmlreginfoApplication := "application/reginfo+xml"; + + // XML name resource-list + const charstring c_xmlresourcelistApplication := "application/resource-lists+xml"; + + // IMS 3GPP name application + const charstring c_ims3gppApplication := "application/3gpp-ims+xml"; + + // IMS 3GPP name CW application + const charstring c_ims3gppCwApplication := "application/vnd.3gpp.cw+xml"; + + // IMS ETSI name MCID application + const charstring c_imsEtsiMcidApplication := "application/vnd.etsi.mcid+xml"; + + // IMS ETSI name CUG application + const charstring c_imsEtsiCugApplication := "application/vnd.etsi.cug+xml"; + + // IMS ETSI name Simservs application(TIP/TIR, ACR, CDIV, OIP/OIR, CUG) + const charstring c_imsEtsiSimservsApplication := "application/vnd.etsi.simservs+xml"; + + // OCTET-STREAM name application + const charstring c_octetApplication := "application/octet-stream"; + + // PLAIN-TEXT name application + const charstring c_plainText := "text/plain"; + + // SIP fragment message + const charstring c_sipfragMessage := "message/sipfrag"; + + // text content of 1300 bytes for messages with message body + const charstring c_longMessageContent_1300Bytes := + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" & oct2char('0D'O) & oct2char('0A'O); // CRLF + // Default SIP port number : 5060 + const integer c_defaultSipPort := 5060; + + // Default SIP protocol : UDP + const charstring c_defaultSipProt := "UDP"; + + // Fixed IP multicast address + const charstring c_mcastSipIpaddr := "224.0.1.75"; + + // Short delta-second used in expires parameter to acknowledge a registration + const charstring c_shortRegistration := "3600"; + + // ([RFC3891 ] Sec 6.1) + const charstring c_earlyFlag := "early-only"; + + // option tag replaces ([RFC3261 ] ) + const charstring c_replaces := "replaces"; + + // option tag 100rel (reliable provisional response [RFC3262 ] ) + const charstring c_tag100rel := "100rel"; + + // option tag from-change ([RFC4916 ] ) + const charstring c_tagFromChange := "from-change"; + + // option tag precondition (ch.11 [RFC3312 ] ) + const charstring c_tagPrecond := "precondition"; + + // due to problem with TAU compiler because hardcoded return statement constant is created + const HostPort c_hostport_dummy := { + host := "", + portField := c_defaultSipPort + }; + + // CLIP/CLIR information + const PrivacyValue c_privacy_none := "none"; + const PrivacyValue c_privacy_id := "id"; + const PrivacyValue c_privacy_header := "header"; + const PrivacyValue c_privacy_user := "user"; + const PrivacyValue c_privacy_critical := "critical"; + const PrivacyValue c_privacy_session := "session"; + + // + const charstring c_AT := "@"; // MRO + const charstring c_SP := oct2char('20'O); + const charstring c_SLASH := oct2char('2F'O); + const charstring c_LT := oct2char('3C'O); + const charstring c_GT := oct2char('3E'O); + + // * (wildchard) sign + const charstring c_WILDCARD := "*"; + + const integer c_CRlen := 2; + // length of new line (0d0a) + const GenericParam c_Integrity_protected_yes := {"integrity-protected", {tokenOrHost := "yes"}}; + const GenericParam c_Integrity_protected_no := {"integrity-protected", {tokenOrHost := "no"}}; + const GenericParam c_Integrity_protected_ip_assoc_pending := {"integrity-protected", {tokenOrHost := "ip-assoc-pending"}}; + + const charstring c_algorithm := "MD5"; + + } // end group SimpleConstants + + group AuthorizationConstants { + + const charstring c_ik := ""; + const charstring c_ck := ""; + const charstring c_nonce := ""; + const charstring c_nonce_value := "0edff6c521cc3f407f2d9e01cf6ed82b"; + + + } // end group AuthorizationConstants + + group PChargingVectorConstants { + + const charstring c_icid := "icid-value"; + const charstring c_icid_value := "123abc"; + const charstring c_icid_generated_at := "icid-generated-at"; + const charstring c_orig_ioi := "orig-ioi"; + const charstring c_term_ioi := "term-ioi"; + const charstring c_access_network_charging_info := "access-network-charging-info"; + + + } // end group PChargingVectorConstants + + group HeaderFieldConstants { + + const CallId c_empty_CallId := { + fieldName := CALL_ID_E, + callid := "" + }; + + const ContentType c_empty_ContentType := { + fieldName := CONTENT_TYPE_E, + mTypeSubtype := "", + mParams := omit + }; + + const CSeq c_empty_cSeq := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "EMPTY" + }; + + const From c_empty_From := { + fieldName := FROM_E, + addressField := { + nameAddr := { + displayName := omit, + addrSpec := { + scheme := c_sipScheme, + components := { + sip := { + userInfo := omit, + hostPort := { + host := "127.0.0.1", + portField := c_defaultSipPort + } + } + }, + urlParameters := omit, + headers := omit + } + } + }, + fromParams := omit + }; + + const MaxForwards c_maxForwards70 := { + fieldName := MAX_FORWARDS_E, + forwards := 70 + }; + + const SipUrl c_empty_RequestUri := { + scheme := c_sipScheme, + components := { + sip := { + userInfo := omit, + hostPort := { + host := "127.0.0.1", + portField := c_defaultSipPort + } + } + }, + urlParameters := omit, + headers := omit + }; + + const SipUrl c_unavailableUri := { + scheme := c_sipScheme, + components := { + sip := { + userInfo := { + userOrTelephoneSubscriber := "unavailable", + password := omit + }, + hostPort := { + host := "anonymous.invalid", + portField := c_defaultSipPort + } + } + }, + urlParameters := omit, + headers := omit + }; + + const To c_empty_To := { // value of To header + fieldName := TO_E, + addressField := { + nameAddr := { + displayName := omit, + addrSpec := { + scheme := c_sipScheme, + components := { + sip := { + userInfo := omit, + hostPort := { + host := "127.0.0.1", + portField := c_defaultSipPort + } + } + }, + urlParameters := omit, + headers := omit + } + } + }, + toParams := omit + }; + + const Via c_empty_Via := { + fieldName := VIA_E, + viaBody := { + { + sentProtocol := { + protocolName := c_sipName, + protocolVersion := c_sipVersion, + transport := c_defaultSipProt + }, + sentBy := { + host := "127.0.0.1", + portField := c_defaultSipPort + }, + viaParams := omit + } + } + }; + + + } + + + group UserProfileConstants { + // number of user profile from 1-10 for SIP profile + const integer c_userProfile_SIP1_home := 1; + const integer c_userProfile_SIP2_home := 2; + + + } // end group UserProfileConstants + + group StatusLines { + const StatusLine c_statusLine100 := {c_sipNameVersion, 100, "Trying"}; + const StatusLine c_statusLine180 := {c_sipNameVersion, 180, "Ringing"}; + const StatusLine c_statusLine181 := {c_sipNameVersion, 181, "Call Is Being Forwarded"}; + const StatusLine c_statusLine182 := {c_sipNameVersion, 182, "Queued"}; + const StatusLine c_statusLine183 := {c_sipNameVersion, 183, "Session Progress"}; + + const StatusLine c_statusLine200 := {c_sipNameVersion, 200, "OK"}; + const StatusLine c_statusLine202 := {c_sipNameVersion, 202, "Accepted"}; + + const StatusLine c_statusLine300 := {c_sipNameVersion, 300, "Multiple Choices"}; + const StatusLine c_statusLine301 := {c_sipNameVersion, 301, "Moved Permanently"}; + const StatusLine c_statusLine302 := {c_sipNameVersion, 302, "Moved Temporarily"}; + const StatusLine c_statusLine305 := {c_sipNameVersion, 305, "Use Proxy"}; + const StatusLine c_statusLine380 := {c_sipNameVersion, 380, "Alternative Service"}; + + const StatusLine c_statusLine400 := {c_sipNameVersion, 400, "Bad Request"}; + const StatusLine c_statusLine401 := {c_sipNameVersion, 401, "Unauthorized"}; + const StatusLine c_statusLine402 := {c_sipNameVersion, 402, "Payment Required"}; + const StatusLine c_statusLine403 := {c_sipNameVersion, 403, "Forbidden"}; + const StatusLine c_statusLine404 := {c_sipNameVersion, 404, "Not Found"}; + const StatusLine c_statusLine405 := {c_sipNameVersion, 405, "Method Not Allowed"}; + const StatusLine c_statusLine406 := {c_sipNameVersion, 406, "Not Acceptable"}; + const StatusLine c_statusLine407 := {c_sipNameVersion, 407, "Proxy Authentication Required"}; + const StatusLine c_statusLine408 := {c_sipNameVersion, 408, "Request Timeout"}; + const StatusLine c_statusLine410 := {c_sipNameVersion, 410, "Gone"}; + const StatusLine c_statusLine413 := {c_sipNameVersion, 413, "Request Entity Too Large"}; + const StatusLine c_statusLine414 := {c_sipNameVersion, 414, "Request-URI Too Long"}; + const StatusLine c_statusLine415 := {c_sipNameVersion, 415, "Unsupported Media Type"}; + const StatusLine c_statusLine416 := {c_sipNameVersion, 416, "Unsupported URI Scheme"}; + const StatusLine c_statusLine420 := {c_sipNameVersion, 420, "Bad Extension"}; + const StatusLine c_statusLine421 := {c_sipNameVersion, 421, "Extension Required"}; + const StatusLine c_statusLine422 := {c_sipNameVersion, 422, "Session Interval Too Small"}; + const StatusLine c_statusLine423 := {c_sipNameVersion, 423, "Interval Too Brief"}; + const StatusLine c_statusLine433 := {c_sipNameVersion, 433, "Anonymity Disallowed"}; + const StatusLine c_statusLine480 := {c_sipNameVersion, 480, "Temporarily Unavailable"}; + const StatusLine c_statusLine481 := {c_sipNameVersion, 481, "Call/Transaction Does Not Exist"}; + const StatusLine c_statusLine482 := {c_sipNameVersion, 482, "Loop Detected"}; + const StatusLine c_statusLine483 := {c_sipNameVersion, 483, "Too Many Hops"}; + const StatusLine c_statusLine484 := {c_sipNameVersion, 484, "Address Incomplete"}; + const StatusLine c_statusLine485 := {c_sipNameVersion, 485, "Ambiguous"}; + const StatusLine c_statusLine486 := {c_sipNameVersion, 486, "Busy Here"}; + const StatusLine c_statusLine487 := {c_sipNameVersion, 487, "Request Terminated"}; + const StatusLine c_statusLine488 := {c_sipNameVersion, 488, "Not Acceptable Here"}; + const StatusLine c_statusLine493 := {c_sipNameVersion, 493, "Undecipherable"}; + const StatusLine c_statusLine500 := {c_sipNameVersion, 500, "Server Internal Error"}; + const StatusLine c_statusLine501 := {c_sipNameVersion, 501, "Not implemented"}; + const StatusLine c_statusLine502 := {c_sipNameVersion, 502, "Bad Gateway"}; + const StatusLine c_statusLine503 := {c_sipNameVersion, 503, "Service Unavailable"}; + const StatusLine c_statusLine504 := {c_sipNameVersion, 504, "Server Time-out"}; + const StatusLine c_statusLine505 := {c_sipNameVersion, 505, "Version Not Supported"}; + const StatusLine c_statusLine513 := {c_sipNameVersion, 513, "Message Too Large"}; + const StatusLine c_statusLine580 := {c_sipNameVersion, 580, "Precondition Failure"}; + const StatusLine c_statusLine600 := {c_sipNameVersion, 600, "Busy Everywhere"}; + const StatusLine c_statusLine603 := {c_sipNameVersion, 603, "Decline"}; + const StatusLine c_statusLine604 := {c_sipNameVersion, 604, "Does Not Exist Anywhere"}; + const StatusLine c_statusLine606 := {c_sipNameVersion, 606, "Not Acceptable"}; + + + } // end StatusLines + + group SIPSyncPointNames { + const charstring c_Ringing := "Ringing"; + const charstring c_uPlane := "uPlane"; + const charstring c_sync1 := "sync1"; + const charstring c_sync2 := "sync2"; + const charstring c_sync3 := "sync3"; + const charstring c_sync4 := "sync4"; + const charstring c_uPlaneStop := "uPlaneStop"; + const charstring c_annoucA := "announcementA"; + const charstring c_annoucB := "announcementB"; + const charstring c_annouc := "announcement"; + const charstring c_voicem := "voiceMessage"; + } + + + } // end group Constants + + group Types { + group SubTypes { + // Subtypes + group TokenTypes // TokensTypes + { + // [20 ] + type enumerated FieldName { + ACCEPT_E, + ACCEPT_ENCODING_E, + ACCEPT_LANGUAGE_E, + ALERT_INFO_E, + ALLOW_E, + AUTHENTICATION_INFO_E, + AUTHORIZATION_E, + CALL_ID_E, + CALL_INFO_E, + CONTACT_E, + CONTENT_DISPOSITION_E, + CONTENT_ENCODING_E, + CONTENT_LANGUAGE_E, + CONTENT_LENGTH_E, + CONTENT_TYPE_E, + CSEQ_E, + DATE_E, + ERROR_INFO_E, + EXPIRES_E, + FROM_E, + IN_REPLY_TO_E, + MAX_FORWARDS_E, + MIME_VERSION_E, + MIN_EXPIRES_E, + ORGANIZATION_E, + PRIORITY_E, + PROXY_AUTHENTICATE_E, + PROXY_AUTHORIZATION_E, + PROXY_REQUIRE_E, + RECORD_ROUTE_E, + REPLY_TO_E, + REQUIRE_E, + RETRY_AFTER_E, + ROUTE_E, + SERVER_E, + SUBJECT_E, + SUPPORTED_E, + TIMESTAMP_E, + TO_E, + UNSUPPORTED_E, + USER_AGENT_E, + VIA_E, + WARNING_E, + WWW_AUTHENTICATE_E, + // [3262/7.1 ] + RACK_E, + RSEQ_E, + // [3265/7.2 ] + ALLOW_EVENTS_E, + EVENT_E, + SUBSCRIPTION_STATE_E, + // [3313 ] + P_MEDIA_AUTHORIZATION_E, + // [3323 ] + PRIVACY_E, + // [3325 ] + P_ASSERTED_ID_E, + P_PREFERRED_ID_E, + P_PREFERRED_SERVICE_E, + // [3326 ] + REASON_E, + // [3515 ] - REFER method + REFER_TO_E, + // [4488 ] - REFER method + REFER_SUB_E, + // [3891 ] + REPLACES_E, + // [3892 ] - REFER method + REFERRED_BY_E, + // [4244 ] + HISTORY_INFO_E, + // [3313 ] + P_MEDIA_AUTH_E, + // [3327 ] + PATH_E, + // [3329 ] + SECURITY_CLIENT_E, + SECURITY_SERVER_E, + SECURITY_VERIFY_E, + // [3455 ] + P_ACCESS_NETWORK_INFO_E, + P_ASSOCIATED_URI_E, + P_CALLED_PARTY_E, + P_CHARGING_FUNCTION_ADDRESSES_E, + P_CHARGING_VECTOR_E, + P_VISITED_NETWORK_E, + // [3608 ] + SERVICE_ROUTE_E, + // [3841 ] + ACCEPT_CONTACT_E, + REQUEST_DISPOSITION_E, + // [4028 ] + MIN_SE_E, + SESSION_EXPIRES_E, + P_ASSERTED_SERVICE_E, + // [5009 ] + P_EARLY_MEDIA_E, + // http://tools.ietf.org/html/draft-johnston-sipping-cc-uui-07 + // Transporting User to User Call Control Information in SIP for ISDN Interworking + USER_TO_USER_E, + // [6442 ] /* + GEOLOCATION_E, + GEOLOCATION_ROUTING_E, + SESSION_ID_E, + SIP_ETAG_E, + SIP_IF_MATCH_E, + FEATURE_CAPS_E, + // 6086 + RECV_INFO_E, + INFO_PACKAGE_E, + // 2616 + HOST_E, + // + RESOURCE_PRIORITY_E, //4412 + ANSWER_MODE_E, //5373 + PRIV_ANSWER_MODE_E, //5373 + TARGET_DIALOG_E, //4538 + P_ANSWER_STATE_E //4964 + } + + // [7.1 ] + type enumerated Method { + ACK_E, + BYE_E, + CANCEL_E, + INVITE_E, + OPTIONS_E, + REGISTER_E, + PRACK_E // Note: this element is not defined in [5 ] + , + SUBSCRIBE_E, + NOTIFY_E // [3265 ] + , + PUBLISH_E // [3903/12 ] + , + REFER_E // [3515 ] + , + UPDATE_E // [3311 ] + , + MESSAGE_E // [3428 ] + , + INFO_E // [2976 ] + , + UNKNOWN_METHOD_E + } + + // [20.10, 20.20, 20.30, 20.31, 20.34, 20.39, 20.42, 20.43 ] + type record HostPort { + charstring host optional, // hostname, IPv4 or IPv6 + integer portField optional // represented as an integer + } + + // [20.10, 20.20, 20.30, 20.31, 20.34, 20.39 ] + /** + * @desc identifier for user or telephone subscriber + * @member userOrTelephoneSubscriber provides the username or a phone name identifying the subscriber + * @member password related password information + */ + type record UserInfo { + charstring userOrTelephoneSubscriber, + charstring password optional + } + + // [19.1.1 ;used in: 20.10, 20.20, 20.30, 20.31, 20.34, 20.39 ] + /** + * @desc Uniform Resource Identifier (URI) + * @member scheme distinguishes call types, e.g. voice, fax etc. or related address scheme, e.g. tel, sip + * @member userInfo Contains user information (also in non-SIP URLs) with optional parameter as passwords + * @member hostPort Hostname or IP address information and port identifier of the target + * @member urlParameters Contains either SIP or TEL URL parameters, separated by semicolons, e.g. transport=tcp or user=phone + * @member headers Additional information added after the parameters, e.g. priority=urgent + */ + type record SipUriComponents { // sip-uri acc. to RFC 3261 cl. 19.1 + UserInfo userInfo optional, + HostPort hostPort + } + + type record TelUriComponents { // tel-uri acc. to RFC 3966 + charstring subscriber + } + + type record UrnUriComponents { // urn-uri acc. to RFC 2141 + charstring namespaceId, // e.g. "service" as acc. to RFC 5031 + charstring namespaceSpecificString // e.g. "sos" + } + + type union UriComponents { + SipUriComponents sip, // scheme: "sip" or sips" + TelUriComponents tel, // scheme: "tel" + UrnUriComponents urn, // scheme: "urn" + charstring other // scheme: none of the above schemes + } + + type record SipUrl { + charstring scheme, // e.g "sip" or "tel" + UriComponents components, // corresponding to the scheme + SemicolonParam_List urlParameters optional, + AmpersandParam_List headers optional + } + + // [20.1, RFC2616 14.1 ] + type record AcceptBody { + charstring mediaRange, + SemicolonParam_List acceptParam optional + } + + // [20.1, RFC2616 14.1 ] + type set of AcceptBody AcceptBody_List; + + // [20.4 ] + type record AlertInfoBody { + charstring url, // any URI + SemicolonParam_List genericParams optional + } + + // [20.4 ] + type set of AlertInfoBody AlertInfoBody_List; + + // [20.8 ] + type charstring CallidString; + // token [" + // [20.8 ] + type set of CallidString CallidString_List; + + // [20.9 ] + type record CallInfoBody { + charstring url, // any URI + SemicolonParam_List infoParams optional + } + + // [20.9 ] + type set of CallInfoBody CallInfoBody_List; + + // [20.27, 20.44, .......10.32, 10.48; RFC2616 14.33, 14.47; RFC2617 1.2 ] + type union Challenge { + CommaParam_List digestCln, + OtherAuth otherChallenge + } + + // [20.10, 20.20, 20.30, 20.31, 20.34, 20.39 ] + type union DisplayName + { + charstring token, + charstring quotedString + } + + // [20.10, 20.20, 20.30, 20.31, 20.34, 20.39 ] + type record NameAddr { + DisplayName displayName optional, + SipUrl addrSpec + } + + // [20.10, 20.20, 20.31, 20.39 ] + type union Addr_Union { + NameAddr nameAddr, + SipUrl addrSpecUnion // STS: "Union" added to filed name to avoid dangerous name equivalence with 2nd NameAddr field + } + + // [20.10 ] + type record ContactAddress { + Addr_Union addressField, + SemicolonParam_List contactParams optional + } + + // [20.10 ] + type set of ContactAddress ContactAddress_List; // 1 or more elements + // [20.10 ] + type union ContactBody { + charstring wildcard, + ContactAddress_List contactAddresses + } + + // [20.2, 20.12; RFC2616 14.3, 14.11 ] + type charstring ContentCoding; + + // [20.2, 20.12; RFC2616 14.3, 14.11 ] + type set of ContentCoding ContentCoding_List; + + // [20.7, 20.28; RFC2616 14.35 RFC2617 1.2 ] + type union Credentials { + CommaParam_List digestResponse, + OtherAuth otherResponse + } + + // allow multiple Authorization headers due to RFC3261 ch. 20.7 and 20.28 + type record of Credentials CredentialsList; + + // [20.19, 20.23, 20.33 ] + type charstring DeltaSec; // an external operation can handle this field + // [20.18 ] + type record ErrorInfoBody { + charstring uri, // any URI + SemicolonParam_List genericParams optional + } + + // [20.18 ] + type set of ErrorInfoBody ErrorInfoBody_List; + + // [20.3 RFC2616 14.4 ] + type record LanguageBody { + charstring languageRange, + SemicolonParam_List acceptParam optional + } + + // [20.3 RFC2616 14.4 ] + type set of LanguageBody LanguageBody_List; + + // [20.13; RFC2616 14.12 ] + type charstring LanguageTag; + + // [20.13; RFC2616 14.12 ] + type set of LanguageTag LanguageTag_List; + + // [20.5 ] + type set of charstring Method_List; + + // [20.29, 20.32, 20.37, 20.40 ] + type charstring OptionTag; + + // [20.29, 20.32, 20.37, 20.40 ] + type set of OptionTag OptionTag_List; + + // [20.7, 20.27, 20.28, 20.44 ; RFC2616 14.33, 14.47; RFC2617 1.2 ] + type record OtherAuth { + charstring authScheme, + CommaParam_List authParams + } + + type record Payload { + integer payloadlength, + charstring payloadvalue + } + + // [20.30,20.34 ] + type record RouteBody { + NameAddr nameAddr, + SemicolonParam_List rrParam optional + } + + // [20.30,20.34 ] + type record of RouteBody RouteBody_List; + + // [20.42 ] + type record SentProtocol { + charstring protocolName, + charstring protocolVersion, + charstring transport + } + + // [20.35, 20.41; RFC2616 14.43 ] + type charstring ServerVal; + + // [20.35, 20.41; RFC2616 14.43 ] + type set of ServerVal ServerVal_List; + + // [20.38 ] + type record TimeValue { + integer majorDigit, // represented as an integer + integer minorDigit optional // represented as an integer + } + + // [20.42 ] + type record ViaBody { + SentProtocol sentProtocol, + HostPort sentBy, + SemicolonParam_List viaParams optional + } + + // [20.42 ] + type record of ViaBody ViaBody_List; + + // [20.43 ] + type union WarnAgent { + HostPort hostPort, + charstring pseudonym + } + + // [20.43 ] + type record WarningValue { + integer warnCode, // represented as an integer + WarnAgent warnAgent, + charstring warnText + } + + // [20.43 ] + type set of WarningValue WarningValue_List; + + type Addr_Union PAssertedIDValue; + + type record of PAssertedIDValue PAssertedIDValue_List; + + type charstring PAssertedServiceValue; + + type Addr_Union PPreferredIDValue; + + type record of PPreferredIDValue PPreferredIDValue_List; + + type charstring PrivacyValue; + + type record of PrivacyValue PrivacyValue_List; + + type set of FcValue FcValue_List; + type record FcValue { + charstring wildcard(c_WILDCARD), + SemicolonParam_List fcParams optional + } + + + } // end group TokensType + + + group HeaderFieldTypes // Header Fields + { + group CommonHeaderFieldTypes { + // [20.1, RFC2616 14.1 ] + type record Accept { + FieldName fieldName (ACCEPT_E) , + AcceptBody_List acceptArgs optional + } + + // [20.2, RFC2616 14.3 ] + type record AcceptEncoding { + FieldName fieldName (ACCEPT_ENCODING_E) , + ContentCoding_List contentCoding optional + } + + // [20.3, RFC2616 14.4 ] + type record AcceptLanguage { + FieldName fieldName (ACCEPT_LANGUAGE_E) , + LanguageBody_List languageBody optional + } + + // [20.4 ] + type record AlertInfo { + FieldName fieldName (ALERT_INFO_E) , + AlertInfoBody_List alertInfoBody optional + } + + // [20.5 ] + type record Allow { + FieldName fieldName (ALLOW_E) , + Method_List methods optional + } + + // [20.6 ] + type record AuthenticationInfo { + FieldName fieldName (AUTHENTICATION_INFO_E) , + CommaParam_List ainfo + } + + // [20.7 RFC2617 3.2.2 ] + type record Authorization { + FieldName fieldName (AUTHORIZATION_E) , + CredentialsList body // changed from Credentials to allow multiple Authorization headers + } + + // [20.8 ] + type record CallId { + FieldName fieldName (CALL_ID_E) , + CallidString callid + } + + // [20.9 ] + type record CallInfo { + FieldName fieldName (CALL_INFO_E) , + CallInfoBody_List callInfoBody optional + } + + // [20.10 ] + type record Contact { + FieldName fieldName (CONTACT_E) , + ContactBody contactBody + } + + // [20.11 ] + type record ContentDisposition { + FieldName fieldName (CONTENT_DISPOSITION_E) , + charstring dispositionType, + SemicolonParam_List dispositionParams optional + } + + // [20.12 RFC2616 14.11 ] + type record ContentEncoding { + FieldName fieldName (CONTENT_ENCODING_E) , + ContentCoding_List contentCoding + } + + // [20.13 RFC2616 14.12 ] + type record ContentLanguage { + FieldName fieldName (CONTENT_LANGUAGE_E) , + LanguageTag_List languageTag + } + + // [20.14 ] + type record ContentLength { + FieldName fieldName (CONTENT_LENGTH_E) , + integer len // this field is represented as an integer + } + + // [20.15 ] + type record ContentType { + FieldName fieldName (CONTENT_TYPE_E) , + charstring mTypeSubtype , + SemicolonParam_List mParams optional + } + + // [20.16 ] + type record CSeq { + FieldName fieldName (CSEQ_E) , + integer seqNumber, // this field is represented as an integer + charstring method + } + + // [20.17 ] + type record Date { + FieldName fieldName (DATE_E) , + charstring sipDate + } + + // [20.18 ] + type record ErrorInfo { + FieldName fieldName (ERROR_INFO_E) , + ErrorInfoBody_List errorInfo optional + } + + // [20.19 ] + type record Expires { + FieldName fieldName (EXPIRES_E) , + DeltaSec deltaSec + } + + //[6809] + type record FeatureCaps { + FieldName fieldName(FEATURE_CAPS_E), + FcValue_List fcValues + } + + // [20.20 ] + type record From { + FieldName fieldName (FROM_E) , + Addr_Union addressField, + SemicolonParam_List fromParams optional + } + + // [2616] + type record Host { + FieldName fieldName(HOST_E), + charstring host, // an empty value is represented by the empty charstring "" + integer portField optional + } + + // [20.21 ] + type record InReplyTo { + FieldName fieldName (IN_REPLY_TO_E) , + CallidString_List callids + } + + // [20.22 ] + type record MaxForwards { + FieldName fieldName (MAX_FORWARDS_E) , + integer forwards // this field is represented as an integer + } + + // [20.23 ] + type record MinExpires { + FieldName fieldName (MIN_EXPIRES_E) , + DeltaSec deltaSec + } + + // [20.24 RFC2616 19.4.1 ] + type record MimeVersion { + FieldName fieldName (MIME_VERSION_E) , + integer majorNumber, // this field is represented as an integer + integer minorNumber // this field is represented as an integer + } + + // [20.25 ] + type record Organization { + FieldName fieldName (ORGANIZATION_E) , + charstring organization + } + + // [20.26 ] + type record Priority { + FieldName fieldName (PRIORITY_E) , + charstring priorityValue + } + + // [20.27 RFC2616 14.33 RFC2617 1.2 ] + type record ProxyAuthenticate { + FieldName fieldName (PROXY_AUTHENTICATE_E) , + Challenge challenge + } + + // [20.28 RFC2616 14.35 RFC2617 1.2 ] + type record ProxyAuthorization { + FieldName fieldName (PROXY_AUTHORIZATION_E) , + CredentialsList + credentials // changed from Credentials to allow multiple Authorization headers + } + + // [20.29 ] + type record ProxyRequire { + FieldName fieldName (PROXY_REQUIRE_E) , + OptionTag_List optionsTags + } + + // [20.30 ] + type record RecordRoute { + FieldName fieldName (RECORD_ROUTE_E) , + RouteBody_List routeBody + } + + type set of InfoPackage_Type InfoPackage_List; + + type record InfoPackage_Type { + charstring infoPackageName, + SemicolonParam_List infoPackageParams optional + + } + + //[6086] + type record RecvInfo { + FieldName fieldName(RECV_INFO_E), + InfoPackage_List infoPackageList + } + + //[6086] + type record InfoPackage { + FieldName fieldName(INFO_PACKAGE_E), + InfoPackage_Type infoPackageType + } + + // [20.31 ] + type record ReplyTo { + FieldName fieldName (REPLY_TO_E) , + Addr_Union addressField, + SemicolonParam_List replyToParams optional + } + + // [20.32 ] + type record Require { + FieldName fieldName (REQUIRE_E) , + OptionTag_List optionsTags + } + + // [20.33 ] + type record RetryAfter { + FieldName fieldName (RETRY_AFTER_E) , + DeltaSec deltaSec, + charstring comment optional, + SemicolonParam_List retryParams optional + } + + // [20.34 ] + type record Route { + FieldName fieldName (ROUTE_E) , + RouteBody_List routeBody + } + + // [20.35 RFC2616 14.38 ] + type record Server { + FieldName fieldName (SERVER_E) , + ServerVal_List serverBody + } + + // [20.36 ] + type record Subject { + FieldName fieldName (SUBJECT_E) , + charstring summary + } + + // [20.37 ] + type record Supported { + FieldName fieldName (SUPPORTED_E) , + OptionTag_List optionsTags optional + } + + // [20.38 ] + type record Timestamp { + FieldName fieldName (TIMESTAMP_E) , + TimeValue timeValue optional, + TimeValue delay optional + } + + // [20.39 ] + type record To { + FieldName fieldName (TO_E) , + Addr_Union addressField, + SemicolonParam_List toParams optional + } + + // [20.40 ] + type record Unsupported { + FieldName fieldName (UNSUPPORTED_E) , + OptionTag_List optionsTags + } + + // Undefined header field + type record UndefinedHeader { + charstring headerName, + charstring headerValue + } + + type set of UndefinedHeader UndefinedHeader_List; + + // [20.41 RFC2616 14.43 ] + type record UserAgent { + FieldName fieldName (USER_AGENT_E) , + ServerVal_List userAgentBody + } + + // [20.42 ] + type record Via { + FieldName fieldName (VIA_E) , + ViaBody_List viaBody + } + + // [20.43 ] + type record Warning { + FieldName fieldName (WARNING_E) , + WarningValue_List warningValue + } + + // [20.44 RFC2616 14.47 RFC2617 1.2 ] + type record WwwAuthenticate { + FieldName fieldName (WWW_AUTHENTICATE_E) , + Challenge challenge + } + + } // end group CommonHeaderFieldTypes + group RFC3262HeaderFieldTypes { + // [3262/7.1 ] + type record RSeq { + FieldName fieldName (RSEQ_E) , + integer responseNum + } + + // [3262/7.2 ] + type record RAck { + FieldName fieldName (RACK_E) , + integer responseNum, + integer seqNumber, + charstring method + } + + } // end group RFC3262HeaderFieldTypes + + group RFC3265HeaderFieldTypes { + // [3265/7.2 ] + type record AllowEvents { + FieldName fieldName (ALLOW_EVENTS_E) , + EventType_List eventTypes + } + + type set of EventType EventType_List; + type charstring EventType; + + // [3265/7.2 ] + type record Event { + FieldName fieldName (EVENT_E) , + EventType eventType, + SemicolonParam_List eventParams optional + } + + // [3265/7.2 ] + type record SubscriptionState { + FieldName fieldName (SUBSCRIPTION_STATE_E) , + SubState subState, + SemicolonParam_List substateParams optional + } + + type charstring SubState; + + } // end group RFC3265HeaderFieldTypes + + group RFC3313HeaderFieldTypes { + // [3313/5 ] + type record PMediaAuthorization { + FieldName fieldName (P_MEDIA_AUTHORIZATION_E) , + PMediaAuthorization_List pMediaAuthorizations + } + + type charstring PMediaAuthValue; // HEXDIG "0"-"9", "A"-"F" + type record of PMediaAuthValue PMediaAuthorization_List; + + + } // end group RFC3265HeaderFieldTypes + + group RFC3323HeaderFieldTypes { + // [3323 ] + type record Privacy { + FieldName fieldName (PRIVACY_E) , + PrivacyValue_List privValueList + } + + } // end group RFC3323HeaderFieldTypes + + group RFC3325HeaderFieldTypes { + // [3325 ] + type record PAssertedID { + FieldName fieldName (P_ASSERTED_ID_E) , + PAssertedIDValue_List pAssertedIDValueList + } + + // [3325 ] + type record PPreferredID { + FieldName fieldName (P_PREFERRED_ID_E) , + PPreferredIDValue_List pPreferredIDValueList + } + // draft-drage-sipping-service-identification-01 (July 2007) + type record PPreferredService { + FieldName fieldName (P_PREFERRED_SERVICE_E) , + charstring serviceId + } + + + } // end group RFC3325HeaderFieldTypes + + group RFC3326HeaderFieldTypes { + // [3326 ] + type record of ReasonValue ReasonValues; + + type record ReasonValue { + charstring token, + SemicolonParam_List reasonParams optional + } + + type record Reason { + FieldName fieldName (REASON_E) , + ReasonValues reasonValues + } + + } // end group RFC3326HeaderFieldTypes + + group RFC3327HeaderFieldTypes { + // [3327 ] + type record Path { + FieldName fieldName (PATH_E) , + PathValues pathValues + } + + type record of PathValue PathValues; + + type record PathValue { + NameAddr nameAddr, + SemicolonParam_List rrParam optional + } + + } // end group RFC3515HeaderFieldTypes + + + group RFC4488HeaderFieldTypes { + // [4488 ] + type record ReferSub { + FieldName fieldName (REFER_SUB_E) , + boolean referSubValue, + SemicolonParam_List referSubParams optional + } + + } // end group RFC4488HeaderFieldTypes + + group RFC3329HeaderFieldTypes { + // [RFC3329/2.2 ] + type record SecurityMechanism { + charstring mechName, + SemicolonParam_List mechParams optional + } + + type set of SecurityMechanism SecurityMechanism_List; + + type record SecurityClient { + FieldName fieldName (SECURITY_CLIENT_E) , + SecurityMechanism_List securityMech + } + + type record SecurityServer { + FieldName fieldName (SECURITY_SERVER_E) , + SecurityMechanism_List securityMech + } + + type record SecurityVerify { + FieldName fieldName (SECURITY_VERIFY_E) , + SecurityMechanism_List securityMech + } + + } // end group RFC3329HeaderFieldTypes + + group RFC3455HeaderFieldTypes { + type record of NameAddrParam NameAddrParam_List; + + type record NameAddrParam { + NameAddr nameAddr, + SemicolonParam_List genericParams optional + } + // [3455/5.1 ] + type record PAssociatedURI { + FieldName fieldName (P_ASSOCIATED_URI_E) , + NameAddrParam_List nameAddrList + } + // [3455/5.2 ] + type record PCalledPartyID { + FieldName fieldName (P_CALLED_PARTY_E) , + NameAddrParam nameAddParams + } + + type record of VnetworkSpec VnetworkSpec_List; + + type record VnetworkSpec { + charstring vNetworkSpecToken, + SemicolonParam_List genericParams optional + } + + // [3455/5.3 ] + type record PVisitedNetworkID { + FieldName fieldName (P_VISITED_NETWORK_E) , + VnetworkSpec_List vNetWorkSpec + } + + // [3455/5.4 ] + type record PAccessNetworkInfo { + FieldName fieldName (P_ACCESS_NETWORK_INFO_E) , + charstring accessType, + SemicolonParam_List genericParams optional + } + + // [3455/5.5 ] + type record PChargingFunctionAddresses { + FieldName fieldName (P_CHARGING_FUNCTION_ADDRESSES_E) , + SemicolonParam_List chargeAddrParams optional + } + + // [3455/5.6 ] + type record PChargingVector { + FieldName fieldName (P_CHARGING_VECTOR_E) , + charstring icidValue, + SemicolonParam_List chargeParams optional + } + + } // end group RFC33455HeaderFieldTypes + + group RFC3515HeaderFieldTypes { + // [3515 ] + type record ReferTo { + FieldName fieldName (REFER_TO_E) , + NameAddr nameAddr, + SemicolonParam_List referToParams optional + } + + } // end group RFC3515HeaderFieldTypes + + group RFC3608HeaderFieldTypes { + // [3608 ] + type record ServiceRoute { + FieldName fieldName (SERVICE_ROUTE_E) , + RouteBody_List routeBody + } + + } // end group RFC33608HeaderFieldTypes + + + group RFC3841HeaderFieldTypes { + // [3841 ] + type record AcceptContact { + FieldName fieldName (ACCEPT_CONTACT_E) , + AcRcValue_List acValues + } + + type set of AcRcValue AcRcValue_List; + + type record AcRcValue { + charstring wildcard (c_WILDCARD) , + SemicolonParam_List acRcParams optional + } + // [RFC 3841 ] + type charstring Directive; + type set of Directive Directive_List; + type record RequestDisposition { + FieldName fieldName (REQUEST_DISPOSITION_E) , + Directive_List directives + } + + + } // end group RFC3841HeaderFieldTypes + + group RFC3891HeaderFieldTypes { + // [3891 ] + type record Replaces { + FieldName fieldName (REPLACES_E) , + CallidString callid, + SemicolonParam_List replacesParams optional + } + + } // end group RFC3891HeaderFieldTypes + + group RFC3892HeaderFieldTypes { + // [3892 ] + type record ReferredBy { + FieldName fieldName (REFERRED_BY_E) , + NameAddr nameAddr, + SemicolonParam_List referredbyIdParams optional + } + + } // end group RFC3892HeaderFieldTypes + + group RFC4028HeaderFieldTypes { + // [4028 ] + type record MinSE { + FieldName fieldName (MIN_SE_E) , + DeltaSec deltaSec, + SemicolonParam_List minSeParam optional + } + // [4028 ] + type record SessionExpires { + FieldName fieldName (SESSION_EXPIRES_E) , + DeltaSec deltaSec, + SemicolonParam_List seParam optional + } + + } // end group RFC4028HeaderFieldTypes + + group RFC4244HeaderFieldTypes { + // [4244 ] + type record HistoryInfo { + FieldName fieldName (HISTORY_INFO_E) , + HistoryInfo_List historyInfoList + } + + type record of HistoryInfoEntry HistoryInfo_List; + + type record of integer IntegerList; + + type record HistoryInfoEntry { + NameAddr nameAddr, + IntegerList hiIndex optional, + SemicolonParam_List hiExtention optional + } + + type record of charstring StringList; + + } // end group RFC4244HeaderFieldTypes + + group RFC5009PEarlyMediaHeader { + // [5009 ] + type record PEarlyMedia { + FieldName fieldName (P_EARLY_MEDIA_E) , + EM_Param_List em_param + } + type charstring EM_Param; + type set of EM_Param EM_Param_List; + + } // end group RFC5009PEarlyMediaHeader + + // http://tools.ietf.org/html/draft-johnston-sipping-cc-uui-07, expires 16.Aug.2009 + // Transporting User to User Call Control Information in SIP for ISDN Interworking + // type definition of SIP header mechanism + group UserToUser_PreliminaryRFCDraft { + type record UserToUser { + FieldName fieldName (USER_TO_USER_E) , + charstring uuiData length(256), + /*length limitation due to ISDN, max of allowed 128 hex digits are represented by 256 characters*/ + GenericParam uuiParam + } + + + } // end group UserToUser_PreliminaryRFCDraft + + type record PAssertedService { + FieldName fieldName (P_ASSERTED_SERVICE_E) , + PAssertedServiceValue pAssertedServiceValue + } + + group RFC6442GeolocationConveyance { + // [6442 ] + type record Geolocation { + // RFC6442 clause 4.1 + FieldName fieldName (GEOLOCATION_E) , + SipUrl addrSpec, + SemicolonParam_List geolocParam optional + } + type enumerated GeolocationRoutingState { + GEOLOCATION_ROUTING_YES_E, GEOLOCATION_ROUTING_NO_E, GEOLOCATION_ROUTING_OTHER_E + } + type record GeolocationRouting { + // RFC6442 clause 4.2 + FieldName fieldName (GEOLOCATION_ROUTING_E) , + GeolocationRoutingState state, + GenericParam genericValue optional + } + + } // end group RFC6442GeolocationConveyance + + type charstring SessIdString length(32); + + type record SessionId { + FieldName fieldName (SESSION_ID_E) , + SessIdString sessid, + GenericParam sessidParam optional + } + + type charstring EntityTag; + + type record SIP_ETag { + FieldName fieldName (SIP_ETAG_E) , + EntityTag entityTag + } + + type record SIP_If_Match { + FieldName fieldName (SIP_IF_MATCH_E) , + EntityTag entityTag + } + + // RFC4412 + type record ResourcePriority { + FieldName fieldName (RESOURCE_PRIORITY_E) , + ResourcePriority_List resourcePriorityList + } + type set of R_Value ResourcePriority_List; + type record R_Value { + charstring namespace, + charstring rPriority + } + + // RFC5373 + type record AnswerMode { + FieldName fieldName (ANSWER_MODE_E), + AnswerMode_Value answerMode_Value, + SemicolonParam_List answerModeParams optional + } + type record PrivAnswerMode { + FieldName fieldName (PRIV_ANSWER_MODE_E), + AnswerMode_Value answerMode_Value, + SemicolonParam_List answerModeParams optional + } + type charstring AnswerMode_Value; + + // RFC4538 + type record TargetDialog { + FieldName fieldName (TARGET_DIALOG_E), + CallidString callid, + TdParam tdParam optional + } + type record TdParam { + charstring remoteParam optional, + charstring localParam optional, + SemicolonParam_List genericParams optional + } + + // RFC4964 + type record PAnswerState { + FieldName fieldName (P_ANSWER_STATE_E), + charstring answerType, + SemicolonParam_List genericParams optional + } + + + } // end group HeaderFieldTypes + + group MessageHeaderTypes { + + // Message-Header for all SIP requests and responses [20 ] + type set MessageHeader { + Accept accept optional, + AcceptContact acceptContact optional, + AcceptEncoding acceptEncoding optional, + AcceptLanguage acceptLanguage optional, + AlertInfo alertInfo optional, + Allow allow optional, + AllowEvents allowEvents optional, + // 3265/7.2 + AuthenticationInfo authenticationInfo optional, + // only in responses + Authorization authorization optional, + // only in requests + CallId callId optional, + // optional only in Invalid test cases mandatory otherwise + CallInfo callInfo optional, + Contact contact optional, + // optional in response and all requests except INVITE where mandatory + ContentDisposition contentDisposition optional, + ContentEncoding contentEncoding optional, + ContentLanguage contentLanguage optional, + ContentLength contentLength optional, + // optional in responses and all requests except ACK where mandatory + ContentType contentType optional, + CSeq cSeq optional, + // optional only in Invalid test cases mandatory otherwise + Date date optional, + ErrorInfo errorInfo optional, + // only in responses + Event event optional, + // 3265/7.2 + Expires expires optional, + FeatureCaps featureCaps optional, // 6809 + From fromField, + Geolocation geolocation optional, + // 6442 + GeolocationRouting geolocationRouting optional, + // 6442 + HistoryInfo historyInfo optional, + // 4244 + InfoPackage infoPackage optional, + // 6086 + InReplyTo inReplyTo optional, + // only in requests + MaxForwards maxForwards optional, + // mandatory in requests not required in responses! + MimeVersion mimeVersion optional, + MinExpires minExpires optional, + // only in responses + MinSE minSE optional, + // 4028 + Organization organization optional, + PAccessNetworkInfo pAccessNetworkInfo optional, + // 3455 + PAssertedID pAssertedID optional, + // 3325 + PAssertedService pAssertedService optional, + PAssociatedURI pAssociatedURI optional, + // 3455 + Path path optional, + // 3327 + PCalledPartyID pCalledPartyID optional, + // 3455 + PChargingFunctionAddresses pChargingFunctionAddresses optional, + // 3455 + PChargingVector pChargingVector optional, + // 3455 + PEarlyMedia pEarlyMedia optional, + // 5009 + PMediaAuthorization pMediaAuthorization optional, + // 3313 + PPreferredID pPreferredID optional, + // 3325 + PPreferredService pPreferredService optional, + // draft-drage-sipping-service-identification-01 (July 2007) + Priority priority optional, + // only in requests + Privacy privacy optional, + // 3323 + ProxyAuthenticate proxyAuthenticate optional, + // only in responses + ProxyAuthorization proxyAuthorization optional, + // only in requests + ProxyRequire proxyRequire optional, + // only in requests + PVisitedNetworkID pVisitedNetworkID optional, + // 3455 + RAck rAck optional, + // 3262/7.1 + RSeq rSeq optional, + // 3262/7.1 + Reason reason optional, + // 3326 + RecordRoute recordRoute optional, + RecvInfo recvInfo optional, + // 6086 + RequestDisposition requestDisposition optional, + // 3841 + ReferredBy referredBy optional, + // 3892 - REFER method + ReferTo referTo optional, + // 3515 - REFER method + ReferSub referSub optional, + // 4488 - REFER method + Replaces replaces optional, + // 3891 + ReplyTo replyTo optional, + // optional in responses and INVITE requests + Require require optional, + RetryAfter retryAfter optional, + // only in responses + Route route optional, + // only in requests + SecurityClient securityClient optional, + // 3329 + SecurityServer securityServer optional, + // 3329 + SecurityVerify securityVerify optional, + // 3329 + Server server optional, + // only in responses + ServiceRoute serviceRoute optional, + // 3608 + SessionExpires sessionExpires optional, + // 4028 + SessionId sessionId optional, + SIP_ETag sipETag optional, + SIP_If_Match sipIfMatch optional, + Subject subject optional, + // only in requests + SubscriptionState subscriptionState optional, + // 3265/7.2 + Supported supported optional, + Timestamp timestamp optional, + To toField, + Unsupported unsupported optional, + // only in responses + UserToUser userToUser optional, + UserAgent userAgent optional, + Via via, + Warning warning optional, + WwwAuthenticate wwwAuthenticate optional, + ResourcePriority resourcePriority optional, + // RFC4412 + AnswerMode answerMode optional, + // RFC5373 + PrivAnswerMode privAnswerMode optional, + // RFC5373 + TargetDialog targetDialog optional, + // RFC4538 + PAnswerState pAnswerState optional, + // RFC4964 + // only in responses + UndefinedHeader_List undefinedHeader_List optional + } + + + } // end group MessageHeaderTypes + + group StartLineTypes { + // Request-Line [7.1 ] + type record RequestLine { + Method method, + SipUrl requestUri, + charstring sipVersion + } + + // Status-Line [7.2 ] + type record StatusLine { + charstring sipVersion, + integer statusCode, + charstring reasonPhrase + } + + + } // end group StartLineTypes + + + group otherTypes { + + type record SipUserProfile { + /** + * @desc integer for the userprofile identifier + */ + integer id, + /** + * @desc integer for Port number to exchange SIP messages + */ + integer currPort, + /** + * @desc charstring for IP address to exchange SIP messages + */ + charstring currIpaddr, + /** + * @desc integer for Port number to exchange SIP messages + */ + integer contactPort, + /** + * @desc charstring for IP address to exchange SIP messages + */ + charstring contactIpaddr, + /** + * @desc charstring for IP address used by the TS to exchange media streams + */ + charstring bearerIpaddr, + /** + * @desc charstring for identity of the tester local domain + */ + charstring homeDomain, + /** + * @desc charstring for identity of the tester local user + */ + charstring publUsername, + /** + * @desc charstring for RFC 2617 3.2.1 qop options: Quoted string of one or more tokens indicating the "quality of protection" values supported by the server. The value "auth" indicates authentication; the value "auth-int" indicates authentication with integrity protection. + */ + charstring qop, + /** + * @desc charstring for RFC 2617 3.2.2 username for authentication The name of user in the specified realm + */ + charstring privUsername, + /** + * @desc charstring for RFC 2617 3.2.2.2 passwd: A known shared secret, the password of user of the specified username + */ + charstring passwd, + /** + * @desc charstring for registrar domain for authentication and request line + */ + charstring registrarDomain + } + + + + } // end group otherTypes + + + } // end group Subtypes + + + + group MSGtypes { + + group RequestTypes { + // [7.1 ] + /** + * @desc generic type of a SIP request message + * @member statusLine contains a method name, a Request-URI, and the protocol version + * @member msgHeader include all possible header fields that are allowed to be present according to RFCs and other standards + * @member messageBody depends on the request method, includes e.g. SDP message. + * @member payload contains the whole message as it has been received in its text format + */ + type record Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } + + // Note: the introduction of the following specific types is to enable better means for logging + // on the other side the generic type is useful for functions dealing with multiple SIP message types + type record REGISTER_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } + + type record INVITE_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } + + type record OPTIONS_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } + + type record BYE_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } + + type record CANCEL_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } + + type record ACK_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } + + // [3262/7.1 ] + type record PRACK_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } + + // [3265/7.1 ] + type record NOTIFY_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } + + // [3265/7.1 ] + type record SUBSCRIBE_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } + + // [3903/11.1 ] + type record PUBLISH_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } + + // [3311/7 ] + type record UPDATE_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } + + type record REFER_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } + + type record MESSAGE_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } + + type record INFO_Request { + RequestLine requestLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } + + type union RequestUnion { + REGISTER_Request Register, + INVITE_Request Invite, + OPTIONS_Request Options, + BYE_Request Bye, + CANCEL_Request Cancel, + ACK_Request Ack, + PRACK_Request Prack, + NOTIFY_Request Notify, + SUBSCRIBE_Request Subscribe, + PUBLISH_Request Publish, + UPDATE_Request Update, + REFER_Request Refer, + MESSAGE_Request Message, + INFO_Request Info// [2976 ] + } + + } // end group RequestTypes + + group ResponseTypes { + // [7.2 ] + /** + * @desc generic type of a SIP response message + * @member statusLine consists of the protocol version followed by a numeric Status-Code and its associated textual phrase + * @member msgHeader include all possible header fields that are allowed to be present according to RFCs and other standards + * @member messageBody depends on the response method, includes e.g. SDP message. + * @member payload contains the whole message as it has been received in its text format + */ + type record Response { + StatusLine statusLine, + MessageHeader msgHeader, + MessageBody messageBody optional, + Payload payload optional + } + + } // end group ResponseTypes + + // This MSG type is defined for sending synctactic variations, ans syntactically + // erroneous messages, and receving messages failed parsing. + group SyntacticTypes { + type charstring Raw; + + } // end group SyntacticTypes + + + // This type is defined for particular SIP message body types like SDP + } // end group MSGTypes + + } // end group Types +} +with { + encode "SIPCodec"; variant ""; +} // end module LibSip_TypesAndValues diff --git a/ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn b/ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn new file mode 100755 index 0000000..7f1d2b8 --- /dev/null +++ b/ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn @@ -0,0 +1,48 @@ +/** + * @author STF 435, 471 + * @version $Id$ + * @desc This module provides the functions used by the test component + * for SIP-SMS over IMS as specified in 3GPP 24-341 tests. + * This module is part of LibSipV3. + */ +module LibSip_SMSFunctions { + import from LibSip_SMSTypesAndValues all; + + function f_IA5_2oct( + charstring p_ASCII_String + ) return octetstring { + var integer i; + var integer j; + var integer v_Length := lengthof(p_ASCII_String); + var integer v_Temp; + var octetstring v_Noctets := ''O; + var bitstring v_TempBitSrc := ''B; + var bitstring v_TempBitDes := ''B; + + if ((v_Length <= 0) or (v_Length > 160) or (((v_Length * 7) mod 8) != 0)) { + log("*** " & __SCOPE__ & "INFO: Invalid value of input string length ***"); + } + + for (i := 0; i < v_Length; i := i + 1) { + v_Temp := char2int(p_ASCII_String[i]); + v_TempBitSrc := int2bit(v_Temp, 8); + + for (j := 1; j <= 7; j := j + 1) { + + v_TempBitDes := v_TempBitSrc[8 - j] & v_TempBitDes; + + if (((7 * i + j) mod 8) == 0) { + + v_Noctets := v_Noctets & bit2oct(v_TempBitDes); + v_TempBitDes := ''B; + } + } + } + + return v_Noctets; + } // f_IA5_2oct + + external function fx_GetSC_TimeStamp( + integer p_TimeZone + ) return TP_ServiceCentreTimeStamp_Type; +} // End of module LibSip_SMSFunctions \ No newline at end of file diff --git a/ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn b/ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn new file mode 100755 index 0000000..ba48241 --- /dev/null +++ b/ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn @@ -0,0 +1,304 @@ +/** + * @author STF 435, STF 471 + * @version $Id$ + * @desc This module provides the types used by the test component + * for SIP-SMS over IMS as specified in 3GPP 24-341 tests. + * This module is part of LibSipV3. + */ +module LibSip_SMSTemplates { + import from LibCommon_DataStrings all; + import from LibSip_SMSTypesAndValues all; + import from LibSip_SMSFunctions all; + + group SMS_Templates_Group { + + /* Non-SMS Type Constraints */ + template(present) TypeOfNumberingPlan mw_TypeOfNumberingPlanAny := { + extBit := ?, + typeOfNumber := ?, + numberingPlanId := ? + } + + template(value) TypeOfNumberingPlan m_TypeOfNumberingPlan := { + extBit := '1'B, + typeOfNumber := '001'B, // international number + numberingPlanId := + '0001'B // ISDN/telephony numbering plan (Rec. E.164/E.163) + } + + template(present) TypeOfNumberingPlan mw_TypeOfNumberingPlan := mw_TypeOfNumberingPlanAny; + + /* End Non-SMS Type Constraints */ + template(value) RP_OriginatorAddress_dl m_RP_OriginatorAddress_dl := { + spare := omit, + iei := omit, + iel := '06'O, // 6 semi-octets + typeOfNumberingPlan := m_TypeOfNumberingPlan, + digits := '001122'O + } + + template(present) RP_OriginatorAddress_ul mw_RP_OriginatorAddress_ul := { + spare := omit, + iei := omit, + iel := '00'O + } + + template(present) RP_DestinationAddress_ul mw_RP_DestinationAddress_ul := { + spare := omit, + iei := omit, + iel := ?, + typeOfNumberingPlan := mw_TypeOfNumberingPlan, + digits := ? + } + template(omit) RP_DestinationAddress_dl m_RP_DestinationAddress_dl := { + spare := omit, + iei := omit, + iel := '00'O + } + + template(omit) RP_UserData m_RP_UserData_DELIVER( + octetstring p_Digits + ) := { + spare := omit, + iei := omit, + iel := int2oct((153 + lengthof(p_Digits)), 1), + tP_PDU := {SMS_DELIVER := m_SMS_DELIVER(p_Digits)} + } + + template(value) RP_UserData m_RP_UserData_SUBMIT_REPORT := { + spare := '0'B, + iei := c_IEI_RP_UserData, + iel := '0A'O, // the TPDU data length is 10 octets + tP_PDU := {SMS_SUBMIT_REPORT := m_SMS_SUBMIT_REPORT} + } + template(value) RP_UserData m_RP_UserData_STATUS_REPORT( + template(value) TP_MessageReference_Type p_MessageRef, + template(value) TP_Address_Type p_RecipientAddress, + template(value) TP_ServiceCentreTimeStamp_Type p_SCTP + ) modifies m_RP_UserData_SUBMIT_REPORT := { + tP_PDU := {SMS_STATUS_REPORT := m_SMS_STATUS_REPORT(p_MessageRef, p_RecipientAddress, p_SCTP)} + } + + template(present) RP_UserData mw_RP_UserData_SUBMIT := { + spare := omit, + iei := omit, + iel := ?, + tP_PDU := {SMS_SUBMIT := mw_SMS_SUBMIT_VPF_REF} + } + + template(present) RP_UserData mw_RP_UserData_DELIVER_REPORT := { + spare := '0'B, + iei := c_IEI_RP_UserData, + iel := ?, + tP_PDU := {SMS_DELIVER_REPORT := mw_SMS_DELIVER_REPORT} + } + + /* End SM-RP Type Constraints */ + /* SM-RP PDU Constraints */ + template(value) RP_DATA_dl_Type m_RP_DATA_dl_base := { + spare5 := '00000'B, + rP_MessageTypeIndicator := c_MT_RP_DATA_dl, + rP_MessageReference := '00'O, + rP_OriginatorAddress := m_RP_OriginatorAddress_dl, + rP_DestinationAddress := m_RP_DestinationAddress_dl, + rP_UserData := m_RP_UserData_DELIVER('0000'O) + } + + template(value) RP_DATA_dl_Type m_RP_DATA_dl_DELIVER( + octetstring p_Digits + ) modifies m_RP_DATA_dl_base := {rP_UserData := m_RP_UserData_DELIVER(p_Digits)} + + template(value) RP_DATA_dl_Type m_RP_DATA_dl_STATUS_REPORT( + template(value) TP_MessageReference_Type p_MessageRef, + template(value) TP_Address_Type p_RecipientAddress, + template(value) TP_ServiceCentreTimeStamp_Type p_SCTP + ) modifies m_RP_DATA_dl_base := { + rP_UserData := m_RP_UserData_STATUS_REPORT(p_MessageRef, p_RecipientAddress, p_SCTP) + } + + + template(present) RP_DATA_ul_Type mw_RP_DATA_ul_SUBMIT := { + spare5 := '00000'B, + rP_MessageTypeIndicator := c_MT_RP_DATA_ul, + rP_MessageReference := ?, + rP_OriginatorAddress := mw_RP_OriginatorAddress_ul, + rP_DestinationAddress := mw_RP_DestinationAddress_ul, + rP_UserData := mw_RP_UserData_SUBMIT + } + + template(value) RP_ACK_Type m_RP_ACK_SUBMIT_REPORT( + template(value) Oct1 p_msgReference := '00'O + ) := { + spare5 := '00000'B, + rP_MessageTypeIndicator := c_MT_RP_ACK_dl, + rP_MessageReference := p_msgReference, + rP_UserData := m_RP_UserData_SUBMIT_REPORT + } + + template(present) RP_ACK_Type mw_RP_ACK_DELIVER_REPORT := { + spare5 := '00000'B, + rP_MessageTypeIndicator := c_MT_RP_ACK_ul, + rP_MessageReference := ?, + rP_UserData := mw_RP_UserData_DELIVER_REPORT + } + + /* End SM-RP PDU Constraints */ + /* SM-TP Type Constraints */ + template(value) TP_ProtocolIdentifier_Type mw_TP_ProtocolIdentifier := { + pidType := '01'B, + interworking := '0'B, + pidValue := '00000'B + } + + template(value) TP_ProtocolIdentifier_Type m_TP_ProtocolIdentifier := { + pidType := '01'B, + interworking := '0'B, + pidValue := '00000'B + } + + template(value) TP_DataCodingScheme_Type m_TP_DataCodingScheme := { + codingGroup := '0000'B, + codeValue := '0000'B + } + + template(present) TP_Address_Type mw_TP_AddressAny := { + iel := ?, + typeOfNumberingPlan := mw_TypeOfNumberingPlanAny, + digits := * + } + + template(value) TP_Address_Type m_TP_Address( + octetstring p_Digits + ) := { + iel := int2oct(2 * lengthof(p_Digits), 1), + // length is number of useful semi-octets + // as p_digits is declared as octetstring the number must be even + typeOfNumberingPlan := m_TypeOfNumberingPlan, + digits := p_Digits + } + + template(value) TP_ParameterIndicator_Type m_TP_ParameterIndicator := { + extBit1 := '0'B, + spare4 := '0000'B, + tP_UDL := '0'B, + tP_DCS := '0'B, + tP_PID := '1'B + } + + /* End SM-TP Type Constraints */ + /* SM-TP PDU Constraints */ + template(value) SMS_DELIVER_Type m_SMS_DELIVER( + octetstring p_Digits + ) := { + tP_ReplyPath := '0'B, + tP_UserDataHeaderIndicator := '0'B, + tP_StatusReportIndication := '1'B, + spare2 := '00'B, + tP_MoreMessagesToSend := '0'B, + tP_MessageTypeIndicator := c_MT_SMS_DELIVER, + tP_OriginatingAddress := m_TP_Address(p_Digits), + tP_ProtocolIdentifier := m_TP_ProtocolIdentifier, + tP_DataCodingScheme_Type := m_TP_DataCodingScheme, + tP_ServiceCentreTimeStamp := fx_GetSC_TimeStamp(0), // Time Zone 0 assumed + tP_UserDataLength := int2oct(160, 1), + tP_UserData := f_IA5_2oct(c_Fox) + } + + template(present) SMS_DELIVER_REPORT_Type mw_SMS_DELIVER_REPORT := { + spare1 := '0'B, + tP_UserDataHeaderIndicator := '0'B, + spare4 := '0000'B, + tP_MessageTypeIndicator := c_MT_SMS_DELIVER_REPORT, + tP_FailureCause := omit, + tP_ParameterIndicator := ?, + tP_ProtocolIdentifier := mw_TP_ProtocolIdentifier, + tP_DataCodingScheme_Type := *, + tP_UserDataLength := *, + tP_UserData := * + } + + template(present) SMS_SUBMIT_Type mw_SMS_SUBMIT := { + tP_ReplyPath := '0'B, + tP_UserDataHeaderIndicator := '0'B, + tP_StatusReportRequest := '1'B, + tP_ValidityPeriodFormat := '??'B, + tP_RejectDuplicates := '0'B, + tP_MessageTypeIndicator := c_MT_SMS_SUBMIT, + tP_MessageReference := ?, + tP_DestinationAddress := mw_TP_AddressAny, + tP_ProtocolIdentifier := mw_TP_ProtocolIdentifier, + tP_DataCodingScheme_Type := ?, + tP_ValidityPeriod := *, + tP_UserDataLength := int2oct(160, 1), + tP_UserData := + ? // any data will do: 140 octets + } + + template(present) SMS_SUBMIT_Type mw_SMS_SUBMIT_VPF_NP modifies mw_SMS_SUBMIT := { + tP_ValidityPeriodFormat := '00'B, + tP_ValidityPeriod := omit + } + + template(present) SMS_SUBMIT_Type mw_SMS_SUBMIT_VPF_REF modifies mw_SMS_SUBMIT := { + tP_ValidityPeriodFormat := '10'B, + tP_ValidityPeriod := ? + } + + template(present) SMS_SUBMIT_Type mw_SMS_SUBMIT_VPF_ENH modifies mw_SMS_SUBMIT := { + tP_ValidityPeriodFormat := '01'B, + tP_ValidityPeriod := ? + } + + template(present) SMS_SUBMIT_Type mw_SMS_SUBMIT_VPF_ABS modifies mw_SMS_SUBMIT := { + tP_ValidityPeriodFormat := '11'B, + tP_ValidityPeriod := ? + } + + template(value) SMS_SUBMIT_REPORT_Type m_SMS_SUBMIT_REPORT := { + spare1 := '0'B, + tP_UserDataHeaderIndicator := '0'B, + spare4 := '0000'B, + tP_MessageTypeIndicator := c_MT_SMS_SUBMIT_REPORT, + tP_FailureCause := omit, + tP_ParameterIndicator := m_TP_ParameterIndicator, + tP_ServiceCentreTimeStamp := fx_GetSC_TimeStamp(0), // Time Zone 0 assumed + tP_ProtocolIdentifier := m_TP_ProtocolIdentifier, + tP_DataCodingScheme_Type := omit, + tP_UserDataLength := omit, + tP_UserData := omit + } + + template(value) SMS_STATUS_REPORT_Type m_SMS_STATUS_REPORT( + template(value) TP_MessageReference_Type p_MessageRef, + template(value) TP_Address_Type p_RA, + template(value) TP_ServiceCentreTimeStamp_Type p_SCTP + ) := { + // TS 34.229-1 clause A.7.5 + spare1 := '0'B, + tP_UserDataHeaderIndicator := '0'B, + tP_StatusReportQualifier := '0'B, + spare2 := '00'B, + tP_MoreMessagesToSend := '0'B, + tP_MessageTypeIndicator := c_MT_SMS_STATUS_REPORT, + tP_MessageReference := p_MessageRef, + tP_RecipientAddress := p_RA, + tP_ServiceCentreTimeStamp := p_SCTP, + tP_DischargeTime := '00000000000000'H, + tP_Status := { + reserved := '0'B, + status := '0000000'B + }, + tP_ParameterIndicator := m_TP_ParameterIndicator, + tP_ProtocolIdentifier := m_TP_ProtocolIdentifier, + tP_DataCodingScheme_Type := omit, + tP_UserDataLength := omit, + tP_UserData := omit + } + + + + + + /* End SM-TP PDU Constraints */ + } // group SMS_Templates_Group +} // End of module LibSip_SMSTypesAndValues diff --git a/ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn b/ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn new file mode 100755 index 0000000..71ddf4c --- /dev/null +++ b/ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn @@ -0,0 +1,485 @@ +/****************************************************************************** + * @author STF 435, STF471 + * @version $Id$ + * @desc This module contains the type definitions for SMS messages as specified in + * 3GPP 24-011 and 3GPP 23-040 Rel 8 and 9. + * SMS over IMS is specified in 3GPP 24-341. + * This module is part of LibSipV3. + */ +module LibSip_SMSTypesAndValues { + import from LibCommon_DataStrings all; + + group SMS_Declarations { + + const RP_MessageTypeIndicator_Type c_MT_RP_DATA_ul := '000'B; + /* RP_DATA_ul */ + const RP_MessageTypeIndicator_Type c_MT_RP_DATA_dl := '001'B; + /* RP_DATA_dl */ + const RP_MessageTypeIndicator_Type c_MT_RP_ACK_ul := '010'B; + /* RP_ACK_ul */ + const RP_MessageTypeIndicator_Type c_MT_RP_ACK_dl := '011'B; + /* RP_ACK_dl */ + const RP_MessageTypeIndicator_Type c_MT_RP_ERROR_ul := '100'B; + /* RP_ERROR_ul */ + const RP_MessageTypeIndicator_Type c_MT_RP_ERROR_dl := '101'B; + /* RP_ERROR_dl */ + const RP_MessageTypeIndicator_Type c_MT_RP_SMMA := '110'B; + /* RP_SMMA */ + const TP_MessageTypeIndicator_Type c_MT_SMS_DELIVER := '00'B; + /* SMS DELIVER */ + const TP_MessageTypeIndicator_Type c_MT_SMS_DELIVER_REPORT := '00'B; + /* SMS DELIVER REPORT */ + const TP_MessageTypeIndicator_Type c_MT_SMS_STATUS_REPORT := '10'B; + /* SMS STATUS REPORT */ + const TP_MessageTypeIndicator_Type c_MT_SMS_COMMAND := '10'B; + /* SMS COMMAND */ + const TP_MessageTypeIndicator_Type c_MT_SMS_SUBMIT := '01'B; + /* SMS SUBMIT, SMS SUBMIT REPORT */ + const TP_MessageTypeIndicator_Type c_MT_SMS_SUBMIT_REPORT := '01'B; + /* SMS SUBMIT, SMS SUBMIT REPORT */ + const Bit7 c_IEI_RP_UserData := '1000001'B; + /* 24.011 cl. 8.2.5.3 */ + const charstring c_Fox := "The quick brown fox jumps over the lazy dog's back. Kaufen Sie Ihrer Frau vier bequeme Pelze. - 0123456789 - THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG'S BACK."; + + + + type record TypeOfNumberingPlan { + /* 24.008 cl. 10.5.4.7, 10.5.4.9, 10.5.4.13 */ + Bit1 extBit, + /* Extension Bit */ + Bit3 typeOfNumber, + /* Type Of Number */ + Bit4 numberingPlanId /* Numbering Plan Identification */ + } + /* SM-RP Type Declarations */ + type Bit3 RP_MessageTypeIndicator_Type; + /* 24.011 cl. 8.2.2 */ + type Oct1 RP_MessageReference_Type; + /* 24.011 cl. 8.2.3 */ + type record RP_OriginatorAddress_dl { + /* 24.011 cl. 8.2.5.1 */ + Bit1 spare optional, + /* 0 */ + Bit7 iei optional, + /* 0101 1110 */ + Oct1 iel, + /* min value 2 and max value is 11 */ + TypeOfNumberingPlan typeOfNumberingPlan, + /* */ + octetstring digits length(1 .. 10) + } + + type record RP_OriginatorAddress_ul { + /* 24.011 cl. 8.2.5.1 */ + Bit1 spare optional, + /* 0 */ + Bit7 iei optional, + /* 0101 1110 */ + Oct1 iel /* 0 */ + } + + type record RP_DestinationAddress_ul { + /* 24.011 cl. 8.2.5.2 */ + Bit1 spare optional, + /* 0 */ + Bit7 iei optional, + /* 0101 1110 */ + Oct1 iel, + /* min value 2 and max value is 11 */ + TypeOfNumberingPlan typeOfNumberingPlan, + /* */ + octetstring digits length(1 .. 10) + } + type record RP_DestinationAddress_dl { + /* 24.011 cl. 8.2.5.2 */ + Bit1 spare optional, + /* 0 */ + Bit7 iei optional, + /* 0101 1110 */ + Oct1 iel /* 0 */ + } + + type record RP_UserData { + /* 24.011 cl. 8.2.5.3 */ + Bit1 spare optional, + /* 0, present in case of TLV; omit in case of LV */ + Bit7 iei optional, + /* 1000001, present in case of TLV; omit in case of LV */ + Oct1 iel, + /* */ + TP_PDU_Type tP_PDU /* <= 232 octets */ + } + + type record RP_Cause { + /* 24.011 cl. 8.2.5.4 */ + Bit1 spare optional, + /* present in case of TLV; omit in case of LV */ + Bit7 iei optional, + /* present in case of TLV; omit in case of LV */ + Oct1 iel, + /* 2 or 3 */ + Bit1 extBit1, + /* 0 */ + Bit7 causeValue1, + /* Table 8.4/3GPP TS 24.011 */ + Bit1 extBit2, + /* 0 */ + Bit7 causeValue2, + /* Table 8.4/3GPP TS 24.011 */ + Oct1 diagnostic optional /* Parameters included in the return error from MAP */ + } + + /* End SM-RP Type Declarations */ + /* SM-RP PDU Declarations */ + type record RP_DATA_dl_Type { + /* 24.011 cl. 7.3.1.1 + Direction: n -> ue */ + Bit5 spare5, + /* cl. 8.2.2 M V 5 bits */ + RP_MessageTypeIndicator_Type rP_MessageTypeIndicator, + /* cl. 8.2.2 M V 3 bits */ + RP_MessageReference_Type rP_MessageReference, + /* cl. 8.2.3 M LV 1 */ + RP_OriginatorAddress_dl rP_OriginatorAddress, + /* cl. 8.2.5.1 M LV 1-12 octets */ + RP_DestinationAddress_dl rP_DestinationAddress, + /* cl. 8.2.5.2 M LV 1 */ + RP_UserData rP_UserData /* cl. 8.2.5.3 M LV <= 233 octets */ + } + + type record RP_DATA_ul_Type { + /* 24.011 cl. 7.3.1.2 + Direction: ue -> n */ + Bit5 spare5, + /* cl. 8.2.2 M V 5 bits */ + RP_MessageTypeIndicator_Type rP_MessageTypeIndicator, + /* cl. 8.2.2 M V 3 bits */ + RP_MessageReference_Type rP_MessageReference, + /* cl. 8.2.3 M LV 1 */ + RP_OriginatorAddress_ul rP_OriginatorAddress, + /* cl. 8.2.5.1 M LV 1 */ + RP_DestinationAddress_ul rP_DestinationAddress, + /* cl. 8.2.5.2 M LV 1 */ + RP_UserData rP_UserData /* cl. 8.2.5.3 M LV <= 233 octets */ + } + + type record RP_SMMA_Type { + /* 24.011 cl. 7.3.2 + Direction: ue -> n */ + Bit5 spare5, + /* cl. 8.2.2 M V 5 bits */ + RP_MessageTypeIndicator_Type rP_MessageTypeIndicator, + /* cl. 8.2.2 M V 3 bits */ + RP_MessageReference_Type rP_MessageReference /* cl. 8.2.3 M LV 1 */ + } + + type record RP_ACK_Type { + /* 24.011 cl. 7.3.3 + Direction: ue <-> n */ + Bit5 spare5, + /* cl. 8.2.2 M V 5 bits */ + RP_MessageTypeIndicator_Type rP_MessageTypeIndicator, + /* cl. 8.2.2 M V 3 bits */ + RP_MessageReference_Type rP_MessageReference, + /* cl. 8.2.3 M LV 1 */ + RP_UserData rP_UserData optional /* cl. 8.2.5.3 O TLV <= 234 octets */ + } + + type record RP_ERROR_Type { + /* 24.011 cl. 7.3.4 + Direction: ue <-> n */ + Bit5 spare5, + /* cl. 8.2.2 M V 5 bits */ + RP_MessageTypeIndicator_Type rP_MessageTypeIndicator, + /* cl. 8.2.2 M V 3 bits */ + RP_MessageReference_Type rP_MessageReference, + /* cl. 8.2.3 M LV 1 */ + RP_Cause rP_Cause, + /* cl. 8.2.5.4 M LV 2-3 */ + RP_UserData rP_UserData optional /* cl. 8.2.5.3 O TLV <= 234 octets */ + } + + type union RP_PDU_Type { + RP_DATA_dl_Type RP_DATA_dl, + RP_DATA_ul_Type RP_DATA_ul, + RP_SMMA_Type RP_SMMA, + RP_ACK_Type RP_ACK, + RP_ERROR_Type RP_ERROR + } + + /* End SM-RP PDU Declarations */ + /* SM-TP Type Declarations */ + type record TP_Address_Type { + /* 23.040 cl. 9.1.2.5 */ + Oct1 iel, + /* min value 2 and max value is 11 */ + TypeOfNumberingPlan typeOfNumberingPlan, + octetstring digits length(0 .. 10) optional + } + + type Bit2 TP_MessageTypeIndicator_Type; + /* 23.040 cl. 9.2.3.1 */ + type Oct1 TP_MessageReference_Type; + /* 23.040 cl. 9.2.3.6 */ + type Oct1 TP_UserDataLength_Type; + /* 23.040 cl. 9.2.3.16 */ + type record TP_ProtocolIdentifier_Type { + /* 23.040 cl. 9.2.3.9 */ + Bit2 pidType, + /* */ + Bit1 interworking, + /* */ + Bit5 pidValue /* */ + } + + type record TP_DataCodingScheme_Type { + /* 23.040 cl. 9.2.3.10 + 23.040 cl. 4 */ + Bit4 codingGroup, + /* */ + Bit4 codeValue /* */ + } + + type hexstring TP_ServiceCentreTimeStamp_Type length(14); + /* 23.040 cl. 9.2.3.11 */ + type Oct1 TP_ValidityPeriodRelative_Type; + /* 23.040 cl. 9.2.3.12.1 */ + type hexstring TP_ValidityPeriodAbsolute_Type length(14); + /* 23.040 cl. 9.2.3.12.2 */ + type record TP_ValidityPeriodEnhanced_Type { + /* 23.040 cl. 9.2.3.12.3 */ + Bit1 extBit, + /* */ + Bit1 singleShot, + /* */ + Bit3 spare3, + /* */ + Bit3 validityPeriodFormat, + /* */ + Oct6 validityPeriod /* */ + } + + type union TP_ValidityPeriod_Type { + /* 23.040 cl. 9.2.3.3 */ + TP_ValidityPeriodRelative_Type TP_ValidityPeriodRelative, + /* Relative format */ + TP_ValidityPeriodAbsolute_Type TP_ValidityPeriodAbsolute, + /* Absolute format */ + TP_ValidityPeriodEnhanced_Type TP_ValidityPeriodEnhanced /* Enhanced format */ + } + + type record TP_Status_Type { + /* 23.040 cl. 9.2.3.15 */ + Bit1 reserved, + /* */ + Bit7 status /* */ + } + + type Bit8 TP_Command_Type; + /* 23.040 cl. 9.2.3.19 */ + type record TP_ParameterIndicator_Type { + /* 23.040 cl. 9.2.3.27 */ + Bit1 extBit1, + /* */ + Bit4 spare4, + /* */ + Bit1 tP_UDL, + /* */ + Bit1 tP_DCS, + /* */ + Bit1 tP_PID /* */ + } + + /* End SM-TP Type Declarations */ + /* SM-TP PDU Declarations */ + type record SMS_DELIVER_Type { + /* 23.040 cl. 9.2.2.1 + Direction: n -> ue */ + Bit1 tP_ReplyPath, + /* 23.040 cl. 9.2.3.17 */ + Bit1 tP_UserDataHeaderIndicator, + /* 23.040 cl. 9.2.3.23 */ + Bit1 tP_StatusReportIndication, + /* 23.040 cl. 9.2.3.4 */ + Bit2 spare2, + /* */ + Bit1 tP_MoreMessagesToSend, + /* 23.040 cl. 9.2.3.2 */ + TP_MessageTypeIndicator_Type tP_MessageTypeIndicator, + /* 23.040 cl. 9.2.3.1 */ + TP_Address_Type tP_OriginatingAddress, + /* 23.040 cl. 9.1.2.5 */ + TP_ProtocolIdentifier_Type tP_ProtocolIdentifier, + /* 23.040 cl. 9.2.3.9 */ + TP_DataCodingScheme_Type tP_DataCodingScheme_Type, + /* 23.040 cl. 9.2.3.10 */ + TP_ServiceCentreTimeStamp_Type tP_ServiceCentreTimeStamp, + /* 23.040 cl. 9.2.3.11 */ + TP_UserDataLength_Type tP_UserDataLength, + /* 23.040 cl. 9.2.3.16, derived from SUBMIT */ + octetstring tP_UserData length(0 .. 140) optional /* 23.040 cl. 9.2.3.24, derived from SUBMIT */ + } + + type record SMS_DELIVER_REPORT_Type { + /* 23.040 cl. 9.2.2.1a + Direction: ue -> n */ + Bit1 spare1, + /* */ + Bit1 tP_UserDataHeaderIndicator, + /* 23.040 cl. 9.2.3.23 */ + Bit4 spare4, + /* */ + TP_MessageTypeIndicator_Type tP_MessageTypeIndicator, + /* 23.040 cl. 9.2.3.1 */ + Oct1 tP_FailureCause optional, + /* 23.040 cl. 9.2.3.22, provided if RP_ERROR, not if RP_ACK */ + TP_ParameterIndicator_Type tP_ParameterIndicator, + /* 23.040 cl. 9.2.3.27 */ + TP_ProtocolIdentifier_Type tP_ProtocolIdentifier optional, + /* 23.040 cl. 9.2.3.9 */ + TP_DataCodingScheme_Type tP_DataCodingScheme_Type optional, + /* 23.040 cl. 9.2.3.10 */ + TP_UserDataLength_Type tP_UserDataLength optional, + /* 23.040 cl. 9.2.3.16 */ + octetstring tP_UserData length(0 .. 159) optional /* 23.040 cl. 9.2.3.24 */ + } + + type record SMS_SUBMIT_Type { + /* 23.040 cl. 9.2.2.2 + Direction: ue -> n */ + Bit1 tP_ReplyPath, + /* 23.040 cl. 9.2.3.17 */ + Bit1 tP_UserDataHeaderIndicator, + /* 23.040 cl. 9.2.3.23 */ + Bit1 tP_StatusReportRequest, + /* 23.040 cl. 9.2.3.5 */ + Bit2 tP_ValidityPeriodFormat, + /* 23.040 cl. 9.2.3.3 */ + Bit1 tP_RejectDuplicates, + /* 23.040 cl. 9.2.3.25 */ + TP_MessageTypeIndicator_Type tP_MessageTypeIndicator, + /* 23.040 cl. 9.2.3.1 */ + TP_MessageReference_Type tP_MessageReference, + /* 23.040 cl. 9.2.3.6 */ + TP_Address_Type tP_DestinationAddress, + /* 23.040 cl. 9.1.2.5 */ + TP_ProtocolIdentifier_Type tP_ProtocolIdentifier, + /* 23.040 cl. 9.2.3.9 */ + TP_DataCodingScheme_Type tP_DataCodingScheme_Type, + /* 23.040 cl. 9.2.3.10 */ + // one of the subsequent ValidityPeriod solutions has be removed + TP_ValidityPeriod_Type tP_ValidityPeriod optional, + /* 23.040 cl. 9.2.3.12 */ + // TP_ValidityPeriodRelative_Type tP_ValidityPeriodRelative optional, /* 23.040 cl. 9.2.3.12.1 */ + // TP_ValidityPeriodAbsolute_Type tP_ValidityPeriodAbsolute optional, /* 23.040 cl. 9.2.3.12.2 */ + // TP_ValidityPeriodEnhanced_Type tP_ValidityPeriodEnhanced optional, /* 23.040 cl. 9.2.3.12.3 */ + TP_UserDataLength_Type tP_UserDataLength, + /* 23.040 cl. 9.2.3.16 */ + octetstring tP_UserData length(0 .. 140) optional /* 23.040 cl. 9.2.3.24 */ + } + type record SMS_SUBMIT_REPORT_Type { + /* 23.040 cl. 9.2.2.2a + Direction: n -> ue */ + Bit1 spare1, + /* */ + Bit1 tP_UserDataHeaderIndicator, + /* 23.040 cl. 9.2.3.23 */ + Bit4 spare4, + /* */ + TP_MessageTypeIndicator_Type tP_MessageTypeIndicator, + /* 23.040 cl. 9.2.3.1 */ + Oct1 tP_FailureCause optional, + /* 23.040 cl. 9.2.3.22, provided if RP_ERROR, not if RP_ACK */ + TP_ParameterIndicator_Type tP_ParameterIndicator, + /* 23.040 cl. 9.2.3.27 */ + TP_ServiceCentreTimeStamp_Type tP_ServiceCentreTimeStamp, + /* 23.040 cl. 9.2.3.11 */ + TP_ProtocolIdentifier_Type tP_ProtocolIdentifier optional, + /* 23.040 cl. 9.2.3.9 */ + TP_DataCodingScheme_Type tP_DataCodingScheme_Type optional, + /* 23.040 cl. 9.2.3.10 */ + TP_UserDataLength_Type tP_UserDataLength optional, + /* 23.040 cl. 9.2.3.16 */ + octetstring tP_UserData length(0 .. 152) optional /* 23.040 cl. 9.2.3.24 */ + } + + type record SMS_STATUS_REPORT_Type { + /* 23.040 cl. 9.2.2.3 + Direction: n -> ue */ + Bit1 spare1, + /* */ + Bit1 tP_UserDataHeaderIndicator, + /* 23.040 cl. 9.2.3.23 */ + Bit1 tP_StatusReportQualifier, + /* 23.040 cl. 9.2.3.26 */ + Bit2 spare2, + /* */ + Bit1 tP_MoreMessagesToSend, + /* 23.040 cl. 9.2.3.2 */ + TP_MessageTypeIndicator_Type tP_MessageTypeIndicator, + /* 23.040 cl. 9.2.3.1 */ + TP_MessageReference_Type tP_MessageReference, + /* 23.040 cl. 9.2.3.6 */ + TP_Address_Type tP_RecipientAddress, + /* 23.040 cl. 9.1.2.5 */ + TP_ServiceCentreTimeStamp_Type tP_ServiceCentreTimeStamp, + /* 23.040 cl. 9.2.3.11 */ + TP_ServiceCentreTimeStamp_Type tP_DischargeTime, + /* 23.040 cl. 9.2.3.12 */ + TP_Status_Type tP_Status, + /* 23.040 cl. 9.2.3.15 */ + TP_ParameterIndicator_Type tP_ParameterIndicator optional, + /* 23.040 cl. 9.2.3.27 */ + TP_ProtocolIdentifier_Type tP_ProtocolIdentifier optional, + /* 23.040 cl. 9.2.3.9 */ + TP_DataCodingScheme_Type tP_DataCodingScheme_Type optional, + /* 23.040 cl. 9.2.3.10 */ + TP_UserDataLength_Type tP_UserDataLength optional, + /* 23.040 cl. 9.2.3.16 */ + octetstring tP_UserData length(0 .. 143) optional /* 23.040 cl. 9.2.3.24 */ + } + + type record SMS_COMMAND_Type { + /* 23.040 cl. 9.2.2.4 + Direction: ue -> n */ + Bit1 spare1, + /* */ + Bit1 tP_UserDataHeaderIndicator, + /* 23.040 cl. 9.2.3.23 */ + Bit1 tP_StatRptReq, + /* Table 8.4/3GPP TS 24.011 */ + Bit3 spare3, + /* */ + TP_MessageTypeIndicator_Type tP_MessageTypeIndicator, + /* 23.040 cl. 9.2.3.1 */ + TP_MessageReference_Type tP_MessageReference, + /* 23.040 cl. 9.2.3.6 */ + TP_ProtocolIdentifier_Type tP_ProtocolIdentifier, + /* 23.040 cl. 9.2.3.9 */ + TP_Command_Type tP_CommandType, + /* 23.040 cl. 9.2.3.19 */ + TP_MessageReference_Type tP_MessageNumber, + /* 23.040 cl. 9.2.3.18 */ + TP_Address_Type tP_DestinationAddress, + /* 23.040 cl. 9.1.2.5 */ + TP_UserDataLength_Type tP_CommandDataLength, + /* 23.040 cl. 9.2.3.20 (number of octets) */ + octetstring tP_CommandData length(0 .. 156) optional /* 23.040 cl. 9.2.3.21 */ + } + + type union TP_PDU_Type { + SMS_DELIVER_Type SMS_DELIVER, + SMS_DELIVER_REPORT_Type SMS_DELIVER_REPORT, + SMS_SUBMIT_Type SMS_SUBMIT, + SMS_SUBMIT_REPORT_Type SMS_SUBMIT_REPORT, + SMS_STATUS_REPORT_Type SMS_STATUS_REPORT, + SMS_COMMAND_Type SMS_COMMAND + } + + + + /* End SM-TP PDU Declarations */ + } + with { + encode "SMSTypes"; + } // group SMS_Declarations +} // End of module LibSip_SMSTypesAndValues diff --git a/ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn b/ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn new file mode 100755 index 0000000..a4ecf1d --- /dev/null +++ b/ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn @@ -0,0 +1,61 @@ +/** + * @author STF 406, 471 + * @version $Id: LibSip_SimpleMsgSummaryTypes.ttcn 488 2010-11-08 10:17:19Z pintar $ + * @desc This module provides the SMS type system for SIP tests. + * This module is part of LibSipV3. +*/ +module LibSip_SimpleMsgSummaryTypes { + // RFC 3842 + group SMSConstants { + + // IMS ETSI name MWI application + const charstring c_imsEtsiMwiApplication := "application/simple-message-summary"; + + // msg_status line := "Message-Waiting" + const charstring c_messageWaiting := "Message-Waiting"; + + // msg_status line := "Message-Account" + const charstring c_messageAccount := "Message-Account"; + + // msg_summary line := "Voice-Message" + const charstring c_voiceMessage := "Voice-Message"; + + } + + group SMSTypes { + type record SimpleMsgSummary { + // Simple_message_summary + Msg_status_line msg_status_line, + Msg_account msg_account optional, + Msg_summary_line_list msg_summary_line_list optional, + Opt_msg_headers opt_msg_headers optional + } + + type record Msg_status_line { + charstring msg_type, + charstring msg_status + } + + type record Msg_account { + charstring msg_type_account, + charstring account_URI + } + + type set of Msg_summary_line Msg_summary_line_list; + + type record Msg_summary_line { + charstring msg_context_class, + charstring msgs, + charstring urgent_msgs optional + } + + type set of charstring Opt_msg_headers; + + + // type integer msgcount length(1); //msgs and urgent_msgs can be dividet into subtypes + } +} +with { + variant "" + encode "SIPCodec" +} \ No newline at end of file diff --git a/ttcn/patch_sip_titan/LibSip_Steps.ttcn b/ttcn/patch_sip_titan/LibSip_Steps.ttcn new file mode 100755 index 0000000..9fbc7bd --- /dev/null +++ b/ttcn/patch_sip_titan/LibSip_Steps.ttcn @@ -0,0 +1,4925 @@ +/** + * @author STF 346, STF366, STF368, STF369, STF450, STF471 + * @version $Id: LibSip_Steps.ttcn 645 2016-12-01 13:50:32Z pintar $ + * @desc This module provides the functions, altsteps and external functions used + * for SIP-IMS tests. + * This module is part of LibSipV3. +*/ +module LibSip_Steps { + // LibCommon + import from LibCommon_Sync all; + import from LibCommon_VerdictControl all; + // LibSip + import from LibSip_SIPTypesAndValues all; + import from LibSip_SDPTypes all; + import from LibSip_Templates all; + import from LibSip_Interface all; + import from LibSip_PIXITS all; + import from LibSip_XMLTypes all; + import from LibSip_Common all; + + group externalfunctions { + + /** + * @desc External function to return random charstring + */ + external function fx_rndStr( + ) return charstring; + + /** + * @desc External function to return the equivalent string in lower case + */ + external function fx_putInLowercase( + charstring p_string + ) return charstring; + + /** + * @desc External function to get IP address. + */ + external function fx_getIpAddr( + charstring p_host_name + ) return charstring; + + /** + * @desc External function to generate a digest response. + * @reference RFC 2617 HTTP Authentication: Basic and Digest Access Authentication, and RFC 1321 The MD5 Message-Digest Algorithm + * @see RFC 2617, chapter 5 Sample implementation, for example usage, as the signature of calculateDigestResponse is according to the example given in the RFC. + */ + external function fx_calculateDigestResponse( + charstring p_nonce, + charstring p_cnonce, + charstring p_user, + charstring p_realm, + charstring p_passwd, + charstring p_alg, + charstring p_nonceCount, + charstring p_method, + charstring p_qop, + charstring p_URI, + charstring p_HEntity + ) return charstring; + + } + + group ParameterOperations { + + /** + * @desc function to generate a 32 bits random number as a charstring for tag field (used as e.g.: tag in from-header field, or branch parameter in via header) + * @return random value with at least 32 bits of randomness + */ + function f_getRndTag( + ) return charstring { + var charstring v_tag_value; + // tag_value is initialized with a random value with at least 32 bits of randomness + // 4294967296 is a 32 bits integer + v_tag_value := fx_rndStr() & fx_rndStr(); + return (v_tag_value); + } + + /** + * @desc Function to prepare credentials for request that has an empty entity body such as a REGISTER message. + * @param p_userprofile to get important parameters + * @param p_algorithm Algorthm to be used. Default: omit + * @return Credentials field + */ + function f_calculatecCredentials_empty( + in SipUserProfile p_userprofile, + in boolean p_algorithm := false + ) return Credentials { + var Credentials v_result; + + + // RFC 2617 3.2.2 username: + // The name of user in the specified realm. + var charstring v_username := p_userprofile.privUsername; + var charstring v_realm := p_userprofile.registrarDomain; + var charstring v_uri := c_sipScheme & ":" & p_userprofile.registrarDomain; + var CommaParam_List v_digestResponse := {}; + // Construct credentials for an Authorization field of a request. + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "username", + paramValue := { quotedString := v_username } + }); + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "realm", + paramValue := { quotedString := v_realm } + }); + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "uri", + paramValue := { quotedString := v_uri } + }); + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "nonce", + paramValue := { quotedString := "" } + }); // already enclosed to " characters + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "response", + paramValue := { quotedString := "" } + }); // already enclosed to " characters + + if (p_algorithm) { + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "algorithm", + paramValue := { tokenOrHost := PX_AUTH_ALGORITHM } + }); // already enclosed to " characters + } + v_result := {digestResponse := v_digestResponse}; + + return v_result; + } + + + /** + * @desc Function to calculate credentials for request that has an empty entity body such as a REGISTER message. + * @param p_userprofile to get important parameters + * @param p_method (can be "REGISTER", "INVITE",....) + * @param p_challenge parameter from 4xx response + * @return Credentials field + * @verdict + */ + function f_calculatecCredentials( + in SipUserProfile p_userprofile, + in charstring p_method, + in CommaParam_List p_challenge + ) return Credentials { + var Credentials v_result; + var charstring v_nonce := ""; + var charstring v_cnonce := int2str(float2int(int2float(13172657659 - 1317266) * rnd()) + 1317265); + + // RFC 2617 3.2.2 username: + // The name of user in the specified realm. + var charstring v_username := p_userprofile.privUsername; + var charstring v_realm; + + // RFC 2617 3.2.2.2 passwd: + // A known shared secret, the password of user of the specified + // username. + var charstring v_passwd := p_userprofile.passwd; + var charstring v_algorithm; + + // a new pseudo-random cnonce value is used every time + // that assumes it is only used once + const charstring cl_nonceCount := "00000001"; + var charstring v_qop := p_userprofile.qop; + var charstring v_uri := c_sipScheme & ":" & p_userprofile.registrarDomain; + + // MD5 hash of empty entity body. + const charstring cl_hEntity := "d41d8cd98f00b204e9800998ecf8427e"; + var charstring v_response; + var charstring v_opaque; + var CommaParam_List v_digestResponse := {}; + + + // extract nonce, realm, algorithm, and opaque from challenge + v_nonce := f_extractParamValueFromChallenge(p_challenge, "nonce"); + v_realm := f_extractParamValueFromChallenge(p_challenge, "realm"); + v_algorithm := f_extractParamValueFromChallenge(p_challenge, "algorithm"); + v_opaque := f_extractParamValueFromChallenge(p_challenge, "opaque"); + + // calculate a digest response for the Authorize header + v_response := fx_calculateDigestResponse(v_nonce, v_cnonce, v_username, v_realm, v_passwd, v_algorithm, cl_nonceCount, p_method, v_qop, v_uri, cl_hEntity); + + // Construct credentials for an Authorization field of a request. + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "username", + paramValue := { quotedString := v_username } + }); + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "realm", + paramValue := { quotedString := v_realm } + }); + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "nonce", + paramValue := { quotedString := v_nonce } + }); + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "uri", + paramValue := { quotedString := v_uri } + }); + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "response", + paramValue := { quotedString := v_response } + }); + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "algorithm", + paramValue := { tokenOrHost := "md5" } + }); // algorithm is not enclosed to " characters + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "cnonce", + paramValue := { quotedString := v_cnonce } + }); + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "qop", + paramValue := { tokenOrHost := v_qop } + }); // qop + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "nc", + paramValue := { tokenOrHost := cl_nonceCount } + }); // nonceCount + if (v_opaque != "") { + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "opaque", + paramValue := { quotedString := v_opaque } + }); // already enclosed to " characters + } + v_result := {digestResponse := v_digestResponse}; + + return v_result; + } + + /** + * @desc Function to calculate credentials for request that has an empty entity body such as a REGISTER message. NO RESPONSE value to cause an error! + * @param p_userprofile to get important parameters + * @param p_method (can be "REGISTER", "INVITE",....) + * @param p_challenge parameter from 4xx response + * @return Credentials field + * @verdict + */ + function f_calculatecCredentials_wo_response( + in SipUserProfile p_userprofile, + in charstring p_method, + in CommaParam_List p_challenge + ) return Credentials { + var Credentials v_result; + var charstring v_nonce := ""; + var charstring v_cnonce := int2str(float2int(int2float(13172657659 - 1317266) * rnd()) + 1317265); + + // RFC 2617 3.2.2 username: + // The name of user in the specified realm. + var charstring v_username := p_userprofile.privUsername; + var charstring v_realm; + + // RFC 2617 3.2.2.2 passwd: + // A known shared secret, the password of user of the specified + // username. + var charstring v_passwd := p_userprofile.passwd; + var charstring v_algorithm; + + + // a new pseudo-random cnonce value is used every time + // that assumes it is only used once + const charstring cl_nonceCount := "00000001"; + var charstring v_qop := p_userprofile.qop; + var charstring v_uri := c_sipScheme & ":" & p_userprofile.registrarDomain; + + // MD5 hash of empty entity body. + const charstring cl_hEntity := "d41d8cd98f00b204e9800998ecf8427e"; + var charstring v_response; + var charstring v_opaque; + var CommaParam_List v_digestResponse := {}; + + // extract nonce, realm, algorithm, and opaque from challenge + v_nonce := f_extractParamValueFromChallenge(p_challenge, "nonce"); + v_realm := f_extractParamValueFromChallenge(p_challenge, "realm"); + v_algorithm := f_extractParamValueFromChallenge(p_challenge, "algorithm"); + v_opaque := f_extractParamValueFromChallenge(p_challenge, "opaque"); + + // calculate a digest response for the Authorize header + v_response := fx_calculateDigestResponse(v_nonce, v_cnonce, v_username, v_realm, v_passwd, v_algorithm, cl_nonceCount, p_method, v_qop, v_uri, cl_hEntity); + + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "username", + paramValue := { quotedString := v_username } + }); + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "realm", + paramValue := { quotedString := v_realm } + }); + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "nonce", + paramValue := { quotedString := v_nonce } + }); + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "uri", + paramValue := { quotedString := v_uri } + }); + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "algorithm", + paramValue := { tokenOrHost := "md5" } + }); // algorithm is not enclosed to " characters + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "cnonce", + paramValue := { quotedString := v_cnonce } + }); + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "qop", + paramValue := { tokenOrHost := v_qop } + }); // qop + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "nc", + paramValue := { tokenOrHost := cl_nonceCount } + }); // nonceCount + if (v_opaque == "") { + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "opaque", + paramValue := { quotedString := v_opaque } + }); // already enclosed to " characters + } + v_result := {digestResponse := v_digestResponse}; + + return v_result; + } + + /** + * @desc Function to calculate credentials for response 401 - WWW-Authorization + * @param p_qop of the peer UE (alternatively ) + * @param p_authorization parameter from 1st REGISTER request + * @return Credentials field + * @verdict + */ + function f_calculatecChallenge_forWWWAuthorizationBody( + in charstring p_qop, + in Authorization p_authorization + ) return Challenge { + var CommaParam_List v_challenge; + + if (ischosen(p_authorization.body[0].digestResponse)) { + v_challenge := p_authorization.body[0].digestResponse; + } + else { + v_challenge := p_authorization.body[0].otherResponse.authParams; + } + + return (f_calculatecChallenge_forWWWAuthorization(p_qop, v_challenge)); + } + + /** + * @desc Function to calculate credentials for response 401 - WWW-Authorization + * @param p_qop of the peer UE (alternatively ) + * @param p_challenge parameter from 1st REGISTER request + * @return Credentials field + * @verdict + */ + function f_calculatecChallenge_forWWWAuthorization( + in charstring p_qop, + in CommaParam_List p_challenge + ) return Challenge { + var Challenge v_result; + + var charstring v_realm; + + var charstring v_qop := p_qop; + + v_realm := f_extractParamValueFromChallenge(p_challenge, "realm"); + + // Construct credentials for an Authorization field of a request. + v_result := { + digestCln := { + { + id := "realm", + paramValue := { quotedString := v_realm } + }, + { + id := "nonce", + paramValue := { quotedString := "0edff6c521cc3f407f2d9e01cf6ed82b" } + }, + { + id := "algorithm", + paramValue := { tokenOrHost := PX_AUTH_ALGORITHM } + }, // algorithm is not enclosed with " characters + { + id := "ck", + paramValue := { quotedString := "00112233445566778899aabbccddeeff" } + }, + { + id := "ik", + paramValue := { quotedString := "ffeeddccbbaa99887766554433221100" } + }, // already enclosed to " characters + { + /** + * This directive is optional, but is made so only for backward compatibility with RFC 2069 + * it SHOULD be used by all implementations compliant with this version of the Digest scheme + */ + id := "qop", + paramValue := { tokenOrHost := v_qop } + } // qop + } + }; + + return v_result; + } + + /** + * @desc Function to calculate credentials for request that has an empty entity body such as a REGISTER message and at the end put different private name + * @param p_userprofile to get important parameters + * @param p_method (can be "REGISTER", "INVITE",....) + * @param p_challenge parameter from 4xx response + * @return Credentials field + * @verdict + */ + function f_calculatecCredentialsAndChangeUserName( + in SipUserProfile p_userprofile, + in charstring p_method, + in CommaParam_List p_challenge + ) return Credentials { + var Credentials v_result; + var charstring v_nonce := ""; + var charstring v_cnonce := int2str(float2int(int2float(13172657659 - 1317266) * rnd()) + 1317265); + + // RFC 2617 3.2.2 username: + // The name of user in the specified realm. + var charstring v_username := p_userprofile.privUsername; + var charstring v_realm; + + // RFC 2617 3.2.2.2 passwd: + // A known shared secret, the password of user of the specified + // username. + var charstring v_passwd := p_userprofile.passwd; + var charstring v_algorithm; + + + // a new pseudo-random cnonce value is used every time + // that assumes it is only used once + const charstring cl_nonceCount := "00000001"; + var charstring v_qop := p_userprofile.qop; + var charstring v_uri := c_sipScheme & ":" & p_userprofile.registrarDomain; + + + // MD5 hash of empty entity body. + const charstring cl_hEntity := "d41d8cd98f00b204e9800998ecf8427e"; + var charstring v_response; + var charstring v_opaque; + var CommaParam_List v_digestResponse := {}; + + + // extract nonce, realm, algorithm, and opaque from challenge + v_nonce := f_extractParamValueFromChallenge(p_challenge, "nonce"); + v_realm := f_extractParamValueFromChallenge(p_challenge, "realm"); + v_algorithm := f_extractParamValueFromChallenge(p_challenge, "algorithm"); + v_opaque := f_extractParamValueFromChallenge(p_challenge, "opaque"); + + // calculate a digest response for the Authorize header + v_response := fx_calculateDigestResponse(v_nonce, v_cnonce, v_username, v_realm, v_passwd, v_algorithm, cl_nonceCount, p_method, v_qop, v_uri, cl_hEntity); + + // Construct credentials for an Authorization field of a request. + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "username", + paramValue := { quotedString := "DifferentToPrivateUser" } + }); + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "realm", + paramValue := { quotedString := v_realm } + }); + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "nonce", + paramValue := { quotedString := v_nonce } + }); + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "uri", + paramValue := { quotedString := v_uri } + }); + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "response", + paramValue := { quotedString := v_response } + }); + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "algorithm", + paramValue := { tokenOrHost := "md5" } + }); // algorithm is not enclosed to " characters + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "cnonce", + paramValue := { quotedString := v_cnonce } + }); + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "qop", + paramValue := { tokenOrHost := v_qop } + }); // qop + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "nc", + paramValue := { tokenOrHost := cl_nonceCount } + }); + if (v_opaque != "") { + v_digestResponse := f_addCommaParameter(v_digestResponse, { + id := "opaque", + paramValue := { quotedString := "" } + }); // already enclosed to " characters + } + v_result := {digestResponse := v_digestResponse}; + + return v_result; + } + + + /** + * @desc Function to check if param related to id from CommanParam_List exist containing challenge. + * @param p_challenge parameter from 4xx response + * @param p_id name of parameter("nonce", "realm", "ck", "ik"...) + * @return parameter p_id value + */ + function f_checkParamValueFromChallengeIfPresent( + in CommaParam_List p_challenge, + in charstring p_id + ) return boolean { + var boolean v_result := false; + var integer v_len := lengthof(p_challenge); + var charstring v_id := fx_putInLowercase(p_id); + var integer i; + + for (i := 0; i < v_len; i := i + 1) { + if (fx_putInLowercase(p_challenge[i].id) == v_id) { + v_result := true; + } + } + + return v_result; + } + + /** + * @desc Function to check if tag is present in SemicolonParam_List + * @param p_param_l SemicolonParam_List + * @return boolean true if tag is present + */ + function f_checkTagPresent( + SemicolonParam_List p_param_l + ) runs on SipComponent + return boolean { + var integer v_numberOfParams; + var integer i := 0; + + v_numberOfParams := lengthof(p_param_l); + while (i < v_numberOfParams) { + if (fx_putInLowercase(p_param_l[i].id) == c_tagId) { + return (true); + } + i := i + 1; + } + return (false); + } + + /** + * @desc Function to remove a parameter from SemicolonParam_List + * @param p_param_l SemicolonParam_List + * @return SemicolonParam_List new parameter list + */ + function f_removeParameter( + SemicolonParam_List p_param_l, + charstring p_id + ) runs on SipComponent + return SemicolonParam_List { + var integer v_numberOfParams; + var integer i := 0; + var integer j := 0; + var SemicolonParam_List v_newParamList; + + v_numberOfParams := lengthof(p_param_l); + while (i < v_numberOfParams) { + if (not fx_putInLowercase(p_param_l[i].id) == p_id) { + v_newParamList[j] := p_param_l[i]; + j := j + 1; + } + i := i + 1; + } + return v_newParamList; + } + + /** + * @desc Function to add a parameter to SemicolonParam_List + * @param p_param_l SemicolonParam_List + * @return SemicolonParam_List new parameter list + */ + function f_addParameter( + SemicolonParam_List p_param_l, + GenericParam p_genparam + ) + return SemicolonParam_List { + var SemicolonParam_List v_newParamList := p_param_l; + var integer v_numberOfParams := lengthof(p_param_l); + v_newParamList[v_numberOfParams] := p_genparam; + return v_newParamList; + } + + /** + * @desc Function to add a parameter to CommaParam_List + * @param p_param_l SemicolonParam_List + * @return SemicolonParam_List new parameter list + */ + function f_addCommaParameter( + CommaParam_List p_param_l, + GenericParam p_genparam + ) + return CommaParam_List { + var CommaParam_List v_newParamList := p_param_l; + var integer v_numberOfParams := lengthof(p_param_l); + v_newParamList[v_numberOfParams] := p_genparam; + return v_newParamList; + } + + /** + * @desc Function to extract paramValue related to id from CommanParam_List containing challenge. + * @param p_challenge parameter from 4xx response + * @param p_id name of parameter("nonce", "realm",...) + * @return parameter p_id value + */ + function f_extractParamValueFromChallenge( + in CommaParam_List p_challenge, + in charstring p_id + ) return charstring { + var charstring v_result := ""; + var integer v_len := lengthof(p_challenge); + var charstring v_id := fx_putInLowercase(p_id); + var integer i; + var charstring v_tmpchar; + + for (i := 0; i < v_len; i := i + 1) { + if (fx_putInLowercase(p_challenge[i].id) == v_id) { + if (isvalue(p_challenge[i].paramValue)) { + if(ischosen(p_challenge[i].paramValue.quotedString)) { + v_result := valueof(p_challenge[i].paramValue.quotedString); + } else { + v_result := valueof(p_challenge[i].paramValue.tokenOrHost); + } + } + } + } + + if (v_result == "") { + if (match(p_id, "algorithm")) { + v_result := "MD5"; + } + else if (match(p_id, "opaque")) { + v_result := ""; + } + else { + v_tmpchar := "Cannot acquire value from credentials."; + log("*** " & __SCOPE__ &": INFO: Cannot acquire value from credentials ***"); + setverdict(inconc); + stop; + } + } + + return v_result; + } + + /** + * @desc Return the updated component variable of via header + * @return component variable of via header + */ + function f_updateViaHeaderAS( + in Via p_via + ) runs on SipComponent + return Via { + var Via v_via; + var ViaBody_List v_viaBody_List := p_via.viaBody; + var integer v_size_via := lengthof(v_viaBody_List); + var integer v_size_via_updated := v_size_via + 1; + var ViaBody_List v_viaBody_List_updated; + var integer i; + vc_branch := c_branchCookie & f_getRndTag(); + v_viaBody_List_updated[0] := valueof(m_ViaBody_currIpaddr(vc_branch, vc_userprofile)); + // p_viaBody_List_updated[0 ] := vc_request.msgHeader.route.routeBody[0 ] ; + for (i := 1; i < v_size_via_updated; i := i + 1) { + v_viaBody_List_updated[i] := v_viaBody_List[i - 1]; + } + v_via.fieldName := p_via.fieldName; + v_via.viaBody := v_viaBody_List_updated; + return (v_via); + } + + /** + * @desc Return the updated component variable of route header + * @return component variable of route header + */ + function f_updateRouteHeaderAS( + in Route p_route + ) runs on SipComponent + return Route { + var Route v_route; + var RouteBody_List v_routeBody_List := p_route.routeBody; + var integer v_size_route := lengthof(v_routeBody_List); + var integer v_size_route_updated := v_size_route - 1; + var RouteBody_List v_routeBody_List_updated; + var integer i; + + for (i := 0; i < v_size_route_updated; i := i + 1) { + v_routeBody_List_updated[i] := v_routeBody_List[i + 1]; + } + v_route.fieldName := p_route.fieldName; + v_route.routeBody := v_routeBody_List_updated; + return (v_route); + } + + /** + * @desc Return the updated component variable of record route header + * @return component variable of record route header + */ + function f_updateRecordRouteHeaderAS( + in template(value) RecordRoute p_recordRoute + ) runs on SipComponent + return RecordRoute { + var + RecordRoute + v_recordRoute := + valueof( + m_recordRoute_currIpAddr_params( + vc_userprofile, + { + { + "lr", + omit + } + } + ) + ); + var integer v_size_recordRoute := 0; + var integer i; + + if (isvalue(p_recordRoute)) { + v_size_recordRoute := lengthof(valueof(p_recordRoute.routeBody)); + } + for (i := 1; i < v_size_recordRoute + 1; i := i + 1) { + v_recordRoute.routeBody[i] := valueof(p_recordRoute.routeBody[i - 1]); + } + + return (v_recordRoute); + } + + + + } // end group ParameterOperations + + group FieldOperations { + + /** + * @desc function adds "Tag"-parameter in "To"-headerfield + * @param p_to To header field that should get a Tag parameter + */ + function f_addTagInTo( + inout To p_to + ) runs on SipComponent { + f_addParameterTagIfNotPresent(c_tagId, { tokenOrHost := f_getRndTag() }, p_to); + } + + /** + * @desc addition of a single parameter in the via header field + * @param p_parameter_name name of parameter to be added + * @param p_parameter_value value of parameter to be added + * @param p_viaBody the via parameter to be extended + * @verdict + */ + function f_addParameterIfNotPresent( + in charstring p_parameter_name, + in GenValue p_parameter_value, + inout ViaBody p_viaBody + ) { + if (isvalue(p_viaBody.viaParams)) { + return; + } + p_viaBody.viaParams := { + { + p_parameter_name, + p_parameter_value + } + }; + } + + /** + * @desc function to addd a parameter to the "To" header field (if there is not any parameter) + * @param p_parameter_name name of the parameter to be added + * @param p_parameter_value value of the paramter to be added + * @param p_to "To" header field to be extended + * @verdict + */ + function f_addParameterTagIfNotPresent( + in charstring p_parameter_name, + in GenValue p_parameter_value, + inout To p_to + ) { + if (isvalue(p_to.toParams)) { + return; + } + p_to.toParams := { + { + p_parameter_name, + p_parameter_value + } + }; + } + + /** + * @desc function compares the IP address of two hosts + * @param p_host1 hostname + * @param p_host2 hostname + * @return boolean value that is true if the IP addresses are identical + * @verdict + */ + function f_equivalentHostAddr( + in charstring p_host1, + in charstring p_host2 + ) return boolean { + // A DNS server may be used + return (fx_getIpAddr(p_host1) == fx_getIpAddr(p_host2)); + } + + + /** + * @desc function checks if Require contains Precondition + * @param p_message (request or response) SIP message to be analysed + * @return true if p_id parameter exist + */ + function f_checkRequirePrecondition( + in Request p_message + ) { + var boolean v_precondition_found; + var integer i; + if (isvalue(p_message.msgHeader.require)) { + v_precondition_found := false; + for (i := 0; i < lengthof(p_message.msgHeader.require.optionsTags); i := i + 1) { + if (match(p_message.msgHeader.require.optionsTags[i], c_tagPrecond)) { + v_precondition_found := true; + } + } + if (not (v_precondition_found)) { + setverdict(fail); + log("*** " & __SCOPE__ & ": FAIL: precondition not found in Require options list! ***"); + } + } + else { + setverdict(fail); + log("*** " & __SCOPE__ & ": FAIL: Require options is not present! ***"); + } + } + + /** + * @desc function checks if P-Charging-Vector contains a particular parameter + * @param p_message (request or response) SIP message to be analysed + * @param p_id name of parameter + * @return true if p_id parameter exist + */ + function f_checkPChargingVectorHeaderParamId( + in Request p_message, + charstring p_id + ) return boolean { + var integer i; + + if (isvalue(p_message.msgHeader.pChargingVector)) { + for (i := 0; i < lengthof(p_message.msgHeader.pChargingVector.chargeParams); i := i + 1) { + if (p_message.msgHeader.pChargingVector.chargeParams[i].id == p_id) { + return (true); + } + } + } + return (false); + } + + /** + * @desc function checks if P-Charging-Vector contains a particular parameter + * @param p_message (request or response) SIP message to be analysed + * @param p_id name of parameter + * @return true if p_id parameter exist + */ + function f_checkPChargingVectorHeaderParamIdResponse( + in Response p_message, + charstring p_id + ) return boolean { + var integer i; + + if (isvalue(p_message.msgHeader.pChargingVector)) { + for (i := 0; i < lengthof(p_message.msgHeader.pChargingVector.chargeParams); i := i + 1) { + if (p_message.msgHeader.pChargingVector.chargeParams[i].id == p_id) { + return true; + } + } + } + return (false); + } + + /** + * @desc function returns the Host/Port of a given Contact header field + * @param p_contact contact header field to be analysed + * @return Host/Port record from the contact header field + */ + function f_getContactUri( + in ContactAddress p_contact + ) runs on SipComponent + return SipUrl { + var SipUrl v_SipUrl; + + if (ischosen(p_contact.addressField.nameAddr)) { + v_SipUrl := p_contact.addressField.nameAddr.addrSpec; + } + else { + v_SipUrl := p_contact.addressField.addrSpecUnion; + } + + return (v_SipUrl); + } // end f_getContactUri + + /** + * @desc function returns the Host/Port of a given Contact header field + * @param p_contact contact header field to be analysed + * @return Host/Port record from the contact header field + */ + function f_getContactAddr( + in ContactAddress p_contact + ) runs on SipComponent + return HostPort { + var HostPort v_locAddr; + var SipUrl v_SipUrl; + + if (ischosen(p_contact.addressField.nameAddr)) { + v_SipUrl := p_contact.addressField.nameAddr.addrSpec; + } + else { + v_SipUrl := p_contact.addressField.addrSpecUnion; + } + + v_locAddr.host := v_SipUrl.components.sip.hostPort.host; + + if (isvalue(v_SipUrl.components.sip.hostPort.portField)) { + v_locAddr.portField := v_SipUrl.components.sip.hostPort.portField; + } + else { + v_locAddr.portField := c_defaultSipPort; + } + + return (v_locAddr); + } // end f_getContactAddr + + /** + * @desc function checks if History-Info-Header of the p_message contains a particular URI + * @param p_message (request or response) SIP message to be analysed + * @param p_URI name of parameter + * @return true if p_URI parameter exist + */ + function f_checkHeaderInfoURI( + in Response p_message, + SipUrl p_URI + ) return boolean { + var integer i; + + if (isvalue(p_message.msgHeader.historyInfo)) { + for (i := 0; i < lengthof(p_message.msgHeader.historyInfo.historyInfoList); i := i + 1) { + if (p_message.msgHeader.historyInfo.historyInfoList[i].nameAddr.addrSpec == p_URI) { + return (true); + } + } + } + return (false); + } + + /** + * @desc function returns the Userinfo from a given To header field + * @param p_to To header field to be analysed + * @return Userinfo from the To header field as a charstring + */ + function f_getUserfromTo( + in To p_to + ) runs on SipComponent + return charstring { + var SipUrl v_SipUrl; + + if (ischosen(p_to.addressField.nameAddr)) { + v_SipUrl := p_to.addressField.nameAddr.addrSpec; + } + else { + v_SipUrl := p_to.addressField.addrSpecUnion; + } + + return (v_SipUrl.components.sip.userInfo.userOrTelephoneSubscriber); + } // end f_getUserfromTo + + /** + * @desc function to generate a 32 bits random number as a charstring for tag field + * @param p_cSeq_s CSeq parameter used to modify the tag field value + * @return tag value + */ + function f_getRndCallId( + ) return charstring { + var charstring v_tag_value := fx_rndStr() & fx_rndStr(); + // v_tag_value is initialized with a random value with at least 32 bits of randomness + // 4294967296 is a 32 bits integer + // v_tag_value := int2str(float2int(4294967296.0*rnd()) + loc_CSeq_s.seqNumber ); + return (v_tag_value); + } + + /** + * @desc function give access to the top element of the Path header field. + * @param p_Request SIP message to be analysed + * @return NameAddr (e.g. ) or omit + */ + function f_getPathHeaderTop( + inout Request p_Request + ) return template(omit) NameAddr { + if (isvalue(p_Request.msgHeader.path)) { + if (lengthof(p_Request.msgHeader.path.pathValues) > 0) { + return (p_Request.msgHeader.path.pathValues[0].nameAddr); + } + } + return (omit); + } + + /** + * @desc function updates first element of a Via headerfield list + * @param p_viaBody_List address list of a Via header field + * @param p_source_address address to be inserted in the top element + */ + function f_getViaReplyAddr( + inout ViaBody_List p_viaBody_List, + inout Address4SIP p_source_address + ) runs on SipComponent { + var ViaBody v_viaBody; + // The address to send message shall be updated after getting information + // in the Via header fied and according to 18.2.2 + v_viaBody := p_viaBody_List[0]; + + // received parameter has to be addded to the via hader field + // Be careful it could be an Host name and not an IP Address + // One of the reasons this error can occur is if no DNS server is available. + // As a workaround, it is possible to adapt the configuration on the local machine the test + // suite is running on (e.g. under Windows the following file could be configured: + // C:\WINDOWS\system32\drivers\etc\hosts). + // Check if host address can be rosolved + if (not f_equivalentHostAddr(valueof(v_viaBody.sentBy.host), valueof(p_source_address.host))) { + f_addParameterIfNotPresent(c_receivedId, { tokenOrHost := valueof(p_source_address.host) }, v_viaBody); + } + if (isvalue(v_viaBody.sentBy.portField)) { + p_source_address.portField := valueof(v_viaBody.sentBy.portField); + } + else { + p_source_address.portField := c_defaultSipPort; + } + } + + /** + * @desc functions give access to an element of the Route header field (record). + * @param p_message (request) SIP message to be analysed + * @param p_index index of Route record element to be retrieved + * @return HostPort value of the Route element or omit + */ + function f_getRouteHeaderElementAddressFromRequest( + in Request p_message, + in integer p_index + ) return HostPort { + if (isvalue(p_message.msgHeader.route)) { + if (lengthof(p_message.msgHeader.route.routeBody) > p_index) { + return (p_message.msgHeader.route.routeBody[p_index].nameAddr.addrSpec.components.sip.hostPort); + } + } + setverdict(fail); + return (c_hostport_dummy); + } + + /** + * @desc functions give access to an element of the Record-Route header field (record). + * @param p_message (request) SIP message to be analysed + * @param p_index index of recordRoute record element to be retrieved + * @return HostPort value of the Record-Route element or omit + */ + function f_getRecordRouteHeaderElementAddressFromRequest( + in Request p_message, + in integer p_index + ) return HostPort { + if (isvalue(p_message.msgHeader.recordRoute)) { + if (lengthof(p_message.msgHeader.recordRoute.routeBody) > p_index) { + return (p_message.msgHeader.recordRoute.routeBody[p_index].nameAddr.addrSpec.components.sip.hostPort); + } + } + setverdict(fail); + return (c_hostport_dummy); + } + + /** + * @desc functions give access to an element of the Record-Route header field (record). + * @param p_message (response) SIP message to be analysed + * @param p_index index of recordRoute record element to be retrieved + * @return HostPort value of the Record-Route element or omit + */ + function f_getRecordRouteHeaderElementAddressFromResponse( + in Response p_message, + in integer p_index + ) return HostPort { + if (isvalue(p_message.msgHeader.recordRoute)) { + if (lengthof(p_message.msgHeader.recordRoute.routeBody) > p_index) { + return (p_message.msgHeader.recordRoute.routeBody[p_index].nameAddr.addrSpec.components.sip.hostPort); + } + } + setverdict(fail); + return (c_hostport_dummy); + } + + /** + * @desc functions give access to an element of the Via header field (record). + * @param p_message (request) SIP message to be analysed + * @param p_index index of via record element to be retrieved + * @return HostPort value of the Via element or omit + */ + function f_getViaHeaderElementHostPort( + in Request p_message, + in integer p_index + ) return HostPort { + + if (lengthof(p_message.msgHeader.via.viaBody) > p_index) { + return (p_message.msgHeader.via.viaBody[p_index].sentBy); + } + setverdict(fail); + return (c_hostport_dummy); + } + + /** + * @desc functions give access to an element of the Via header field (record). + * @param p_message (response) SIP message to be analysed + * @param p_index index of via record element to be retrieved + * @return HostPort value of the Via element or omit + */ + function f_getViaHeaderElementHostPortResponse( + in Response p_message, + in integer p_index + ) return HostPort { + + if (lengthof(p_message.msgHeader.via.viaBody) > p_index) { + return (p_message.msgHeader.via.viaBody[p_index].sentBy); + } + setverdict(fail); + return (c_hostport_dummy); + } + + /** + * @desc function checks indicators if topology hiding (TH) has been applied: - second element in via-header record has tokenized-by parameter + * @param p_Request SIP message to be analysed + * @return boolean value (true indicate TH, false otherwise) + */ + function f_topologyHiding( + inout Request p_request + ) runs on SipComponent + return boolean { + var GenericParam v_viaParameter; + + if (lengthof(p_request.msgHeader.via.viaBody) <2 ) { + return (false); + } + v_viaParameter := p_request.msgHeader.via.viaBody[1].viaParams[0]; + // second element + if (not v_viaParameter.id == "tokenized-by") { + return (false); + } + return (true); + } + + /** + * @desc function checks indicators if topology hiding (TH) has been applied: - any element in via-header record has tokenized-by parameter + * @param Response SIP message to be analysed + * @return boolean value (true indicate TH, false otherwise) + */ + function f_topologyHidingResponse( + inout Response p_response + ) runs on SipComponent + return boolean { + var GenericParam v_viaParameter; + var integer i; + + for (i := 0; i < lengthof(p_response.msgHeader.via.viaBody); i := i + 1) { + + v_viaParameter := p_response.msgHeader.via.viaBody[i].viaParams[0]; // first parameter + if (not v_viaParameter.id == "tokenized-by") { + return (false); + } + } + return (true); + } + + + + group SetHeaders { + + + /** + * @desc function for setting of component variables related to message header fields (message type independent: CSeq, contact, via), function uses information from userprofile + * @param p_cSeq_s CSeq parameter + * @param p_method method name for cSeq header field + */ + function f_setHeadersGeneral( + inout CSeq p_cSeq_s, + in charstring p_method + ) runs on SipComponent { + p_cSeq_s.fieldName := CSEQ_E; + p_cSeq_s.seqNumber := p_cSeq_s.seqNumber + 1; + p_cSeq_s.method := p_method; + vc_cSeq := p_cSeq_s; + + vc_contact := valueof(m_Contact(m_SipUrl_contactIpaddr(vc_userprofile))); + vc_branch := c_branchCookie & f_getRndTag(); + vc_via := { + fieldName := VIA_E, + viaBody := {valueof(m_ViaBody_currIpaddr(vc_branch, vc_userprofile))} + }; + } // end function f_setHeadersGeneral + + + + /** + * @desc function for setting of component variables related to message header fields (message type independent: CSeq, contact, via), function uses information from userprofile + * @param p_cSeq_s CSeq parameter + * @param p_method method name for cSeq header field + */ + function f_setHeadersACK( + ) runs on SipComponent { + // vc_requestUri.hostPort := vc_reqHostPort; + if (vc_response.statusLine.statusCode >= 200 and vc_response.statusLine.statusCode <= 299) + // ref. RFC3261 8.1.1.7 Via + { + vc_branch := c_branchCookie & f_getRndTag(); + } + vc_via := { + fieldName := VIA_E, + viaBody := {valueof(m_ViaBody_currIpaddr(vc_branch, vc_userprofile))} + }; + } // end function f_setHeadersGeneral + + /** + * @desc setting of general and basic Bye header fields in additon to the addresses (To, From, ReqUri) + * @param p_cSeq_s + */ + function f_setHeadersBYE( + inout CSeq p_cSeq_s + ) runs on SipComponent { + f_setHeadersGeneral(p_cSeq_s, "BYE"); // cseq, contact, branch, via + // vc_callId := { fieldName:=CALL_ID_E, callid:=f_getRndCallId(p_cSeq_s) & c_AT & vc_userprofile.currIpaddr }; + f_addTagInTo(vc_to); + + vc_cancel_To := vc_to; + vc_caller_To := vc_to; + + vc_caller_From := vc_from; + + vc_reqHostPort := vc_requestUri.components.sip.hostPort; + } // end function f_setHeadersBYE + + /** + * @desc setting of general and basic CANCEL header fields + * @param p_cSeq_s + */ + function f_setHeadersCANCEL( + inout CSeq p_cSeq_s + ) runs on SipComponent { + + p_cSeq_s.method := "CANCEL"; + // vc_branch := c_branchCookie & f_getRndTag(); // STF 406: CANCEL and ACK should have the same branch as the INVITE + vc_via := { + fieldName := VIA_E, + viaBody := {valueof(m_ViaBody_currIpaddr(vc_branch, vc_userprofile))} + }; + } // end function f_setHeadersCANCEL + + /** + * @desc function sets header field for the next outgoing REGISTER message + * @param p_cSeq_s CSeq parameter to be applied + * @param p_emergency Set to true in case of emergency + */ + function f_setHeaders_REGISTER( + inout CSeq p_cSeq_s, + boolean p_emergency := false + ) runs on SipComponent { + var SemicolonParam_List v_params := {}; + + f_setHeadersGeneral(p_cSeq_s, "REGISTER"); // cseq, contact, branch, via + vc_requestUri := { + scheme := c_sipScheme, + components := { + sip := { + userInfo := omit, + hostPort := { + host := vc_userprofile.registrarDomain, + portField := omit + } + } + }, + urlParameters := omit, + headers := omit + }; + + vc_reqHostPort := vc_requestUri.components.sip.hostPort; + + vc_callId := { + fieldName := CALL_ID_E, + callid := f_getRndCallId() & c_AT & vc_userprofile.currIpaddr + }; + vc_callIdReg := vc_callId; // remember callId for de-registration + vc_to := valueof(m_To(m_SipUrl_currDomain(vc_userprofile))); + vc_cancel_To := vc_to; + v_params := f_addParameter(v_params, + { + id := c_tagId, + paramValue := { + tokenOrHost := f_getRndTag() + } + }); + vc_from := { + fieldName := FROM_E, + addressField := vc_to.addressField, + fromParams := v_params + }; + + if (not vc_firstREGISTER_sent) { + if (p_emergency) { + v_params := { + { + "sos", + omit + } + }; + vc_contact.contactBody.contactAddresses[0].addressField.addrSpecUnion.urlParameters := v_params; + } + else { + v_params := { + { + id := c_expiresId, + paramValue := { + tokenOrHost := c_shortRegistration + } + } + }; + vc_contact.contactBody.contactAddresses[0].contactParams := v_params; + } + } + + vc_firstREGISTER_sent := true; // f_setHeaders_Register is called in deREGISTER function + vc_authorization := { + fieldName := AUTHORIZATION_E, + body := {f_calculatecCredentials_empty(vc_userprofile)} + }; + + vc_via_REG := vc_via; + } // end function setHeaders_REGISTER + + /** + * @desc function sets via, cseq and authorization header for the next outgoing (protected) REGISTER + * @verdict + */ + function f_setHeaders_2ndREGISTER( + inout CSeq p_cSeq_s + ) runs on SipComponent { + var CommaParam_List v_challenge; + + // Increment CSeq sequence number + p_cSeq_s.seqNumber := p_cSeq_s.seqNumber + 1; + vc_cSeq := p_cSeq_s; + + vc_requestUri := { + scheme := c_sipScheme, + components := { + sip := { + userInfo := omit, + hostPort := { + host := vc_userprofile.registrarDomain, + portField := omit + } + } + }, + urlParameters := omit, + headers := omit + }; + + // new branch tag due to different branch tag in new REGISTER method + vc_branch := c_branchCookie & f_getRndTag(); + + vc_via_REG := { + fieldName := VIA_E, + viaBody := {valueof(m_ViaBody_currIpaddr(vc_branch, vc_userprofile))} + }; + + // Extract challenge and calculate credentials for a response. + v_challenge := vc_response.msgHeader.wwwAuthenticate.challenge.digestCln; + + + // Prepair right answer + vc_authorization := { + fieldName := AUTHORIZATION_E, + body := {f_calculatecCredentials(vc_userprofile, "REGISTER", v_challenge)} + }; + } // end function f_setHeaders_2ndREGISTER + + /** + * @desc function sets via, cseq and authorization header for the next outgoing (protected) REGISTER NO response in Authorization header to cause an error + * @verdict + */ + function f_setHeaders_2ndREGISTER_wo_response( + ) runs on SipComponent { + var CommaParam_List v_challenge; + + vc_branch := c_branchCookie & f_getRndTag(); + + vc_via_REG := { + fieldName := VIA_E, + viaBody := {valueof(m_ViaBody_currIpaddr(vc_branch, vc_userprofile))} + }; + + if (ischosen(vc_response.msgHeader.wwwAuthenticate.challenge.otherChallenge)) + // Extract challenge and calculate credentials for a response. + { + v_challenge := vc_response.msgHeader.wwwAuthenticate.challenge.otherChallenge.authParams; + } + else { + v_challenge := vc_response.msgHeader.wwwAuthenticate.challenge.digestCln; + } + + // Increment CSeq sequence number + vc_cSeq.seqNumber := vc_cSeq.seqNumber + 1; + + // Prepair right answer + vc_authorization := { + fieldName := AUTHORIZATION_E, + body := {f_calculatecCredentials_wo_response(vc_userprofile, "REGISTER", v_challenge)} + }; + } // end function f_setHeaders_2ndREGISTER_wo_response + + /** + * @desc function sets via, cseq and authorization header with different private name for the next outgoing (protected) REGISTER + * @verdict + */ + function f_setHeaders_2ndREGISTER_authorizationWithDifferentUserName( + ) runs on SipComponent { + var CommaParam_List v_challenge; + + vc_branch := c_branchCookie & f_getRndTag(); + + vc_requestUri := { + scheme := c_sipScheme, + components := { + sip := { + userInfo := omit, + hostPort := { + host := vc_userprofile.registrarDomain, + portField := omit + } + } + }, + urlParameters := omit, + headers := omit + }; + + vc_via_REG := { + fieldName := VIA_E, + viaBody := {valueof(m_ViaBody_currIpaddr(vc_branch, vc_userprofile))} + }; + + // Extract challenge and calculate credentials for a response. + v_challenge := vc_response.msgHeader.wwwAuthenticate.challenge.otherChallenge.authParams; + + // Increment CSeq sequence number + vc_cSeq.seqNumber := vc_cSeq.seqNumber + 1; + + // Prepair right answer + vc_authorization := { + fieldName := AUTHORIZATION_E, + body := {f_calculatecCredentialsAndChangeUserName(vc_userprofile, "REGISTER", v_challenge)} + }; + } // end function f_setHeaders_2ndREGISTER_authorizationWithDifferentUserName + + + /** + * @desc function sets header fields for the next outgoing REGISTER (de-registration) + * @param p_cSeq_s cSeq to be used + * @verdict + */ + function f_setHeaders_deREGISTER( + inout CSeq p_cSeq_s + ) runs on SipComponent { + var SemicolonParam_List v_params := {}; + + f_setHeadersGeneral(p_cSeq_s, "REGISTER"); // cseq, contact, branch, via + // reset authorization header to not use nonce from registration (otherwise we have to increase nc) + vc_authorization := { + fieldName := AUTHORIZATION_E, + body := {f_calculatecCredentials_empty(vc_userprofile)} + }; + vc_requestUri := { + scheme := c_sipScheme, + components := { + sip := { + userInfo := omit, + hostPort := { + host := vc_userprofile.registrarDomain, + portField := omit + } + } + }, + urlParameters := omit, + headers := omit + }; + vc_to := valueof(m_To(m_SipUrl_currDomain(vc_userprofile))); + v_params := f_addParameter(v_params, + { + id := c_tagId, + paramValue := { + tokenOrHost := f_getRndTag() + } + }); + vc_from := { + fieldName := FROM_E, + addressField := vc_to.addressField, + fromParams := v_params + }; + + vc_contact := { + fieldName := CONTACT_E, + contactBody := {wildcard := "*"} + }; + } // end function f_setHeaders_deREGISTER + + + /** + * @desc setting of general and basic Invite header fields in additon to the addresses (To, From, ReqUri) + * @param p_cSeq_s + */ + function f_setHeadersINVITE( + inout CSeq p_cSeq_s + ) runs on SipComponent { + f_setHeadersGeneral(p_cSeq_s, "INVITE"); // cseq, contact, branch, via + vc_callId := { + fieldName := CALL_ID_E, + callid := f_getRndCallId() & c_AT & vc_userprofile.currIpaddr + }; + + vc_cancel_To := vc_to; + vc_caller_To := vc_to; + + vc_caller_From := vc_from; + + if (ischosen(vc_requestUri.components.sip)) { + // sip/sips call + vc_reqHostPort := vc_requestUri.components.sip.hostPort; + } + else if (ischosen(vc_requestUri.components.urn)) { + // Emergency call + vc_reqUrnUri := vc_requestUri.components.urn; + } + else { + log("*** " & __SCOPE__ &": INFO:f_setHeadersINVITE: unsupported field: ", vc_requestUri," ***"); + setverdict(fail); + } + } + + /** + * @desc setting of general and basic Update header fields in additon to the addresses (To, From, ReqUri) + * @param p_cSeq_s + */ + function f_setHeadersUPDATE( + inout CSeq p_cSeq_s + ) runs on SipComponent { + f_setHeadersGeneral(p_cSeq_s, "UPDATE"); // cseq, contact, branch, via + vc_callId := { + fieldName := CALL_ID_E, + callid := f_getRndCallId() & c_AT & vc_userprofile.currIpaddr + }; + + vc_cancel_To := vc_to; + vc_caller_To := vc_to; + + vc_caller_From := vc_from; + + vc_reqHostPort := vc_requestUri.components.sip.hostPort; + } // end function f_setHeadersUPDATE + + /** + * @desc setting of general and basic Message header fields in additon to the addresses (To, From, ReqUri) + * @param p_cSeq_s + */ + function f_setHeadersMESSAGE( + inout CSeq p_cSeq_s + ) runs on SipComponent { + f_setHeadersGeneral(p_cSeq_s, "MESSAGE"); // cseq, contact, branch, via + vc_callId := { + fieldName := CALL_ID_E, + callid := f_getRndCallId() & c_AT & vc_userprofile.currIpaddr + }; + + vc_cancel_To := vc_to; + vc_caller_To := vc_to; + + vc_caller_From := vc_from; + + vc_reqHostPort := vc_requestUri.components.sip.hostPort; + } // end function f_setHeadersMESSAGE + + /** + * @desc setting of general and basic Notify header fields in additon to the addresses (To, From, ReqUri) + * @param p_cSeq_s + */ + function f_setHeadersNOTIFY( + inout CSeq p_cSeq_s + ) runs on SipComponent { + f_setHeadersGeneral(p_cSeq_s, "NOTIFY"); // cseq, contact, branch, via + vc_cancel_To := vc_to; + vc_caller_To := vc_to; + vc_caller_From := vc_from; + + vc_reqHostPort := vc_requestUri.components.sip.hostPort; + } // end function f_setHeadersNOTIFY + + /** + * @desc setting of general and basic Publish header fields in additon to the addresses (To, From, ReqUri) + * @param p_cSeq_s + */ + function f_setHeadersPUBLISH( + inout CSeq p_cSeq_s + ) runs on SipComponent { + f_setHeadersGeneral(p_cSeq_s, "PUBLISH"); // cseq, contact, branch, via + // after SUBSCRIBE message callid shall be same + // vc_callId := { fieldName:=CALL_ID_E, callid:=f_getRndCallId(p_cSeq_s) & c_AT & vc_userprofile.currIpaddr }; + vc_cancel_To := vc_to; + vc_caller_To := vc_to; + + vc_caller_From := vc_from; + + vc_reqHostPort := vc_requestUri.components.sip.hostPort; + } // end function f_setHeadersPUBLISH + + /** + * @desc function sets header field for the next outgoing SUBSCRIBE message + * @param p_cSeq_s CSeq parameter to be applied + */ + function f_setHeaders_SUBSCRIBE( + inout CSeq p_cSeq_s + ) runs on SipComponent { + var SemicolonParam_List v_params := {}; + + f_setHeadersGeneral(p_cSeq_s, "SUBSCRIBE"); // cseq, contact, branch, via + vc_requestUri := valueof(m_SipUrl_currDomain(vc_userprofile)); + + vc_reqHostPort := vc_requestUri.components.sip.hostPort; + + vc_callId := { + fieldName := CALL_ID_E, + callid := f_getRndCallId() & c_AT & vc_userprofile.currIpaddr + }; + + // store callId from Subscribe message + vc_callIdSub := vc_callId; + + vc_to := valueof(m_To(m_SipUrl_currDomain(vc_userprofile))); + vc_cancel_To := vc_to; + v_params := f_addParameter(v_params, + { + id := c_tagId, + paramValue := { + tokenOrHost := f_getRndTag() + } + }); + vc_from := { + fieldName := FROM_E, + addressField := vc_to.addressField, + fromParams := v_params + }; + } // end function setHeaders_SUBSCRIBE + + /** + * @desc setting of general and basic Subscribe header fields in additon to the addresses (To, From, ReqUri) + * @param p_cSeq_s + */ + function f_setHeadersSUBSCRIBE( + inout CSeq p_cSeq_s + ) runs on SipComponent { + f_setHeadersGeneral(p_cSeq_s, "SUBSCRIBE"); // cseq, contact, branch, via + vc_callId := { + fieldName := CALL_ID_E, + callid := f_getRndCallId() & c_AT & vc_userprofile.currIpaddr + }; + + vc_cancel_To := vc_to; + vc_caller_To := vc_to; + + vc_caller_From := vc_from; + + vc_reqHostPort := vc_requestUri.components.sip.hostPort; + } // end function f_setHeadersMESSAGE + + /** + * @desc setting of general and basic REFER header fields in additon to the addresses (To, From, ReqUri) + * @param p_cSeq_s + */ + function f_setHeadersREFER( + inout CSeq p_cSeq_s + ) runs on SipComponent { + f_setHeadersGeneral(p_cSeq_s, "REFER"); // cseq, contact, branch, via + // vc_callId := { fieldName:=CALL_ID_E, callid:=f_getRndCallId(p_cSeq_s) & c_AT & vc_userprofile.currIpaddr }; + vc_cancel_To := vc_to; + vc_caller_To := vc_to; + + vc_caller_From := vc_from; + + vc_reqHostPort := vc_requestUri.components.sip.hostPort; + } // end function f_setHeadersREFER + + /** + * @desc This function reads all necessary headers from the received REGISTER message and generate the tag for the answer + * @param p_Request REGISTER that has been received + */ + function f_setHeadersOnReceiptOfREGISTER( + Request p_Request + ) runs on SipComponent { + + f_setHeadersOnReceiptOfRequest(p_Request); + + vc_callId := p_Request.msgHeader.callId; + vc_caller_From := vc_from; + f_addTagInTo(vc_to); + vc_caller_To := vc_to; + vc_requestUri := p_Request.requestLine.requestUri; + + vc_cancel_To := p_Request.msgHeader.toField; + + if (isvalue(p_Request.msgHeader.contact) and (not ischosen(p_Request.msgHeader.contact.contactBody.wildcard))) { + vc_reqHostPort := f_getContactAddr(p_Request.msgHeader.contact.contactBody.contactAddresses[0]); + } + + // update callee information and pick up tag if the call need to be canceled + vc_callee_To := { + fieldName := TO_E, + addressField := vc_caller_From.addressField, + toParams := vc_caller_From.fromParams + }; + + vc_callee_From := { + fieldName := FROM_E, + addressField := vc_caller_To.addressField, + fromParams := vc_caller_To.toParams + }; + + if (isvalue(p_Request.msgHeader.authorization)) { + vc_authorization := valueof(p_Request.msgHeader.authorization); + } + } // end f_setHeadersOnReceiptOfREGISTER + + /** + * @desc This function reads all necessary headers from the received SUBSCRIBE message and generate the tag for the answer + * @param p_Request SUBSCRIBE that has been received + */ + function f_setHeadersOnReceiptOfSUBSCRIBE( + Request p_Request + ) runs on SipComponent { + + f_setHeadersOnReceiptOfRequest(p_Request); + + vc_callId := p_Request.msgHeader.callId; + vc_caller_From := vc_from; + f_addTagInTo(vc_to); + vc_caller_To := vc_to; + vc_requestUri := p_Request.requestLine.requestUri; + + vc_cancel_To := p_Request.msgHeader.toField; + + if (isvalue(p_Request.msgHeader.contact)) { + vc_reqHostPort := f_getContactAddr(p_Request.msgHeader.contact.contactBody.contactAddresses[0]); + } + + // update callee information and pick up tag if the call need to be canceled + vc_callee_To := { + fieldName := TO_E, + addressField := vc_caller_From.addressField, + toParams := vc_caller_From.fromParams + }; + + vc_callee_From := { + fieldName := FROM_E, + addressField := vc_caller_To.addressField, + fromParams := vc_caller_To.toParams + }; + } // end f_setHeadersOnReceiptOfSUBSCRIBE + + function f_setHeadersOnReceiptOfREFER( + Request p_Request + ) runs on SipComponent { + + f_setHeadersOnReceiptOfRequest(p_Request); + + vc_requestUri := p_Request.requestLine.requestUri; + vc_cancel_To := p_Request.msgHeader.toField; + + if (isvalue(p_Request.msgHeader.contact)) { + vc_reqHostPort := f_getContactAddr(p_Request.msgHeader.contact.contactBody.contactAddresses[0]); + vc_requestUri := f_getContactUri(p_Request.msgHeader.contact.contactBody.contactAddresses[0]); + } + + // update callee information and pick up tag if the call need to be canceled + vc_callee_To := { + fieldName := TO_E, + addressField := vc_caller_From.addressField, + toParams := vc_caller_From.fromParams + }; + + vc_callee_From := { + fieldName := FROM_E, + addressField := vc_caller_To.addressField, + fromParams := vc_caller_To.toParams + }; + } // end f_setHeadersOnReceiptOfREFER + + /** + * @desc function reads all necessary headers from the received INVITE message and generate the tag for the answer + * @param p_Request received INVITE message + * @verdict + */ + function f_setHeadersOnReceiptOfINVITE( + Request p_Request + ) runs on SipComponent { + var integer i, j; + var integer v_length; + + f_setHeadersOnReceiptOfRequest(p_Request); + + vc_callId := p_Request.msgHeader.callId; + + vc_requestUri2 := p_Request.requestLine.requestUri; + + vc_cancel_To := p_Request.msgHeader.toField; + f_addTagInTo(vc_to); + vc_caller_From := vc_from; + vc_caller_To := vc_to; + + if (isvalue(p_Request.msgHeader.contact)) { + vc_reqHostPort := f_getContactAddr(p_Request.msgHeader.contact.contactBody.contactAddresses[0]); + vc_requestUri := f_getContactUri(p_Request.msgHeader.contact.contactBody.contactAddresses[0]); + } + + // update callee information and pick up tag if the call need to be canceled + vc_callee_To := { + fieldName := TO_E, + addressField := vc_caller_From.addressField, + toParams := vc_caller_From.fromParams + }; + + vc_callee_From := { + fieldName := FROM_E, + addressField := vc_caller_To.addressField, + fromParams := vc_caller_To.toParams + }; + + if (isvalue(p_Request.msgHeader.privacy)) { + vc_privacy := p_Request.msgHeader.privacy; + } + + if (isvalue(p_Request.messageBody)) { + // cleaning of attributes before assignment + if (isvalue(vc_sdp_remote.media_list)) { + v_length := lengthof(vc_sdp_remote.media_list); + for (i := 0; i < v_length; i := i + 1) { + if (isvalue(vc_sdp_remote.media_list[i].attributes)) { + vc_sdp_remote.media_list[i].attributes := omit; + } + } + } + + // save SDP if present + if (ischosen(p_Request.messageBody.sdpMessageBody)) { + vc_sdp_remote := p_Request.messageBody.sdpMessageBody; + vc_sdp_remote_is_valid := true; + f_prepare_SDP_answer(); + } + + // save XML if present + if (ischosen(p_Request.messageBody.xmlBody)) { + vc_xml_remote := p_Request.messageBody.xmlBody; + } + + if (ischosen(p_Request.messageBody.mimeMessageBody)) { + + for (j := 0; j < lengthof(p_Request.messageBody.mimeMessageBody.mimeEncapsulatedList); j := j + 1) { + if (match(p_Request.messageBody.mimeMessageBody.mimeEncapsulatedList[j].content_type, c_sdpApplication)) { + vc_sdp_remote := p_Request.messageBody.mimeMessageBody.mimeEncapsulatedList[j].mime_encapsulated_part.sdpMessageBody; + vc_sdp_remote_is_valid := true; + f_prepare_SDP_answer(); + } + if (match(p_Request.messageBody.mimeMessageBody.mimeEncapsulatedList[j].content_type, c_xmlApplication)) { + vc_xml_remote := p_Request.messageBody.mimeMessageBody.mimeEncapsulatedList[j].mime_encapsulated_part.xmlBody; + } + } + } + } + + if (isvalue(p_Request.msgHeader.supported.optionsTags)) { + for (i := lengthof(p_Request.msgHeader.supported.optionsTags); i > 0; i := i - 1) { + if (p_Request.msgHeader.supported.optionsTags[i - 1] == "100rel") { + vc_supported_100rel := true; + } + if (p_Request.msgHeader.supported.optionsTags[i - 1] == "precondition") { + vc_supported_precondition := true; + } + } + } + } // end f_setHeadersOnReceiptOfINVITE + + /** + * @desc function reads header field of a received BYE message + * @param p_Request received BYE + */ + function f_setHeadersOnReceiptOfBYE( + Request p_BYE_Request + ) runs on SipComponent { + + f_setHeadersOnReceiptOfRequest(p_BYE_Request); + vc_callId := p_BYE_Request.msgHeader.callId; + } // end f_setHeadersOnReceiptOfBYE + + /** + * @desc function reads header field from an incoming Request message + * @param p_Request received Request message + */ + function f_setHeadersOnReceiptOfRequest( + Request p_Request + ) runs on SipComponent { + vc_request := p_Request; + vc_callId := p_Request.msgHeader.callId; + vc_cSeq := valueof(p_Request.msgHeader.cSeq); // CSeq is mandatory + vc_iut_CSeq := p_Request.msgHeader.cSeq; + vc_from := p_Request.msgHeader.fromField; + vc_caller_From := p_Request.msgHeader.fromField; + vc_to := p_Request.msgHeader.toField; + vc_caller_To := p_Request.msgHeader.toField; + vc_via := p_Request.msgHeader.via; + // update sent_label according to received via header field + f_getViaReplyAddr(vc_via.viaBody, vc_sent_label); + + // Catch route + vc_boo_recordRoute := false; + + // add tag field into To header if tag is not present + if (not (isvalue(p_Request.msgHeader.toField.toParams))) { + vc_to.toParams := { + { + id := c_tagId, + paramValue := { + tokenOrHost := f_getRndTag() + } + } + }; + vc_caller_To := vc_to; + } + if (isvalue(p_Request.msgHeader.recordRoute.fieldName)) {//Due to ES 201 873-1/C.3.3 Better to check if fieldName of Record Route is present + vc_boo_recordRoute := true; + vc_recordRoute := p_Request.msgHeader.recordRoute; + } + } // end f_setHeadersOnReceiptOfRequest + + /** + * @desc functions reads header fields from an incoming Response message + * @param p_cSeq + * @param p_response received response message + * @verdict + */ + function f_setHeadersOnReceiptOfResponse( + Response p_response + ) runs on SipComponent { + var integer i, j, v_nbroute; + var template(omit) Contact v_contact; + // only for local purpose + vc_response := p_response; + // vc_cSeq := p_cSeq; //must not save global c_seq because it can overwrite temporary cSeq + vc_to := p_response.msgHeader.toField; + vc_from := p_response.msgHeader.fromField; + vc_caller_To := vc_to; + vc_caller_From := vc_from; + + if (isvalue(p_response.msgHeader.contact)) { + v_contact := p_response.msgHeader.contact; + if (ischosen(v_contact.contactBody.contactAddresses)) { + vc_reqHostPort := f_getContactAddr(valueof(v_contact.contactBody.contactAddresses[0])); + vc_requestUri := f_getContactUri(valueof(v_contact.contactBody.contactAddresses[0])); + } + } + else { + if (ischosen(vc_to.addressField.addrSpecUnion.components.sip)) { + // sip/sips call + vc_reqHostPort := vc_to.addressField.addrSpecUnion.components.sip.hostPort; + } + else if (ischosen(vc_to.addressField.addrSpecUnion.components.urn)) { + // Emergency call + vc_reqUrnUri := vc_to.addressField.addrSpecUnion.components.urn; + } + else { + log("*** f_setHeadersOnReceiptOfResponse: INFO: unsupported field: ", vc_to, " ***"); + setverdict(fail); + } + vc_requestUri := vc_to.addressField.addrSpecUnion; + } + + vc_callee_To := { + fieldName := TO_E, + addressField := vc_caller_From.addressField, + toParams := vc_caller_From.fromParams + }; + + vc_callee_From := { + fieldName := FROM_E, + addressField := vc_caller_To.addressField, + fromParams := vc_caller_To.toParams + }; + + vc_via := p_response.msgHeader.via; + + // Route Management + if (isvalue(p_response.msgHeader.recordRoute)) { + vc_recordRoute := p_response.msgHeader.recordRoute; + v_nbroute := lengthof(vc_recordRoute.routeBody); + // copy and reverse the order of the routes in route header + for (i := 0; i <= (v_nbroute - 1); i := i + 1) { + j := v_nbroute - 1 - i; + vc_route.routeBody[j] := vc_recordRoute.routeBody[i]; + } + vc_route.fieldName := ROUTE_E; + vc_boo_recordRoute := true; + vc_boo_route := true; + } + else { + vc_boo_recordRoute := false; + vc_boo_route := false; + } + + + // extentions due to new fields in PRACK and UPDATE messages + if (isvalue(p_response.msgHeader.rSeq)) { + vc_rAck := { + fieldName := RACK_E, + responseNum := valueof(p_response.msgHeader.rSeq.responseNum), + seqNumber := valueof(p_response.msgHeader.cSeq.seqNumber), + method := valueof(p_response.msgHeader.cSeq.method) + }; + } + + // extentions due to new HistoryInfo fields 180 or 200OK messages + if (isvalue(p_response.msgHeader.historyInfo)) { + vc_historyInfoList := valueof(p_response.msgHeader.historyInfo.historyInfoList); + vc_history_is_valid := true; + } + else { + vc_history_is_valid := false; + } + + // sdpMessageBody answer + if (isvalue(p_response.messageBody)) { + if (ischosen(p_response.messageBody.sdpMessageBody)) { + vc_sdp_remote := p_response.messageBody.sdpMessageBody; + vc_sdp_remote_is_valid := true; + } + + if (ischosen(p_response.messageBody.xmlBody)) { + vc_xml_remote := p_response.messageBody.xmlBody; + } + + if (ischosen(p_response.messageBody.mimeMessageBody)) { + + for (j := 0; j < lengthof(p_response.messageBody.mimeMessageBody.mimeEncapsulatedList); j := j + 1) { + if (match(p_response.messageBody.mimeMessageBody.mimeEncapsulatedList[j].content_type, c_sdpApplication)) { + vc_sdp_remote := p_response.messageBody.mimeMessageBody.mimeEncapsulatedList[j].mime_encapsulated_part.sdpMessageBody; + } + if (match(p_response.messageBody.mimeMessageBody.mimeEncapsulatedList[j].content_type, c_xmlApplication)) { + vc_xml_remote := p_response.messageBody.mimeMessageBody.mimeEncapsulatedList[j].mime_encapsulated_part.xmlBody; + } + } + } + } + } // end function f_setHeadersOnReceiptOfResponse + + /** + * @desc functions reads ServiceRoute header field from an incoming 200 Response message in registration + * @param p_cSeq + * @param p_response received response message + */ + function f_getServiceRouteMapIntoRouteInRegistration( + Response p_response + ) runs on SipComponent { + var integer i, j, v_nbroute; + var template(omit) ServiceRoute v_serviceRoute; + + // Route Management + if (isvalue(p_response.msgHeader.serviceRoute.fieldName)) {////Due to ES 201 873-1/C.3.3 Better to check if fieldName of Record Route is present + v_serviceRoute := p_response.msgHeader.serviceRoute; + v_nbroute := lengthof(v_serviceRoute.routeBody); + // copy and reverse the order of the routes in route header + for (i := 0; i <= (v_nbroute - 1); i := i + 1) { + j := v_nbroute - 1 - i; + vc_route.routeBody[j] := v_serviceRoute.routeBody[i]; + } + vc_route.fieldName := ROUTE_E; + vc_route_REG := vc_route; + vc_boo_route := true; + } + } // end function f_getServiceRouteMapIntoRouteInRegistration + + /** + * @desc functions reads Route header field from an incoming Request message and generate RecordRoute + * @param p_cSeq + * @param p_request received request message + */ + function f_getRouteMapIntoRecordRoute( + Request p_request + ) runs on SipComponent { + var integer i, j, v_nbroute; + var template(omit) Route v_route; + + // Route Management + if (isvalue(p_request.msgHeader.route)) { + v_route := p_request.msgHeader.route; + v_nbroute := lengthof(v_route.routeBody); + // copy and reverse the order of the routes in route header + for (i := 0; i <= (v_nbroute - 1); i := i + 1) { + j := v_nbroute - 1 - i; + vc_recordRoute.routeBody[j] := v_route.routeBody[i]; + } + vc_recordRoute.fieldName := RECORD_ROUTE_E; + + vc_boo_recordRoute := true; + } + } // end function f_getRouteMapIntoRecordRoute + + + } // end group SetHeaders + + + + } // end group FieldOperations + + group SDPOperations { + + /** + * @desc check if message body include SDP attribute (2nd parameter) for any media + */ + function f_check_attribute( + in SDP_Message p_sdp, + in template SDP_attribute p_attribute + ) runs on SipComponent + return boolean { + var integer i, j; + + if (isvalue(p_sdp.media_list)) { + for (j := 0; j < lengthof(p_sdp.media_list); j := j + 1) { + if (isvalue(p_sdp.media_list[j].attributes)) { + for (i := 0; i < lengthof(p_sdp.media_list[j].attributes); i := i + 1) { + if (match(p_sdp.media_list[j].attributes[i], p_attribute)) { + return (true); + } + } + } + } + } + if (isvalue(p_sdp.attributes)) { + for (j := 0; j < lengthof(p_sdp.attributes); j := j + 1) { + if (match(p_sdp.attributes[j], p_attribute)) { + return (true); + } + } + } + + return (false); + } + + /** + * @desc check if message body include SDP (session level) attribute (2nd parameter) for any media + */ + function f_check_session_attribute( + in SDP_Message p_sdp, + in template SDP_attribute p_attribute + ) runs on SipComponent + return boolean { + var integer j; + + if (isvalue(p_sdp.attributes)) { + for (j := 0; j < lengthof(p_sdp.attributes); j := j + 1) { + if (match(p_sdp.attributes[j], p_attribute)) { + return (true); + } + } + } + + return (false); + } + + /** + * @desc identify an SDP direction attribute (session or first media attribute) in a SDP message and return its answer value + * @param p_sdp the SDP message that has been received + * @param p_attribute incoming SDP attribute that need to be used for the SDP direction (answer) + * @return the new attribute (to be send out) derived from the incoming SDP value + * @verdict + */ + function f_get_attribute_answer( + in SDP_Message p_sdp, + in template SDP_attribute p_attribute + ) runs on SipComponent + return SDP_attribute { + var integer i, j; + var template SDP_attribute v_attribute := p_attribute; + + // check if the selected attribute is included in the SDP offer (session attributes) + if (isvalue(p_sdp.attributes)) { + for (j := 0; j < lengthof(p_sdp.attributes); j := j + 1) { + if (match(p_sdp.attributes[j], p_attribute)) { + v_attribute := p_sdp.attributes[j]; + } + } + } + else + // check if the selected attribute is included in the SDP offer (any of the media attributes) + { + if (isvalue(p_sdp.media_list)) { + for (j := 0; j < lengthof(p_sdp.media_list); j := j + 1) { + if (isvalue(p_sdp.media_list[j].attributes)) { + for (i := 0; i < lengthof(p_sdp.media_list[j].attributes); i := i + 1) { + if (match(p_sdp.media_list[j].attributes[i], p_attribute)) { + v_attribute := p_sdp.media_list[j].attributes[i]; + } + } + } + } + } + } + + select (valueof(v_attribute)) { + case (mw_attribute_sendonly) { + return (valueof(m_attribute_recvonly)); + } + case (mw_attribute_sendrecv) { + return (valueof(m_attribute_sendrecv)); + } // MRO + case (mw_attribute_inactive) { + return (valueof(m_attribute_inactive)); + } // MRO + case (mw_attribute_recvonly) { + return (valueof(m_attribute_sendonly)); + } // MRO + } + return (valueof(m_attribute_sendrecv)); // the default return value in case of missing attribute offer + } + + /** + * @desc check if message body include SDP bandwidth (2nd parameter) either for the session or a media description + */ + function f_check_bandwidth( + in SDP_Message p_loc_sdp, + in template SDP_bandwidth p_loc_bandw + ) runs on SipComponent + return boolean { + var integer i, j; + if (isvalue(p_loc_sdp.bandwidth)) { + for (j := 0; j < lengthof(p_loc_sdp.bandwidth); j := j + 1) { + if (match(p_loc_sdp.bandwidth[j], p_loc_bandw)) { + return (true); + } + } + } + if (isvalue(p_loc_sdp.media_list)) { + for (j := 0; j < lengthof(p_loc_sdp.media_list); j := j + 1) { + if (isvalue(p_loc_sdp.media_list[j].bandwidth)) { + for (i := 0; i < lengthof(p_loc_sdp.media_list[j].bandwidth); i := i + 1) { + if (match(p_loc_sdp.media_list[j].bandwidth[i], p_loc_bandw)) { + return (true); + } + } + } + } + } + + return (false); + } + + /** + * @desc check if message body include SDP media (2nd parameter) + */ + function f_check_media( + in SDP_Message p_loc_sdp, + in template(present) SDP_media_desc p_loc_media + ) runs on SipComponent + return boolean { + var integer j; + if (isvalue(p_loc_sdp.media_list)) { + for (j := 0; j < lengthof(p_loc_sdp.media_list); j := j + 1) { + if (match(p_loc_sdp.media_list[j].media_field.transport, p_loc_media.media_field.transport) and match(p_loc_sdp.media_list[j].media_field.fmts, p_loc_media.media_field.fmts)) { + return (true); + } + } + } + return (false); + } + + /** + * @desc check if message body include precondition mechanism (a=des and a=curr) retrun true, else false + * @param loc_sdp SDP message + */ + function f_check_precondition( + in SDP_Message p_loc_sdp + ) runs on SipComponent + return boolean { + if (f_check_attribute(p_loc_sdp, mw_attribute_des) or f_check_attribute(p_loc_sdp, mw_attribute_curr)) { + return (true); + } + + return (false); + } + + + /** + * @desc check if message body include SDP media direction return true, else false + */ + function f_check_media_direction( + in SDP_Message p_loc_sdp + ) runs on SipComponent + return boolean { + + if (f_check_attribute(p_loc_sdp, mw_attribute_sendonly) or f_check_attribute(p_loc_sdp, mw_attribute_recvonly) or f_check_attribute(p_loc_sdp, mw_attribute_sendrecv) or f_check_attribute(p_loc_sdp, mw_attribute_inactive)) { + return (true); + } + + return (false); + } + + /** + * @desc copy media/attribute lines from remote to local SDP variable + */ + function f_check_SDP( + integer p_loc_sdp, + integer p_loc_codec + ) runs on SipComponent + return boolean { + var SDP_media_desc v_media := f_prepare_media(p_loc_sdp, p_loc_codec); + if (vc_sdp_remote.media_list[0].media_field.media != v_media.media_field.media) { + return false; + } + if (vc_sdp_remote.media_list[0].media_field.transport != v_media.media_field.transport) { + return false; + } + if (vc_sdp_remote.media_list[0].media_field.fmts != v_media.media_field.fmts) { + return false; + } + + return true; + } + + /** + * @desc replace the first curr media attribute with the given value. + * @param p_sdp SDP message to modify + * @param p_curr new curr attribute + */ + function f_replace_curr_attribute( + inout SDP_Message p_sdp, + in SDP_attribute_curr p_curr + ) { + var integer i; + var integer v_mn; + if (isvalue(p_sdp.media_list)) { + v_mn := lengthof(p_sdp.media_list[0].attributes); + for (i := 0; i < v_mn; i := i + 1) { + if (ischosen(p_sdp.media_list[0].attributes[i].curr)) { + p_sdp.media_list[0].attributes[i].curr := p_curr; + i := v_mn; + } + } + } + } + + /** + * @desc append new media attribute to the first media description. + * @param p_sdp SDP message to modify + * @param p_att SDP attribute to appand + */ + function f_append_media_attribute( + inout SDP_Message p_sdp, + in SDP_attribute p_att + ) { + var integer v_mn; + if (isvalue(p_sdp.media_list)) { + v_mn := lengthof(p_sdp.media_list[0].attributes); + p_sdp.media_list[0].attributes[v_mn] := p_att; + } + } + + + /** + * @desc append new media to the existing media list in SDP + */ + function f_append_media( + inout SDP_Message p_loc_SDP, + template(value) SDP_media_desc p_loc_media + ) { + var integer v_mn := lengthof(p_loc_SDP.media_list); + p_loc_SDP.media_list[v_mn] := valueof(p_loc_media); + } + + /** + * @desc repare media/attribute lines + */ + function f_prepare_media( + integer p_loc_sdp, + integer p_loc_codec + ) runs on SipComponent + return SDP_media_desc { + var SDP_attribute_rtpmap_codec v_codecs[32] := { + {"PCMU", "8000", omit}, {"GSM", "8000", omit}, {"G723", "8000", omit}, {"DVI4", "8000", omit}, + {"DVI4", "16000", omit}, {"LPC", "8000", omit}, {"PCMA", "8000", omit}, {"G722", "8000", omit}, + {"L16", "44100", "2"}, {"L16", "44100", omit}, {"QCELP", "8000", omit}, {"CN","8000", omit}, + {"MPA", "90000", omit}, {"G728", "8000", omit}, {"DVI4", "11025", omit}, {"DVI4", "22050", omit}, + {"G729", "8000", omit}, {"G726-40", "8000", omit}, {"G726-32", "8000", omit}, {"G726-24", "8000", omit}, + {"G726-16", "8000", omit}, {"G726D", "8000", omit}, {"G726E", "8000", omit}, {"GSM-EFR", "8000", omit}, + {"CelB", "90000", omit}, {"JPEG", "90000", omit}, {"Nv", "90000", omit}, {"H261", "90000", omit}, + {"MPV", "90000", omit}, {"MP2T" ,"90000", omit}, {"H263", "90000", omit}, {"H263-1998", "90000", omit}}; + var SDP_media_desc v_media := { + media_field := { + media := "audio", + ports := { + port_number := 10000, + num_of_ports := omit + }, + transport := "RTP/AVP", + fmts := {"0"} + }, // m=audio + // 8500 + // RTP/AVP + // 0 + information := omit, + connections := omit, + bandwidth := omit, + key := omit, + attributes := omit + }; + + if (32 < p_loc_codec or p_loc_codec < 1) { + log("*** " & __SCOPE__ & ": INFO: Unexpected SDP variant ***"); + setverdict(inconc); + return (v_media); + } + + if (p_loc_sdp == 1) { + } + else if (p_loc_sdp == 2) { + v_media.media_field.fmts := {PX_SIP_SDP_DYN}; // { "98", "0" }; + v_media.attributes := { + { + rtpmap := { + payload_type := PX_SIP_SDP_DYN, + codec := v_codecs[p_loc_codec - 1] + } + } + }; + } + else if (p_loc_sdp == 3) { + v_media.media_field.fmts := {"8"}; + } + else if (p_loc_sdp == 4) { + v_media.media_field.fmts := {"99", "8"}; + v_media.attributes := { + { + rtpmap := { + payload_type := "99", + codec := v_codecs[p_loc_codec - 1] + } + } + }; + } + else if (p_loc_sdp == 5) { + v_media.media_field.media := "image"; + v_media.media_field.transport := "udptl"; + v_media.media_field.fmts := {"t38"}; + } + else if (p_loc_sdp == 6) { + v_media.media_field.media := "image"; + v_media.media_field.transport := "tcptl"; + v_media.media_field.fmts := {"t38"}; + } + else { + log("*** " & __SCOPE__ & ": INFO: Unexpected SDP variant ***"); + setverdict(inconc); + } + + return (v_media); + } + + /** + * @desc repare media/attribute lines + */ + function f_prepare_SDP( + integer p_loc_sdp, + integer p_loc_codec + ) runs on SipComponent { + + vc_sdp_local.media_list := {f_prepare_media(p_loc_sdp, p_loc_codec)}; + } + + /** + * @desc function that copy media/attribute lines from remote to local SDP variable + */ + function f_prepare_SDP_answer( + ) runs on SipComponent { + var integer v_mn, v_cn := 0, i, j, k := 0; + var charstring v_PT; + var SDP_attribute_rtpmap_codec v_rtpmap := { "", "", omit}; + var SDP_attribute_list v_mediaAttributes := {}; + // increase session version + vc_sdp_local.origin.session_version := int2str(str2int(vc_sdp_remote.origin.session_version) + 1); + // if more than one codec, select the firs one + v_mn := lengthof(vc_sdp_remote.media_list); + for (i := 0; i < v_mn; i := i + 1) { + // for every single media + if (isvalue(vc_sdp_remote.media_list[i].attributes)) { + v_cn := lengthof(vc_sdp_remote.media_list[i].attributes); + } + if (lengthof(vc_sdp_remote.media_list[i].media_field.fmts) > 0) { + // select the first one + v_PT := vc_sdp_remote.media_list[i].media_field.fmts[0]; + vc_sdp_local.media_list[i].media_field.fmts := {v_PT}; + for (j := 0; j < v_cn; j := j + 1) { + if (ischosen(vc_sdp_remote.media_list[i].attributes[j].rtpmap)) { + if (v_PT == vc_sdp_remote.media_list[i].attributes[j].rtpmap.payload_type) { + v_rtpmap := vc_sdp_remote.media_list[i].attributes[j].rtpmap.codec; + v_mediaAttributes[k] := {rtpmap := {v_PT, v_rtpmap}}; + k := k + 1; + } // else line is not copied + } + else { + // simple copy of attribute + v_mediaAttributes[k] := vc_sdp_remote.media_list[i].attributes[j]; + k := k + 1; + } + } + vc_sdp_local.media_list[i].attributes := v_mediaAttributes; + + if (isvalue(vc_sdp_local.media_list[i].attributes)) { + v_cn := lengthof(vc_sdp_local.media_list[i].attributes); + for (j := 0; j < v_cn; j := j + 1) { + // simplified handling of status attributes (copy/keep status from peer): + // a) copy/keep SDP_attribute_curr (invert tags if applicable) + if (ischosen(vc_sdp_local.media_list[i].attributes[j].curr)) { + // invert local/remote status tags + if (vc_sdp_local.media_list[i].attributes[j].curr.statusType == "local") { + vc_sdp_local.media_list[i].attributes[j].curr.statusType := "remote"; + } + if (vc_sdp_local.media_list[i].attributes[j].curr.statusType == "remote") { + vc_sdp_local.media_list[i].attributes[j].curr.statusType := "local"; + } + // invert send/recv direction tags + if (vc_sdp_local.media_list[i].attributes[j].curr.direction == "send") { + vc_sdp_local.media_list[i].attributes[j].curr.direction := "recv"; + } + if (vc_sdp_local.media_list[i].attributes[j].curr.direction == "recv") { + vc_sdp_local.media_list[i].attributes[j].curr.direction := "send"; + } + } + else + if ( + // b) copy/keep SDP_attribute_des (keep strength, invert tags if applicable) + ischosen(vc_sdp_local.media_list[i].attributes[j].des) + ) { + // invert local/remote status tags + if (vc_sdp_local.media_list[i].attributes[j].des.statusType == "local") { + vc_sdp_local.media_list[i].attributes[j].des.statusType := "remote"; + } + if (vc_sdp_local.media_list[i].attributes[j].des.statusType == "remote") { + vc_sdp_local.media_list[i].attributes[j].des.statusType := "local"; + } + // invert send/recv direction tags + if (vc_sdp_local.media_list[i].attributes[j].des.direction == "send") { + vc_sdp_local.media_list[i].attributes[j].des.direction := "recv"; + } + if (vc_sdp_local.media_list[i].attributes[j].des.direction == "recv") { + vc_sdp_local.media_list[i].attributes[j].des.direction := "send"; + } + } + else + if ( + // c) simplification: assume no SDP_attribute_conf + ischosen(vc_sdp_local.media_list[i].attributes[j].conf) + ) { + // handle SDP_attribute_conf + } + } + } + } + } + // add handling of prenegotiation, change ports if required etc. + // if prenegotiation... + } + + /** + * @desc reject SDP offer by setting media ports to 0 + */ + function f_reject_SDP_offer( + ) runs on SipComponent { + var integer mn, i; + f_copy_SDP(); // TO BE DONE with more details! + // increase session version + vc_sdp_local.origin.session_version := int2str(str2int(vc_sdp_local.origin.session_version) + 1); + // if more than one codec, select the firs one + mn := lengthof(vc_sdp_local.media_list); + for (i := 0; i < mn; i := i + 1) { + vc_sdp_local.media_list[i].media_field.ports := {0, omit}; + vc_sdp_local.media_list[i].attributes := omit; // {}; + } + } + + /** + * @desc copies SDP message elements from remote to local component variable: - bandwidth - session version (will be incremented) - media list modify the direction attribute of an SDP media list entry within an SDP message (vc_sdp_local) + * @param p_medianum list position number of the media (if value 0 identifies first media list element) + * @param p_direction the new direction attribute to be included in the media entry + * @verdict + */ + function f_SIP_modMediaDirection( + integer p_medianum, + template(value) SDP_attribute p_direction + ) runs on SipComponent { + var boolean v_set_direction; + + // flag indicates if direction attribute has been modified + var integer v_mn := 0; + + // length of media list (number of entries) + var integer v_cn := 0; + + // number of attributes of a media entry + var integer i, j, k := 0; + var SDP_attribute_list v_mediaAttributes := {}; + // collect the media attributes (to be assigned at end of function) + f_copy_SDP(); // copy SDP session bandwidth and media list from remote to local component variable + // increment session version + vc_sdp_local.origin.session_version := int2str(str2int(vc_sdp_local.origin.session_version) + 1); + + // if more than one codec, select the first one + v_mn := lengthof(vc_sdp_local.media_list); + + if (p_medianum == 0) + // specific media requested + { + p_medianum := 1; // start checking from first media + } + if (p_medianum > 0) + // specific media requested + { + if (not (p_medianum > v_mn)) { + v_mn := p_medianum; + } + } + + // handling of media list elements + for (i := 0; i < v_mn; i := i + 1) { + v_cn := 0; // initialize the number of attributes of the media list entry + if (isvalue(vc_sdp_local.media_list)) + // media_list is optional + { + // log("vc_sdp_local.media_list[i ] ",vc_sdp_local.media_list[i ] ); + if (isvalue(vc_sdp_local.media_list[i].attributes)) { + v_cn := lengthof(vc_sdp_local.media_list[i].attributes); + } + + v_set_direction := false; + + // if (lengthof(vc_sdp_local.media_list[i ] .media_field.fmts)>1) + // select the first one + for (j := 0; j < v_cn; j := j + 1) { + if (ischosen(vc_sdp_local.media_list[i].attributes[j].recvonly) or ischosen(vc_sdp_local.media_list[i].attributes[j].sendonly) or ischosen(vc_sdp_local.media_list[i].attributes[j].inactive) or ischosen(vc_sdp_local.media_list[i].attributes[j].sendrecv)) { + v_mediaAttributes[k] := valueof(p_direction); + v_set_direction := true; + } + else + // non-direction attributes will be copied + { + v_mediaAttributes[k] := vc_sdp_local.media_list[i].attributes[j]; + } + k := k + 1; + } + + if (not v_set_direction) { + v_mediaAttributes[k] := valueof(p_direction); + } + vc_sdp_local.media_list[i].attributes := v_mediaAttributes; + // } + } + } + // add handling of prenegotiation, change ports if required etc. + // if prenegotiation... + } + + /** + * @desc modify session and media attributes direction + */ + function f_SIP_modSessionDirection( + template(value) SDP_attribute p_direction + ) runs on SipComponent { + var boolean v_set_direction := false; + var integer v_mn := 0, i := 0; + + if (isvalue(vc_sdp_local.attributes)) { + v_mn := lengthof(vc_sdp_local.attributes); + + for (i := 0; i < v_mn; i := i + 1) { + // for every single attribute (that is not omit) + if (ischosen(vc_sdp_local.attributes[i].recvonly) or ischosen(vc_sdp_local.attributes[i].sendonly) or ischosen(vc_sdp_local.attributes[i].inactive) or ischosen(vc_sdp_local.attributes[i].sendrecv)) { + vc_sdp_local.attributes[i] := valueof(p_direction); + v_set_direction := true; + } + } + if (not v_set_direction) + // if not sent before + { + vc_sdp_local.attributes[v_mn] := valueof(p_direction); + } + } + else { + vc_sdp_local.attributes[0] := valueof(p_direction); + } + } + + /** + * @desc check (from remote) and set (local) the session/media attribute lines on directions + * @param p_direction_in incoming SDP attribute that need to be checked + * @param p_direction_out SDP attribute that should be included in the SDP answer (to be returned to peer) + * @return + * @verdict + */ + function f_SIP_checksetSDPreqDirection( + template(value) SDP_attribute p_direction_in, + template(value) SDP_attribute p_direction_out + ) runs on SipComponent { + var template(value) SDP_attribute v_direction_out := p_direction_out; + // check incoming SDP attribute + if (not (isvalue(vc_request.messageBody) and (f_check_attribute(vc_request.messageBody.sdpMessageBody, p_direction_in)))) { + if (match(valueof(p_direction_in), mw_attribute_sendrecv) and not (f_check_attribute(vc_request.messageBody.sdpMessageBody, mw_attribute_sendrecv) or f_check_attribute(vc_request.messageBody.sdpMessageBody, mw_attribute_sendonly) or f_check_attribute(vc_request.messageBody.sdpMessageBody, mw_attribute_recvonly) or f_check_attribute(vc_request.messageBody.sdpMessageBody, mw_attribute_inactive))) { + log("*** " &__SCOPE__& ": INFO: no direction attributes with expectation: ", p_direction_in, " ***"); + } + else { + setverdict(fail); + } + } + else { + setverdict(pass); + log("*** " &__SCOPE__& ": INFO: attribute found in message body ***"); + } + if (not(isbound(p_direction_out))) + // STF549 if (match(omit, p_direction_out)) + { + v_direction_out := f_get_attribute_answer(vc_request.messageBody.sdpMessageBody, p_direction_in); + } + f_SIP_modMediaDirection(1, v_direction_out); // handling of attribute in media description + f_SIP_modSessionDirection(v_direction_out); // handling of attribute in session + } + + /* + * + * @desc check (from remote) and set (local) the session/media attribute lines on directions + * @param p_direction_in incoming SDP attribute that need to be checked + * @param p_direction_out SDP attribute that should be included in the SDP answer (to be returned to peer) + * @return + * @verdict + */ + function f_SIP_checkResponsesetSDPreqDirection( + template(value) SDP_attribute p_direction_in, + template(value) SDP_attribute p_direction_out + ) runs on SipComponent { + var template(value) SDP_attribute v_direction_out := p_direction_out; + // check incoming SDP attribute + if (not (isvalue(vc_response.messageBody) and (f_check_attribute(vc_response.messageBody.sdpMessageBody, p_direction_in)))) { + if (match(valueof(p_direction_in), mw_attribute_sendrecv) and not (f_check_attribute(vc_response.messageBody.sdpMessageBody, mw_attribute_sendrecv) or f_check_attribute(vc_response.messageBody.sdpMessageBody, mw_attribute_sendonly) or f_check_attribute(vc_response.messageBody.sdpMessageBody, mw_attribute_recvonly) or f_check_attribute(vc_response.messageBody.sdpMessageBody, mw_attribute_inactive))) { + log("*** " &__SCOPE__& ": INFO: no direction attributes with expectation: ", p_direction_in, " ***"); + } + else { + setverdict(fail); + } + } + else { + setverdict(pass); + log("*** " &__SCOPE__& ": INFO: attribute found in message body ***"); + } + if (not(isbound(p_direction_out))) + // STF549 if (match(omit, p_direction_out)) + { + v_direction_out := f_get_attribute_answer(vc_response.messageBody.sdpMessageBody, p_direction_in); + } + f_SIP_modMediaDirection(1, v_direction_out); // handling of attribute in media description + f_SIP_modSessionDirection(v_direction_out); // handling of attribute in session + } + + /* + * + * @desc check (from remote) and set (local) the session attribute lines on directions + * @param p_direction_in incoming SDP attribute that need to be checked + * @param p_direction_out SDP attribute that should be included in the SDP answer (to be returned to peer) + * @return + * @verdict + */ + function f_SIP_checksetSDPreqDirectionSession( + template(value) SDP_attribute p_direction_in, + template(value) SDP_attribute p_direction_out + ) runs on SipComponent { + var template(value) SDP_attribute v_direction_out := p_direction_out; + // check incoming SDP attribute + if (not (isvalue(vc_request.messageBody) and (f_check_session_attribute(vc_request.messageBody.sdpMessageBody, p_direction_in)))) { + if (match(valueof(p_direction_in), mw_attribute_sendrecv) and not (f_check_session_attribute(vc_request.messageBody.sdpMessageBody, mw_attribute_sendrecv) or f_check_session_attribute(vc_request.messageBody.sdpMessageBody, mw_attribute_sendonly) or f_check_session_attribute(vc_request.messageBody.sdpMessageBody, mw_attribute_recvonly) or f_check_session_attribute(vc_request.messageBody.sdpMessageBody, mw_attribute_inactive))) { + log("*** " &__SCOPE__& ": INFO: no direction attributes with expectation: ", p_direction_in, " ***"); + } + else { + setverdict(fail); + } + } + if (not(isbound(p_direction_out))) + // STF549 if (match(omit, p_direction_out)) + { + v_direction_out := f_get_attribute_answer(vc_request.messageBody.sdpMessageBody, p_direction_in); + } + f_SIP_modSessionDirection(v_direction_out); // handling of attribute in session + } + + /* + * + * @desc check (from remote) and set (local) the session attribute lines on directions + * @param p_direction_in incoming SDP attribute that need to be checked + * @param p_direction_out SDP attribute that should be included in the SDP answer (to be returned to peer) + * @return + * @verdict + */ + function f_SIP_checkResponsesetSDPreqDirectionSession( + template(value) SDP_attribute p_direction_in, + template(value) SDP_attribute p_direction_out + ) runs on SipComponent { + var template(value) SDP_attribute v_direction_out := p_direction_out; + // check incoming SDP attribute + if (not (isvalue(vc_response.messageBody) and (f_check_session_attribute(vc_response.messageBody.sdpMessageBody, p_direction_in)))) { + if (match(valueof(p_direction_in), mw_attribute_sendrecv) and not (f_check_session_attribute(vc_response.messageBody.sdpMessageBody, mw_attribute_sendrecv) or f_check_session_attribute(vc_response.messageBody.sdpMessageBody, mw_attribute_sendonly) or f_check_session_attribute(vc_response.messageBody.sdpMessageBody, mw_attribute_recvonly) or f_check_session_attribute(vc_response.messageBody.sdpMessageBody, mw_attribute_inactive))) { + log("*** " &__SCOPE__& ": INFO: no direction attributes with expectation: ", p_direction_in, " ***"); + } + else { + setverdict(fail); + } + } + if (not(isbound(p_direction_out))) + // STF549 if (match(omit, p_direction_out)) + { + v_direction_out := f_get_attribute_answer(vc_response.messageBody.sdpMessageBody, p_direction_in); + } + f_SIP_modSessionDirection(v_direction_out); // handling of attribute in session + } + + + /* + * + * @desc check (from remote) and set (local)the session/media attribute lines on directions + * @param p_direction_in attribute to be check + * @param p_direction_out attrubyte to be + * @return + * @verdict + */ + function f_SIP_checkSDPrespDirection( + template SDP_attribute p_direction_in + ) runs on SipComponent { + // check incoming SDP attribute + if (not (isvalue(vc_response.messageBody) and f_check_attribute(vc_response.messageBody.sdpMessageBody, p_direction_in))) { + setverdict(fail); + } + } + + /** + * @desc check media/attribute lines from remote + */ + function f_SIP_checkMediaDirection( + integer p_medianum, + template SDP_attribute p_direction + ) runs on SipComponent + return boolean { + var integer v_mn, v_cn := 0, i, j; + var boolean v_result := false; + // increase session version + vc_sdp_remote.origin.session_version := int2str(str2int(vc_sdp_remote.origin.session_version) + 1); + // if more than one codec, select the firs one + v_mn := lengthof(vc_sdp_remote.media_list); + if (p_medianum == 0) + // specific media requested + { + p_medianum := 1; // start checking from first media + } + if (p_medianum > 0) + // specific media requested + { + if (p_medianum > v_mn) { + return false; + } + else { + v_mn := p_medianum; + } + } + for (i := p_medianum - 1; i < v_mn; i := i + 1) { + // for every single media + if (isvalue(vc_sdp_remote.media_list[i].attributes)) { + v_cn := lengthof(vc_sdp_remote.media_list[i].attributes); + } + if (lengthof(vc_sdp_remote.media_list[i].attributes) > 0) { + // select the first one + for (j := 0; j < lengthof(vc_sdp_remote.media_list[i].attributes); j := j + 1) { + if (ischosen(vc_sdp_remote.media_list[i].attributes[j].recvonly) or ischosen(vc_sdp_remote.media_list[i].attributes[j].sendonly) or ischosen(vc_sdp_remote.media_list[i].attributes[j].inactive) or ischosen(vc_sdp_remote.media_list[i].attributes[j].sendrecv)) { + if (match(vc_sdp_remote.media_list[i].attributes[j], p_direction)) { + v_result := true; + } + else { + return false; + } + } + } + } + } + return v_result; + } + + /** + * @desc copy media/attribute lines from remote to local SDP variable + */ + function f_copy_SDP( + ) runs on SipComponent { + if (isvalue(vc_sdp_remote.connection)) { + vc_sdp_local.connection := vc_sdp_remote.connection; + } + else { + vc_sdp_local.connection := omit; + } + + vc_sdp_local.origin := vc_sdp_remote.origin; + vc_sdp_local.session_name := vc_sdp_remote.session_name; + + if (isvalue(vc_sdp_remote.bandwidth)) { + vc_sdp_local.bandwidth := vc_sdp_remote.bandwidth; + } + else { + vc_sdp_local.bandwidth := {}; + } + + if (isvalue(vc_sdp_remote.media_list)) { + // // cleaning of media before assignment + // if (isvalue(vc_sdp_local.media_list)) + // { + // for (var integer i:=0; i value v_request sender vc_sent_label { + tc_wait.stop; + f_setHeadersOnReceiptOfREGISTER(v_request); + } + [] tc_wait.timeout { + setverdict(fail); + f_componentStop(); + } + } + } + + /** + * @desc function awaits SUBSCRIBE + * @param p_register expected SUBSCRIBE request + */ + function f_awaitingSUBSCRIBE( + in template(present) SUBSCRIBE_Request p_subscribe := ? + ) runs on SipComponent { + var SUBSCRIBE_Request v_request; + + tc_wait.start(PX_SIP_TWAIT); + alt { + [] SIPP.receive(p_subscribe) -> value v_request sender vc_sent_label { + tc_wait.stop; + f_setHeadersOnReceiptOfSUBSCRIBE(v_request); + } + [] SIPP.receive(mw_SUBSCRIBE_Request_Base) -> value v_request sender vc_sent_label { + tc_wait.stop; + setverdict(fail); + f_setHeadersOnReceiptOfSUBSCRIBE(v_request); + // f_send200OK(); + } + } + } + + /** + * @desc function awaits REGISTER and sends a 200 OK response + * @param p_reply flag used to avoid the 200OK response sending + */ + function f_awaitingREGISTER_sendReply( + in template(present) REGISTER_Request p_register := ?, + in boolean p_reply + ) runs on SipComponent { + var REGISTER_Request v_request; + + tc_wait.start(PX_SIP_TWAIT); + alt { + [] SIPP.receive(p_register) -> value v_request sender vc_sent_label { + tc_wait.stop; + vc_request := v_request; + f_setHeadersOnReceiptOfREGISTER(v_request); + // Answer to the Request + if (p_reply) { + f_send200OK(); + } + } + [] tc_wait.timeout { + setverdict(fail); + f_componentStop(); + } + } + } + + + /** + * @desc Function waiting for a 200 OK response + * @param p_cSeq_s current cSeq expectation + */ + function f_awaitingOkResponse( + inout CSeq p_cSeq_s + ) runs on SipComponent { + + tc_resp.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, p_cSeq_s)) -> value vc_response { + tc_resp.stop; + f_setHeadersOnReceiptOfResponse(vc_response); + setverdict(pass); + } + } + } // end awaitingOkResponse + + /** + * @desc Function waiting for a response + * @param p_Response expected response message + */ + function f_awaitingResponse( + in template(present) Response p_Response := ? + ) runs on SipComponent { + tc_resp.start; + a_awaitingResponse(p_Response); + } // end f_awaitingResponse + + altstep a_awaitingResponse( + in template(present) Response p_Response := ? + ) runs on SipComponent { + [] SIPP.receive(p_Response) -> value vc_response { + tc_resp.stop; + f_setHeadersOnReceiptOfResponse(vc_response); + // setverdict(pass) + } + } // end f_awaitingResponse + + /** + * @desc Function waiting for a response, repeat if 100 Trying is received + * @param p_Response expected response message + */ + function f_awaitingResponseIgnore100Trying( + in template(present) Response p_Response := ? + ) runs on SipComponent { + tc_resp.start; + alt { + [] SIPP.receive(p_Response) -> value vc_response { + tc_resp.stop; + f_setHeadersOnReceiptOfResponse(vc_response); + // setverdict(pass) + } + [] SIPP.receive(mw_Response_Base(c_statusLine100, vc_callId, vc_cSeq)) -> value vc_response { + repeat; + } + } + } // end f_awaitingResponseIgnore100Trying + + /** + * @desc Function waiting for a response and send ACK on FailureResponses 4xx,5xx,6xx + * @param p_Response expected response message + */ + function f_awaitingResponseSendACK( + in template(present) Response p_Response := ? + ) runs on SipComponent { + tc_resp.start; + alt { + [] SIPP.receive(p_Response) -> value vc_response { + tc_resp.stop; + f_setHeadersOnReceiptOfResponse(vc_response); + LibSip_Steps.f_setHeadersACK(); + f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via)); + setverdict(pass); + } + } + } // end f_awaitingResponse + + /** + * @desc Function waiting for a response + * @param p_Response expected response message + */ + function f_awaitingResponsePassOnTimeout( + in template(present) Response p_Response := ? + ) runs on SipComponent { + tc_resp.start; + alt { + [] SIPP.receive(p_Response) -> value vc_response { + tc_resp.stop; + f_setHeadersOnReceiptOfResponse(vc_response); + vc_boo_response := true; + // setverdict(pass) + } + [] tc_resp.timeout { + vc_boo_response := false; + // setverdict (pass) + } + } + } // end f_awaitingResponsePassOnTimeout + + /** + * @desc Function waiting for a 200 OK response + * @param p_cSeq_s current cSeq expectation + */ + function f_awaitingOkResponseAndNOTIFY_sendReply( + inout CSeq p_cSeq_s, + in template(present) NOTIFY_Request p_MSG := ? + ) runs on SipComponent { + + var boolean v_received_OK := false; + var boolean v_received_NOTIFY := false; + var NOTIFY_Request v_MSG; + tc_resp.start; + tc_wait.start(PX_SIP_TWAIT); + + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, p_cSeq_s)) -> value vc_response { + tc_resp.stop; + vc_subscribed := true; + f_setHeadersOnReceiptOfResponse(vc_response); + v_received_OK := true; + setverdict(pass); + if (not (v_received_NOTIFY)) { + repeat; + } + } + [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label { + tc_wait.stop; + f_getRouteMapIntoRecordRoute(v_MSG); + f_setHeadersOnReceiptOfRequest(v_MSG); + // Answer to the NOTIFY + f_send200OK(); + v_received_NOTIFY := true; + if (not (v_received_OK)) { + repeat; + } + } + } + } // end f_awaitingOkResponseAndNOTIFY_sendReply + + /** + * @desc await INFO request reply with 200 OK + */ + function f_awaitingINFO_sendReply( + in template(value) INFO_Request p_info + ) runs on SipComponent { + var INFO_Request v_request; + + tc_wait.start(PX_SIP_TWAIT); + alt { + [] SIPP.receive(p_info) -> value v_request sender vc_sent_label { + tc_wait.stop; + f_setHeadersOnReceiptOfRequest(v_request); + // Answer to the INFO + f_send200OK(); + } + } + } // end of f_awaitingINFO_sendReply + + /** + * @desc function awaiting for an incoming INVITE + * @param p_request expected message + */ + function f_awaitingINVITE( + template(present) INVITE_Request p_request := ? + ) runs on SipComponent { + var INVITE_Request v_INVITE_Request; + + tc_wait.start(PX_SIP_TWAIT); + alt { + [] SIPP.receive(p_request) -> value v_INVITE_Request sender vc_sent_label { + tc_wait.stop; + vc_ignore_invite := true; + vc_first_recv := true; // communication has started + f_setHeadersOnReceiptOfINVITE(v_INVITE_Request); + SIPP.send(m_Response_Base(c_statusLine100, vc_callId, vc_cSeq, vc_from, vc_to, vc_via)) to vc_sent_label; + } + [vc_interface_isc] SIPP.receive(mw_INVITE_Request_Base) -> value v_INVITE_Request sender vc_sent_label { + tc_wait.stop; + setverdict(fail); + f_setHeadersOnReceiptOfINVITE(v_INVITE_Request); + SIPP.send(m_Response_Base(c_statusLine100, vc_callId, vc_cSeq, vc_from, vc_to, vc_via)) to vc_sent_label; + // clear session - send 486 and await ACK + f_sendResponse(m_Response_Base(c_statusLine486, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via)); + f_awaitingACK(mw_ACK_Request_Base(?)); + // await 486 which go towards and send ACK + f_awaitingResponse(mw_Response_Base(c_statusLine486, ?, ?)); + f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via)); + syncPort.send(m_syncClientStop); + stop; + } + } + } // end f_awaitingINVITE + + /** + * @desc function awaiting for an incoming INVITE + * @param p_request expected message + */ + function f_awaitingINVITE_No100Response( + template(present) INVITE_Request p_request := ? + ) runs on SipComponent { + var INVITE_Request v_INVITE_Request; + + tc_wait.start(PX_SIP_TWAIT); + alt { + [] SIPP.receive(p_request) -> value v_INVITE_Request sender vc_sent_label { + tc_wait.stop; + vc_ignore_invite := true; + vc_first_recv := true; // communication has started + f_setHeadersOnReceiptOfINVITE(v_INVITE_Request); + // SIPP.send(m_Response_Base(c_statusLine100, vc_callId, vc_cSeq, vc_from, vc_to, vc_via)) to vc_sent_label; + } + } + } // end f_awaitingInviteRequest + + /** + * @desc function awaiting for an incoming INVITE + * @param p_request expected message + */ + function f_awaitingINVITE_PassOnTimeout( + template(present) INVITE_Request p_request := ? + ) runs on SipComponent { + var INVITE_Request v_INVITE_Request; + + tc_wait.start(PX_SIP_TWAIT); + alt { + [] SIPP.receive(p_request) -> value v_INVITE_Request sender vc_sent_label { + tc_wait.stop; + vc_ignore_invite := true; + vc_first_recv := true; // communication has started + vc_boo_request := true; + f_setHeadersOnReceiptOfINVITE(v_INVITE_Request); + SIPP.send(m_Response_Base(c_statusLine100, vc_callId, vc_cSeq, vc_from, vc_to, vc_via)) to vc_sent_label; + } + [] tc_wait.timeout { + vc_boo_request := false; + } + } + } // end f_awaitingInviteRequest + + /** + * @desc function awaiting ACK request + */ + function f_awaitingACK( + in template(present) ACK_Request p_ACK := ? + ) runs on SipComponent { + f_awaitingACK_setHeaders(p_ACK, false); + } // end f_awaitingACK + + /** + * @desc function awaiting ACK request + */ + function f_awaitingACK_setHeaders( + in template(present) ACK_Request p_ACK := ?, + in boolean p_setHeaders + ) runs on SipComponent { + var ACK_Request v_ACK_Request; + tc_ack.start; + + alt { + [] SIPP.receive(p_ACK) -> value v_ACK_Request { + tc_ack.stop; + if (p_setHeaders) { + f_setHeadersOnReceiptOfRequest(v_ACK_Request); + } + } + } + } // end f_awaitingACK_setHeaders + + /** + * @desc function awaiting BYE and sending 200OK response + * @param p_BYE expected BYE + */ + function f_awaitingBYE( + in template(present) BYE_Request p_BYE := ? + ) runs on SipComponent { + var BYE_Request v_BYE_Request; + + tc_wait.start(PX_SIP_TWAIT); + alt { + [] SIPP.receive(p_BYE) -> value v_BYE_Request sender vc_sent_label { + tc_wait.stop; + vc_ignore_bye := true; + f_setHeadersOnReceiptOfBYE(v_BYE_Request); + // f_send200OK(); + } + } + } // end f_awaitingBYE + + /** + * @desc function awaiting BYE and sending 200OK response + * @param p_BYE expected BYE + */ + function f_awaitingBYE_sendReply( + in template(present) BYE_Request p_BYE := ? + ) runs on SipComponent { + var BYE_Request v_BYE_Request; + + tc_wait.start(PX_SIP_TWAIT); + alt { + [] SIPP.receive(p_BYE) -> value v_BYE_Request sender vc_sent_label { + tc_wait.stop; + vc_ignore_bye := true; + f_setHeadersOnReceiptOfBYE(v_BYE_Request); + f_send200OK(); + } + } + } // end f_awaitingBYE_sendReply + + /** + * @desc function awaiting BYE and sending 200OK response + * @param p_BYE expected BYE + */ + function f_awaitingBYE_sendReply_PassOnTimeout( + in template(present) BYE_Request p_BYE := ? + ) runs on SipComponent { + var BYE_Request v_BYE_Request; + + tc_wait.start(PX_SIP_TWAIT); + alt { + [] SIPP.receive(p_BYE) -> value v_BYE_Request sender vc_sent_label { + tc_wait.stop; + vc_ignore_bye := true; + vc_boo_request := true; + f_setHeadersOnReceiptOfBYE(v_BYE_Request); + f_send200OK(); + } + [] tc_wait.timeout { + vc_boo_request := false; + } + } + } // end f_awaitingBYE_sendReply_PassOnTimeout + + /** + * @desc function awaiting CANCEL + * @param p_CANCEL expected CANCEL + */ + function f_awaitingCANCEL( + in template(present) CANCEL_Request p_CANCEL := ? + ) runs on SipComponent { + var CANCEL_Request v_MSG; + + tc_wait.start(PX_SIP_TWAIT); + alt { + [] SIPP.receive(p_CANCEL) -> value v_MSG sender vc_sent_label { + tc_wait.stop; + f_setHeadersOnReceiptOfRequest(v_MSG); + } + } + } // end f_awaitingCANCEL + /** + * @desc await MESSAGE request + */ + function f_awaitingMESSAGE( + in template(present) MESSAGE_Request p_MSG := ? + ) runs on SipComponent { + var MESSAGE_Request v_MSG; + + tc_wait.start(PX_SIP_TWAIT); + alt { + [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label { + tc_wait.stop; + f_setHeadersOnReceiptOfRequest(v_MSG); + } + [] SIPP.receive(mw_MESSAGE_Request_Base) -> value v_MSG sender vc_sent_label { + tc_wait.stop; + f_setHeadersOnReceiptOfRequest(v_MSG); + log("*** " &__SCOPE__& ": INFO: Received MESSAGE not as expected! ***"); + setverdict(fail); + } + } + } // end of f_awaitingMESSAGE + + /** + * @desc await MESSAGE request reply with 200 OK + */ + function f_awaitingMESSAGE_sendReply( + ) runs on SipComponent { + var MESSAGE_Request v_MSG; + + tc_wait.start(PX_SIP_TWAIT); + alt { + [] SIPP.receive(mw_MESSAGE_Request_Base) -> value v_MSG sender vc_sent_label { + tc_wait.stop; + f_setHeadersOnReceiptOfRequest(v_MSG); + // Answer to the MESSAGE + f_send200OK(); + } + } + } // end of f_awaitingMESSAGE_sendReply + + /** + * @desc await MESSAGE request + */ + function f_awaitingMESSAGE_sendReply_PassOnTimeout( + in template(present) MESSAGE_Request p_MSG := ? + ) runs on SipComponent { + var MESSAGE_Request v_MSG; + + tc_wait.start(PX_SIP_TWAIT); + alt { + [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label { + tc_wait.stop; + f_setHeadersOnReceiptOfRequest(v_MSG); + // Answer to the MESSAGE + // f_send200OK(); + vc_boo_request := true; + f_send200OK(); + // setverdict (pass); + } + [] tc_wait.timeout { + vc_boo_request := false; + // setverdict (pass); + } + } + } // end of f_awaitingMESSAGE_PassOnTimeout + + /** + * @desc await NOTIFY request + */ + function f_awaitingNOTIFY( + in template(present) NOTIFY_Request p_MSG := ? + ) runs on SipComponent { + var NOTIFY_Request v_MSG; + + tc_wait.start(PX_SIP_TWAIT); + alt { + [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label { + tc_wait.stop; + f_getRouteMapIntoRecordRoute(v_MSG); + f_setHeadersOnReceiptOfRequest(v_MSG); + } + } + } // end of f_awaitingNOTIFY + + /** + * @desc await NOTIFY request reply with 200 OK + */ + function f_awaitingNOTIFY_sendReply( + in template(present) NOTIFY_Request p_MSG := ? + ) runs on SipComponent { + var NOTIFY_Request v_MSG; + + tc_wait.start(PX_SIP_TWAIT); + alt { + [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label { + tc_wait.stop; + f_getRouteMapIntoRecordRoute(v_MSG); + f_setHeadersOnReceiptOfRequest(v_MSG); + // Answer to the NOTIFY + f_send200OK(); + } + } + } // end of f_awaitingNOTIFY_sendReply + + function f_awaitingNOTIFY_sendReply_postamble( + in template(present) NOTIFY_Request p_MSG := ? + ) runs on SipComponent { + var NOTIFY_Request v_MSG; + + tc_wait.start(5.0); + alt { + [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label { + tc_wait.stop; + f_getRouteMapIntoRecordRoute(v_MSG); + f_setHeadersOnReceiptOfRequest(v_MSG); + // Answer to the NOTIFY + f_send200OK(); + } + [] tc_wait.timeout { + // do nothing as receiving the Notify in de-registration is not part of the test body + } + } + } // end of f_awaitingNOTIFY_sendReply_postamble + + /** + * @desc await PRACK request reply with 200 OK + */ + function f_awaitingPRACK_sendReply( + in template(present) PRACK_Request p_MSG := ? + ) runs on SipComponent { + var PRACK_Request v_MSG; + + tc_wait.start(PX_SIP_TWAIT); + alt { + [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label { + tc_wait.stop; + f_setHeadersOnReceiptOfRequest(v_MSG); + // Answer to the PRACK + if (isvalue(vc_request.messageBody) and ischosen(vc_request.messageBody.sdpMessageBody)) { + f_sendResponse(m_Response_mbody(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, omit, f_recordroute(), m_MBody_SDP(vc_sdp_local))); + } + else { + f_sendResponse(m_Response_ext(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, omit, f_recordroute())); + } + } + } + } // end of f_awaitingPRACK_sendReply + + function f_awaitingPRACK( + in template(present) PRACK_Request p_MSG := ? + ) runs on SipComponent { + var PRACK_Request v_MSG; + + tc_wait.start(PX_SIP_TWAIT); + alt { + [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label { + tc_wait.stop; + f_setHeadersOnReceiptOfRequest(v_MSG); + } + } + } // end of f_awaitingPRACK + + /** + * @desc await PUBLISH request reply with 200 OK + */ + function f_awaitingPUBLISH_sendReply( + in template(present) PUBLISH_Request p_MSG := ? + ) runs on SipComponent { + var PUBLISH_Request v_MSG; + + tc_wait.start(PX_SIP_TWAIT); + alt { + [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label { + tc_wait.stop; + f_setHeadersOnReceiptOfRequest(v_MSG); + // Answer to the PUBLISH + f_send200OK(); + } + } + } // end of f_awaitingPUBLISH_sendReply + + /** + * @desc await UPDATE request + */ + function f_awaitingUPDATE( + in template(present) UPDATE_Request p_MSG := ? + ) runs on SipComponent { + var UPDATE_Request v_MSG; + + tc_wait.start(PX_SIP_TWAIT); + alt { + [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label { + tc_wait.stop; + f_setHeadersOnReceiptOfRequest(v_MSG); + } + } + } // end of f_awaitingUPDATE + + /** + * @desc await UPDATE request reply with 200 OK + */ + function f_awaitingUPDATE_sendReply( + in template(present) UPDATE_Request p_MSG := ? + ) runs on SipComponent { + var UPDATE_Request v_MSG; + + tc_wait.start(PX_SIP_TWAIT); + alt { + [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label { + tc_wait.stop; + f_setHeadersOnReceiptOfRequest(v_MSG); + // Answer to the UPDATE + if (isvalue(vc_request.messageBody) and ischosen(vc_request.messageBody.sdpMessageBody)) { + f_sendResponse(m_Response_mbody(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, omit, f_recordroute(), m_MBody_SDP(vc_sdp_local))); + } + else { + f_sendResponse(m_Response_ext(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, omit, f_recordroute())); + } + } + } + } // end of f_awaitingUPDATE_sendReply + + + /** + * @desc await REFER request + */ + function f_awaitingREFER( + in template(present) REFER_Request p_MSG := ? + ) runs on SipComponent { + var REFER_Request v_MSG; + + tc_wait.start(PX_SIP_TWAIT); + alt { + [] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label { + tc_wait.stop; + f_setHeadersOnReceiptOfREFER(v_MSG); + } + } + } // end of f_awaitingUPDATE + + + + } // end AwaitingMessage + + group SendMessage { + + /** + * @desc send ACK message, update the route and recordRoute header fields depending on boolean flags + * @param p_request template of the message to be sent + */ + function f_SendACK( + template(value) ACK_Request p_request + ) runs on SipComponent { + // p_request.msgHeader.route := f_route(); // update the route header field depending on vc_boo_route + // n/a p_request.msgHeader.recordRoute := f_recordroute(); // update the route header field depending on vc_boo_route + SIPP.send(p_request) to vc_sent_label; + } + + /** + * @desc send BYE message, update the route and recordRoute header fields depending on boolean flags + * @param p_request template of the message to be sent + */ + function f_SendBYE( + template(value) BYE_Request p_request + ) runs on SipComponent { + SIPP.send(p_request) to vc_sent_label; + } + + /** + * @desc send CANCEL message + * @param p_request template of the message to be sent + */ + function f_SendCANCEL( + template(value) CANCEL_Request p_request + ) runs on SipComponent { + SIPP.send(p_request) to vc_sent_label; + } + + /** + * @desc send INFO message + * @param p_request template of the message to be sent + */ + function f_SendINFO( + template(value) INFO_Request p_request + ) runs on SipComponent { + f_setHeadersGeneral(vc_cSeq, "INFO"); // cseq, contact, branch, via + SIPP.send(p_request) to vc_sent_label; + } + + /** + * @desc send INVITE message + * @param p_request template of the message to be sent + */ + function f_SendINVITE( + template(value) INVITE_Request p_request + ) runs on SipComponent { + vc_requestFor407 := valueof(p_request); + SIPP.send(p_request) to vc_sent_label; + vc_request := vc_requestFor407; + if (PX_SIP_INVITE_AUTHENTICATION_ENABLED) { + a_altstep_401or407(); + } + } + + /** + * @desc send PRACK message + * @param p_request template of the message to be sent + */ + function f_SendPRACK( + ) runs on SipComponent { + var integer responseNum := 1; + var PRACK_Request prackReq; + if (isvalue(vc_response.msgHeader.rSeq) and + isvalue(vc_response.msgHeader.rSeq.responseNum)){ + responseNum := vc_response.msgHeader.rSeq.responseNum; + } + vc_rAck := valueof(m_RAck(vc_response.msgHeader.rSeq.responseNum, vc_cSeq.seqNumber, vc_cSeq.method)); + f_setHeadersGeneral(vc_cSeq, "PRACK"); // cseq, contact, branch, via + prackReq := valueof(m_PRACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_rAck)); + if (isvalue(vc_response.msgHeader.recordRoute)){ + prackReq.msgHeader.route := valueof(f_route()); + } + SIPP.send(prackReq) to vc_sent_label; + } + + /** + * @desc send PUBLISH message + * @param p_request template of the message to be sent + */ + function f_SendPUBLISH( + template(value) PUBLISH_Request p_request + ) runs on SipComponent { + SIPP.send(p_request) to vc_sent_label; + } + + /** + * @desc send REGISTER message + * @param p_request template of the message to be sent + */ + function f_SendREGISTER( + template(value) REGISTER_Request p_request + ) runs on SipComponent { + SIPP.send(p_request) to vc_sent_label; + } + + /** + * @desc send SUBSCRIBE message + * @param p_request template of the message to be sent + */ + function f_SendSUBSCRIBE( + template(value) SUBSCRIBE_Request p_request + ) runs on SipComponent { + SIPP.send(p_request) to vc_sent_label; + } + + /** + * @desc send UPDATE message + * @param p_request template of the message to be sent + */ + function f_SendUPDATE( + template(value) UPDATE_Request p_request + ) runs on SipComponent { + f_setHeadersGeneral(vc_cSeq, "UPDATE"); // cseq, contact, branch, via + p_request.msgHeader.cSeq := vc_cSeq; + p_request.msgHeader.contact := vc_contact; + p_request.msgHeader.via := vc_via; + vc_requestFor407 := valueof(p_request); + SIPP.send(p_request) to vc_sent_label; + if (PX_SIP_INVITE_AUTHENTICATION_ENABLED) { + a_altstep_401or407(); + } + } + + /** + * @desc function send MESSAGE message + * @param p_request template of the message to be sent + */ + function f_SendMESSAGE( + template(value) MESSAGE_Request p_request + ) runs on SipComponent { + SIPP.send(p_request) to vc_sent_label; + } + + /** + * @desc function send NOTIFY message + * @param p_request template of the notify to be sent + */ + function f_SendNOTIFY( + template(value) NOTIFY_Request p_request + ) runs on SipComponent { + SIPP.send(p_request) to vc_sent_label; + } + + /** + * @desc send REFER message + * @param p_request template of the message to be sent + */ + function f_SendREFER( + template(value) REFER_Request p_request + ) runs on SipComponent { + SIPP.send(p_request) to vc_sent_label; + } + + /** + * @desc send 200 OK + */ + function f_send200OK( + ) runs on SipComponent { + f_sendResponse(m_Response_Base(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via)); + } + + /** + * @desc send response + * @param p_request template of the message to be sent + */ + function f_sendResponse( + template(value) Response p_response + ) runs on SipComponent { + p_response.msgHeader.route := f_route(); // update the route header field depending on vc_boo_route + p_response.msgHeader.recordRoute := f_recordroute(); // update the route header field depending on vc_boo_route + SIPP.send(p_response) to vc_sent_label; + } + + + + } // end SendMessage + + group GlobalSteps { + /** + * @desc component initialization + * @param p_cSeq_s cSeq value to be assigned to the component variable + */ + function f_init_component( + inout CSeq p_cSeq_s + ) runs on SipComponent { + // Variables + vc_cSeq := p_cSeq_s; + + // Defaults + vc_def_catchSyncStop := activate(a_Sip_catchSyncStop()); + vc_default := activate(a_clearRegistration()); + } + + /** + * @desc component termination + */ + function f_terminate_component( + ) runs on SipComponent { + log("*** " &__SCOPE__& ": INFO: component terminated - forced! ***"); + deactivate; + stop; + } + + /** + * @desc component termination + */ + function f_componentStop( + ) runs on SipComponent { + syncPort.send(m_syncClientStop); + SIPP.clear; + stop; + } + + /** + * @desc function waits for particular time that allows the SUT to return to idle state + */ + function f_awaitSUTidle( + ) runs on SipComponent { + vc_ignore4xx := true; // allow 4xx in default + tc_noAct.start; + alt { + [] tc_noAct.timeout { + } + } + } + + /** + * @desc function waits for particular time before next expected message + */ + function f_wait( + float p_time + ) runs on SipComponent { + tc_noAct.start(p_time); + alt { + [] tc_noAct.timeout { + } + } + } + + /** + * @desc function cause termination of a PTC + * @param p_syncPoint dummy parameter (copied from the common lib) + */ + function f_check2Null( + in charstring p_syncPoint + ) runs on SipComponent { + // != pass does not work, because in case of "none" execution shall continue + if (getverdict == inconc or getverdict == fail) { + log("*** f_check2Null: INFO: Verdict evaluated to fail or inconc. Stopping test execution now ***"); + f_selfOrClientSyncAndVerdict(p_syncPoint, e_error); + } // end if + } + + /* + * + * @desc original copied from older LibCommon_VerdictControl + */ + function f_getVerdict( + ) return FncRetCode { + var FncRetCode v_ret := e_error; + if (getverdict == pass or getverdict == none) { + v_ret := e_success; + } + return v_ret; + } + + + + } // end group GlobalSteps + + group Registration { + + /** + * @desc registration and authentication with MD5 + * @param p_cSeq_s cseq parameter + * @param p_register register template + * @param p_auth flag indicating if authentication is needed + * @param p_emergency Set to true in case of emergency call + */ + function f_Registration( + inout CSeq p_cSeq_s, + out template(value) REGISTER_Request p_register, + in boolean p_auth, + in boolean p_emergency := false + ) runs on SipComponent { + if (PX_SIP_REGISTRATION) { + f_setHeaders_REGISTER(p_cSeq_s, p_emergency); + p_register := m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization); + f_SendREGISTER(p_register); // LibSip + // awaiting of 401 and sending 2nd REGISTER and awaiting 200 OK REGISTER + if (p_auth) { + // receiving 401 Unauthorized response. + // and Re-send REGISTER request with Authorization header + tc_resp.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine401, vc_callId, p_cSeq_s)) -> value vc_response { + tc_resp.stop; + f_setHeadersOnReceiptOfResponse(vc_response); + // set headers via, cseq and authorization + f_setHeaders_2ndREGISTER(p_cSeq_s); + p_register := m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization); + // Re-send protected REGISTER + f_SendREGISTER(p_register); // LibSip + // awaiting 200 OK REGISTER + f_awaitingOkResponse(p_cSeq_s); + f_getServiceRouteMapIntoRouteInRegistration(vc_response); + } + [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, p_cSeq_s)) -> value vc_response { + tc_resp.stop; + f_setHeadersOnReceiptOfResponse(vc_response); + f_getServiceRouteMapIntoRouteInRegistration(vc_response); + log("*** " &__SCOPE__& ": INFO: Authorization was not requested as expected ***"); + } + } + } + else { + f_awaitingOkResponse(p_cSeq_s); + f_getServiceRouteMapIntoRouteInRegistration(vc_response); + } + } + } // end function f_Registration + + /** + * @desc registration and authentication with MD5 + * @param p_cSeq_s cseq parameter + * @param p_register register template + * @param p_auth flag indicating if authentication is needed + */ + function f_Registration_withTemplate( + inout CSeq p_cSeq_s, + inout template(value) REGISTER_Request p_register, + in boolean p_auth + ) runs on SipComponent { + if (PX_SIP_REGISTRATION) { + if(not isbound(p_register)){ + f_setHeaders_REGISTER(p_cSeq_s); + p_register := m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization); + } + f_SendREGISTER(p_register); // LibSip + // awaiting of 401 and sending 2nd REGISTER and awaiting 200 OK REGISTER + if (p_auth) { + // receiving 401 Unauthorized response. + // and Re-send REGISTER request with Authorization header + tc_resp.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine401, vc_callId, p_cSeq_s)) -> value vc_response { + tc_resp.stop; + f_setHeadersOnReceiptOfResponse(vc_response); + // set headers via, cseq and authorization + f_setHeaders_2ndREGISTER(p_cSeq_s); + // p_register := m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, + // vc_authorization); + // Re-send protected REGISTER + p_register.requestLine.requestUri := vc_requestUri; + p_register.msgHeader.cSeq := vc_cSeq; + p_register.msgHeader.via := vc_via_REG; + p_register.msgHeader.authorization := vc_authorization; + f_SendREGISTER(p_register); // LibSip + // awaiting 200 OK REGISTER + f_awaitingOkResponse(p_cSeq_s); + f_getServiceRouteMapIntoRouteInRegistration(vc_response); + } + [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, p_cSeq_s)) -> value vc_response { + tc_resp.stop; + f_setHeadersOnReceiptOfResponse(vc_response); + f_getServiceRouteMapIntoRouteInRegistration(vc_response); + log("*** " &__SCOPE__& ": INFO: Authorization was not requested as expected ***"); + } + } + } + else { + f_awaitingOkResponse(p_cSeq_s); + f_getServiceRouteMapIntoRouteInRegistration(vc_response); + } + } + } // end function f_Registration_withTemplate + + + /** + * @desc remove registration + * @param p_cSeq_s cseq parameter + */ + function f_RemoveRegistration( + inout CSeq p_cSeq + ) runs on SipComponent { + var template(value) REGISTER_Request v_request; + var boolean v_receivedNotify := false; + + // + if (vc_DeregDone) { + f_componentStop(); + } + else { + vc_DeregDone := true; + } + + if (PX_SIP_REGISTRATION) { + f_setHeaders_deREGISTER(p_cSeq); + v_request := m_REGISTER_Request_expires(vc_requestUri, vc_callIdReg, p_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization, "0"); + + f_SendREGISTER(v_request); + if (PX_SIP_REGISTER_AUTHENTICATION_ENABLED) { + // receiving 401 Unauthorized response. + // and Re-send REGISTER request with Authorization header + tc_resp.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine401, vc_callIdReg, p_cSeq)) -> value vc_response { + tc_resp.stop; + f_setHeadersOnReceiptOfResponse(vc_response); + // set headers via, cseq and authorization + f_setHeaders_2ndREGISTER(p_cSeq); + v_request := m_REGISTER_Request_expires(vc_requestUri, vc_callIdReg, p_cSeq, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization, "0"); + // v_request.msgHeader.route := f_route(); + // Re-send protected REGISTER + f_SendREGISTER(v_request); // LibSip + // awaiting 200 OK REGISTER + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq)); + } + [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq)) -> value vc_response { + tc_resp.stop; + f_setHeadersOnReceiptOfResponse(vc_response); + // log ("Authorization was not requested as expected"); + } + [] a_awaitNotify(mw_NOTIFY_Request_Base(vc_callIdSub), v_receivedNotify) { + } + } + } + else { + tc_resp.start; + alt { + [] a_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq)) { + } + [] a_awaitNotify(mw_NOTIFY_Request_Base(vc_callIdSub), v_receivedNotify) { + } + } + } + + // await NOTIFY and send reply 200 OK + if (vc_subscribed and v_receivedNotify == false) { + f_awaitingNOTIFY_sendReply_postamble(mw_NOTIFY_Request_Base(vc_callIdReg)); + } + } + } // end f_RemoveRegistration + + /** + * @desc remove registration without authorization + * @param p_cSeq_s cseq parameter + */ + function f_RemoveRegistration_wo_authorization( + inout CSeq p_cSeq + ) runs on SipComponent { + if (PX_SIP_REGISTRATION) { + f_setHeaders_deREGISTER(p_cSeq); + f_SendREGISTER(m_REGISTER_Request_expires(vc_requestUri, vc_callIdReg, p_cSeq, vc_from, vc_to, vc_via, vc_contact, vc_authorization, "0")); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq)); + } + } // end f_RemoveRegistration_wo_authorization + + + + } // end group Registration + + group Subscription { + + /** + * @desc UE send subscrbe, await on 200 OK, await notify and send 200 OK + * @param p_cSeq_s cseq parameter + * @param p_subscribe subscribe template + */ + function f_Subscription( + inout CSeq p_cSeq_s, + template(value) SUBSCRIBE_Request p_subscribe + ) runs on SipComponent { + // send SUBSCRIBE + f_SendSUBSCRIBE(p_subscribe); + // awaiting 200 OK SUBSCRIBE + // await NOTIFY and send reply 200 OK + f_awaitingOkResponseAndNOTIFY_sendReply(p_cSeq_s, mw_NOTIFY_Request_Base(vc_callId)); + } // end function f_Subscription + + /** + * @desc UE send subscrbe, await on 200 OK, await notify and send 200 OK + * @param p_cSeq_s cseq parameter + * @param p_subscribe subscribe template + * @param p_notify notify template + */ + function f_SubscriptionWithNotification( + inout CSeq p_cSeq_s, + template(value) SUBSCRIBE_Request p_subscribe, + template(present) NOTIFY_Request p_notify := ? + ) runs on SipComponent { + f_setHeaders_SUBSCRIBE(p_cSeq_s); + // send SUBSCRIBE + f_SendSUBSCRIBE(p_subscribe); + // awaiting 200 OK SUBSCRIBE + // await NOTIFY and send reply 200 OK + f_awaitingOkResponseAndNOTIFY_sendReply(p_cSeq_s, p_notify); + } // end function f_SubscriptionWithNotification + + /** + * @desc UE await subscrbe, send on 200 OK; possibility to handle also other SUBSCRIBE methods where event is different than reg + * @param p_cSeq_s cseq parameter + * @param p_subscribe subscribe template + */ + function f_awaitingSubscription( + template(present) SUBSCRIBE_Request p_subscribe := ? + ) runs on SipComponent { + var SUBSCRIBE_Request v_request; + + tc_wait.start(2.0); // awaiting of all SUBSCRIBES + alt { + [] SIPP.receive(p_subscribe) -> value v_request sender vc_sent_label { + f_setHeadersOnReceiptOfSUBSCRIBE(v_request); + f_send200OK(); + repeat; + } + [] SIPP.receive(mw_SUBSCRIBE_Request_Base) -> value v_request sender vc_sent_label { + f_setHeadersOnReceiptOfSUBSCRIBE(v_request); + f_send200OK(); + repeat; + } + [] tc_wait.timeout { + setverdict(pass); + } + } + } // end function f_awaitingSubscription + + + + } // end group Subscription + + group Preambles { + + /** + * @desc Set variables and default initialization for user profile + * @param p_userprofile user profile of call + * @param p_cSeq_s cseq parameter + */ + function f_SIP_preamble_woREG( + inout CSeq p_cSeq_s + ) runs on SipComponent { + // varables and altsteps + f_init_component(p_cSeq_s); + + // Preamble + //NOTE STF471: removed f_init_userprofile(p_userprofile); // assignment of PIXIT values to component variable + vc_sdp_local := valueof(m_SDP_bandwidth(m_media_dynPT(PX_SIP_SDP_DYN, PX_SIP_SDP_ENCODING, PX_SIP_SDP_CLOCKRATE, omit), vc_userprofile)); + } + + /** + * @desc Set variables and default initialization for user profile and handle registration and authentication with MD5 + * @param p_userprofile user profile of call + * @param p_cSeq_s cseq parameter + * @param p_register register template + */ + function f_SIP_preamble_withREG( + inout CSeq p_cSeq_s, + template(value) REGISTER_Request p_register + ) runs on SipComponent { + // preamble + f_SIP_preamble_woREG(p_cSeq_s); + + // Registration, Awaiting + f_Registration(p_cSeq_s, p_register, PX_SIP_REGISTER_AUTHENTICATION_ENABLED); + } + + + + } // end group Preambles + + group Postambles { + + /** + * @desc function send BYE and awaits reponse + * @param p_CallId parameter for outgoing BYE + * @param p_cSeq parameter for outgoing BYE + * @param p_from parameter for outgoing BYE + * @param p_to parameter for outgoing BYE + * @param p_reqHostPort parameter for outgoing BYE + * @param p_byeCause parameter for Release cause to be used + * in BYE and in Failure messages, former PX_SIP_BYE_CAUSE + */ + function f_terminateCall( + SipUrl p_requestUri, + CallId p_CallId, + inout CSeq p_cSeq, + From p_from, + template(value) To p_to, + integer p_byeCause + ) runs on SipComponent { + // Sending of a BYE request to release the call and expect a final response + f_SendBYE(m_BYE_Request_cause(p_requestUri, p_CallId, p_cSeq, p_from, p_to, vc_via, p_byeCause)); + + tc_resp.start; + alt { + [] SIPP.receive(mw_Response_Base(mw_statusLine1xx, p_CallId, p_cSeq)) { + repeat; + } + [] SIPP.receive(mw_Response_Base(mw_statusLineFinal, p_CallId, p_cSeq)) { + tc_resp.stop; + } + } + } // end function f_terminateCall + + function f_cancelCall( + template(value) CANCEL_Request p_request + ) runs on SipComponent { + // This function is called to bring back the IUT in idle condition + // in case of errors or unexpected behaviour. + // Sending of a CANCEL request with the same Cseq + f_setHeadersCANCEL(vc_cSeq); + f_SendCANCEL(p_request); + tc_resp.start; + alt { + [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)) { + tc_resp.stop; + } + } + } + + function f_cancelCall_await487( + template(value) CANCEL_Request p_request + ) runs on SipComponent { + // This function is called to bring back the IUT in idle condition + // in case of errors or unexpected behaviour. + // Sending of a CANCEL request with the same Cseq + f_cancelCall(p_request); + // set method on INVITE + vc_cSeq.method := "INVITE"; + + // await on 487 response and send ACK + f_awaitingResponse(mw_Response_Base(c_statusLine487, vc_callId, vc_cSeq)); + f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via)); + } + + function f_awaitCancelCall_send487( + template(present) CANCEL_Request p_request := ? + ) runs on SipComponent { + f_awaitingCANCEL(p_request); + f_sendResponse(m_Response_Base(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via)); + + // set method on INVITE + vc_cSeq.method := "INVITE"; + + // send 487 response and await ACK + f_sendResponse(m_Response_Base(c_statusLine487, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via)); + // await ACK + f_awaitingACK(mw_ACK_Request_Base(vc_callId)); + } + + altstep a_receiveCANCELorNothing( + in template(present) CANCEL_Request p_CANCEL := ? + ) runs on SipComponent { + var CANCEL_Request v_MSG; + [] SIPP.receive(p_CANCEL) -> value v_MSG sender vc_sent_label { + f_setHeadersOnReceiptOfRequest(v_MSG); + // Answer to the CANCEL + f_send200OK(); + } + } + + altstep a_awaitNotify( + in template(present) NOTIFY_Request p_MSG := ?, + inout boolean p_receivedNotify + ) runs on SipComponent { + var NOTIFY_Request v_MSG; + [vc_subscribed] SIPP.receive(p_MSG) -> value v_MSG sender vc_sent_label { + p_receivedNotify := true; + f_getRouteMapIntoRecordRoute(v_MSG); + f_setHeadersOnReceiptOfRequest(v_MSG); + // Answer to the NOTIFY + f_send200OK(); + repeat; + } + } + + + + } // end group Postambles + + group SipChecks { + + + /** + * @desc check the presence of conversation at SIP side + * @param p_checkConversation boolean to perform check if conversation check is implemented. + * former PX_SIP_CHECK_CONVERSATION + */ + function f_check_Conversation( + boolean p_checkConversation := false + ) runs on SipComponent { + var charstring v_question := "confirm if conversation at SIP port"; + + if (p_checkConversation) { + opPort + .call( + s_SIP_conversation: + { + v_question, + - + } + ) { + [] opPort + .getreply( + s_SIP_conversation: + { + -, + true + } + ) { + } + [] opPort + .getreply( + s_SIP_conversation: + { + -, + false + } + ) { + all timer.stop; + setverdict(fail); + syncPort.send(m_syncClientStop); + stop; + } + }; + } + + f_selfOrClientSyncAndVerdict(c_uPlane, f_getVerdict()); // Note: implemented in test bodies + return; + } // end of f_check_Conversation + + /** + * @desc check the presence of conversation at SIP side + * @param p_checkRinging boolean to perform check if ringing check is implemented. + * former PX_SIP_CHECK_RINGING + */ + function f_check_Ringing( + boolean p_checkRinging := false + ) runs on SipComponent { + var charstring v_question := "confirm if ringing at SIP port"; + + if (p_checkRinging) { + opPort + .call( + s_SIP_ringing: + { + v_question, + - + } + ) { + [] opPort + .getreply( + s_SIP_ringing: + { + -, + true + } + ) { + } + [] opPort + .getreply( + s_SIP_ringing: + { + -, + false + } + ) { + all timer.stop; + setverdict(fail); + syncPort.send(m_syncClientStop); + stop; + } + }; + } + + f_selfOrClientSyncAndVerdict(c_Ringing, f_getVerdict()); + return; + } // end of f_check_Ringing + + /** + * @desc check the announcement at SIP side (UE A) + * @param p_checkConversation boolean to perform check if conversation check is implemented. + * former PX_SIP_CHECK_CONVERSATION + */ + function f_check_AnnouncementUE_A( + boolean p_checkConversation := false + ) runs on SipComponent { + var charstring v_question := "confirm if announcement at UE A"; + + if (p_checkConversation) { + opPort + .call( + s_SIP_announcementA: + { + v_question, + - + } + ) { + [] opPort + .getreply( + s_SIP_announcementA: + { + -, + true + } + ) { + } + [] opPort + .getreply( + s_SIP_announcementA: + { + -, + false + } + ) { + all timer.stop; + setverdict(fail); + syncPort.send(m_syncClientStop); + stop; + } + }; + } + + f_selfOrClientSyncAndVerdict(c_annoucA, f_getVerdict()); + return; + } // end of f_check_AnnouncementUE_A + + /** + * @desc check the announcement at SIP side (UE B) + * @param p_checkConversation boolean to perform check if conversation check is implemented. + * former PX_SIP_CHECK_CONVERSATION + */ + function f_check_AnnouncementUE_B( + boolean p_checkConversation := false + ) runs on SipComponent { + var charstring v_question := "confirm if announcement at UE B"; + + if (p_checkConversation) { + opPort + .call( + s_SIP_announcementB: + { + v_question, + - + } + ) { + [] opPort + .getreply( + s_SIP_announcementB: + { + -, + true + } + ) { + } + [] opPort + .getreply( + s_SIP_announcementB: + { + -, + false + } + ) { + all timer.stop; + setverdict(fail); + syncPort.send(m_syncClientStop); + stop; + } + }; + } + + f_selfOrClientSyncAndVerdict(c_annoucB, f_getVerdict()); + return; + } // end of f_check_AnnouncementUE_B + + /** + * @desc check the announcement at SIP side + * @param p_checkConversation boolean to perform check if conversation check is implemented. + * former PX_SIP_CHECK_CONVERSATION + */ + function f_check_Announcement( + boolean p_checkConversation := false + ) runs on SipComponent { + var charstring v_question := "confirm if announcement at SIP side"; + + if (p_checkConversation) { + opPort + .call( + s_SIP_announcement: + { + v_question, + - + } + ) { + [] opPort + .getreply( + s_SIP_announcement: + { + -, + true + } + ) { + } + [] opPort + .getreply( + s_SIP_announcement: + { + -, + false + } + ) { + all timer.stop; + setverdict(fail); + syncPort.send(m_syncClientStop); + stop; + } + }; + } + + f_selfOrClientSyncAndVerdict(c_annouc, f_getVerdict()); + return; + } // end of f_check_Announcement + + /** + * @desc check the Voice message at SIP side + * @param p_checkConversation boolean to perform check if conversation check is implemented. + * former PX_SIP_CHECK_CONVERSATION + */ + function f_check_VoiceMessage( + boolean p_checkConversation := false + ) runs on SipComponent { + var charstring v_question := "confirm if voice message at SIP side"; + + if (p_checkConversation) { + opPort + .call( + s_SIP_voiceMessage: + { + v_question, + - + } + ) { + [] opPort + .getreply( + s_SIP_voiceMessage: + { + -, + true + } + ) { + } + [] opPort + .getreply( + s_SIP_voiceMessage: + { + -, + false + } + ) { + all timer.stop; + setverdict(fail); + syncPort.send(m_syncClientStop); + stop; + } + }; + } + + f_selfOrClientSyncAndVerdict(c_voicem, f_getVerdict()); + return; + } // end of f_check_Announcement + + /** + * @desc check the stop of media stream + * @param p_checkConversation boolean to perform check if conversation check is implemented. + * former PX_SIP_CHECK_CONVERSATION + */ + function f_check_MediaStopped( + boolean p_checkConversation := false + ) runs on SipComponent { + var charstring v_question := "confirm if media stream stopped"; + + if (p_checkConversation) { + opPort + .call( + s_SIP_mediastopped: + { + v_question, + - + } + ) { + [] opPort + .getreply( + s_SIP_mediastopped: + { + -, + true + } + ) { + } + [] opPort + .getreply( + s_SIP_mediastopped: + { + -, + false + } + ) { + all timer.stop; + setverdict(fail); + syncPort.send(m_syncClientStop); + stop; + } + }; + } + + f_selfOrClientSyncAndVerdict(c_uPlaneStop, f_getVerdict()); + return; + } // end of f_check_MediaStopped + + } + + group DefaultsTestStep { + + + /** + * @desc This default handles receiving of the sync server STOP message and calls the RT HUT postamble. (copy from common lib) + */ + altstep a_Sip_catchSyncStop( + ) runs on SipComponent { + [] syncPort.receive(m_syncServerStop) { + tc_sync.stop; + log("*** a_Sip_catchSyncStop: INFO: Test component received STOP signal from MTC - going to IDLE state *** "); + syncPort.send(m_syncClientStop); + // in case if deregistration was not done + // f_RemoveRegistration(vc_cSeq); + f_terminate_component(); + log("*** a_Sip_catchSyncStop: INFO: TEST COMPONENT NOW STOPPING ITSELF! *** "); + setverdict(inconc); + stop; + } + } + + + /** + * @desc main default altstep to handle unexpected messages and timeout + * @verdict fail for all unexpected branches + */ + altstep a_clearRegistration( + ) runs on SipComponent { + var Response v_response; + var Request v_request; + var INFO_Request v_info_request; + var NOTIFY_Request v_notify_request; + var SUBSCRIBE_Request v_subscribe_request; + var BYE_Request v_bye_request; + var CANCEL_Request v_cancel_request; + var REGISTER_Request v_register_request; + var CSeq v_cSeq; + [] any timer.timeout { + setverdict(fail); + all timer.stop; + // f_SendCANCEL(m_CANCEL_Request(vc_callId, vc_cSeq, vc_from, vc_cancel_To, vc_reqHostPort, vc_via )); // difference between registration + // state or transaction state + vc_callId := vc_callIdReg; + f_RemoveRegistration(vc_cSeq); + } + // allow repeated INVITEs + [vc_ignore_invite] SIPP.receive(mw_INVITE_Request_Base) { + repeat; + } + // allow repeated BYEs after ack of the first BYE + [vc_ignore_bye] SIPP.receive(mw_BYE_Request_Base(?)) { + repeat; + } + [] SIPP.receive(mw_ACK_Request_Base(?)) { + repeat; + } + // allow 100 replies + [] SIPP.receive(mw_Response_Base(c_statusLine100, ?, ?)) { + repeat; + } + // ignore 181 if flag is set (following TS 183004 4.5.2.1) + [vc_ignore181] SIPP.receive(mw_Response_Base(c_statusLine181, vc_callId, vc_cSeq)) -> value v_response sender vc_sent_label { + v_cSeq := valueof(v_response.msgHeader.cSeq); + f_setHeadersOnReceiptOfResponse(v_response); // CSeq is mandatory + repeat; + } + // according to SIP chap.8.1.3.2 + [] SIPP.receive(mw_Response_Base(c_statusLine183, vc_callId, vc_cSeq)) { + repeat; + } + // ignore 484 if flag is set + [vc_ignore484] SIPP.receive(mw_Response_Base(c_statusLine484, vc_callId, vc_cSeq)) { + repeat; + } + [vc_ignore4xx] SIPP.receive(mw_Response_Base(mw_statusLine4xx, vc_callId, ?)) -> value v_response sender vc_sent_label { + v_cSeq := valueof(v_response.msgHeader.cSeq); + f_setHeadersOnReceiptOfResponse(v_response); // CSeq is mandatory + f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, v_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); + repeat; + } + [vc_ignore200OKinv] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, ?)) { + repeat; + } + [] SIPP.receive(mw_INFO_Request_Base(vc_callId)) -> value v_info_request sender vc_sent_label { + f_setHeadersOnReceiptOfRequest(v_info_request); + f_send200OK(); + repeat; + } + // awaiting of Notify + [] SIPP.receive(mw_NOTIFY_Request_Base(vc_callId)) -> value v_notify_request sender vc_sent_label { + f_setHeadersOnReceiptOfRequest(v_notify_request); + f_send200OK(); + repeat; + } + // awaiting of subscribe from UE + [vc_ignore_subscribe] SIPP.receive(mw_SUBSCRIBE_Request_Base) -> value v_subscribe_request sender vc_sent_label { + f_setHeadersOnReceiptOfSUBSCRIBE(v_subscribe_request); + f_send200OK(); + repeat; + } + // awaiting of subscribe on proxy + [] SIPP.receive(mw_SUBSCRIBE_Request_Base) -> value v_subscribe_request sender vc_sent_label { + f_setHeadersOnReceiptOfRequest(v_subscribe_request); + f_sendResponse(m_Response_Contact(c_statusLine200, vc_callId, vc_cSeq, vc_callee_From, vc_callee_To, vc_via, vc_contact)); + // f_setHeadersGeneral(vc_cSeq, "NOTIFY"); // cseq, contact, branch, via + // f_SendNOTIFY(m_NOTIFY_Request_contact(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact)); + f_SendNOTIFY(m_NOTIFY_Request_contact(v_subscribe_request.msgHeader.contact.contactBody.contactAddresses[0].addressField.nameAddr.addrSpec, vc_callId, vc_cSeq, vc_callee_From, vc_callee_To, vc_via, vc_contact)); + f_awaitingOkResponse(vc_cSeq); + repeat; + } + // unexpected BYE is acknowledged to avoid retransmissions + [] SIPP.receive(mw_BYE_Request_Base(?)) -> value v_bye_request sender vc_sent_label { + setverdict(fail); + f_setHeadersOnReceiptOfRequest(v_bye_request); + f_send200OK(); + f_RemoveRegistration(vc_cSeq); + } + // unexpected CANCEL is acknowledged to avoid retransmissions + [] SIPP.receive(mw_CANCEL_Request_Base(?)) -> value v_cancel_request sender vc_sent_label { + setverdict(fail); + f_setHeadersOnReceiptOfRequest(v_cancel_request); + // Answer to the CANCEL + f_send200OK(); + f_RemoveRegistration(vc_cSeq); + } + // catch 4xx response + [] SIPP.receive(mw_Response_Base(mw_statusLine4xx, vc_callId, ?)) -> value v_response sender vc_sent_label { + setverdict(fail); + if (v_response.msgHeader.cSeq.method == "INVITE") { + v_cSeq := valueof(v_response.msgHeader.cSeq); + f_setHeadersOnReceiptOfResponse(v_response); // CSeq is mandatory + LibSip_Steps.f_setHeadersACK(); + f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, v_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); + } + f_RemoveRegistration(vc_cSeq); + } + // catch 5xx response + [] SIPP.receive(mw_Response_Base(mw_statusLine5xx, vc_callId, ?)) -> value v_response sender vc_sent_label { + setverdict(fail); + if (v_response.msgHeader.cSeq.method == "INVITE") { + v_cSeq := valueof(v_response.msgHeader.cSeq); + f_setHeadersOnReceiptOfResponse(v_response); // CSeq is mandatory + LibSip_Steps.f_setHeadersACK(); + f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, v_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); + } + f_RemoveRegistration(vc_cSeq); + } + // catch invalid REGISTER + [] SIPP.receive(mw_REGISTER_Request_Base) -> value v_register_request sender vc_sent_label { + setverdict(fail); + f_componentStop(); + } + // any + [] SIPP.receive { + setverdict(fail); + all timer.stop; + // f_setHeadersCANCEL(vc_cSeq); + // f_SendCANCEL(m_CANCEL_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_cancel_To, vc_via )); // difference between + // registration state or transaction state + f_RemoveRegistration(vc_cSeq); + } + } + + /** + * @desc altstep handle authentication for INVITE message + */ + altstep a_altstep_401or407( + ) runs on SipComponent { + var CommaParam_List v_challenge; + var Credentials v_Credentials; + var Response v_Response; + var Request v_Request := vc_requestFor407; + [] any port.check(receive) { + + tc_resp.start; + alt { + [] SIPP.receive(mw_Response_Base((c_statusLine401, c_statusLine407), vc_callId, vc_cSeq)) -> value v_Response { + tc_resp.stop; + // get tag from To header if available + vc_to := v_Response.msgHeader.toField; + if (vc_cSeq.method == "INVITE") { + // send ACK + f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via)); + } + // resent the INVITE message with Proxyauthorization header include + // Extract challenge and calculate credentials for a response. + if ( + ischosen( + v_Response.msgHeader.proxyAuthenticate.challenge + .otherChallenge // instead of digestCln (changed by axr to comply to alcatel) + ) + ) { + v_challenge := v_Response.msgHeader.proxyAuthenticate.challenge.otherChallenge.authParams; + v_Credentials := f_calculatecCredentials(vc_userprofile, vc_requestFor407.msgHeader.cSeq.method, v_challenge); + } + else { + log("*** " &__SCOPE__& ": INFO: No scheme in Proxy Authenticate header!!! ***"); + setverdict(inconc); + stop; + } + + vc_branch := c_branchCookie & f_getRndTag(); + vc_via := { + fieldName := VIA_E, + viaBody := {valueof(m_ViaBody_currIpaddr(vc_branch, vc_userprofile))} + }; + + v_Request.msgHeader.via := vc_via; + // Increment CSeq sequence number of and add the credentials + // to the original saved INVITE message. + vc_cSeq.method := vc_requestFor407.msgHeader.cSeq.method; + vc_cSeq.seqNumber := vc_cSeq.seqNumber + 1; + v_Request.msgHeader.cSeq.seqNumber := vc_cSeq.seqNumber; + v_Request.msgHeader.proxyAuthorization.fieldName := PROXY_AUTHORIZATION_E; + v_Request.msgHeader.proxyAuthorization.credentials := {v_Credentials}; + + // Re-send the saved INVITE with Authorization header + // included. + SIPP.send(v_Request) to vc_sent_label; + } + } + } + } + + } // end of group DefaultsTestStep +} // end module LibSip_Steps diff --git a/ttcn/patch_sip_titan/LibSip_Templates.ttcn b/ttcn/patch_sip_titan/LibSip_Templates.ttcn new file mode 100755 index 0000000..e3850c3 --- /dev/null +++ b/ttcn/patch_sip_titan/LibSip_Templates.ttcn @@ -0,0 +1,4612 @@ +/** + * @author STF 346, STF366, STF368, STF369, STF450, STF471 + * @version $Id: LibSip_Templates.ttcn 656 2018-02-16 08:32:25Z genoudoli $ + * @desc This module defines SIP Templates for message, header, and + * structured types.
+ * Note that any changes made to the definitions in this module + * may be overwritten by future releases of this library + * End users are encouraged to contact the distributers of this + * module regarding their modifications or additions. + * This module is part of LibSipV3. + * @remark Any additions to the templates shall follow the design rules and always modify base templates only; Existing templates shall not be changed or removed - change requests shall be made to http://t-ort.etsi.org + */ +module LibSip_Templates { + // LibSip + import from LibSip_SIPTypesAndValues all; + import from LibSip_SDPTypes all; + import from LibSip_Interface all; + import from LibSip_PIXITS all; + import from LibSip_XMLTypes all; + import from LibSip_SimpleMsgSummaryTypes all; + import from LibSip_MessageBodyTypes all; + import from LibSip_Common all; + + import from NoTargetNamespace language "XSD" all + with { + extension "File:../xsd/Ims3gpp.xsd"; + } + + import from urn_ietf_params_xml_ns_conference_info language "XSD" all + with { + extension "File:../xsd/CONF.xsd"; + } + + import from http_uri_etsi_org_ngn_params_xml_simservs_pstn language "XSD" all + with { + extension "File:../xsd/PSTN.xsd"; + } + + import from http_uri_etsi_org_ngn_params_xml_simservs_xcap language "XSD" all + with { + extension "File:../xsd/SupplementaryServices.xsd"; + } + + import from http_uri_etsi_org_ngn_params_xml_simservs_mcid language "XSD" all + with { + extension "File:../xsd/MCID.xsd"; + } + + import from urn_ietf_params_xml_ns_resource_lists language "XSD" all + with { + extension "File:../xsd/ResourceList.xsd"; + } + + import from http_uri_etsi_org_ngn_params_xml_comm_div_info language "XSD" all + with { + extension "File:../xsd/CDIVN.xsd"; + } + + import from urn_3gpp_ns_cw_1_0 language "XSD" all + with { + extension "File:../xsd/cw.xsd"; + } + + group SubFields { + + template(value) Addr_Union m_AddrUnion_NameAddr(template(value) NameAddr p_nameAddr) := {nameAddr := p_nameAddr} + + template(value) Addr_Union m_AddrUnion_DisplayAndSipUrl( + template(value) DisplayName p_displayName, + template(value) SipUrl p_addrSpec + ) := { + nameAddr := m_CallingAddr(p_displayName, p_addrSpec) + } + + template(value) NameAddr m_NameAddr( + template(omit) DisplayName p_displayName := omit, + template(value) SipUrl p_addrSpec + ) := { + displayName := p_displayName, + addrSpec := p_addrSpec + } + + template(value) NameAddr m_CallingAddr( + template(value) DisplayName p_displayName, + template(value) SipUrl p_addrSpec + ) := m_NameAddr(p_displayName, p_addrSpec); + + template(present) NameAddr mw_NameAddr( + template DisplayName p_displayName, + template(present) SipUrl p_addrSpec := ? + ) := { + displayName := p_displayName, + addrSpec := p_addrSpec + } + + template(present) CommaParam_List mw_digestResponse( + template(present) GenericParam p_genericParam := ? + ) := superset(p_genericParam); + + //* c_Integrity_protected_yes + /** + * @desc send template for parameter list with CPC set to a specific value + * @param p_ISUP_CPC_value CPC parameter value + * former PX_SIP_ISUP_CPC_VALUE + */ + template(value) SemicolonParam_List m_cpc( + template(value) charstring p_ISUP_CPC_value := "prison" + ) := { + { + "cpc", + {tokenOrHost := p_ISUP_CPC_value} + } + } + + template(value) SemicolonParam_List m_ReasonParams( + template(omit) GenValue p_cause := omit, + template(value) GenValue p_text + ) := { + m_Cause(p_cause), m_Text(p_text) + } + + template(present) SemicolonParam_List mw_ReasonParams( + template GenValue p_cause, + template GenValue p_text + ) := { + mw_Cause_base(p_cause), mw_Text(p_text) + } + + template(value) ReasonValue m_ReasonValue_Base := { + token := "", + reasonParams := omit + } + + template(present) ReasonValue mw_ReasonValue_Base := { + token := ?, + reasonParams := * + } + + template(value) ReasonValue m_ReasonValue_param( + template(value) GenValue p_cause, + template(value) GenValue p_text + ) modifies m_ReasonValue_Base := { + reasonParams := m_ReasonParams(p_cause, p_text) + } + + template(present) ReasonValue mw_ReasonValue_param( + template GenValue p_cause, + template GenValue p_text + ) modifies mw_ReasonValue_Base := { + reasonParams := mw_ReasonParams(p_cause, p_text) + } + + template(value) ReasonValue m_ReasonValue( + template(value) GenValue p_cause, + template(value) GenValue p_text + ) modifies m_ReasonValue_param := { + token := "Q.850" + } + + template(present) ReasonValue mw_ReasonValue( + template GenValue p_cause, + template GenValue p_text + ) modifies mw_ReasonValue_param := { + token := "Q.850" + } + + template(value) ReasonValue m_ReasonValueSIP( + template(value) GenValue p_cause, + template(value) GenValue p_text + ) modifies m_ReasonValue_param := { + token := "SIP" + } + + template(present) ReasonValue mw_ReasonValueSIP( + template GenValue p_cause, + template GenValue p_text + ) modifies mw_ReasonValue_param := { + token := "SIP" + } + + template(present) RouteBody mw_routeBody( + template(present) SipUrl p_sipurl := ? + ) := { + nameAddr := mw_NameAddr(*, p_sipurl), + rrParam := * + } + + template(value) SentProtocol m_SentProtocol( + template(value) charstring p_protocol + ) := { + protocolName := c_sipName, + protocolVersion := c_sipVersion, + transport := p_protocol + } + + template(value) SipUrl m_BasicSipUrl := { + scheme := (c_sipScheme), + components := { + sip := { + userInfo := { + userOrTelephoneSubscriber := "", //* charstring + password := + omit //* optional charstring + }, + hostPort := { + host := omit, //* hostname, IPv4 or IPv6 as a charstring + portField := + omit //* p_userprofile.currPort - optional integer + } + } + }, + urlParameters := omit, + headers := omit + } + + template(value) SipUrl m_SipUrl_currDomain_Base( + template(value) SipUserProfile p_userprofile + ) modifies m_BasicSipUrl := { + components := { + sip := { + userInfo := { + userOrTelephoneSubscriber := p_userprofile.publUsername + } + } + } + } + + template(value) SipUrl m_SipUrl_currDomain( + template(value) SipUserProfile p_userprofile + ) modifies m_SipUrl_currDomain_Base := { + components := { + sip := { + hostPort := { + host := + p_userprofile + .homeDomain //* hostname, IPv4 or IPv6 as a charstring + } + } + } + } + + template(value) SipUrl m_SipUrl_contactIpaddr( + template(value) SipUserProfile p_userprofile + ) modifies m_SipUrl_currDomain_Base := { + components := { + sip := { + hostPort := { + host := p_userprofile.contactIpaddr, //* hostname, IPv4 or IPv6 as a charstring + portField := + p_userprofile + .contactPort //* optional integer + } + } + } + } + /** + * @desc send template with SIP userinfo + * @param p_userprofile SIP user profile values + * @param p_ISUP_CPC_value CPC parameter value + * former PX_SIP_ISUP_CPC_VALUE + */ + template(value) SipUrl m_SipUrl_contactIpaddrAndCpc( + template(value) SipUserProfile p_userprofile, + template(value) charstring p_ISUP_CPC_value := "prison" + ) modifies m_SipUrl_contactIpaddr := { + components := { + sip := { + userInfo := { + userOrTelephoneSubscriber := + valueof(p_userprofile.publUsername) & "; cpc=" & + valueof(p_ISUP_CPC_value) + } + } + } + } + + template(value) SipUrl m_SipUrl_currIpaddr( + template(value) SipUserProfile p_userprofile + ) modifies m_SipUrl_currDomain_Base := { + components := { + sip := { + hostPort := { + host := p_userprofile.currIpaddr, //* hostname, IPv4 or IPv6 as a charstring + portField := + p_userprofile + .currPort //* optional integer + } + } + } + } + + template(value) SipUrl m_SipUrl_Anonymous modifies m_BasicSipUrl := { + components := { + sip := { + userInfo := { + userOrTelephoneSubscriber := + "Anonymous" //* charstring + }, + hostPort := { + host := + "Anonymous.invalid" //* hostname, IPv4 or IPv6 as a charstring + } + } + } + } + + template(value) SipUrl m_SipUrl_NumberHostHeader( + template(value) charstring p_number, + template(value) charstring p_host, + template(omit) AmpersandParam_List p_urlParameters := omit + ) modifies m_BasicSipUrl := { + components := { + sip := { + userInfo := {userOrTelephoneSubscriber := p_number}, + hostPort := {host := p_host} + } + }, + urlParameters := p_urlParameters + } + + template(value) SipUrl m_SipUrl_NumberHostParam( + template(value) charstring p_number, + template(value) charstring p_host, + template(omit) AmpersandParam_List p_urlParameters := omit + ) modifies m_SipUrl_NumberHostHeader := { + components := {sip := {hostPort := {portField := c_defaultSipPort}}} + } + + template(value) SipUrl m_SipUrl_NumberHostParam_woPort( + template(value) charstring p_number, + template(value) charstring p_host, + template(omit) AmpersandParam_List p_urlParameters := omit + ) modifies m_SipUrl_NumberHostParam := { + components := {sip := {hostPort := {portField := omit}}} + } + + template(present) SipUrl m_BasicTelUrl := { + scheme := (c_telScheme), + components := {tel := {subscriber := ""}}, + urlParameters := omit, + headers := omit + } + + template(value) SipUrl m_TelUrl_publUser( + template(value) SipUserProfile p_userprofile + ) modifies m_BasicTelUrl := { + components := { + tel := { + subscriber := + p_userprofile + .publUsername //* charstring + } + } + } + + template(present) SipUrl mw_TelUrl := { + scheme := c_telScheme, + components := {tel := {subscriber := ?}}, + urlParameters := *, + headers := * + } + + template(present) SipUrl mw_SipUrl := { + scheme := c_sipScheme, + components := { + sip := { + userInfo := { + userOrTelephoneSubscriber := ?, + password := * + }, + hostPort := { + host := *, + portField := * + } + } + }, + urlParameters := *, + headers := * + } + + template(present) SipUrl mw_TelSip_unavailableInvalidUri := (mw_TelSip_unavailableInvalidUri1, mw_TelSip_unavailableInvalidUri2); + + template(present) SipUrl mw_TelSip_unavailableInvalidUri1 modifies mw_SipUrl := { + components := { + sip := { + userInfo := { + userOrTelephoneSubscriber := "unavailable" + }, + hostPort := { + host := "anonymous.invalid", + portField := c_defaultSipPort + } + } + } + } + template(present) SipUrl mw_TelSip_unavailableInvalidUri2 modifies mw_TelUrl := { + components := {tel := {subscriber := "unavailable"}} + } + + template(present) SipUrl mw_TelSip_unavailableUri( + template(value) charstring p_host + ) := (mw_TelSip_unavailableUri1, mw_TelSip_unavailableUri2(p_host)); + + template(present) SipUrl mw_TelSip_unavailableUri1 modifies mw_TelUrl := { + components := {tel := {subscriber := "unavailable"}} + } + + template(present) SipUrl mw_TelSip_unavailableUri2( + template(value) charstring p_host + ) modifies mw_SipUrl := { + components := { + sip := { + userInfo := { + userOrTelephoneSubscriber := "unavailable" + }, + hostPort := { + host := p_host, + portField := c_defaultSipPort + } + } + } + } + + template(present) SipUrl mw_SipUrl_Number( + template(present) charstring p_number := ? + ) modifies mw_SipUrl := { + components := { + sip := { + userInfo := {userOrTelephoneSubscriber := p_number}, + hostPort := ? + } + } + } + + template(present) SipUrl mw_TelSipUrl_Number( + template(present) charstring p_number := ? + ) := (mw_SipUrl_Number(p_number), mw_TelSipUrl_Number2(p_number)); + + template(present) SipUrl mw_TelSipUrl_Number1( + template(present) charstring p_number := ? + ) := mw_SipUrl_Number(p_number); + + template(present) SipUrl mw_TelSipUrl_Number2( + template(present) charstring p_number := ? + ) modifies mw_TelUrl := { + components := { + tel := { + subscriber := p_number + } + } + } + + template(present) SipUrl mw_SipUrl_Host( + template charstring p_host + ) modifies mw_SipUrl := { + components := { + sip := { + userInfo := *, + hostPort := {host := p_host} + } + } + } + + template(present) SipUrl mw_SipUrl_User_Host( + template(present) charstring p_user := ?, + template charstring p_host + ) modifies mw_SipUrl := { + components := { + sip := { + userInfo := {userOrTelephoneSubscriber := p_user}, + hostPort := { + host := + p_host //* hostname, IPv4 or IPv6 as a charstring + } + } + }, + urlParameters := {m_UserPhone} + } + + template(present) SipUrl mw_SipUrl_Anonymous modifies mw_SipUrl := { + components := { + sip := { + userInfo := { + userOrTelephoneSubscriber := pattern "[a,A][n,N][o,O][n,N][y,Y][m,M][o,O][u,U][s,s]" //* charstring + }, + hostPort := { + host := + pattern + "[a,A]nonymous.invalid" //* hostname, IPv4 or IPv6 as a charstring + } + } + } + } + + template(present) SipUrl mw_SipUrl_urlParam( + template SemicolonParam_List p_urlParameters + ) modifies mw_SipUrl := { + urlParameters := p_urlParameters + } + + template(present) ContactAddress mw_ContactAddress := { + addressField := ?, + contactParams := * + } + + template(present) HostPort mw_hostPort( + template charstring p_host, + template integer p_portField + ) := { + host := p_host, + portField := p_portField + } + + template(present) StatusLine mw_statusLine_any := { + sipVersion := c_sipNameVersion, + statusCode := ?, + reasonPhrase := ? + } + + template(present) StatusLine mw_statusLine( + in template(present) integer p_statusCode := ?, + in template(present) charstring p_reasonPhrase := ? + ) modifies mw_statusLine_any := { + statusCode := p_statusCode, + reasonPhrase := p_reasonPhrase + } + + template(present) StatusLine mw_statusLine1xx modifies mw_statusLine_any := {statusCode := (100 .. 199)} + + template(present) StatusLine mw_statusLine2xx modifies mw_statusLine_any := {statusCode := (200 .. 299)} + + template(present) StatusLine mw_statusLine3xx modifies mw_statusLine_any := {statusCode := (300 .. 399)} + + template(present) StatusLine mw_statusLine4xx modifies mw_statusLine_any := {statusCode := (400 .. 499)} + + template(present) StatusLine mw_statusLine5xx modifies mw_statusLine_any := {statusCode := (500 .. 599)} + + template(present) StatusLine mw_statusLine6xx modifies mw_statusLine_any := {statusCode := (600 .. 699)} + + template(present) StatusLine mw_statusLineFinal modifies mw_statusLine_any := {statusCode := (200 .. 699)} + + template(present) NameAddr mw_NameAddr_DispName_User_Host( + template DisplayName p_dn, + template(present) charstring p_user := ?, + template charstring p_host + ) := { + displayName := p_dn, + addrSpec := { + scheme := c_sipScheme, //* contains "sip" + components := { + sip := { + userInfo := { + userOrTelephoneSubscriber := p_user, + password := * + }, + hostPort := { + host := p_host, //* hostname, IPv4 or IPv6 as a charstring + portField := + * //* optional integer + } + } + }, + urlParameters := {m_UserPhone}, + headers := * + } + } + + template(present) Addr_Union mw_AddrUnion_Nameaddr( + template DisplayName p_dn, + template(present) charstring p_user := ?, + template charstring p_host + ) := { + nameAddr := mw_NameAddr_DispName_User_Host(p_dn, p_user, p_host) + } + + template(present) Addr_Union mw_AddrUnion_SipUrl( + template(present) charstring p_user := ?, + template charstring p_host + ) := { + addrSpecUnion := mw_SipUrl_User_Host(p_user, p_host) + } + + + } //* end group Subfields + + group HeaderFieldTemplates { + template(value) LibSip_SIPTypesAndValues.Allow m_Allow( + template(value) Method_List p_methods + ) := { + fieldName := ALLOW_E, + methods := p_methods + } + + template(present) LibSip_SIPTypesAndValues.Allow mw_Allow( + template(value) charstring p_method + ) := { + fieldName := ALLOW_E, + methods := superset(p_method) + } + + template(value) GenericParam m_Cause( + template(omit) GenValue p_cause := omit + ) := { + id := "cause", + paramValue := p_cause + } + + template(present) GenericParam mw_Cause_base( + template GenValue p_cause + ) := { + id := "cause", + paramValue := p_cause + } + + template(present) GenericParam mw_Cause( + template(value) charstring p_cause + ) := { + id := ?, + paramValue := { tokenOrHost := pattern "*{p_cause}*" } + } + + template(value) Authorization m_Authorization( + template(value) Credentials p_credentials + ) := { + fieldName := AUTHORIZATION_E, + body := {p_credentials} + } + + template(value) Authorization m_Authorization_digest( + template(value) CommaParam_List p_commaParam_List + ) := { + fieldName := AUTHORIZATION_E, + body := {{digestResponse := p_commaParam_List}} + } + + template(present) Authorization mw_Authorization_digest( + template(present) CommaParam_List p_commaParam_List := ? + ) := { + fieldName := AUTHORIZATION_E, + body := {{digestResponse := p_commaParam_List}} + } + + template(value) Authorization m_add_Authorization_digest( + template(value) Authorization p_auth, + template(value) CommaParam_List p_commaParam_List + ) := { + fieldName := AUTHORIZATION_E, + body := {{digestResponse := f_merge_CommaParam_List(p_auth.body[0].digestResponse, p_commaParam_List)}} + } + + template(present) Authorization mw_Authorization_other := { + fieldName := AUTHORIZATION_E, + body := {{otherResponse := ?}} + } + + template(value) Contact m_Contact( + template(value) SipUrl p_sipUrl + ) := { + fieldName := CONTACT_E, + contactBody := { + contactAddresses := { + { + addressField := {addrSpecUnion := p_sipUrl}, + contactParams := omit + } + } + } //* end contactBody + } //* end m_Contact + + template(value) Contact m_Contact_profile( + template(value) SipUserProfile p_userprofile + ) := { + fieldName := CONTACT_E, + contactBody := { + contactAddresses := { + { + addressField := {addrSpecUnion := m_SipUrl_contactIpaddr(p_userprofile)}, + contactParams := omit + } + } + } //* end + //* contactBody + } //* end m_Contact + + + template(value) Contact m_Contact_profile_expires( + template(value) SipUserProfile p_userprofile, + template(value) GenValue p_expires + ) := { + fieldName := CONTACT_E, + contactBody := { + contactAddresses := { + { + addressField := {addrSpecUnion := m_SipUrl_contactIpaddr(p_userprofile)}, + contactParams := { + { + "expires", + p_expires + } + } + } + } + } //* end contactBody + } //* end m_Contact + + template(value) From m_From( + template(value) NameAddr p_nameAddr, + template(value) GenValue p_tag_str + ) := { + fieldName := FROM_E, + addressField := {nameAddr := p_nameAddr}, //* end addressField + fromParams := { + { + id := c_tagId, + paramValue := p_tag_str + } + } + } + + template(value) From m_From_Anonymous( + template(value) GenValue p_tag_str + ) := { + fieldName := FROM_E, + addressField := { + nameAddr := + m_NameAddr( + {token:="Anonymous"}, + //* optional charstring + m_SipUrl_Anonymous //* SipUrl + ) + }, //* end addressField + fromParams := { + { + id := c_tagId, + paramValue := p_tag_str + } + } + } + + template(value) From m_From_SipUrl( + template(value) SipUrl p_sipUrl + ) := { + fieldName := FROM_E, + addressField := { + nameAddr := + m_NameAddr( + omit, + //* optional charstring + p_sipUrl //* SipUrl + ) + }, //* end addressField + fromParams := omit + } + + template(value) Event m_Event_base := { + fieldName := EVENT_E, + eventType := "", + eventParams := omit + } + + template(value) Event m_Event_refer modifies m_Event_base := {eventType := "refer"} + + template(value) Event m_Event_conference modifies m_Event_base := {eventType := "conference"} + + template(value) Event m_Event_presence modifies m_Event_base := {eventType := "presence"} + + template(value) Event m_Event_reg modifies m_Event_base := {eventType := "reg"} + + template(value) Event m_Event_cdiv modifies m_Event_base := {eventType := "comm-div-info"} + + template(value) Event m_Event_mcid := m_Event_cdiv; + + template(value) Expires m_Expires_base := { + fieldName := EXPIRES_E, + deltaSec := "" + } + + template(value) Expires m_Expires_600000 modifies m_Expires_base := {deltaSec := "600000"} + + template(value) Expires m_Expires( + template(value) charstring p_deltaSec + ) modifies m_Expires_base := { + deltaSec := p_deltaSec + } + + template(present) Expires mw_Expires( + template(present) charstring p_deltaSec := ? + ) := { + fieldName := EXPIRES_E, + deltaSec := p_deltaSec + } + + template(value) HistoryInfo m_HistoryInfo( + template(value) HistoryInfo_List p_HistoryInfo_List + ) := { + fieldName := HISTORY_INFO_E, + historyInfoList := p_HistoryInfo_List + } + + template(present) HistoryInfo mw_HistoryInfo( + template(present) HistoryInfo_List p_HistoryInfo_List := ? + ) := { + fieldName := HISTORY_INFO_E, + historyInfoList := p_HistoryInfo_List + } + + template(value) HistoryInfoEntry m_HistoryInfoEntry( + template(value) SipUrl p_Url, + template(omit) IntegerList p_index := omit, + template(omit) SemicolonParam_List p_paramlist := omit + ) := { + nameAddr := m_NameAddr(omit, p_Url), + hiIndex := p_index, + hiExtention := p_paramlist + } + + template(present) HistoryInfoEntry mw_HistoryInfoEntry( + template(present) SipUrl p_Url := ?, + template IntegerList p_index, + template SemicolonParam_List p_paramlist + ) := { + nameAddr := mw_NameAddr(*, p_Url), + hiIndex := p_index, + hiExtention := p_paramlist + } + + template(value) PAssertedID m_PAssertedID( + template(value) Addr_Union p_pAssertedIDValue + ) := { + fieldName := P_ASSERTED_ID_E, + pAssertedIDValueList := {p_pAssertedIDValue} + } + + template(value) PAssertedID m_PAssertedID_2x( + template(value) Addr_Union p_pAssertedIDValue, + template(value) Addr_Union p_pAssertedIDValue2 + ) modifies m_PAssertedID := { + pAssertedIDValueList := {p_pAssertedIDValue, p_pAssertedIDValue2} + } + + template(present) PAssertedID mw_PAssertedID( + template(present) PAssertedIDValue p_pAssertedIDValue := ? + ) := { + fieldName := P_ASSERTED_ID_E, + pAssertedIDValueList := {p_pAssertedIDValue} + } + + template(present) PAssertedIDValue mw_PAssertedIDValue( + template(present) SipUrl p_SipUrl := ? + ) := { + nameAddr := { + displayName := *, + addrSpec := p_SipUrl + } + } + + template(value) PPreferredID m_PPreferredID( + template(value) Addr_Union p_pPreferredIDValue + ) := { + fieldName := P_PREFERRED_ID_E, + pPreferredIDValueList := {p_pPreferredIDValue} + } + + template(value) Privacy m_Privacy( + template(value) PrivacyValue p_privacy + ) := { + fieldName := PRIVACY_E, + privValueList := {p_privacy} + } + + template(present) Privacy mw_Privacy_Base( + template(present) charstring p_value := ? + ) := { + fieldName := PRIVACY_E, + privValueList := {*, p_value, *} + } + + template(present) Privacy mw_Privacy_id := mw_Privacy_Base("id"); + + template(present) Privacy mw_Privacy_user := mw_Privacy_Base("user"); + + template(value) RAck m_RAck( + integer p_responseNum, + integer p_seqNumber, + charstring p_method + ) := { + fieldName := RACK_E, + responseNum := p_responseNum, + seqNumber := p_seqNumber, + method := p_method + } + + template(value) Reason m_Reason( + template(value) integer p_cause + ) := { + fieldName := REASON_E, + reasonValues := {m_ReasonValue({tokenOrHost := int2str(valueof(p_cause))}, { tokenOrHost := "dummy"})} + } + + template(value) Reason m_Reason21 := { + fieldName := REASON_E, + reasonValues := {m_ReasonValue({tokenOrHost := int2str(21)}, { tokenOrHost := "call reject"})} + } + + template(present) Reason mw_Reason_Base := { + fieldName := REASON_E, + reasonValues := {} + } + + template(present) Reason mw_Reason( + template(value) GenValue p_cause + ) modifies mw_Reason_Base := { + reasonValues := {mw_ReasonValue(p_cause, ?)} + } + + template(present) Reason mw_ReasonSIP( + template(value) GenValue p_cause + ) modifies mw_Reason_Base := { + reasonValues := {mw_ReasonValueSIP(p_cause, ?)} + } + + template(value) RecordRoute m_recordRoute_currIpAddr( + template(value) SipUserProfile p_userprofile + ) := { + fieldName := RECORD_ROUTE_E, + routeBody := { + { + nameAddr := { + displayName := omit, + addrSpec := { + scheme := c_sipScheme, //* contains "sip" + components := { + sip := { + userInfo := omit, + hostPort := { + host := p_userprofile.currIpaddr, + portField := p_userprofile.currPort + } + } + }, + urlParameters := omit, + headers := omit + } + }, + rrParam := omit + } + } + } + + template(value) RecordRoute m_recordRoute_currIpAddr_params( + template(value) SipUserProfile p_userprofile, + template(value) SemicolonParam_List p_urlParameters + ) := { + fieldName := RECORD_ROUTE_E, + routeBody := { + { + nameAddr := { + displayName := omit, + addrSpec := { + scheme := c_sipScheme, //* contains "sip" + components := { + sip := { + userInfo := omit, + hostPort := { + host := p_userprofile.currIpaddr, + portField := p_userprofile.currPort + } + } + }, + urlParameters := p_urlParameters, + headers := omit + } + }, + rrParam := omit + } + } + } + + template(value) RouteBody m_routeBody_currIpAddr( + template(value) SipUserProfile p_userprofile + ) := { + nameAddr := { + displayName := omit, + addrSpec := { + scheme := c_sipScheme, //* contains "sip" + components := { + sip := { + userInfo := omit, + hostPort := { + host := p_userprofile.homeDomain, + portField := p_userprofile.currPort + } + } + }, + urlParameters := omit, + headers := omit + } + }, + rrParam := omit + } + + template(value) ReferredBy m_ReferredBy_SipUrl( + template(value) SipUrl p_sipUrl + ) := { + fieldName := REFERRED_BY_E, + nameAddr := + m_NameAddr( + // STF471 {displayName + omit, + // := omit, + p_sipUrl // addrSpec:=p_sipUrl} + ), + referredbyIdParams := omit + } + + template(value) ReferTo m_ReferTo_SipUrl( + template(value) SipUrl p_sipUrl, + template(value) GenValue p_method + ) := { + fieldName := REFER_TO_E, + nameAddr := + m_NameAddr( + // STF471 {displayName + omit, + // := omit, + p_sipUrl // addrSpec:=p_sipUrl} + ), + referToParams := { + { + id := "method", + paramValue := p_method + } + } + } + + template(value) ReferSub m_ReferSub( + template(value) boolean p_value + ) := { + fieldName := REFER_SUB_E, + referSubValue := p_value, + referSubParams := omit + } + + template(value) Replaces m_Replaces( + template(value) charstring p_callId, + template(value) GenValue p_toTag, + template(value) GenValue p_fromTag + ) := { + fieldName := REPLACES_E, + callid := p_callId, + replacesParams := { + { + id := "to-tag", + paramValue := p_toTag + }, + { + id := "from-tag", + paramValue := p_fromTag + } + } + } + + template(value) Require m_Require_empty := { + fieldName := REQUIRE_E, + optionsTags := {""} + } + + template(value) Require m_Require_replaces modifies m_Require_empty := {optionsTags := {c_replaces}} + + template(value) Require m_Require_100rel modifies m_Require_empty := {optionsTags := {c_tag100rel}} + + template(value) Require m_Require_prec modifies m_Require_empty := {optionsTags := {c_tagPrecond}} + + template(value) SubscriptionState m_SubscriptionState_active := { + fieldName := SUBSCRIPTION_STATE_E, + subState := "active", + substateParams := { + { + id := "expires", + paramValue := {tokenOrHost := "60000"} + } + } + } + + template(value) Supported m_Supported_empty := { + fieldName := SUPPORTED_E, + optionsTags := {""} + } + + template(value) Supported m_Supported_fromChange modifies m_Supported_empty := {optionsTags := {c_tagFromChange}} + + template(value) Supported m_Supported_prec modifies m_Supported_empty := {optionsTags := {c_tagPrecond}} + + template(value) Supported m_Supported_100rel modifies m_Supported_empty := {optionsTags := {c_tag100rel}} + + template(value) Supported m_Supported_100rel_prec modifies m_Supported_empty := {optionsTags := {c_tag100rel, c_tagPrecond}} + + template(value) GenericParam m_Text( + template(value) GenValue p_text + ) := { + id := "text", + paramValue := p_text + } + + template(present) GenericParam mw_Text( + template GenValue p_text + ) := { + id := "text", + paramValue := p_text + } + + template(value) GenericParam m_UserPhone := { + id := "user", + paramValue := { quotedString := "phone" } + } + + template(value) GenericParam m_UserToUserEncodingHex := { + id := "encoding", + paramValue := { quotedString := "hex" } + } + + template(value) UserToUser m_UserToUserData( + template(value) UserToUser.uuiData p_U2UData + ) := { + fieldName := USER_TO_USER_E, + uuiData := p_U2UData, + uuiParam := m_UserToUserEncodingHex + } + + template(value) To m_To( + template(value) SipUrl p_sipUrl + ) := { + fieldName := TO_E, + addressField := { + nameAddr := + m_NameAddr( + {token:="ETSI Tester"}, + //* optional charstring + p_sipUrl //* SipUrl + ) + }, //* end addressField + toParams := omit + } + + template(value) To m_To_SipUrl( + template(value) SipUrl p_sipUrl + ) modifies m_To := { + addressField := { + nameAddr := { + displayName := + omit //* optional charstring + } + } //* end addressField + } + + template(present) To mw_To_NameAddr_SipUrl( + template DisplayName p_dn, + template(present) charstring p_user := ?, + template charstring p_host + ) := { + fieldName := TO_E, + addressField := (mw_AddrUnion_Nameaddr(p_dn, p_user, p_host), mw_AddrUnion_SipUrl(p_user, p_host)), + toParams := * + } + + template(present) To mw_To( + template(present) SipUrl p_sipUrl := ? + ) := { + fieldName := TO_E, + addressField := {nameAddr := mw_NameAddr(*, p_sipUrl)}, + toParams := * + } + + template(present) From mw_From( + template(present) SipUrl p_sipUrl := ? + ) := { + fieldName := FROM_E, + addressField := {nameAddr := mw_NameAddr(*, p_sipUrl)}, + fromParams := * + } + + template(present) From mw_From_NameAddr_SipUrl( + template DisplayName p_dn, + template(present) charstring p_user := ?, + template charstring p_host + ) := { + fieldName := FROM_E, + addressField := (mw_AddrUnion_Nameaddr(p_dn, p_user, p_host), mw_AddrUnion_SipUrl(p_user, p_host)), + fromParams := * + } + template(value) ViaBody m_ViaBody_currIpaddr( + template(value) charstring p_branch_val, + template(value) SipUserProfile p_userprofile + ) := { + sentProtocol := m_SentProtocol(PX_SIP_TRANSPORT), + sentBy := { + host := p_userprofile.currIpaddr, + portField := p_userprofile.currPort + }, + viaParams := { + { + id := c_branchId, + paramValue := { + tokenOrHost := p_branch_val + } + } + } + } + + template(present) ViaBody mw_ViaBody_interface( + template(present) HostPort p_hostport := ? + ) := { + sentProtocol := m_SentProtocol(PX_SIP_TRANSPORT), + sentBy := { + host := p_hostport.host, + portField := p_hostport.portField + }, + viaParams := * + } + + template(present) Via mw_Via( + template(present) ViaBody p_viabody := ? + ) := { + fieldName := VIA_E, + viaBody := {*, p_viabody, *} // superset(p_viabody) + } + + template(present) CallId mw_CallId_any := { + fieldName := CALL_ID_E, + callid := ? + } + + template(present) Require mw_Require_Base := { + fieldName := REQUIRE_E, + optionsTags := {} + } + + template(present) Require mw_Require_not_100rel modifies mw_Require_Base := {optionsTags := superset(complement(c_tag100rel))} + + template(present) Require mw_require_100rel modifies mw_Require_Base := {optionsTags := superset(c_tag100rel)} + + template(present) RecordRoute mw_recordroute( + template(present) RouteBody p_routeBody := ? + ) := { + fieldName := RECORD_ROUTE_E, + routeBody := {*, p_routeBody, *} // superset(p_routeBody) + } + + template(present) Route mw_route( + template(present) RouteBody_List p_routeBody := ? + ) := { + fieldName := ROUTE_E, + routeBody := p_routeBody + } + + template(present) Supported mw_Supported_Base := { + fieldName := SUPPORTED_E, + optionsTags := {} + } + + template(present) Supported mw_Supported_100rel_prec modifies mw_Supported_Base := {optionsTags := superset(c_tag100rel, c_tagPrecond)} + + template(present) Supported mw_Supported_100rel modifies mw_Supported_Base := {optionsTags := superset(c_tag100rel)} + + template(present) Supported mw_Supported_fromChange modifies mw_Supported_Base := {optionsTags := superset(c_tagFromChange)} + + template(present) UserToUser mw_UserToUserData( + template(present) UserToUser.uuiData p_U2UData := ? + ) := { + fieldName := USER_TO_USER_E, + uuiData := p_U2UData, + uuiParam := ? + } + + template(present) Contact mw_Contact_conference := { + fieldName := CONTACT_E, + contactBody := { + contactAddresses := { + { + addressField := { + nameAddr := { + displayName := *, + addrSpec := { + scheme := ?, + components := ?, + urlParameters := { + { + "isfocus", + * + }, + * + }, + headers := * + } + } + }, + contactParams := * + } + } + } + } + + template(value) AlertInfo m_AlertInfo_Base := { + fieldName := ALERT_INFO_E, + alertInfoBody := {} + } + + template(value) AlertInfo m_AlertInfo( + template(value) charstring p_urn + ) modifies m_AlertInfo_Base := { + alertInfoBody := { + { + p_urn, + omit + } + } + } + + template(present) AlertInfo mw_AlertInfo( + template(present) charstring p_urn := ? + ) modifies m_AlertInfo_Base := { + alertInfoBody := + superset( + { + p_urn, + omit + } + ) + } + + + } //* end of group HeaderFieldTemplates + + + group MessageTemplates { + + group dummy_templates { + + group dummy_parameter_send { + + template(value) RequestLine m_requestLine_dummy( + template(value) Method p_method + ) := { + method := p_method, + requestUri := c_unavailableUri, + sipVersion := c_sipNameVersion + } + + template(value) MessageHeader m_msgHeader_dummy := { + accept := omit, + acceptContact := omit, + acceptEncoding := omit, + acceptLanguage := omit, + alertInfo := omit, + allow := omit, + allowEvents := omit, //* RFC3265 + authenticationInfo := omit, + authorization := omit, + callId := c_empty_CallId, + callInfo := omit, + contact := omit, + contentDisposition := omit, + contentEncoding := omit, + contentLanguage := omit, + contentLength := { + fieldName := CONTENT_LENGTH_E, + len := 0 + }, + contentType := omit, //* if message body present m, + //* else not present + cSeq := c_empty_cSeq, + date := omit, + errorInfo := omit, + event := omit, //* RFC3265 + expires := omit, + featureCaps := omit, + fromField := c_empty_From, + geolocation := omit, + geolocationRouting := omit, + historyInfo := omit, //* RFC4244 + inReplyTo := omit, + maxForwards := c_maxForwards70, + mimeVersion := omit, + minExpires := omit, + minSE := omit, //* RFC4028 + organization := omit, + pAccessNetworkInfo := omit, //* RFC3455 + pAssertedID := omit, + pAssertedService := omit, + pAssociatedURI := omit, + path := omit, //* RFC3327 + pCalledPartyID := omit, //* RFC3455 + pChargingFunctionAddresses := omit, //* RFC3455 + pChargingVector := omit, //* RFC3455 + pEarlyMedia := omit, //* RFC5009 + pMediaAuthorization := omit, //* RFC3313 + pPreferredID := omit, + pPreferredService := omit, + priority := omit, + privacy := omit, + proxyAuthenticate := omit, + proxyAuthorization := omit, + proxyRequire := omit, + pVisitedNetworkID := omit, //* RFC3455 + rAck := omit, + rSeq := omit, + reason := omit, + recordRoute := omit, + requestDisposition := omit, + referredBy := omit, //* RFC3892 - REFER method + referTo := omit, //* RFC3515 - REFER method + referSub := omit, //* RFC4488 - REFER method + replaces := omit, //* RFC3891 + replyTo := omit, + require := omit, + retryAfter := omit, + route := omit, + securityClient := omit, //* RFC3329 + securityServer := omit, //* RFC3329 + securityVerify := omit, //* RFC3329 + server := omit, + serviceRoute := omit, //* RFC3608 + sessionExpires := omit, //* RFC4028 + sessionId := omit, + sipETag := omit, + sipIfMatch := omit, + subject := omit, + subscriptionState := omit, //* RFC3265 + supported := omit, + timestamp := omit, + toField := c_empty_To, + unsupported := omit, + userToUser := omit, + userAgent := omit, + via := c_empty_Via, + warning := omit, + wwwAuthenticate := omit, + undefinedHeader_List := omit + } + + + } //* group dummy_parameter_send + + group dummy_parameter_receive { + + template(present) RequestLine mw_requestLine_dummy( + Method p_method + ) := { + method := p_method, + requestUri := ?, + sipVersion := c_sipNameVersion + } + + template(present) MessageHeader mw_msgHeader_dummy := { + accept := *, + acceptContact := *, + acceptEncoding := *, + acceptLanguage := *, + alertInfo := *, + allow := *, + allowEvents := *, //* RFC3265 + authenticationInfo := *, + authorization := *, + callId := ?, + callInfo := *, + contact := *, + contentDisposition := *, + contentEncoding := *, + contentLanguage := *, + contentLength := ?, + contentType := *, + cSeq := ?, + date := *, + errorInfo := *, + event := *, //* RFC3265 + expires := *, + featureCaps := *, + fromField := ?, + geolocation := *, + geolocationRouting := *, + historyInfo := *, //* RFC4244 + inReplyTo := *, + maxForwards := *, + mimeVersion := *, + minExpires := *, + minSE := *, //* RFC4028 + organization := *, + pAccessNetworkInfo := *, //* RFC3455 + pAssertedID := *, + pAssertedService := *, + pAssociatedURI := *, + path := *, //* RFC3327 + pCalledPartyID := *, //* RFC3455 + pChargingFunctionAddresses := *, //* RFC3455 + pChargingVector := *, //* RFC3455 + pEarlyMedia := *, //* RFC5009 + pMediaAuthorization := *, //* RFC3313 + pPreferredID := *, + pPreferredService := *, + priority := *, + privacy := *, + proxyAuthenticate := *, + proxyAuthorization := *, + proxyRequire := *, + pVisitedNetworkID := *, //* RFC3455 + rAck := *, + rSeq := *, + reason := *, + recordRoute := *, + requestDisposition := *, + referredBy := *, //* RFC3892 - REFER method + referTo := *, //* RFC3515 - REFER method + referSub := *, //* RFC4488 - REFER method + replaces := *, //* RFC 3891 + replyTo := *, + require := *, + retryAfter := *, + route := *, + securityClient := *, //* RFC3329 + securityServer := *, //* RFC3329 + securityVerify := *, //* RFC3329 + server := *, + serviceRoute := *, //* RFC3608 + sessionExpires := *, //* RFC4028 + sessionId := *, + sipETag := *, + sipIfMatch := *, + subject := *, + subscriptionState := *, //* RFC3265 + supported := *, + timestamp := *, + toField := ?, + unsupported := *, + userToUser := *, + userAgent := *, + via := ?, + warning := *, + wwwAuthenticate := *, + undefinedHeader_List := * + } + + + } //* end group dummy_parameter_receive + + group dummy_request_templates_send { + + template(value) ACK_Request m_ACK_Dummy := { + requestLine := m_requestLine_dummy(ACK_E), + msgHeader := m_msgHeader_dummy, + messageBody := omit, + payload := omit + } + + template(value) BYE_Request m_BYE_Dummy := { + requestLine := m_requestLine_dummy(BYE_E), + msgHeader := m_msgHeader_dummy, + messageBody := omit, + payload := omit + } + + template(value) CANCEL_Request m_CANCEL_Dummy := { + requestLine := m_requestLine_dummy(CANCEL_E), + msgHeader := m_msgHeader_dummy, + messageBody := omit, + payload := omit + } + + template(value) INFO_Request m_INFO_Dummy := { + requestLine := m_requestLine_dummy(INFO_E), + msgHeader := m_msgHeader_dummy, + messageBody := omit, + payload := omit + } + + template(value) INVITE_Request m_INVITE_Dummy := { + requestLine := m_requestLine_dummy(INVITE_E), + msgHeader := m_msgHeader_dummy, + messageBody := omit, + payload := omit + } + + template(value) MESSAGE_Request m_MESSAGE_Dummy := { + requestLine := m_requestLine_dummy(MESSAGE_E), + msgHeader := m_msgHeader_dummy, + messageBody := omit, + payload := omit + } + + template(value) NOTIFY_Request m_NOTIFY_Dummy := { + requestLine := m_requestLine_dummy(NOTIFY_E), + msgHeader := m_msgHeader_dummy, + messageBody := omit, + payload := omit + } + + template(value) OPTIONS_Request m_OPTIONS_Dummy := { + requestLine := m_requestLine_dummy(OPTIONS_E), + msgHeader := m_msgHeader_dummy, + messageBody := omit, + payload := omit + } + + template(value) PRACK_Request m_PRACK_Dummy := { + requestLine := m_requestLine_dummy(PRACK_E), + msgHeader := m_msgHeader_dummy, + messageBody := omit, + payload := omit + } + + template(value) PUBLISH_Request m_PUBLISH_Dummy := { + requestLine := m_requestLine_dummy(PUBLISH_E), + msgHeader := m_msgHeader_dummy, + messageBody := omit, + payload := omit + } + + template(value) REGISTER_Request m_REGISTER_Dummy := { + requestLine := m_requestLine_dummy(REGISTER_E), + msgHeader := m_msgHeader_dummy, + messageBody := omit, + payload := omit + } + + template(value) REFER_Request m_REFER_Dummy := { + requestLine := m_requestLine_dummy(REFER_E), + msgHeader := m_msgHeader_dummy, + messageBody := omit, + payload := omit + } + + template(value) SUBSCRIBE_Request m_SUBSCRIBE_Dummy := { + requestLine := m_requestLine_dummy(SUBSCRIBE_E), + msgHeader := m_msgHeader_dummy, + messageBody := omit, + payload := omit + } + + template(value) UPDATE_Request m_UPDATE_Dummy := { + requestLine := m_requestLine_dummy(UPDATE_E), + msgHeader := m_msgHeader_dummy, + messageBody := omit, + payload := omit + } + + + } //* end group dummy_request_templates_send + group dummy_request_templates_receive { + + template(present) ACK_Request mw_ACK_Dummy := { + requestLine := mw_requestLine_dummy(ACK_E), + msgHeader := mw_msgHeader_dummy, + messageBody := *, + payload := * + } + + template(present) BYE_Request mw_BYE_Dummy := { + requestLine := mw_requestLine_dummy(BYE_E), + msgHeader := mw_msgHeader_dummy, + messageBody := *, + payload := * + } + + template(present) CANCEL_Request mw_CANCEL_Dummy := { + requestLine := mw_requestLine_dummy(CANCEL_E), + msgHeader := mw_msgHeader_dummy, + messageBody := *, + payload := * + } + + template(present) INFO_Request mw_INFO_Dummy := { + requestLine := mw_requestLine_dummy(INFO_E), + msgHeader := mw_msgHeader_dummy, + messageBody := *, + payload := * + } + + template(present) INVITE_Request mw_INVITE_Dummy := { + requestLine := mw_requestLine_dummy(INVITE_E), + msgHeader := mw_msgHeader_dummy, + messageBody := *, + payload := * + } + + template(present) MESSAGE_Request mw_MESSAGE_Dummy := { + requestLine := mw_requestLine_dummy(MESSAGE_E), + msgHeader := mw_msgHeader_dummy, + messageBody := *, + payload := * + } + + template(present) OPTIONS_Request mw_OPTIONS_Dummy := { + requestLine := mw_requestLine_dummy(OPTIONS_E), + msgHeader := mw_msgHeader_dummy, + messageBody := *, + payload := * + } + + template(present) NOTIFY_Request mw_NOTIFY_Dummy := { + requestLine := mw_requestLine_dummy(NOTIFY_E), + msgHeader := mw_msgHeader_dummy, + messageBody := *, + payload := * + } + + template(present) PRACK_Request mw_PRACK_Dummy := { + requestLine := mw_requestLine_dummy(PRACK_E), + msgHeader := mw_msgHeader_dummy, + messageBody := *, + payload := * + } + + template(present) PUBLISH_Request mw_PUBLISH_Dummy := { + requestLine := mw_requestLine_dummy(PUBLISH_E), + msgHeader := mw_msgHeader_dummy, + messageBody := *, + payload := * + } + + template(present) REFER_Request mw_REFER_Dummy := { + requestLine := mw_requestLine_dummy(REFER_E), + msgHeader := mw_msgHeader_dummy, + messageBody := *, + payload := * + } + + template(present) REGISTER_Request mw_REGISTER_Dummy := { + requestLine := mw_requestLine_dummy(REGISTER_E), + msgHeader := mw_msgHeader_dummy, + messageBody := *, + payload := * + } + + template(present) SUBSCRIBE_Request mw_SUBSCRIBE_Dummy := { + requestLine := mw_requestLine_dummy(SUBSCRIBE_E), + msgHeader := mw_msgHeader_dummy, + messageBody := *, + payload := * + } + + template(present) UPDATE_Request mw_UPDATE_Dummy := { + requestLine := mw_requestLine_dummy(UPDATE_E), + msgHeader := mw_msgHeader_dummy, + messageBody := *, + payload := * + } + + + } //* end group dummy_request_templates_receive + + group dummy_response_templates_send { + + template(value) Response m_Response_Dummy := { + statusLine := c_statusLine100, + msgHeader := m_msgHeader_dummy, + messageBody := omit, + payload := omit + } + + + } //* group dummy_response_templates_send + + group dummy_response_templates_receive { + + template(present) Response mw_Response_Dummy := { + statusLine := ?, + msgHeader := mw_msgHeader_dummy, + messageBody := *, + payload := * + } + + + } //* group dummy_response_templates_receive + } + + group base_templates { + + template(value) CSeq m_cSeq( + template(value) integer p_seqNumber, + template(value) charstring p_method + ) := { + fieldName := CSEQ_E, + seqNumber := p_seqNumber, + method := p_method + } + + template(value) ContentLength m_contentLength( + template(value) integer p_len + ) := { + fieldName := CONTENT_LENGTH_E, + len := p_len + } + + template(value) ContentType m_contentType( + template(value) charstring p_mTypeSubtype + ) := { + fieldName := CONTENT_TYPE_E, + mTypeSubtype := p_mTypeSubtype + } + + template(present) ContentType mw_contentType( + in template(present) charstring p_mTypeSubtype := ? + ) := { + fieldName := CONTENT_TYPE_E, + mTypeSubtype := p_mTypeSubtype + } + + group request_send { + + template(value) ACK_Request m_ACK_Request_Base( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via + ) modifies m_ACK_Dummy := { + requestLine := {requestUri := p_requestUri}, + msgHeader := { + callId := p_callId, + cSeq := m_cSeq(p_cSeq.seqNumber, "ACK"), // STF471 + // {fieldName:=CSEQ_E, + // seqNumber:= + // p_cSeq.seqNumber, + // method:= + // "ACK"}, + fromField := p_from, + toField := p_to, + via := p_via + } + } + + template(value) ACK_Request m_ACK_Request_withRecordRoute( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(value) Route p_route + ) modifies m_ACK_Request_Base := { + msgHeader := { + route := p_route, + contentLength := m_contentLength(0) + } + } + + template(value) BYE_Request m_BYE_Request_Base( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via + ) modifies m_BYE_Dummy := { + requestLine := {requestUri := p_requestUri}, + msgHeader := { + callId := p_callId, + cSeq := p_cSeq, + fromField := p_from, + toField := p_to, + via := p_via + } + } + + template(value) CANCEL_Request m_CANCEL_Request_Base( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via + ) modifies m_CANCEL_Dummy := { + requestLine := {requestUri := p_requestUri}, + msgHeader := { + callId := p_callId, + cSeq := p_cSeq, + fromField := p_from, + toField := p_to, + via := p_via + } + } + + template(value) INFO_Request m_INFO_Request_Base( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via + ) modifies m_INFO_Dummy := { + requestLine := {requestUri := p_requestUri}, + msgHeader := { + callId := p_callId, + cSeq := p_cSeq, + fromField := p_from, + toField := p_to, + via := p_via + } + } + + template(value) INVITE_Request m_INVITE_Request_Base( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(value) Contact p_contact + ) modifies m_INVITE_Dummy := { + requestLine := {requestUri := p_requestUri}, + msgHeader := { + callId := p_callId, + contact := p_contact, + cSeq := p_cSeq, + fromField := p_from, + toField := p_to, + via := p_via + } + } + + template(value) MESSAGE_Request m_MESSAGE_Request_Base( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via + ) modifies m_MESSAGE_Dummy := { + requestLine := {requestUri := p_requestUri}, + msgHeader := { + callId := p_callId, + cSeq := p_cSeq, + fromField := p_from, + toField := p_to, + via := p_via + } + } + + template(omit) NOTIFY_Request m_NOTIFY_Request_Base( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via + ) modifies m_NOTIFY_Dummy := { + requestLine := {requestUri := p_requestUri}, + msgHeader := { + callId := p_callId, + cSeq := m_cSeq(p_cSeq.seqNumber, "NOTIFY"), // STF471 + // {fieldName:=CSEQ_E, + // seqNumber:= + // p_cSeq.seqNumber, + // method:= + // "NOTIFY"}, + fromField := p_from, + toField := p_to, + via := p_via + } + } + + template(value) OPTIONS_Request m_OPTIONS_Request_Base( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via + ) modifies m_OPTIONS_Dummy := { + requestLine := {requestUri := p_requestUri}, + msgHeader := { + callId := p_callId, + cSeq := m_cSeq(p_cSeq.seqNumber, "OPTIONS"), // STF471 + // {fieldName:=CSEQ_E, + // seqNumber:= + // p_cSeq.seqNumber, + // method:= + // "OPTIONS"}, + fromField := p_from, + toField := p_to, + via := p_via + } + } + + template(value) PRACK_Request m_PRACK_Request_Base( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(value) RAck p_RAck + ) modifies m_PRACK_Dummy := { + requestLine := {requestUri := p_requestUri}, + msgHeader := { + callId := p_callId, + cSeq := m_cSeq(p_cSeq.seqNumber, "PRACK"), // STF471 + // {fieldName:=CSEQ_E, + // seqNumber:= + // p_cSeq.seqNumber, + // method:= + // "PRACK"}, + fromField := p_from, + rAck := p_RAck, + toField := p_to, + via := p_via + }, + messageBody := omit + } + + template(value) PUBLISH_Request m_PUBLISH_Request_Base( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) Event p_event := omit, + template(omit) RAck p_RAck := omit, + template(value) MessageBody p_mb + ) modifies m_PUBLISH_Dummy := { + requestLine := {requestUri := p_requestUri}, + msgHeader := { + callId := p_callId, + contentLength := m_contentLength(f_MessageBodyLength(p_mb)), // STF471 + // {fieldName + // := + // CONTENT_LENGTH_E, + // len:= + // f_MessageBodyLength(valueof(p_mb))}, + contentType := m_contentType(c_plainText), // STF471 + // {fieldName + // := + // CONTENT_TYPE_E, + // mTypeSubType + // := + // c_plainText/*c_sdp*/}, + cSeq := m_cSeq(p_cSeq.seqNumber, "PUBLISH"), // STF471 + // {fieldName:=CSEQ_E, + // seqNumber:= + // p_cSeq.seqNumber, + // method:= + // "PUBLISH"}, + event := p_event, + rAck := p_RAck, + fromField := p_from, + toField := p_to, + via := p_via + }, + messageBody := p_mb + } + + template(value) REFER_Request m_REFER_Request_Base( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(omit) Contact p_contact := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) ReferTo p_referTo := omit, + template(omit) ReferredBy p_referredBy := omit + ) modifies m_REFER_Dummy := { + requestLine := {requestUri := p_requestUri}, + msgHeader := { + callId := p_callId, + contact := p_contact, + cSeq := m_cSeq(p_cSeq.seqNumber, "REFER"), // STF471 + // {fieldName:=CSEQ_E, + // seqNumber:= + // p_cSeq.seqNumber, + // method:= + // "REFER"}, + fromField := p_from, + referTo := p_referTo, + referredBy := p_referredBy, + toField := p_to, + via := p_via + } + } + + template(value) REFER_Request m_REFER_Request_replaces( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(omit) Contact p_contact := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(value) ReferTo p_referTo, + template(value) ReferredBy p_referredBy, + template(value) Replaces p_replaces, + template(omit) Require p_require := omit + ) modifies m_REFER_Request_Base := { + msgHeader := { + replaces := p_replaces, + require := p_require + } + } + + template(value) REGISTER_Request m_REGISTER_Request_Base( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) Contact p_contact := omit, + template(omit) Authorization p_authorization := omit + ) modifies m_REGISTER_Dummy := { + requestLine := {requestUri := p_requestUri}, + msgHeader := { + authorization := p_authorization, + callId := p_callId, + contact := p_contact, + cSeq := p_cSeq, + fromField := p_from, + toField := p_to, + supported := { + fieldName := SUPPORTED_E, + optionsTags := {"path"} + }, + via := p_via + } + } + + template(value) SUBSCRIBE_Request m_SUBSCRIBE_Request_Base( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via + ) modifies m_SUBSCRIBE_Dummy := { + requestLine := {requestUri := p_requestUri}, + msgHeader := { + callId := p_callId, + cSeq := m_cSeq(p_cSeq.seqNumber, "SUBSCRIBE"), // STF471 + // {fieldName:=CSEQ_E, + // seqNumber:= + // p_cSeq.seqNumber, + // method:= + // "SUBSCRIBE"}, + fromField := p_from, + toField := p_to, + via := p_via + } + } + + template(value) UPDATE_Request m_UPDATE_Request_Base( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) Contact p_contact := omit, + template(value) MessageBody p_mb + ) modifies m_UPDATE_Dummy := { + requestLine := {requestUri := p_requestUri}, + msgHeader := { + callId := p_callId, + contact := p_contact, + contentLength := m_contentLength(f_MessageBodyLength(p_mb)), // STF471 + // {fieldName + // := + // CONTENT_LENGTH_E, + // len:= + // f_MessageBodyLength(valueof(p_mb))}, + contentType := m_contentType(c_sdpApplication), // STF471 + // {fieldName + // := + // CONTENT_TYPE_E, + // mTypeSubtype + // := + // c_sdp}, + cSeq := m_cSeq(p_cSeq.seqNumber, "UPDATE"), // STF471 + // {fieldName:=CSEQ_E, + // seqNumber:= + // p_cSeq.seqNumber, + // method:= + // "UPDATE"}, + fromField := p_from, + toField := p_to, + via := p_via + }, + messageBody := p_mb + } + + + } //* end of group message_send + + group request_receive { + + template(present) ACK_Request mw_ACK_Request_Base( + template CallId p_callId + ) modifies mw_ACK_Dummy := { + msgHeader := {callId := p_callId} + } + + template(present) BYE_Request mw_BYE_Request_Base( + template CallId p_callId + ) modifies mw_BYE_Dummy := { + msgHeader := {callId := p_callId} + } + + template(present) CANCEL_Request mw_CANCEL_Request_Base( + template CallId p_callId + ) modifies mw_CANCEL_Dummy := { + msgHeader := {callId := p_callId} + } + + template(present) INFO_Request mw_INFO_Request_Base( + template CallId p_callId + ) modifies mw_INFO_Dummy := { + msgHeader := {callId := p_callId} + } + + template(present) INVITE_Request mw_INVITE_Request_Base modifies mw_INVITE_Dummy := {requestLine := {method := INVITE_E}} + + template(present) MESSAGE_Request mw_MESSAGE_Request_Base modifies mw_MESSAGE_Dummy := {msgHeader := {contact := *}} + + template(present) NOTIFY_Request mw_NOTIFY_Request_Base( + template CallId p_callId + ) modifies mw_NOTIFY_Dummy := { + msgHeader := {callId := p_callId} + } + + template(present) OPTIONS_Request mw_OPTIONS_Request_Base( + template CallId p_callId + ) modifies mw_OPTIONS_Dummy := { + msgHeader := {callId := p_callId} + } + + template(present) PRACK_Request mw_PRACK_Request_Base( + template CallId p_callId + ) modifies mw_PRACK_Dummy := { + msgHeader := {callId := p_callId} + } + + template(present) PUBLISH_Request mw_PUBLISH_Request_Base( + template CallId p_callId + ) modifies mw_PUBLISH_Dummy := { + msgHeader := {callId := p_callId} + } + + template(present) REFER_Request mw_REFER_Request_Base( + template CallId p_callId + ) modifies mw_REFER_Dummy := { + msgHeader := {callId := p_callId} + } + + template(present) REFER_Request mw_REFER_Request( + template CallId p_callId, + template(value) SipUrl p_requestUri, + template(value) SipUrl p_referredBy + ) modifies mw_REFER_Request_Base := { + requestLine := {requestUri := p_requestUri}, + msgHeader := { + referredBy := { + fieldName := REFERRED_BY_E, + nameAddr := mw_NameAddr(*, p_referredBy), // STF471 + // {displayName + // := + // *, + // addrSpec + // := + // p_referredBy}, + referredbyIdParams := * + } + } + } + + template(present) INVITE_Request mw_INVITE_Request( + template Require p_require, + template(value) SipUrl p_referredBy + ) modifies mw_INVITE_Request_Base := { + msgHeader := { + require := p_require, + referredBy := { + fieldName := REFERRED_BY_E, + nameAddr := mw_NameAddr(*, p_referredBy), // STF471 + // {displayName + // := + // *, + // addrSpec + // := + // p_referredBy}, + referredbyIdParams := * + } + } + } + + template(present) REGISTER_Request mw_REGISTER_Request_Base modifies mw_REGISTER_Dummy := {requestLine := {method := REGISTER_E}} + + template(present) SUBSCRIBE_Request mw_SUBSCRIBE_Request_Base modifies mw_SUBSCRIBE_Dummy := {requestLine := {method := SUBSCRIBE_E}} + + template(present) UPDATE_Request mw_UPDATE_Request_Base(template CallId p_callId) modifies mw_UPDATE_Dummy := {msgHeader := {callId := p_callId}} + + + } //* end group request_receive + + group response_send { + + template(value) Response m_Response_Base( + template(value) StatusLine p_statusLine, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via + ) modifies m_Response_Dummy := { + statusLine := p_statusLine, + msgHeader := { + callId := p_callId, + cSeq := p_cSeq, + fromField := p_from, + maxForwards := omit, + toField := p_to, + via := p_via + }, + messageBody := omit, + payload := omit + } + + + } //* end group response_send + + group response_receive { + + template(present) Response mw_Response_Base( + template(present) StatusLine p_statusLine := ?, + template CallId p_callId, + template CSeq p_cSeq + ) modifies mw_Response_Dummy := { + statusLine := p_statusLine, + msgHeader := { + callId := p_callId, + contentLength := *, + cSeq := p_cSeq, + fromField := ?, + maxForwards := *, + toField := ?, + via := ? + } + } + + template(present) Response mw_Response_StatusCode_Base( + template(present) StatusLine.statusCode p_statusCode := ?, + template CallId p_callId, + template CSeq p_cSeq + ) modifies mw_Response_Dummy := { + statusLine := mw_statusLine(p_statusCode, ?), + msgHeader := { + callId := p_callId, + contentLength := *, + cSeq := p_cSeq, + fromField := ?, + maxForwards := *, + toField := ?, + via := ? + } + } + + template(present) Response mw_Response_1xx_Base( + template CallId p_callId, + template CSeq p_cSeq + ) modifies mw_Response_Dummy := { + statusLine := mw_statusLine1xx, + msgHeader := { + callId := p_callId, + contentLength := *, + cSeq := p_cSeq, + fromField := ?, + maxForwards := *, + toField := ?, + via := ? + } + } + + template(present) Response mw_Response_2xx_Base( + template CallId p_callId, + template CSeq p_cSeq + ) modifies mw_Response_1xx_Base := { + statusLine := mw_statusLine2xx + } + + template(present) Response mw_Response_3xx_Base( + template CallId p_callId, + template CSeq p_cSeq + ) modifies mw_Response_1xx_Base := { + statusLine := mw_statusLine3xx + } + + template(present) Response mw_Response_4xx_Base( + template CallId p_callId, + template CSeq p_cSeq + ) modifies mw_Response_1xx_Base := { + statusLine := mw_statusLine4xx + } + + template(present) Response mw_Response_5xx_Base( + template CallId p_callId, + template CSeq p_cSeq + ) modifies mw_Response_1xx_Base := { + statusLine := mw_statusLine5xx + } + + template(present) Response mw_Response_6xx_Base( + template CallId p_callId, + template CSeq p_cSeq + ) modifies mw_Response_1xx_Base := { + statusLine := mw_statusLine6xx + } + + template(present) Response mw_Response_Algorithm( + template(present) StatusLine p_statusLine := ?, + template CallId p_callId, + template CSeq p_cSeq, + template(present) CredentialsList p_credentialsList + ) modifies mw_Response_Base := { + statusLine := mw_statusLine(p_statusLine.statusCode, ?), + msgHeader := { + authorization := { + fieldName := AUTHORIZATION_E, + body := p_credentialsList + } + } + } + + + } //* end group message_receive + + + } //* end group full_templates + + group modified_templates { + + group request_send { + + template(value) ACK_Request m_ACK_Request_route( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) Route p_route := omit + ) modifies m_ACK_Request_Base := { + msgHeader := {route := p_route} + } + + template(value) ACK_Request m_ACK_Request_sdp( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(value) MessageBody p_mb + ) modifies m_ACK_Request_Base := { + msgHeader := { + contentLength := m_contentLength(f_MessageBodyLength(p_mb)), // STF471 + // {fieldName + // := + // CONTENT_LENGTH_E, + // len:= + // f_MessageBodyLength(valueof(p_mb))}, + contentType := m_contentType(c_sdpApplication) + }, + messageBody := p_mb + } + + template(value) BYE_Request m_BYE_Request_cause( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(value) integer p_cause + ) modifies m_BYE_Request_Base := { + msgHeader := {reason := m_Reason(p_cause)} + } + + template(value) INVITE_Request m_INVITE_Request_sdp( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(value) Contact p_contact, + template(value) MessageBody p_mb + ) modifies m_INVITE_Request_Base := { + msgHeader := { + contentLength := m_contentLength(f_MessageBodyLength(p_mb)), // STF471 + // {fieldName + // := + // CONTENT_LENGTH_E, + // len:= + // f_MessageBodyLength(valueof(p_mb))}, + contentType := m_contentType(c_sdpApplication) + }, + messageBody := p_mb + } + + template(value) INVITE_Request m_INVITE_Request_ResourceList( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(value) Contact p_contact, + template(value) MessageBody p_mb + ) modifies m_INVITE_Request_Base := { + msgHeader := { + contentLength := m_contentLength(f_MessageBodyLength(p_mb)), // STF471 + // {fieldName + // := + // CONTENT_LENGTH_E, + // len:= + // f_MessageBodyLength(p_mb)}, + contentType := m_contentType(c_xmlresourcelistApplication), // STF471 + // {fieldName + // := + // CONTENT_TYPE_E, + // mTypeSubtype + // := + // "application/resource-lists+xml"}, + contentDisposition := { + fieldName := CONTENT_DISPOSITION_E, + dispositionType := "recipient-list", + dispositionParams := omit + }, + require := { + fieldName := REQUIRE_E, + optionsTags := {"recipient-list-invite"} + } + }, + messageBody := p_mb + } + + template(value) REFER_Request m_REFER_Request_route( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(omit) Contact p_contact := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(value) ReferTo p_referTo, + template(value) ReferredBy p_referredBy, + template(value) Route p_route + ) modifies m_REFER_Request_Base := { + msgHeader := {route := p_route} + } + + template(value) REGISTER_Request m_REGISTER_Request_expires( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) Contact p_contact := omit, + template(omit) Authorization p_authorization := omit, + template(value) charstring p_expires + ) modifies m_REGISTER_Request_Base := { + msgHeader := { + authorization := p_authorization, + expires := m_Expires(p_expires) + } + } + + template(value) NOTIFY_Request m_NOTIFY_Request_contact( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) Contact p_contact := omit + ) modifies m_NOTIFY_Request_Base := { + msgHeader := { + contact := p_contact, + event := m_Event_reg, + subscriptionState := m_SubscriptionState_active + } + } + +// FIXME STF549: : Titan error: Restriction on template definition does not allow usage of any value + +// template(omit) NOTIFY_Request m_NOTIFY_Request_sipfrag( +// template(value) SipUrl p_requestUri, +// template(omit) CallId p_callId := omit, +// template(omit) CSeq p_cSeq := omit, +// template(value) From p_from, +// template(value) To p_to, +// template(value) Via p_via, +// template(value) charstring p_state, +// template(value) charstring p_sipfrag +// ) modifies m_NOTIFY_Request_Base := { +// requestLine := { +// method := NOTIFY_E, +// requestUri := { +// scheme := ?, +// components := { +// sip := { +// userInfo := omit, +// hostPort := p_requestUri.components.sip.hostPort +// } +// } +// } +// }, +// msgHeader := { +// contentLength := m_contentLength(lengthof(p_sipfrag)), // STF471 +// // {fieldName +// // := +// // CONTENT_LENGTH_E, +// // len:= +// // lengthof(p_sipfrag)}, +// contentType := m_contentType(c_sipfragMessage), // STF471 +// // {fieldName +// // := +// // CONTENT_TYPE_E, +// // mTypeSubtype +// // := +// // "message/sipfrag"}, +// subscriptionState := { +// fieldName := SUBSCRIPTION_STATE_E, +// subState := p_state, +// substateParams := omit +// }, +// event := m_Event_refer +// }, +// messageBody := {sipfrag := p_sipfrag} +// } + + template(omit) UPDATE_Request m_UPDATE_Request_route( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) Contact p_contact := omit, + template(value) MessageBody p_mb, + template(value) Route p_route + ) modifies m_UPDATE_Request_Base := { + msgHeader := {route := p_route} + } + + + } //* end group request_send + + + group request_receive { + + template(present) BYE_Request mw_BYE_Request_Reason( + template CallId p_callId, + template(value) GenValue p_cause + ) modifies mw_BYE_Request_Base := { + msgHeader := {reason := mw_Reason(p_cause)} + } + + template(present) BYE_Request mw_BYE_Request_ReasonSIP( + template CallId p_callId, + template(value) GenValue p_cause + ) modifies mw_BYE_Request_Base := { + msgHeader := {reason := mw_ReasonSIP(p_cause)} + } + + template(present) BYE_Request mw_BYE_Request_headerfieldlist( + template CallId p_callId, + template(present) SipUrl p_requestUri, + template(present) To p_to := ?, + template(present) From p_from := ?, + template CSeq p_cSeq, + template Route p_route, + template RecordRoute p_recordRoute, + template Reason p_reason + ) modifies mw_BYE_Request_Base := { + requestLine := {requestUri := p_requestUri}, + msgHeader := { + callId := p_callId, + toField := p_to, + fromField := p_from, + cSeq := p_cSeq, + route := p_route, + recordRoute := p_recordRoute, + reason := p_reason + } + } + + template(present) BYE_Request mw_BYE_Request_UserToUser( + template CallId p_callId + ) modifies mw_BYE_Request_Base := { + msgHeader := {userToUser := ?} + } + + + template(present) INVITE_Request mw_INVITE_Request_RequestURI( + template(present) SipUrl p_sipUrl := ? + ) modifies mw_INVITE_Dummy := { + requestLine := { + requestUri := p_sipUrl, + sipVersion := c_sipNameVersion + } + } + + template(present) INFO_Request mw_INFO_Request_MB( + template CallId p_callId, + template MessageBody p_mb + ) modifies mw_INFO_Request_Base := { + messageBody := p_mb + } + + template(present) INVITE_Request mw_INVITE_Request_expires modifies mw_INVITE_Request_Base := {msgHeader := {expires := ?}} + + template(present) INVITE_Request mw_INVITE_Request_callid( + template CallId p_callId + ) modifies mw_INVITE_Request_Base := { + msgHeader := {callId := p_callId} + } + + template(present) INVITE_Request mw_INVITE_Request_MB( + template CallId p_callId, + template MessageBody p_mb + ) modifies mw_INVITE_Request_callid := { + messageBody := p_mb + } + + template(present) INVITE_Request mw_INVITE_Request_noPaccessNetworkInfo( + template CallId p_callId + ) modifies mw_INVITE_Request_callid := { + msgHeader := {pAccessNetworkInfo := omit} + } + + template(present) INVITE_Request mw_INVITE_Request_PaccessNetworkInfo( + template CallId p_callId + ) modifies mw_INVITE_Request_callid := { + msgHeader := {pAccessNetworkInfo := ?} + } + + template(present) INVITE_Request mw_INVITE_MSRP_Session( + template(present) SDP_media_field p_media_MSRP := ? + ) modifies mw_INVITE_Request_Base := { + messageBody := { + sdpMessageBody := { + protocol_version := ?, + origin := ?, + session_name := ?, + information := *, + uri := *, + emails := *, + phone_numbers := *, + connection := *, + bandwidth := *, + times := ?, + timezone_adjustments := *, + key := *, + attributes := *, + media_list := { + { + media_field := p_media_MSRP, + information := *, + connections := *, + bandwidth := *, + key := *, + attributes := { + { + msrp := { + attr_value := + pattern + "path:msrp://*" + } + } + } + } + } + } + } + } + + template(present) REGISTER_Request mw_REGISTER_Request_ISC( + template PAccessNetworkInfo p_access, + template PVisitedNetworkID p_visited + ) modifies mw_REGISTER_Request_Base := { + msgHeader := { + pAccessNetworkInfo := p_access, + pVisitedNetworkID := p_visited + } + } + + template(present) UPDATE_Request mw_UPDATE_Request_SDP( + template CallId p_callId, + template MessageBody p_mb + ) modifies mw_UPDATE_Request_Base := { + messageBody := p_mb + } + + template(present) NOTIFY_Request mw_NOTIFY_Request_MB( + template CallId p_callId, + template MessageBody p_mb + ) modifies mw_NOTIFY_Request_Base := { + messageBody := p_mb + } + + + } //* end group request_receive + + group response_send { + + template(value) Response m_Response_AlertInfo( + template(value) StatusLine p_statusLine, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(value) Contact p_contact, + template(value) AlertInfo p_alertInfo + ) modifies m_Response_Contact := { + msgHeader := {alertInfo := p_alertInfo} + } + + template(value) Response m_Response_Contact( + template(value) StatusLine p_statusLine, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) Contact p_contact := omit + ) modifies m_Response_Base := { + msgHeader := {contact := p_contact} + } + + template(value) Response m_Response_ext( + template(value) StatusLine p_statusLine, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) Route p_route := omit, + template(omit) RecordRoute p_recordroute := omit + ) modifies m_Response_Base := { + msgHeader := { + route := p_route, // f_route(), + recordRoute := + p_recordroute // f_recordroute() + } + } + + template(value) Response m_Response_mbody( + template(value) StatusLine p_statusLine, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) Route p_route := omit, + template(omit) RecordRoute p_recordroute := omit, + template(value) MessageBody p_mb + ) modifies m_Response_ext := { + msgHeader := { + contentLength := m_contentLength(f_MessageBodyLength(p_mb)), // STF471 + // {fieldName + // := + // CONTENT_LENGTH_E, + // len:= + // f_MessageBodyLength(valueof(p_mb))}, + contentType := m_contentType(c_sdpApplication) + }, + messageBody := p_mb + } + + template(value) Response m_Response_mbody_contact ( + template(value) StatusLine p_statusLine, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) Route p_route := omit, + template(omit) RecordRoute p_recordroute := omit, + template(value) MessageBody p_mb, + template(value) Contact p_contact + ) modifies m_Response_mbody := { + msgHeader := { + contact := p_contact + } + } + + + template(value) Response m_Response_PAsserted_Privacy( + template(value) StatusLine p_statusLine, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(value) Route p_route, + template(value) RecordRoute p_recordroute, + template(value) PAssertedID p_pAssertedID, + template(value) Privacy p_privacy + ) modifies m_Response_ext := { + msgHeader := { + pAssertedID := p_pAssertedID, + privacy := p_privacy + } + } + + template(present) Response mw_Response_PAsserted_Privacy_Supported( + template(present) StatusLine p_statusLine := ?, + template CallId p_callId, + template CSeq p_cSeq, + template PAssertedID p_pAssertedID, + template Privacy p_privacy, + template Supported p_supported + ) modifies mw_Response_Base := { + statusLine := mw_statusLine(p_statusLine.statusCode, ?), + msgHeader := { + pAssertedID := p_pAssertedID, + privacy := p_privacy, + supported := p_supported + } + } + + template(value) Response m_Response_PAsserted_Privacy_mbody( + template(value) StatusLine p_statusLine, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(value) Route p_route, + template(value) RecordRoute p_recordroute, + template(value) PAssertedID p_pAssertedID, + template(value) Privacy p_privacy, + template(value) MessageBody p_mb + ) modifies m_Response_ext := { + msgHeader := { + contentLength := m_contentLength(f_MessageBodyLength(p_mb)), // STF471 + // {fieldName + // := + // CONTENT_LENGTH_E, + // len:= + // f_MessageBodyLength(valueof(p_mb))}, + contentType := m_contentType(c_sdpApplication), // STF471 + // {fieldName + // := + // CONTENT_TYPE_E, + // mTypeSubtype + // := + // c_sdpApplication + // }, + pAssertedID := p_pAssertedID, + privacy := p_privacy + }, + messageBody := p_mb + } + + + } //* end group response_send + + + group response_receive { + + template(present) Response mw_Response_Expires( + template(present) StatusLine p_statusLine := ?, + template CallId p_callId, + template CSeq p_cSeq, + template(present) DeltaSec p_deltaSec := ? + ) modifies mw_Response_Base := { + statusLine := mw_statusLine(p_statusLine.statusCode, ?), + msgHeader := {expires := mw_Expires(p_deltaSec)} + } + + template(present) Response mw_Response_PAsserted_Privacy( + template(present) StatusLine p_statusLine := ?, + template CallId p_callId, + template CSeq p_cSeq, + template PAssertedID p_pAssertedID, + template Privacy p_privacy + ) modifies mw_Response_Base := { + statusLine := mw_statusLine(p_statusLine.statusCode, ?), + msgHeader := { + pAssertedID := p_pAssertedID, + privacy := p_privacy + } + } + + template(present) Response mw_Response_Reason( + template(present) StatusLine p_statusLine := ?, + template CallId p_callId, + template CSeq p_cSeq, + template(value) GenValue p_cause + ) modifies mw_Response_Base := { + statusLine := mw_statusLine(p_statusLine.statusCode, ?), + msgHeader := {reason := mw_Reason(p_cause)} + } + + template(present) Response mw_Response_RecordRoute( + template(present) StatusLine p_statusLine := ?, + template CallId p_callId, + template CSeq p_cSeq, + template RecordRoute p_recordRoute + ) modifies mw_Response_Base := { + statusLine := mw_statusLine(p_statusLine.statusCode, ?), + msgHeader := {recordRoute := p_recordRoute} + } + + template(present) Response mw_Response_Via( + template(present) StatusLine p_statusLine := ?, + template CallId p_callId, + template CSeq p_cSeq, + template(present) Via p_via := ? + ) modifies mw_Response_Base := { + statusLine := mw_statusLine(p_statusLine.statusCode, ?), + msgHeader := {via := p_via} + } + + template(present) Response mw_Response_Contact( + template(present) StatusLine p_statusLine := ?, + template CallId p_callId, + template CSeq p_cSeq, + template Contact p_contact + ) modifies mw_Response_Base := { + statusLine := mw_statusLine(p_statusLine.statusCode, ?), + msgHeader := {contact := p_contact} + } + + template(present) Response mw_Response_AlertInfo( + template(present) StatusLine p_statusLine := ?, + template CallId p_callId, + template CSeq p_cSeq, + template AlertInfo p_alertInfo + ) modifies mw_Response_Base := { + statusLine := mw_statusLine(p_statusLine.statusCode, ?), + msgHeader := {alertInfo := p_alertInfo} + } + + template(present) Response mw_Response_HistoryInfo( + template(present) StatusLine p_statusLine := ?, + template CallId p_callId, + template CSeq p_cSeq, + template HistoryInfo p_historyInfo + ) modifies mw_Response_Base := { + statusLine := mw_statusLine(p_statusLine.statusCode, ?), + msgHeader := {historyInfo := p_historyInfo} + } + + template(present) Response mw_Response_messageBody( + template(present) StatusLine p_statusLine := ?, + template CallId p_callId, + template CSeq p_cSeq, + template Require p_require, + template MessageBody p_mb + ) modifies mw_Response_Base := { + statusLine := mw_statusLine(p_statusLine.statusCode, ?), + msgHeader := {require := p_require}, + messageBody := p_mb + } + + template(present) Response mw_Response_Require( + template(present) StatusLine p_statusLine := ?, + template CallId p_callId, + template CSeq p_cSeq, + template Require p_require + ) modifies mw_Response_Base := { + statusLine := mw_statusLine(p_statusLine.statusCode, ?), + msgHeader := {require := p_require} + } + + template(present) Response mw_Response_Require_ifpresent( + template(present) StatusLine p_statusLine := ?, + template CallId p_callId, + template CSeq p_cSeq, + template(present) Require p_require + ) modifies mw_Response_Base := { + statusLine := mw_statusLine(p_statusLine.statusCode, ?), + msgHeader := {require := p_require ifpresent} + } + + template(present) Response mw_Response_Supported( + template(present) StatusLine p_statusLine := ?, + template CallId p_callId, + template CSeq p_cSeq, + template Supported p_supported + ) modifies mw_Response_Base := { + statusLine := mw_statusLine(p_statusLine.statusCode, ?), + msgHeader := {supported := p_supported} + } + + template(present) Response mw_Response_UserToUser( + template(present) StatusLine p_statusLine := ?, + template CallId p_callId, + template CSeq p_cSeq + ) modifies mw_Response_Base := { + statusLine := mw_statusLine(p_statusLine.statusCode, ?), + msgHeader := {userToUser := ?} + } + + + } //* end group response_receive + + + } //* end group modified_templates + + + } //* end group MessageTemplates + + group SDP_Templates { + + group SDP_Messages { + + group base_templates { + + template(value) SDP_Message m_SDP_base := { + protocol_version := 0, //* v=0 + origin := { + user_name := PX_SIP_SDP_USER_NAME, + session_id := PX_SIP_SDP_SESSION_ID, + session_version := "0", + net_type := c_in, + addr_type := c_ip4, + addr := "" + }, + //* o=voicesession 12345 12345 IN IP4 172.27.1.219 + session_name := "Voice Session", //* s=Voice Session + information := omit, + uri := omit, + emails := omit, + phone_numbers := omit, + connection := omit, + bandwidth := omit, + times := { + { + time_field := {"0", "0"}, + time_repeat := omit + } + }, //* t=0 0 + timezone_adjustments := omit, + key := omit, + attributes := omit, + media_list := omit + } + + template(value) SDP_Message m_SDP( + template(value) SDP_media_desc p_media, + template(value) SipUserProfile p_userprofile + ) modifies m_SDP_base := { + origin := { + addr := p_userprofile.contactIpaddr + }, + //* o=voicesession 12345 12345 IN IP4 172.27.1.219 + connection := { + net_type := c_in, + addr_type := c_ip4, + conn_addr := { + addr := p_userprofile.bearerIpaddr, + ttl := omit, + num_of_addr := omit + } + }, //* c=IN + //* IP4 + //* 172.27.1.219 + media_list := {p_media} + } + + template(value) SDP_Message m_SDP_mediaList( + template(value) SDP_media_desc_list p_media_list, + template(value) SipUserProfile p_userprofile + ) modifies m_SDP_base := { + origin := { + addr := p_userprofile.contactIpaddr + }, + //* o=voicesession 12345 12345 IN IP4 172.27.1.219 + connection := { + net_type := c_in, + addr_type := c_ip4, + conn_addr := { + addr := p_userprofile.bearerIpaddr, + ttl := omit, + num_of_addr := omit + } + }, //* c=IN + //* IP4 + //* 172.27.1.219 + media_list := p_media_list + } + + template(value) SDP_Message m_SDP_media_attr_preconditions( + template(value) SDP_media_desc p_media, + template(value) SipUserProfile p_userprofile, + template(value) SDP_attribute_list p_attribute_list + ) modifies m_SDP := { + media_list := { + { + media_field := { + media := c_audio, + ports := { + port_number := 8500, + num_of_ports := omit + }, + transport := c_rtpAvp, + fmts := {"0"} + }, //* m=audio + //* 8500 + //* RTP/AVP + //* 0 + information := omit, + connections := omit, + bandwidth := omit, + key := omit, + attributes := p_attribute_list + } + } + } + + template(value) SDP_Message m_SDP_attribute( + template(value) SDP_media_desc p_media, + template(value) SipUserProfile p_userprofile, + template(value) SDP_attribute p_loc_attribute + ) modifies m_SDP := { + attributes := {p_loc_attribute} + } + + template(present) SDP_Message mw_SDP := { + protocol_version := 0, //* v=0 + origin := ?, + session_name := ?, + information := omit, + uri := omit, + emails := omit, + phone_numbers := omit, + connection := ?, + bandwidth := omit, + times := { + { + time_field := {"0", "0"}, + time_repeat := omit + } + }, //* t=0 0 + timezone_adjustments := omit, + key := omit, + attributes := omit, + media_list := ? + } + + + } //* end group base_templates + + group modified_templates { + template(value) SDP_Message m_SDP_bandwidth( + template(value) SDP_media_desc p_media, + template(value) SipUserProfile p_userprofile + ) modifies m_SDP := { + bandwidth := { + { + PX_SIP_SDP_B_MODIFIER, + PX_SIP_SDP_B_BANDWIDTH + } + } + } + + template(value) SDP_Message m_SDP_unacceptable( + template(value) SDP_media_desc p_media, + template(value) SipUserProfile p_userprofile + ) modifies m_SDP := { + protocol_version := 1, //* v=1 unacceptable version of + //* SDP + bandwidth := { + { + PX_SIP_SDP_B_MODIFIER, + PX_SIP_SDP_B_BANDWIDTH + } + } + } + + template(value) SDP_Message m_SDP_encrypted( + template(value) SDP_media_desc p_media, + template(value) SipUserProfile p_userprofile + ) modifies m_SDP := { + bandwidth := { + { + PX_SIP_SDP_B_MODIFIER, + PX_SIP_SDP_B_BANDWIDTH + } + }, + key := { + method := "base64", // prompt + key := "blablabla" + } + } + + + } //* end group modified_templates + + + } //* end group SDP_Messages + + group SDP_Fields { + + template(value) SDP_media_desc m_media(template(value) SDP_media_field p_mf) := { + media_field := p_mf, + information := omit, + connections := omit, + bandwidth := omit, + key := omit, + attributes := omit + } + + template(value) SDP_media_desc m_mediaFieldBandwdthAttributes( + template(value) SDP_media_field p_mf, + template(omit) SDP_bandwidth_list p_bw_l := omit, + template(omit) SDP_attribute_list p_attributes := omit + ) := { + media_field := p_mf, + information := omit, + connections := omit, + bandwidth := p_bw_l, + key := omit, + attributes := p_attributes + } + + template(value) SDP_media_desc m_media_dynPT( + template(value) charstring p_payloadType, + template(value) charstring p_encoding, + template(value) charstring p_clockrate, + template(omit) charstring p_parameters := omit, + template(omit) SDP_key p_sdpKey := omit + ) := { + media_field := { + media := c_audio, //* "audio", + ports := { + port_number := 8500, + num_of_ports := omit + }, + transport := c_rtpAvp, //* "RTP/AVP", + fmts := { p_payloadType } + }, //* m=audio 8500 RTP/AVP 8 + information := omit, + connections := omit, + bandwidth := omit, + key := p_sdpKey, + attributes := {{rtpmap := { + payload_type := p_payloadType, + codec := { + encoding := p_encoding, + clockrate := p_clockrate, + parameters := p_parameters + } + } + }} //* a=rtpmap:8 PCMA/8000 + } + + /** + * @desc send template with specific media transport and attribute values + * @param p_mediaAttribute parameter for SDP media transport supported by the IUT + * former PX_SIP_SDP_media_transport + * @param p_mediaAttribute parameter for SDP media attribute supported by the IUT, + * former PX_SIP_SDP_media_attribute_Exp & PX_SIP_SDP_media_transport_Exp + * @param p_mTypeSubtype parameter for SDP media type supported by the IUT, + * former PX_SIP_SDP_MEDIA_VIDEO + */ + template(value) SDP_media_desc m_media_unsupported( + template(value) charstring p_mediaTransport, + template(value) SDP_attribute_rtpmap p_mediaAttribute, + template(value) charstring p_mTypeSubtype := "video" + ) := { + media_field := { + media := p_mTypeSubtype, + ports := { + port_number := 11500, + num_of_ports := omit + }, + transport := p_mediaTransport, + fmts := {"99"} + }, //* m=audio 8500 RTP/AVP 0 + information := omit, + connections := omit, + bandwidth := omit, + key := omit, + attributes := {{rtpmap := p_mediaAttribute}} + } + + template(value) SDP_bandwidth m_bandwidth( + template(value) charstring p_loc_m, + template(value) integer p_loc_b + ) := { + modifier := p_loc_m, + bandwidth := p_loc_b + } + + template(value) SDP_bandwidth m_bandwidth_as_64 := { + modifier := "AS", + bandwidth := 64 + } + + template(present) SDP_bandwidth mw_bandwidth_rs := { + modifier := "RS", + bandwidth := ? + } + + template(present) SDP_bandwidth mw_bandwidth_rr := { + modifier := "RR", + bandwidth := ? + } + + template(value) SDP_media_field m_media_field( + template(value) charstring p_media, + template(value) integer p_portNum, + template(value) charstring p_transport, + template(value) charstring p_fmts + ) := { + media := p_media, + ports := { + port_number := p_portNum, + num_of_ports := omit + }, + transport := p_transport, + fmts := {p_fmts} + } + + template(present) SDP_media_field mw_media_PCMU := { + media := c_audio, + ports := { + port_number := ?, + num_of_ports := * + }, + transport := c_rtpAvp, + fmts := {"0"} + } + + template(present) SDP_media_field mw_media_PCMA := { + media := c_audio, + ports := { + port_number := 8500, + num_of_ports := omit + }, + transport := c_rtpAvp, + fmts := {"8"} + } + + template(present) SDP_media_field mw_media_PCMA_U_DPT := { + media := c_audio, + ports := { + port_number := ?, + num_of_ports := * + }, + transport := c_rtpAvp, + fmts := {*} + } + + template(present) SDP_media_field mw_media_T38 := { + media := c_image, + ports := { + port_number := ?, + num_of_ports := * + }, + transport := pattern "*ptl", //* udptl,tcptl + fmts := {"t38"} + } + + template(present) SDP_media_field mw_media_G722 := { + media := c_audio, + ports := { + port_number := ?, + num_of_ports := * + }, + transport := "RTP/AVP", + fmts := {"9"} + } + + template(present) SDP_media_field mw_media_AMR_DPT := { + media := c_audio, + ports := { + port_number := ?, + num_of_ports := * + }, + transport := c_rtpAvp, + fmts := {*} + } + + template(present) SDP_media_field mw_media_MSRP := { + media := c_msrp, + ports := { + port_number := ?, + num_of_ports := omit + }, + transport := c_msrpTcp, + fmts := {*} + } + + template(value) SDP_attribute m_attribute_sendonly := {sendonly := {}} + template(present) SDP_attribute mw_attribute_sendonly := {sendonly := {}} + // MRO + template(value) SDP_attribute m_attribute_recvonly := {recvonly := {}} + template(present) SDP_attribute mw_attribute_recvonly := {recvonly := {}} + // MRO + template(value) SDP_attribute m_attribute_sendrecv := {sendrecv := {}} + template(present) SDP_attribute mw_attribute_sendrecv := {sendrecv := {}} + // MRO + template(value) SDP_attribute m_attribute_inactive := {inactive := {}} + template(present) SDP_attribute mw_attribute_inactive := {inactive := {}} + // MRO + template(present) SDP_attribute mw_attribute_sendonly_inactive := (mw_attribute_sendonly, mw_attribute_inactive); + template SDP_attribute mw_attribute_sendrecv_recvonly_omit := (mw_attribute_sendrecv, mw_attribute_recvonly, omit); + template(value) SDP_attribute m_attribute_base( + template(value) SDP_attribute_rtpmap p_attr_value + ) := { + rtpmap := p_attr_value + } + /** + * @desc send template for a specific media attribute + * @param attribte value, former PX_SIP_SDP_DYN & " " & PX_SIP_SDP_MEDIA_TRANSPORT_AMR + */ + template(value) SDP_attribute m_attribute_AMR_DPT(//"0 AMR" + template(value) SDP_attribute_rtpmap p_attr_value := {"0", {"AMR", "8000", omit}} + ) := m_attribute_base(p_attr_value); + /** + * @desc send template for a specific media attribute + * @param attribte value, former PX_SIP_SDP_DYN & " " & PX_SIP_SDP_MEDIA_TRANSPORT_CLE + */ + template(value) SDP_attribute m_attribute_CLEARMODE_DPT(//"0 CLEARMODE/8000" + template(value) SDP_attribute_rtpmap p_attr_value := {"0", {"CLEARMODE", "8000", omit}} + ) := m_attribute_base(p_attr_value); + /** + * @desc send template for a specific media attribute + * @param attribte value, former PX_SIP_SDP_ENCODING_ATTRIBUTE_G222 + */ + template(value) SDP_attribute m_attribute_G722(//"9 G722/8000" + template(value) SDP_attribute_rtpmap p_attr_value := {"9", {"G722", "8000", omit}} + ) := m_attribute_base(p_attr_value); + /** + * @desc send template for a specific media attribute + * @param attribte value, former PX_SIP_SDP_ENCODING_ATTRIBUTE_PCMU + */ + template(value) SDP_attribute m_attribute_PCMU(//"0 PCMU/8000" + template(value) SDP_attribute_rtpmap p_attr_value := {"0", {"PCMU", "8000", omit}} + ) := m_attribute_base(p_attr_value); + /** + * @desc send template for a specific media attribute + * @param attribte value, former PX_SIP_SDP_DYN & " " & PX_SIP_SDP_MEDIA_TRANSPORT_PCMU + */ + template(value) SDP_attribute m_attribute_PCMU_DPT(//"0 PCMU/8000" + template(value) SDP_attribute_rtpmap p_attr_value := {"0", {"PCMU", "8000", omit}} + ) := m_attribute_base(p_attr_value); + /** + * @desc send template for a specific media attribute + * @param attribte value, former PX_SIP_SDP_ENCODING_ATTRIBUTE_PCMA + */ + template(value) SDP_attribute m_attribute_PCMA(//"8 PCMA/8000" + template(value) SDP_attribute_rtpmap p_attr_value := {"8", {"PCMA", "8000", omit}} + ) := m_attribute_base(p_attr_value); + /** + * @desc send template for a specific media attribute + * @param attribte value, former PX_SIP_SDP_DYN & " " & PX_SIP_SDP_MEDIA_TRANSPORT_PCMA + */ + template(value) SDP_attribute m_attribute_PCMA_DPT(//"0 PCMA/8000" + template(value) SDP_attribute_rtpmap p_attr_value := {"0", {"PCMA", "8000", omit}} + ) := m_attribute_base(p_attr_value); + + template(present) SDP_attribute mw_attribute_T38 := { + unknown := { + name := ?, + attr_value := pattern "*t38*" + } + } + + template(value) SDP_attribute m_attribute_curr( + template(value) charstring p_preconditionType, + template(value) charstring p_statusType, + template(value) charstring p_direction + ) := { + curr := { + preconditionType := p_preconditionType, + statusType := p_statusType, + direction := p_direction + } + } + + template(present) SDP_attribute mw_attribute_curr := {curr := ?} + + template(value) SDP_attribute m_attribute_des( + template(value) charstring p_preconditionType, + template(value) charstring p_strength, + template(value) charstring p_statusType, + template(value) charstring p_direction + ) := { + des := { + preconditionType := p_preconditionType, + strength := p_strength, + statusType := p_statusType, + direction := p_direction + } + } + + template(present) SDP_attribute mw_attribute_des := {des := ?} + + template(value) SDP_attribute m_attribute_conf( + template(value) charstring p_preconditionType, + template(value) charstring p_statusType, + template(value) charstring p_direction + ) := { + conf := { + preconditionType := p_preconditionType, + statusType := p_statusType, + direction := p_direction + } + } + + + } //* end group SDP_Fields + + + } //* end group SDP_Templates + + group SimpleMsgSummary_Templates { + + template(value) SimpleMsgSummary m_SMS( + template(value) Msg_summary_line_list p_summaryLineList, + template(value) charstring p_uri + ) := { + msg_status_line := m_msgStatusLine_yes, + msg_account := m_msgAccount(p_uri), + msg_summary_line_list := p_summaryLineList, + opt_msg_headers := omit + } + + template(present) SimpleMsgSummary mw_SMS := { + msg_status_line := ?, + msg_account := *, + msg_summary_line_list := *, + opt_msg_headers := * + } + + template(present) SimpleMsgSummary mw_SMS_yes modifies mw_SMS := { + msg_status_line := mw_msgStatusLine_yes + } + + template(present) SimpleMsgSummary mw_SMS_yesUri modifies mw_SMS_yes := { + msg_account := mw_msgAccount + } + + template(present) SimpleMsgSummary mw_SMS_yesVoice modifies mw_SMS_yes := { + msg_summary_line_list := {mw_msgSummaryLine(c_voiceMessage)} + } + + template(present) SimpleMsgSummary mw_SMS_yesUriVoice modifies mw_SMS_yesUri := { + msg_summary_line_list := {mw_msgSummaryLine(c_voiceMessage)} + } + + template(value) Msg_status_line m_msgStatusLine_yes := { + msg_type := c_messageWaiting, + msg_status := "yes" + } + + template(present) Msg_status_line mw_msgStatusLine_yes := { + msg_type := c_messageWaiting, + msg_status := "yes" + } + + template(value) Msg_account m_msgAccount( + template(value) charstring p_uri + ) := { + msg_type_account := c_messageAccount, + account_URI := + p_uri // m_SipUrl_NumberHostParam(PX_IMS_SUT_UE2_PUBLIC_USER,PX_IMS_SUT_UE2_HOME_DOMAIN,omit) + } + + template(present) Msg_account mw_msgAccount := { + msg_type_account := c_messageAccount, + account_URI := ? + } + + template(value) Msg_summary_line m_msgSummaryLine( + template(value) charstring p_msgContexClass, + template(value) charstring p_msgs, + template(value) charstring p_urgent_msgs + ) := { + msg_context_class := p_msgContexClass, + msgs := p_msgs, + urgent_msgs := p_urgent_msgs + } + + template(present) Msg_summary_line mw_msgSummaryLine( + template(present) charstring p_msgContexClass := ? + ) := { + msg_context_class := p_msgContexClass, + msgs := ?, + urgent_msgs := * + } + + + } // end group Templates_SMS + + group MessageBodies { + + template(value) MessageBody m_MBody_SDP( + template(value) SDP_Message p_SDP + ) := { + sdpMessageBody := p_SDP + } + + template(value) MessageBody m_MBody_XML( + template(value) XmlBody p_xmlBody + ) := { + xmlBody := p_xmlBody + } + + template(value) MessageBody m_mBody_SMS( + template(value) SimpleMsgSummary p_SMS + ) := { + simpleMsgSummary := p_SMS + } + + template(value) MessageBody m_MBody_longPlainText := {textplain := c_longMessageContent_1300Bytes} + + template(value) MessageBody m_mBody_plainText( + template(value) charstring p_plaitext + ) := { + textplain := p_plaitext + } + + template(value) MessageBody m_MBody_sipfrag( + template(value) charstring p_sipfrag + ) := { + sipfrag := p_sipfrag + } + + template(value) MessageBody m_MBody_MIMESdpXml( + template(value) SDP_Message p_sdp, + template(value) XmlBody p_xmlBody + ) := { + mimeMessageBody := { + boundary := "--" & PX_SIP_MIME_BOUNDARY, + mimeEncapsulatedList := { + { + content_type := c_sdpApplication, + content_disposition := omit, + mime_encapsulated_part := {sdpMessageBody := p_sdp} + }, + { + content_type := c_ims3gppCwApplication, + content_disposition := omit, + mime_encapsulated_part := {xmlBody := p_xmlBody} + } + } + } + } + + template(value) MessageBody m_MBody_MIMESdpEncrypted( + template(value) SDP_Message p_sdp + ) := { + mimeMessageBody := { + boundary := "--" & PX_SIP_MIME_BOUNDARY, + mimeEncapsulatedList := { + { + content_type := "application/sdp", + content_disposition := "attachment;handling=required;filename=smime.p7", + mime_encapsulated_part := {sdpMessageBody := p_sdp} + } + } + } + } + + template(present) MessageBody mw_MBody_SDP( + template(present) SDP_Message p_SDP := ? + ) := { + sdpMessageBody := p_SDP + } + + template(present) MessageBody mw_MBody_XML( + template(present) XmlBody p_xmlBody := ? + ) := { + xmlBody := p_xmlBody + } + + template(present) MessageBody mw_mBody_SMS( + template(present) SimpleMsgSummary p_SMS := ? + ) := { + simpleMsgSummary := p_SMS + } + + template(present) MessageBody mw_MBody_MIMESdpXml( + template(present) SDP_Message p_sdp := ?, + template(present) XmlBody p_xmlBody := ? + ) := { + mimeMessageBody := { + boundary := ?, + mimeEncapsulatedList := { + { + content_type := ?, + content_disposition := *, + mime_encapsulated_part := {sdpMessageBody := p_sdp} + }, + { + content_type := ?, + content_disposition := *, + mime_encapsulated_part := {xmlBody := p_xmlBody} + } + } + } + } + + template(present) MessageBody mw_MBody_MIME_Ims3gpp( + template charstring p_disposition, + template(present) Ims_3gpp p_ims3gpp := ? + ) := { + mimeMessageBody := { + boundary := ?, + mimeEncapsulatedList := { + *, + { + content_type := c_ims3gppApplication, + content_disposition := p_disposition, + mime_encapsulated_part := {xmlBody := {ims3gpp := p_ims3gpp}} + }, + * + } + } + } + + template(present) MessageBody mw_MBody_MIME_Ims3gppCW( + template charstring p_disposition, + template(present) Ims_3gpp p_ims3gpp := ? + ) := { + mimeMessageBody := { + boundary := ?, + mimeEncapsulatedList := { + *, + { + content_type := c_ims3gppCwApplication, + content_disposition := p_disposition, + mime_encapsulated_part := {xmlBody := {ims3gpp := p_ims3gpp}} + }, + * + } + } + } + + } + /* + * + * @desc group TemplatePreparationFunctions contain functions which are used for templates + */ + group TemplatePreparationFunctions { + + group MessageBody_Calculation { + + /** + * @desc Calculation of Message Body length + * @param p_mb_par contain message body part + * @return message body length + */ + function f_MessageBodyLength( + template(value) MessageBody p_mb_par + ) return integer { + + var integer v_result := 0; + if (PX_MB_LENGTH_FROM_ENCVAL) { + // by default it is set to true + // in case the codec encodes the variant selector, this + // needs to be changed to ischosen... + v_result := lengthof(encvalue(p_mb_par)) / 8; // length + // in + // bytes, + // let get + // length + // of + // encoded + // value + } + else { + + // assume SDP_Message ONLY in the message body + if (ischosen(p_mb_par.sdpMessageBody)) { + v_result := f_SDPlength(valueof(p_mb_par.sdpMessageBody)); + } + + // assume XML_Body ONLY in the message body + if (ischosen(p_mb_par.xmlBody)) { + v_result := f_XMLBody_Length(valueof(p_mb_par.xmlBody), PX_USE_FX_FOR_XML_LENGTH); + } + + // assume simpleMsgSummary_Body ONLY in the message body + if (ischosen(p_mb_par.simpleMsgSummary)) { + v_result := f_simpleMsgSummaryBody_Length(valueof(p_mb_par.simpleMsgSummary)); + } + + // assume MIME_Message in the message body + if (ischosen(p_mb_par.mimeMessageBody)) { + v_result := f_MIMElength(valueof(p_mb_par.mimeMessageBody)); + } + + // assume sipfrag in the message body + if (ischosen(p_mb_par.sipfrag)) { + v_result := f_TextPlainLength(p_mb_par); // same + // function + // due to + // same + // type + // with + // textplain + } + + // assume textplain in the message body + if (ischosen(p_mb_par.textplain)) { + v_result := f_TextPlainLength(p_mb_par); + } + } + + return v_result; + } + + + group SDP_Len_calculation { + /** + * @desc Calculation of SDP length + * @param p_mb contain sdp message + * @return sdp_lenght + */ + function f_SDPlength( + SDP_Message p_mb + ) return integer { + var integer i, j, k, v_len_con0, v_len_con1, v_len_con2, v_len_attr; + var integer v_result := 2; + //* due to empty line beginning of message body + var charstring v_auxstring; + + v_result := 2 + c_CRlen + lengthof(int2str(p_mb.protocol_version)); //* "v=" + v_auxstring := p_mb.origin.user_name & " " & p_mb.origin.session_id & " " & p_mb.origin.session_version & " " & p_mb.origin.net_type & " " & p_mb.origin.addr_type & " " & p_mb.origin.addr; + v_result := v_result + 2 + c_CRlen + lengthof(v_auxstring); //* "o=" + v_result := v_result + 2 + c_CRlen + lengthof(p_mb.session_name); //* "s=" + if (isvalue(p_mb.information)) { + v_auxstring := valueof(p_mb.information); + v_result := v_result + 2 + c_CRlen + lengthof(v_auxstring); + } //* "i= " + if (isvalue(p_mb.uri)) { + v_auxstring := valueof(p_mb.uri); + v_result := v_result + 2 + c_CRlen + lengthof(v_auxstring); + } //* "u=" + if (isvalue(p_mb.emails)) { + for (i := 0; i < lengthof(p_mb.emails); i := i + 1) { + v_result := v_result + 2 + c_CRlen + lengthof(p_mb.emails[i].addr_or_phone); //* "e=" + if (isvalue(p_mb.emails[i].disp_name)) { + v_auxstring := valueof(p_mb.emails[i].disp_name); + v_result := v_result + 1 + lengthof(v_auxstring); + } + } + } + + if (isvalue(p_mb.phone_numbers)) { + for (i := 0; i < lengthof(p_mb.phone_numbers); i := i + 1) { + v_result := v_result + 2 + c_CRlen + lengthof(p_mb.phone_numbers[i].addr_or_phone); //* "p= + //* " + if (isvalue(p_mb.phone_numbers[i].disp_name)) { + v_auxstring := valueof(p_mb.phone_numbers[i].disp_name); + v_result := v_result + 1 + lengthof(v_auxstring); + } + } + } + + if (isvalue(p_mb.connection)) { + v_len_con0 := f_SDPlength_connection(valueof(p_mb.connection)); + v_result := v_result + v_len_con0; + } //* "c=" + if (isvalue(p_mb.bandwidth)) { + for (i := 0; i < lengthof(p_mb.bandwidth); i := i + 1) { + //* "b= " + v_auxstring := p_mb.bandwidth[i].modifier & " "; + v_result := v_result + 2 + c_CRlen + lengthof(v_auxstring) + lengthof(int2str(p_mb.bandwidth[i].bandwidth)); + } + } + + for (i := 0; i < lengthof(p_mb.times); i := i + 1) { + v_auxstring := p_mb.times[i].time_field.start_time & " " & p_mb.times[i].time_field.stop_time; + v_result := v_result + 2 + c_CRlen + lengthof(v_auxstring); //* "t=" + if (isvalue(p_mb.times[i].time_repeat)) { + for (j := 0; j < lengthof(p_mb.times[i].time_repeat); j := j + 1) { + v_result := v_result + 2 + c_CRlen + lengthof(int2str(p_mb.times[i].time_repeat[j].repeat_interval.time)); //* "r=" + if (isvalue(p_mb.times[i].time_repeat[j].repeat_interval.unit)) { + v_auxstring := valueof(p_mb.times[i].time_repeat[j].repeat_interval.unit); + v_result := v_result + 1 + lengthof(v_auxstring); + } + + v_result := v_result + 1 + lengthof(int2str(p_mb.times[i].time_repeat[j].active.time)); + if (isvalue(p_mb.times[i].time_repeat[j].active.unit)) { + v_auxstring := valueof(p_mb.times[i].time_repeat[j].active.unit); + v_result := v_result + 1 + lengthof(v_auxstring); + } + + for (k := 0; k < lengthof(p_mb.times[i].time_repeat[j].offsets); k := k + 1) { + v_result := v_result + 1 + lengthof(int2str(p_mb.times[i].time_repeat[j].offsets[k].time)); + if (isvalue(p_mb.times[i].time_repeat[j].offsets[k].unit)) { + v_auxstring := valueof(p_mb.times[i].time_repeat[j].offsets[k].unit); + v_result := v_result + 1 + lengthof(v_auxstring); + } + } + } + } + } + + if (isvalue(p_mb.timezone_adjustments)) { + log("*** " & __SCOPE__ & ": INFO: timezone adjustments have not been considered in SDP length calculation yet ***"); + } //* "z=" + if (isvalue(p_mb.key)) { + v_result := v_result + 2 + c_CRlen + lengthof(p_mb.key.method); //* "k= + //* " + if (isvalue(p_mb.key.key)) { + v_auxstring := valueof(p_mb.key.key); + v_result := v_result + 1 + lengthof(v_auxstring); + } + } + if (isvalue(p_mb.attributes)) { + for (i := 0; i < lengthof(p_mb.attributes); i := i + 1) { + + + //* "a= " + v_len_con1 := f_SDPlength_attribute(p_mb.attributes[i]); + v_result := v_result + v_len_con1; + } + } //* "a=" + if (isvalue(p_mb.media_list)) { + for (i := 0; i < lengthof(p_mb.media_list); i := i + 1) { + //* "m= " + //* for each media_field + //* log("p_mb.media_list[i ] ",p_mb.media_list[i + //* ] ); + v_result := v_result + 2 + c_CRlen + lengthof(p_mb.media_list[i].media_field.media) + 1 + lengthof(int2str(p_mb.media_list[i].media_field.ports.port_number)); + + + if (isvalue(p_mb.media_list[i].media_field.ports.num_of_ports)) { + v_result := v_result + 1 + lengthof(int2str(valueof(p_mb.media_list[i].media_field.ports.num_of_ports))); + } + v_result := v_result + 1 + lengthof(p_mb.media_list[i].media_field.transport); + for (j := 0; j < lengthof(p_mb.media_list[i].media_field.fmts); j := j + 1) { + v_result := v_result + 1 + lengthof(p_mb.media_list[i].media_field.fmts[j]); + } + + if (isvalue(p_mb.media_list[i].information)) { + v_auxstring := valueof(p_mb.media_list[i].information); + v_result := v_result + 2 + c_CRlen + lengthof(v_auxstring); //* "i= " + } + if (isvalue(p_mb.media_list[i].connections)) { + for (j := 0; j < lengthof(p_mb.media_list[i].connections); j := j + 1) { + v_len_con2 := f_SDPlength_connection(p_mb.media_list[i].connections[j]); + v_result := v_result + v_len_con2; + } //* end for + } + if (isvalue(p_mb.media_list[i].bandwidth)) { + //* "b= " + for (j := 0; j < lengthof(p_mb.media_list[i].bandwidth); j := j + 1) { + v_result := v_result + 2 + c_CRlen + lengthof(p_mb.media_list[i].bandwidth[j].modifier) + 1 + lengthof(int2str(p_mb.media_list[i].bandwidth[j].bandwidth)); + } //* end for + } + if (isvalue(p_mb.media_list[i].key)) { + //* "k= " + v_result := v_result + 1 + lengthof(p_mb.media_list[i].key.method); + if (isvalue(p_mb.media_list[i].key.key)) { + v_auxstring := valueof(p_mb.media_list[i].key.key); + v_result := v_result + 1 + lengthof(v_auxstring); + } + } + if (isvalue(p_mb.media_list[i].attributes)) { + for (j := 0; j < lengthof(p_mb.media_list[i].attributes); j := j + 1) { + + //* "a= " + v_len_attr := f_SDPlength_attribute(p_mb.media_list[i].attributes[j]); + v_result := v_result + v_len_attr; + } //* end for j + } + } //* end for i + } //* end if media_list + return v_result; + } + //* end function f_SDPlength + function f_SDPlength_connection( + SDP_connection p_element + ) return integer { + //* "c=" + var integer v_result := 0; + v_result := v_result + 2 + c_CRlen + lengthof(p_element.net_type & " " & p_element.addr_type & " " & p_element.conn_addr.addr); + if (isvalue(p_element.conn_addr.ttl) and p_element.conn_addr.ttl > 0) { + v_result := v_result + 1 + lengthof(int2str(valueof(p_element.conn_addr.ttl))); + } + if (isvalue(p_element.conn_addr.num_of_addr) and p_element.conn_addr.num_of_addr > 0) { + v_result := v_result + 1 + lengthof(int2str(valueof(p_element.conn_addr.num_of_addr))); + } + return v_result; + } //* f_SDPlength_connection + + function f_SDPlength_attribute( + SDP_attribute p_element + ) return integer { + //* "a=" + var integer v_result := 0; + if (ischosen(p_element.cat)) { + v_result := v_result + 2 + c_CRlen + lengthof("cat:" & p_element.cat.attr_value); + } + if (ischosen(p_element.keywds)) { + v_result := v_result + 2 + c_CRlen + lengthof("keywds:" & p_element.keywds.attr_value); + } + if (ischosen(p_element.tool)) { + v_result := v_result + 2 + c_CRlen + lengthof("tool:" & p_element.tool.attr_value); + } + if (ischosen(p_element.ptime)) { + v_result := v_result + 2 + c_CRlen + lengthof("ptime:" & p_element.ptime.attr_value); + } + if (ischosen(p_element.recvonly)) { + v_result := v_result + c_CRlen + lengthof("recvonly"); + } + if (ischosen(p_element.sendrecv)) { + v_result := v_result + c_CRlen + lengthof("sendrecv"); + } + if (ischosen(p_element.sendonly)) { + v_result := v_result + c_CRlen + lengthof("sendonly"); + } + if (ischosen(p_element.inactive)) { + v_result := v_result + c_CRlen + lengthof("inactive"); + } + if (ischosen(p_element.orient)) { + v_result := v_result + 2 + c_CRlen + lengthof("orient:" & p_element.orient.attr_value); + } + if (ischosen(p_element.sdp_type)) { + v_result := v_result + 2 + c_CRlen + lengthof("type:" & p_element.sdp_type.attr_value); + } + if (ischosen(p_element.charset)) { + v_result := v_result + 2 + c_CRlen + lengthof("charset" & p_element.charset.attr_value); + } + if (ischosen(p_element.sdplang)) { + v_result := v_result + 2 + c_CRlen + lengthof("sdplang:" & p_element.sdplang.attr_value); + } + if (ischosen(p_element.lang)) { + v_result := v_result + 2 + c_CRlen + lengthof("lang:" & p_element.lang.attr_value); + } + if (ischosen(p_element.framerate)) { + v_result := v_result + 2 + c_CRlen + lengthof("framerate:" & p_element.framerate.attr_value); + } + if (ischosen(p_element.quality)) { + v_result := v_result + 2 + c_CRlen + lengthof("quality:" & p_element.quality.attr_value); + } + if (ischosen(p_element.fmtp)) { + v_result := v_result + 2 + c_CRlen + lengthof("fmtp:" & p_element.fmtp.format & " " & f_fmtpparams_to_charstring(p_element.fmtp.params)); + } + if (ischosen(p_element.curr)) { + v_result := v_result + 2 + c_CRlen + lengthof("curr:" & p_element.curr.preconditionType & " " & p_element.curr.statusType & " " & p_element.curr.direction); + } + if (ischosen(p_element.des)) { + v_result := v_result + 2 + c_CRlen + lengthof("des:" & p_element.des.preconditionType & " " & p_element.des.strength & " " & p_element.des.statusType & " " & p_element.des.direction); + } + if (ischosen(p_element.conf)) { + v_result := v_result + 2 + c_CRlen + lengthof("conf:" & p_element.conf.preconditionType & " " & p_element.conf.statusType & " " & p_element.conf.direction); + } + if (ischosen(p_element.rtpmap)) { + v_result := v_result + 2 + c_CRlen + lengthof("rtpmap:" & f_rtpmap_to_charstring(p_element.rtpmap)); + } + if (ischosen(p_element.rtcp)) { + v_result := v_result + 2 + c_CRlen + lengthof("rtcp:" & f_rtcp_to_charstring(p_element.rtcp)); + } + if (ischosen(p_element.unknown)) { + v_result := v_result + 2 + c_CRlen + lengthof(p_element.unknown.name); + if (isvalue(p_element.unknown.attr_value)) { + v_result := v_result + lengthof(":" & p_element.unknown.attr_value); + } + } + //* log("axr: length attribute=", v_result); + return v_result; + } //* f_SDPlength_attribute + + function f_fmtpparams_to_charstring( + SDP_attribute_fmtp_format_specific_params p_params + ) return charstring { + var charstring v_result := ""; + if(ischosen(p_params.unstructured)){ + v_result := p_params.unstructured; + } + else + { + for(var integer v_idx := 0; v_idx < lengthof(p_params.paramList); v_idx := v_idx + 1) { + if(v_idx != 0) + { + v_result := v_result & "; " + } + v_result := v_result & p_params.paramList[v_idx].id; + if(ispresent(p_params.paramList[v_idx].paramValue)){ + if(ischosen(p_params.paramList[v_idx].paramValue.tokenOrHost)) + { + v_result := v_result & "=" & p_params.paramList[v_idx].paramValue.tokenOrHost; + } + else + { + v_result := v_result & "=""" & p_params.paramList[v_idx].paramValue.quotedString & """"; + } + } + } + } + return v_result; + } + + function f_rtpmap_to_charstring( + SDP_attribute_rtpmap p_rtpmap + ) return charstring { + var charstring v_result := ""; + v_result := p_rtpmap.payload_type & " " & p_rtpmap.codec.encoding & "/" & p_rtpmap.codec.clockrate; + if(ispresent(p_rtpmap.codec.parameters)) + { + v_result := v_result & "/" & p_rtpmap.codec.parameters; + } + return v_result; + } + + function f_rtcp_to_charstring( + SDP_attribute_rtcp p_rtcp + ) return charstring { + var charstring v_result := int2str(p_rtcp.portnumber); + if(ispresent(p_rtcp.connection)) + { + v_result := v_result & " " & p_rtcp.connection.net_type & " " & p_rtcp.connection.addr_type & " " & p_rtcp.connection.conn_addr.addr; + if(ispresent(p_rtcp.connection.conn_addr.ttl)) + { + v_result := v_result & "/" & int2str(p_rtcp.connection.conn_addr.ttl); + if(ispresent(p_rtcp.connection.conn_addr.num_of_addr)) + { + v_result := v_result & "/" & int2str(p_rtcp.connection.conn_addr.num_of_addr); + } + } + } + return v_result; + } + + } //* group SDPlen_calculation + + group XML_Len_calculation { + + /** + * @desc Declaration of external functions to calculate length of message bodies switching of internal or external functions are made by boolean module parameter/PIXIT USE_FX_FOR_XML_LENGTH declared at top of this module + */ + external function fx_calculateXMLBodyLen( + XmlBody p_mb + ) return integer; + + /** + * @desc Calculation of XML body length + * @param p_mb contain XML body + * @return xml_length + */ + function f_XMLBody_Length( + XmlBody p_mb, + boolean p_ext_func + ) return integer { + var integer v_result := 0; + + if (p_ext_func) { + v_result := fx_calculateXMLBodyLen(p_mb); + } + else { + // assume ConferenceInfo ONLY in the XML message + // body + if (ischosen(p_mb.conference)) { + v_result := f_XMLBody_ConferenceInfo_Length(p_mb.conference); + } + + // assume CUG ONLY in the XML message body + if (ischosen(p_mb.cug)) { + v_result := f_XMLBody_Cug_Length(p_mb.cug); + } + + // assume MCID ONLY in the XML message body + if (ischosen(p_mb.mcid)) { + v_result := f_XMLBody_Mcid_Length(p_mb.mcid); + } + + // assume CW ONLY in the XML message body + if (ischosen(p_mb.cw)) { + v_result := f_XMLBody_Cw_Length(p_mb.cw); + } + + // assume CDIV ONLY in the XML message body + if (ischosen(p_mb.cdivn)) { + v_result := f_XMLBody_Cdivn_Length(p_mb.cdivn); + } + + // assume PSTNTransit ONLY in the XML message body + if (ischosen(p_mb.pstnTransit)) { + v_result := f_XMLBody_PSTNTransit_Length(p_mb.pstnTransit); + } + + // assume Simservs ONLY in the XML message body + if (ischosen(p_mb.simservs)) { + v_result := f_XMLBody_Simservs_Length(p_mb.simservs); + } + + // assume ResourceLists ONLY in the XML message body + if (ischosen(p_mb.resourceLists)) { + v_result := f_XMLBody_ResourceList_Length(p_mb.resourceLists); + } + + // assume Ims3GPP ONLY in the XML message body + if (ischosen(p_mb.ims3gpp)) { + v_result := f_XMLBody_Ims3GPP_Length(p_mb.ims3gpp); + } + /** + * Add aditional checks regarding to new variants, also implement appropriate function for calculation + */ + } + return v_result; + } //* f_XMLBodyLength + + group XMLBodies_calculation { + + /** + * @desc Calculation of XML ConferenceInfo element length + * @param p_mb contain XML ConfInfo body + * @return xml_length + */ + function f_XMLBody_ConferenceInfo_Length( + template(value) Conference_type p_mb + ) return integer { + var integer v_result := lengthof(encvalue(p_mb)) / 8; + return v_result; + } //* f_XMLBody_ConferenceInfo_Length + + /** + * @desc Calculation of XML CUG element length + * @param p_mb contain XML CUG body + * @return xml_length + */ + function f_XMLBody_Cug_Length( + template(value) Cug p_mb + ) return integer { + var integer v_result := lengthof(encvalue(p_mb)) / 8; + return v_result; + } //* f_XMLBody_Cug_Length + + /** + * @desc Calculation of XML MCID element length + * @param p_mb contain XML MCID body + * @return xml_length + */ + function f_XMLBody_Mcid_Length( + template(value) Mcid p_mb + ) return integer { + var integer v_result := lengthof(encvalue(p_mb)) / 8; + + return v_result; + } //* f_XMLBody_Mcid_Length + + /** + * @desc Calculation of XML CW element length + * @param p_mb contain XML CW body + * @return xml_length + */ + function f_XMLBody_Cw_Length( + template(value) Ims_cw p_mb + ) return integer { + var integer v_result := lengthof(encvalue(p_mb)) / 8; + + return v_result; + } //* f_XMLBody_Cw_Length + + /** + * @desc Calculation of XML CDIVN element length + * @param p_mb contain XML CDIVN body + * @return xml_length + */ + function f_XMLBody_Cdivn_Length( + template(value) Comm_div_info_type p_mb + ) return integer { + var integer v_result := lengthof(encvalue(p_mb)) / 8; + + return v_result; + } //* f_XMLBody_Cdivn_Length + + /** + * @desc Calculation of XML PSTNTransit element length + * @param p_mb contain XML PSTNTransit body + * @return xml_length + */ + function f_XMLBody_PSTNTransit_Length( + template(value) PSTN_transit p_mb + ) return integer { + var integer v_result := lengthof(encvalue(p_mb)) / 8; + return v_result; + } //* f_XMLBody_PSTNTransit_Length + + /** + * @desc Calculation of XML Simservs element length + * @param p_mb contain XML Simservs body + * @return xml_length + */ + function f_XMLBody_Simservs_Length( + template(value) Simservs p_mb + ) return integer { + var integer v_result := lengthof(encvalue(p_mb)) / 8; + return v_result; + } //* f_XMLBody_Simservs_Length + + /** + * @desc Calculation of XML ResourceList length + * @param p_mb contain XML ResourceList body + * @return xml_length + */ + function f_XMLBody_ResourceList_Length( + template(value) Resource_lists p_mb + ) return integer { + var integer v_result := lengthof(encvalue(p_mb)) / 8; + return v_result; + } //* f_XMLBody_ResourceList_Length + + /** + * @desc Calculation of XML Ims3GPP length + * @param p_mb contain XML Ims3GPP body + * @return xml_length + */ + function f_XMLBody_Ims3GPP_Length( + template(value) TIMS3GPP p_mb + ) return integer { + var integer v_result := lengthof(encvalue(p_mb)) / 8; + return v_result; + } //* f_XMLBody_Ims3GPP_Length + + + } //* XMLBodies_calculation + + + } //* group XMLlen_calculation + + group simpleMsgSummaryBody_Length { + + function f_simpleMsgSummaryBody_Length( + SimpleMsgSummary p_mb + ) return integer { + var integer i; + var integer v_result := 2; + + + //* due to empty line beginning of message body + var charstring v_auxstring; + + v_result := 2 + lengthof(p_mb.msg_status_line.msg_type) + 2 + lengthof(p_mb.msg_status_line.msg_status) + c_CRlen; //* "Message-Waiting: + //* yes" + if (isvalue(p_mb.msg_account)) + //* "Message-Account" + { + v_result := v_result + 2 + lengthof(p_mb.msg_account.msg_type_account) + 2 + lengthof(p_mb.msg_account.account_URI) + c_CRlen; + } + if (isvalue(p_mb.msg_summary_line_list)) { + for (i := 0; i < lengthof(p_mb.msg_summary_line_list); i := i + 1) { + v_result := v_result + 2 + c_CRlen + lengthof(p_mb.msg_summary_line_list[i].msg_context_class) + 2 + lengthof(p_mb.msg_summary_line_list[i].msgs); + if (isvalue(p_mb.msg_summary_line_list[i].urgent_msgs)) { + v_auxstring := valueof(p_mb.msg_summary_line_list[i].urgent_msgs); + v_result := v_result + 1 + lengthof(v_auxstring); + } + } + } + if (isvalue(p_mb.opt_msg_headers)) { + for (i := 0; i < lengthof(p_mb.opt_msg_headers); i := i + 1) { + v_result := v_result + 2 + c_CRlen + lengthof(p_mb.opt_msg_headers[i]); + } + } + return v_result; + } + } + + group MIME_Len_calculation { + /** + * @desc Calculation of MIME length + * @param p_mb contain MIME message + * @return xml_length + */ + function f_MIMElength( + MIME_Message p_mb + ) return integer { + var integer i; + var integer v_result := 2; + // 0d0a + v_result := v_result + lengthof(p_mb.boundary) + 2 /*0d0a*/; + + for (i := 0; i < lengthof(p_mb.mimeEncapsulatedList); i := i + 1) { + + v_result := v_result + lengthof("Content-Type: ") + lengthof(p_mb.mimeEncapsulatedList[i].content_type) + 2 /*0d0a*/; + + if (isvalue(p_mb.mimeEncapsulatedList[i].content_disposition)) { + v_result := v_result + lengthof("Content-Disposition: ") + lengthof(p_mb.mimeEncapsulatedList[i].content_disposition) + 2 /*0d0a*/; + } + + // v_result := v_result +2/*0d0a*/; ??? to check + // assume SDP_Message ONLY in the message body + if (ischosen(p_mb.mimeEncapsulatedList[i].mime_encapsulated_part.sdpMessageBody)) { + v_result := v_result + f_SDPlength(p_mb.mimeEncapsulatedList[i].mime_encapsulated_part.sdpMessageBody); + } + + // assume XML_Body ONLY in the message body + if (ischosen(p_mb.mimeEncapsulatedList[i].mime_encapsulated_part.xmlBody)) { + v_result := v_result + f_XMLBody_Length(p_mb.mimeEncapsulatedList[i].mime_encapsulated_part.xmlBody, PX_USE_FX_FOR_XML_LENGTH); + } + // //assume XML_Message ONLY in the message body + // if (ischosen(p_mb.mimeEncapsulatedList[i ] + // .mime_encapsulated_part.xmlMessage)) + // { + // v_result := v_result + + // f_XMLlength(p_mb.mimeEncapsulatedList[i ] + // .mime_encapsulated_part.xmlMessage, + // USE_FX_FOR_XML_LENGTH ); + // }; + // v_result := v_result +2/*0d0a*/; ??? to check + } + + // v_result := v_result +2/*0d0a*/; ??? to check + return v_result; + } //* f_MIMElength + + + } //* group MIMElen_calculation + + group TextPlain_Len_calculation { + /** + * @desc Calculation of messagebody-textplain type length + * @param p_mb contain textplain message + * @return lenght + */ + function f_TextPlainLength( + template(value) MessageBody p_mb + ) return integer { + var integer v_result := 0; + + v_result := v_result + lengthof(p_mb.textplain); + + return v_result; + } //* end function f_TextPlainLength + + + } //* end group TextPlainLen_calculation + + + } //* group MessageBody_Calculation + + + group GiveHeaders { + /** + * @desc Return component variable of recordRoute header if vc_boo_recordRoute is true + * @return component variable of recordRoute header + */ + function f_recordroute( + ) runs on SipComponent + return template(omit) RecordRoute { + var template(omit) RecordRoute v_recordRoute := omit; + if (vc_boo_recordRoute) { + return vc_recordRoute; + } + else { + return (v_recordRoute); + } + } + + /** + * @desc Return component variable of Route header if vc_boo_route is true + * @return component variable of recordRoute header + */ + function f_route( + ) runs on SipComponent + return template(omit) Route { + var template(omit) Route v_route := omit; + if (vc_boo_route) { + return vc_route; + } + else { + return (v_route); + } + } + + + } //* end group GiveHeaders + + group others { + + /* + * + * @desc function combines two comma parameter lists + * @param p_list1 first list + * @param p_list2 second list + * @return comma parameter list that contains parameters from both input lists + * @verdict + */ + function f_merge_CommaParam_List( + template(value) CommaParam_List p_list1, + template(value) CommaParam_List p_list2 + ) return template(value) CommaParam_List { + var template(value) CommaParam_List p_result; + var integer i, v_limit1 := lengthof(p_list1); + for (i := 0; i < v_limit1; i := i + 1) { + p_result[i] := p_list1[i]; + } + for (i := 0; i < lengthof(p_list2); i := i + 1) { + p_result[i + v_limit1] := p_list2[i]; + } + return p_result; + } + + + } //* end group others + + + } //* group TemplatePreparationFunctions +} //* end module LibSip_Templates diff --git a/ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn b/ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn new file mode 100644 index 0000000..7b45b70 --- /dev/null +++ b/ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn @@ -0,0 +1,389 @@ +/******************************************************************************* +* Copyright (c) 2000-2016 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/5 R4D +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Fri Mar 4 09:23:30 2016 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - CDIVN.xsd +// /* xml version = "1.0" */ +// /* targetnamespace = "http://uri.etsi.org/ngn/params/xml/comm-div-info" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module http_uri_etsi_org_ngn_params_xml_comm_div_info { + + +import from XSD all; + + +import from http_www_w3_org_XML_1998_namespace all; + + +/* This import brings in the XML language definition */ + + +/* Communication Diversion Information. This is the top-level XML element */ + + +type Comm_div_info_type Comm_div_info +with { + variant "name as 'comm-div-info'"; + variant "element"; +}; + + +/* Communication Diversion Information Type. This is the top-level XML element */ + + +type record Comm_div_info_type +{ + XSD.AnyURI entity, + Comm_div_subs_info_type comm_div_subs_info optional, + Comm_div_ntfy_info_type comm_div_ntfy_info optional, + record of XSD.String elem_list +} +with { + variant "name as 'comm-div-info-type'"; + variant (entity) "attribute"; + variant (comm_div_subs_info) "name as 'comm-div-subs-info'"; + variant (comm_div_ntfy_info) "name as 'comm-div-ntfy-info'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'http://uri.etsi.org/ngn/params/xml/comm-div-info'"; +}; + + +/* - + Communication Diversion Subscription Type. + Used at Subscription time to + select Communication Diversions for notification, + when to notify them and + what to notify. */ + + +type record Comm_div_subs_info_type +{ + record of XSD.String attr optional, + Comm_div_selection_criteria_type comm_div_selection_criteria optional, + Comm_div_ntfy_trigger_criteria_type comm_div_ntfy_trigger_criteria optional, + Comm_div_info_selection_criteria_type comm_div_info_selection_criteria optional, + record of XSD.String elem_list +} +with { + variant "name as 'comm-div-subs-info-type'"; + variant (attr) "anyAttributes except unqualified, 'http://uri.etsi.org/ngn/params/xml/comm-div-info'"; + variant (comm_div_selection_criteria) "name as 'comm-div-selection-criteria'"; + variant (comm_div_ntfy_trigger_criteria) "name as 'comm-div-ntfy-trigger-criteria'"; + variant (comm_div_info_selection_criteria) "name as 'comm-div-info-selection-criteria'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'http://uri.etsi.org/ngn/params/xml/comm-div-info'"; +}; + + +/* - + Communication Diversion Notification Information Type + Used while notifying the User about the Communication Diversion */ + + +type record Comm_div_ntfy_info_type +{ + record of XSD.String attr optional, + User_info_type originating_user_info optional, + XSD.AnyURI diverting_user_info optional, + XSD.AnyURI diverted_to_user_info optional, + XSD.DateTime diversion_time_info optional, + Diversion_reason_info_type diversion_reason_info optional, + Diversion_rule_info_type diversion_rule_info optional, + record of XSD.String elem_list +} +with { + variant "name as 'comm-div-ntfy-info-type'"; + variant (attr) "anyAttributes except unqualified, 'http://uri.etsi.org/ngn/params/xml/comm-div-info'"; + variant (originating_user_info) "name as 'originating-user-info'"; + variant (diverting_user_info) "name as 'diverting-user-info'"; + variant (diverted_to_user_info) "name as 'diverted-to-user-info'"; + variant (diversion_time_info) "name as 'diversion-time-info'"; + variant (diversion_reason_info) "name as 'diversion-reason-info'"; + variant (diversion_rule_info) "name as 'diversion-rule-info'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'http://uri.etsi.org/ngn/params/xml/comm-div-info'"; +}; + + +/* COMMUNICATION DIVERSION SELECTION CRITERIA */ + + +type record Comm_div_selection_criteria_type +{ + record of XSD.String attr optional, + User_selection_criteria_type originating_user_selection_criteria optional, + XSD.AnyURI diverting_user_selection_criteria optional, + XSD.AnyURI diverted_to_user_selection_criteria optional, + Time_range_selection_criteria_type diversion_time_selection_criteria optional, + Diversion_reason_selection_criteria_type diversion_reason_selection_criteria optional, + record of XSD.String elem_list +} +with { + variant "name as 'comm-div-selection-criteria-type'"; + variant (attr) "anyAttributes except unqualified, 'http://uri.etsi.org/ngn/params/xml/comm-div-info'"; + variant (originating_user_selection_criteria) "name as 'originating-user-selection-criteria'"; + variant (diverting_user_selection_criteria) "name as 'diverting-user-selection-criteria'"; + variant (diverted_to_user_selection_criteria) "name as 'diverted-to-user-selection-criteria'"; + variant (diversion_time_selection_criteria) "name as 'diversion-time-selection-criteria'"; + variant (diversion_reason_selection_criteria) "name as 'diversion-reason-selection-criteria'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'http://uri.etsi.org/ngn/params/xml/comm-div-info'"; +}; + + +/* COMMUNICATION DIVERSION NOTIFICATION TRIGGER CRITERIA */ + + +type record Comm_div_ntfy_trigger_criteria_type +{ + record of XSD.String attr optional, + Time_range_selection_criteria_type notification_time_selection_criteria optional, + Presence_status_selection_criteria_type presence_status_selection_criteria optional, + XSD.Integer notification_buffer_interval (-infinity .. 86400) optional, + record of XSD.String elem_list +} +with { + variant "name as 'comm-div-ntfy-trigger-criteria-type'"; + variant (attr) "anyAttributes except unqualified, 'http://uri.etsi.org/ngn/params/xml/comm-div-info'"; + variant (notification_time_selection_criteria) "name as 'notification-time-selection-criteria'"; + variant (presence_status_selection_criteria) "name as 'presence-status-selection-criteria'"; + variant (notification_buffer_interval) "name as 'notification-buffer-interval'"; + variant (notification_buffer_interval) "defaultForEmpty as '86400'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'http://uri.etsi.org/ngn/params/xml/comm-div-info'"; +}; + + +/* COMMUNICATION DIVERSION INFORMATION SELECTION CRITERIA */ + + +type record Comm_div_info_selection_criteria_type +{ + record of XSD.String attr optional, + XSD.Boolean disable_originating_user_info optional, + XSD.Boolean disable_diverting_user_info optional, + XSD.Boolean disable_diverted_to_user_info optional, + XSD.Boolean disable_diversion_time_info optional, + XSD.Boolean disable_diversion_reason_info optional, + XSD.Boolean disable_diversion_rule_info optional, + record of XSD.String elem_list +} +with { + variant "name as 'comm-div-info-selection-criteria-type'"; + variant (attr) "anyAttributes except unqualified, 'http://uri.etsi.org/ngn/params/xml/comm-div-info'"; + variant (disable_originating_user_info) "name as 'disable-originating-user-info'"; + variant (disable_originating_user_info) "defaultForEmpty as 'false'"; + //variant (disable_originating_user_info) "text 'true' as '1'"; + //variant (disable_originating_user_info) "text 'false' as '0'"; + variant (disable_diverting_user_info) "name as 'disable-diverting-user-info'"; + variant (disable_diverting_user_info) "defaultForEmpty as 'false'"; + //variant (disable_diverting_user_info) "text 'true' as '1'"; + //variant (disable_diverting_user_info) "text 'false' as '0'"; + variant (disable_diverted_to_user_info) "name as 'disable-diverted-to-user-info'"; + variant (disable_diverted_to_user_info) "defaultForEmpty as 'false'"; + //variant (disable_diverted_to_user_info) "text 'true' as '1'"; + //variant (disable_diverted_to_user_info) "text 'false' as '0'"; + variant (disable_diversion_time_info) "name as 'disable-diversion-time-info'"; + variant (disable_diversion_time_info) "defaultForEmpty as 'false'"; + //variant (disable_diversion_time_info) "text 'true' as '1'"; + //variant (disable_diversion_time_info) "text 'false' as '0'"; + variant (disable_diversion_reason_info) "name as 'disable-diversion-reason-info'"; + variant (disable_diversion_reason_info) "defaultForEmpty as 'false'"; + //variant (disable_diversion_reason_info) "text 'true' as '1'"; + //variant (disable_diversion_reason_info) "text 'false' as '0'"; + variant (disable_diversion_rule_info) "name as 'disable-diversion-rule-info'"; + variant (disable_diversion_rule_info) "defaultForEmpty as 'false'"; + //variant (disable_diversion_rule_info) "text 'true' as '1'"; + //variant (disable_diversion_rule_info) "text 'false' as '0'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'http://uri.etsi.org/ngn/params/xml/comm-div-info'"; +}; + + +/* User Info Type */ + + +type record User_info_type +{ + record of XSD.String attr optional, + XSD.String user_name optional, + XSD.AnyURI user_URI +} +with { + variant "name as 'user-info-type'"; + variant (attr) "anyAttributes except unqualified, 'http://uri.etsi.org/ngn/params/xml/comm-div-info'"; + variant (user_name) "name as 'user-name'"; + variant (user_URI) "name as 'user-URI'"; +}; + + +/* DIVERSION REASON INFO */ + + +type record of Diversion_reason_info_type Diversion_reason_info_types +with { + variant "name as 'diversion-reason-info-types'"; + variant "list"; +}; + + +type enumerated Diversion_reason_info_type +{ + int302(302), + int404(404), + int408(408), + int480(480), + int486(486), + int487(487), + int503(503) +} +with { + variant "useNumber"; + variant "name as 'diversion-reason-info-type'"; +}; + + +/* DIVERSION RULE INFO */ + + +type record Diversion_rule_info_type +{ + record of XSD.String attr optional, + XSD.String diversion_rule +} +with { + variant "name as 'diversion-rule-info-type'"; + variant (attr) "anyAttributes except unqualified, 'http://uri.etsi.org/ngn/params/xml/comm-div-info'"; + variant (diversion_rule) "name as 'diversion-rule'"; +}; + + +/* ORIGINATING USER SELECTION CRITERIA */ + + +type record User_selection_criteria_type +{ + record of XSD.String attr optional, + record of User_info_type user_info_list +} +with { + variant "name as 'user-selection-criteria-type'"; + variant (attr) "anyAttributes except unqualified, 'http://uri.etsi.org/ngn/params/xml/comm-div-info'"; + variant (user_info_list) "untagged"; + variant (user_info_list[-]) "name as 'user-info'"; +}; + + +/* DIVERSION REASON SELECTION CRITERIA */ + + +type record Diversion_reason_selection_criteria_type +{ + record of XSD.String attr optional, + Diversion_reason_info_types diversion_reason_info +} +with { + variant "name as 'diversion-reason-selection-criteria-type'"; + variant (attr) "anyAttributes except unqualified, 'http://uri.etsi.org/ngn/params/xml/comm-div-info'"; + variant (diversion_reason_info) "name as 'diversion-reason-info'"; +}; + + +/* TIME RANGE SELECTION CRITERIA */ + + +type record Time_range_selection_criteria_type +{ + record of XSD.String attr optional, + record of Time_range_type time_range_list +} +with { + variant "name as 'time-range-selection-criteria-type'"; + variant (attr) "anyAttributes except unqualified, 'http://uri.etsi.org/ngn/params/xml/comm-div-info'"; + variant (time_range_list) "untagged"; + variant (time_range_list[-]) "name as 'time-range'"; +}; + + +/* TIME RANGE INFO */ + + +type record Time_range_type +{ + record of XSD.String attr optional, + XSD.DateTime start_time, + XSD.DateTime end_time +} +with { + variant "name as 'time-range-type'"; + variant (attr) "anyAttributes except unqualified, 'http://uri.etsi.org/ngn/params/xml/comm-div-info'"; + variant (start_time) "name as 'start-time'"; + variant (end_time) "name as 'end-time'"; +}; + + +/* PRESENCE STATUS SELECTION CRITERIA */ + + +type record Presence_status_selection_criteria_type +{ + record of XSD.String attr optional, + record of Presence_status_info_type presence_status_info_list +} +with { + variant "name as 'presence-status-selection-criteria-type'"; + variant (attr) "anyAttributes except unqualified, 'http://uri.etsi.org/ngn/params/xml/comm-div-info'"; + variant (presence_status_info_list) "untagged"; + variant (presence_status_info_list[-]) "name as 'presence-status-info'"; +}; + + +/* PRESENCE STATUS INFo */ + + +type record Presence_status_info_type +{ + record of XSD.String attr optional, + XSD.String presence_status +} +with { + variant "name as 'presence-status-info-type'"; + variant (attr) "anyAttributes except unqualified, 'http://uri.etsi.org/ngn/params/xml/comm-div-info'"; + variant (presence_status) "name as 'presence-status'"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://uri.etsi.org/ngn/params/xml/comm-div-info' prefix 'tns'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} diff --git a/ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn b/ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn new file mode 100644 index 0000000..050f791 --- /dev/null +++ b/ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn @@ -0,0 +1,105 @@ +/******************************************************************************* +* Copyright (c) 2000-2016 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/5 R4D +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Fri Mar 4 09:23:30 2016 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - MCID.xsd +// /* xml version = "1.0" */ +// /* targetnamespace = "http://uri.etsi.org/ngn/params/xml/simservs/mcid" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module http_uri_etsi_org_ngn_params_xml_simservs_mcid { + + +import from XSD all; + + +/* XML Schema Definition to the mcid request-response to the Malicious Communication */ +/* Identification simulation service */ + + +/* Definition of simple types */ + + +type XSD.String BitType (pattern "[0-1]") +with { + variant "name as uncapitalized"; +}; + + +/* Definition of complex types */ + + +type record RequestType +{ + BitType mcidRequestIndicator, + BitType holdingIndicator +} +with { + variant "name as uncapitalized"; + variant (mcidRequestIndicator) "name as capitalized"; + variant (holdingIndicator) "name as capitalized"; +}; + + +type record ResponseType +{ + BitType mcidResponseIndicator, + BitType holdingProvidedIndicator +} +with { + variant "name as uncapitalized"; + variant (mcidResponseIndicator) "name as capitalized"; + variant (holdingProvidedIndicator) "name as capitalized"; +}; + + +/* Definition of document structure */ + + +type record Mcid +{ + union { + RequestType request, + ResponseType response + } choice +} +with { + variant "name as uncapitalized"; + variant "element"; + variant (choice) "untagged"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://uri.etsi.org/ngn/params/xml/simservs/mcid'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} diff --git a/ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn b/ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn new file mode 100644 index 0000000..3d6f1fd --- /dev/null +++ b/ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn @@ -0,0 +1,689 @@ +/******************************************************************************* +* Copyright (c) 2000-2016 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/5 R4D +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Fri Mar 4 09:23:30 2016 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - PSTN.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://uri.etsi.org/ngn/params/xml/simservs/pstn" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module http_uri_etsi_org_ngn_params_xml_simservs_pstn { + + +import from XSD all; + + +/* XML Schema definition for mapping of some PSTN into SIP MIME Bodies */ + + +/* Definition of simple types */ + + +type XSD.String OneBitType (pattern "[0-1]"); + + +type XSD.String TwoBitType (pattern "[0-1][0-1]"); + + +type XSD.String ThreeBitType (pattern "[0-1][0-1][0-1]"); + + +type XSD.String FourBitType (pattern "[0-1][0-1][0-1][0-1]"); + + +type XSD.String FiveBitType (pattern "[0-1][0-1][0-1][0-1][0-1]"); + + +type XSD.String SixBitType (pattern "[0-1][0-1][0-1][0-1][0-1][0-1]"); + + +type XSD.String SevenBitType (pattern "[0-1][0-1][0-1][0-1][0-1][0-1][0-1]"); + + +/* Definition of complex types */ + + +/* Definition of BearerCapability Octets */ + + +type record BCOctet3Type +{ + TwoBitType codingStandard, + FiveBitType informationTransferCabability +} +with { + variant (codingStandard) "name as capitalized"; + variant (informationTransferCabability) "name as capitalized"; +}; + + +type record BCOctet4Type +{ + TwoBitType transferMode, + FiveBitType informationTransferRate +} +with { + variant (transferMode) "name as capitalized"; + variant (informationTransferRate) "name as capitalized"; +}; + + +type record BCOctet4_1Type +{ + SevenBitType rateMultiplier +} +with { + variant "name as 'BCOctet4-1Type'"; + variant (rateMultiplier) "name as capitalized"; +}; + + +type record BCOctet5Type +{ + TwoBitType layer1Identification, + FiveBitType userInfoLayer1Protocol +} +with { + variant (layer1Identification) "name as capitalized"; + variant (userInfoLayer1Protocol) "name as capitalized"; +}; + + +type record BCOctet5aType +{ + OneBitType synchronousAsynchronous, + OneBitType negotiation, + FiveBitType userRate +} +with { + variant (synchronousAsynchronous) "name as capitalized"; + variant (negotiation) "name as capitalized"; + variant (userRate) "name as capitalized"; +}; + + +type record BCOctet5bV110Type +{ + TwoBitType intermediateRate, + OneBitType nIConTX, + OneBitType nIConRX, + OneBitType flowControlOnTX, + OneBitType flowControlOnRX +} +with { + variant (intermediateRate) "name as capitalized"; + variant (nIConTX) "name as capitalized"; + variant (nIConRX) "name as capitalized"; + variant (flowControlOnTX) "name as capitalized"; + variant (flowControlOnRX) "name as capitalized"; +}; + + +type record BCOctet5bV120Type +{ + OneBitType rateAdaptionHeader, + OneBitType multipleFrameEstablishmentSupport, + OneBitType modeOfOperation, + OneBitType logicalLinkIdentifier, + OneBitType assignor, + OneBitType inbandOutbandNegotiation +} +with { + variant (rateAdaptionHeader) "name as capitalized"; + variant (multipleFrameEstablishmentSupport) "name as capitalized"; + variant (modeOfOperation) "name as capitalized"; + variant (logicalLinkIdentifier) "name as capitalized"; + variant (assignor) "name as capitalized"; + variant (inbandOutbandNegotiation) "name as capitalized"; +}; + + +type record BCOctet5cType +{ + TwoBitType numberOfStopBits, + TwoBitType numberOfDataBits, + ThreeBitType parity +} +with { + variant (numberOfStopBits) "name as capitalized"; + variant (numberOfDataBits) "name as capitalized"; + variant (parity) "name as capitalized"; +}; + + +type record BCOctet5dType +{ + OneBitType duplexMode, + SixBitType modemType +} +with { + variant (duplexMode) "name as capitalized"; + variant (modemType) "name as capitalized"; +}; + + +type record BCOctet6Type +{ + TwoBitType layer2Identification, + FiveBitType userInfoLayer2Protocol +} +with { + variant (layer2Identification) "name as capitalized"; + variant (userInfoLayer2Protocol) "name as capitalized"; +}; + + +type record BCOctet7Type +{ + TwoBitType layer3Identification, + FiveBitType userInfoLayer3Protocol +} +with { + variant (layer3Identification) "name as capitalized"; + variant (userInfoLayer3Protocol) "name as capitalized"; +}; + + +type record BCOctet7aType +{ + FourBitType additionalLayer3Info +} +with { + variant (additionalLayer3Info) "name as capitalized"; +}; + + +type record BCOctet7bType +{ + FourBitType additionalLayer3Info +} +with { + variant (additionalLayer3Info) "name as capitalized"; +}; + + +/* Definition of High Layer Compatibility Octets */ + + +type record HLOctet3Type +{ + TwoBitType codingStandard, + ThreeBitType interpretation, + TwoBitType presentationMethod +} +with { + variant (codingStandard) "name as capitalized"; + variant (interpretation) "name as capitalized"; + variant (presentationMethod) "name as capitalized"; +}; + + +type record HLOctet4Type +{ + SevenBitType highLayerCharacteristics +} +with { + variant (highLayerCharacteristics) "name as capitalized"; +}; + + +type record HLOctet4aMaintenanceType +{ + SevenBitType highLayerCharacteristics +} +with { + variant (highLayerCharacteristics) "name as capitalized"; +}; + + +type record HLOctet4aAudioType +{ + SevenBitType videoTelephonyCharacteristics +} +with { + variant (videoTelephonyCharacteristics) "name as capitalized"; +}; + + +/* Definition of Low Layer Compatibility Octets */ + + +type record LLOctet3Type +{ + TwoBitType codingStandard, + FiveBitType informationTransferCapability +} +with { + variant (codingStandard) "name as capitalized"; + variant (informationTransferCapability) "name as capitalized"; +}; + + +type record LLOctet3aType +{ + OneBitType negotiationIndicator +} +with { + variant (negotiationIndicator) "name as capitalized"; +}; + + +type record LLOctet4Type +{ + TwoBitType transferMode, + FiveBitType informationTransferRate +} +with { + variant (transferMode) "name as capitalized"; + variant (informationTransferRate) "name as capitalized"; +}; + + +type record LLOctet4_1Type +{ + SevenBitType rateMultiplier +} +with { + variant "name as 'LLOctet4-1Type'"; + variant (rateMultiplier) "name as capitalized"; +}; + + +type record LLOctet5Type +{ + TwoBitType layer1Identification, + FiveBitType userInfoLayer1Protocol +} +with { + variant (layer1Identification) "name as capitalized"; + variant (userInfoLayer1Protocol) "name as capitalized"; +}; + + +type record LLOctet5aType +{ + OneBitType synchronousAsynchronous, + OneBitType negotiation, + FiveBitType userRate +} +with { + variant (synchronousAsynchronous) "name as capitalized"; + variant (negotiation) "name as capitalized"; + variant (userRate) "name as capitalized"; +}; + + +type record LLOctet5bV110Type +{ + TwoBitType intermediateRate, + OneBitType nIConTX, + OneBitType nIConRX, + OneBitType flowControlOnTX, + OneBitType flowControlOnRX +} +with { + variant (intermediateRate) "name as capitalized"; + variant (nIConTX) "name as capitalized"; + variant (nIConRX) "name as capitalized"; + variant (flowControlOnTX) "name as capitalized"; + variant (flowControlOnRX) "name as capitalized"; +}; + + +type record LLOctet5bV120Type +{ + OneBitType rateAdaptionHeader, + OneBitType multipleFrameEstablishmentSupport, + OneBitType modeOfOperation, + OneBitType logicalLinkIdentifier, + OneBitType assignor, + OneBitType inbandOutbandNegotiation +} +with { + variant (rateAdaptionHeader) "name as capitalized"; + variant (multipleFrameEstablishmentSupport) "name as capitalized"; + variant (modeOfOperation) "name as capitalized"; + variant (logicalLinkIdentifier) "name as capitalized"; + variant (assignor) "name as capitalized"; + variant (inbandOutbandNegotiation) "name as capitalized"; +}; + + +type record LLOctet5cType +{ + TwoBitType numberOfStopBits, + TwoBitType numberOfDataBits, + ThreeBitType parity +} +with { + variant (numberOfStopBits) "name as capitalized"; + variant (numberOfDataBits) "name as capitalized"; + variant (parity) "name as capitalized"; +}; + + +type record LLOctet5dType +{ + OneBitType duplexMode, + SixBitType modemType +} +with { + variant (duplexMode) "name as capitalized"; + variant (modemType) "name as capitalized"; +}; + + +type record LLOctet6Type +{ + TwoBitType layer2Identification, + FiveBitType userInfoLayer2Protocol +} +with { + variant (layer2Identification) "name as capitalized"; + variant (userInfoLayer2Protocol) "name as capitalized"; +}; + + +type record LLOctet6aHDLCType +{ + TwoBitType mode +} +with { + variant (mode) "name as capitalized"; +}; + + +type record LLOctet6aUserSpecificType +{ + SevenBitType userSpecificLayer2Information +} +with { + variant (userSpecificLayer2Information) "name as capitalized"; +}; + + +type record LLOctet6bType +{ + SevenBitType windowSize +} +with { + variant (windowSize) "name as capitalized"; +}; + + +type record LLOctet7Type +{ + TwoBitType layer3Identification, + FiveBitType userInfoLayer3Protocol +} +with { + variant (layer3Identification) "name as capitalized"; + variant (userInfoLayer3Protocol) "name as capitalized"; +}; + + +type record LLOctet7aUserSpecificType +{ + SevenBitType optionalLayer3Information +} +with { + variant (optionalLayer3Information) "name as capitalized"; +}; + + +type record LLOctet7aX25Type +{ + TwoBitType mode +} +with { + variant (mode) "name as capitalized"; +}; + + +type record LLOctet7bX25Type +{ + FourBitType defaultPacketSize +} +with { + variant (defaultPacketSize) "name as capitalized"; +}; + + +type record LLOctet7cType +{ + SevenBitType packetWindowSize +} +with { + variant (packetWindowSize) "name as capitalized"; +}; + + +type record LLOctet7aTR9577Type +{ + FourBitType additionalLayer3Info +} +with { + variant (additionalLayer3Info) "name as capitalized"; +}; + + +type record LLOctet7bTR9577Type +{ + FourBitType additionalLayer3Info +} +with { + variant (additionalLayer3Info) "name as capitalized"; +}; + + +type record DispOctet3Type +{ + SevenBitType displayInformation +} +with { + variant (displayInformation) "name as capitalized"; +}; + + +/* Definition of the information elements */ + + +type record BearerCapabilityType +{ + BCOctet3Type bCoctet3, + BCOctet4Type bCoctet4, + BCOctet4_1Type bCoctet4_1 optional, + BCOctet5Type bCoctet5 optional, + BCOctet5aType bCoctet5a optional, + BCOctet5bV110Type bCoctet5bV110 optional, + BCOctet5bV120Type bCoctet5bV120 optional, + BCOctet5cType bCoctet5c optional, + BCOctet5dType bCoctet5d optional, + BCOctet6Type bCoctet6 optional, + BCOctet7Type bCoctet7 optional, + BCOctet7aType bCoctet7a optional, + BCOctet7bType bCoctet7b optional +} +with { + variant (bCoctet3) "name as capitalized"; + variant (bCoctet4) "name as capitalized"; + variant (bCoctet4_1) "name as 'BCoctet4-1'"; + variant (bCoctet5) "name as capitalized"; + variant (bCoctet5a) "name as capitalized"; + variant (bCoctet5bV110) "name as capitalized"; + variant (bCoctet5bV120) "name as capitalized"; + variant (bCoctet5c) "name as capitalized"; + variant (bCoctet5d) "name as capitalized"; + variant (bCoctet6) "name as capitalized"; + variant (bCoctet7) "name as capitalized"; + variant (bCoctet7a) "name as capitalized"; + variant (bCoctet7b) "name as capitalized"; +}; + + +type record HighLayerCompatibilityType +{ + HLOctet3Type hLOctet3, + HLOctet4Type hLOctet4, + HLOctet4aMaintenanceType hLOctet4aMaintenance optional, + HLOctet4aAudioType hLOctet4Audio optional +} +with { + variant (hLOctet3) "name as capitalized"; + variant (hLOctet4) "name as capitalized"; + variant (hLOctet4aMaintenance) "name as capitalized"; + variant (hLOctet4Audio) "name as capitalized"; +}; + + +type record LowLayerCompatibilityType +{ + LLOctet3Type lLOctet3, + LLOctet3aType lLOctet3a optional, + LLOctet4Type lLOctet4, + LLOctet4_1Type lLOctet4_1 optional, + LLOctet5Type lLOctet5 optional, + LLOctet5aType lLOctet5a optional, + LLOctet5bV110Type lLOctet5bV110 optional, + LLOctet5bV120Type lLOctet5bV120 optional, + LLOctet5cType lLOctet5c optional, + LLOctet5dType lLOctet5d optional, + LLOctet6Type lLOctet6 optional, + LLOctet6aHDLCType lLOctet6aHDLC optional, + LLOctet6aUserSpecificType lLOctet6aUserSpecific optional, + LLOctet6bType lLOctet6b optional, + LLOctet7Type lLOctet7, + LLOctet7aUserSpecificType lLOctet7aUserSpecific optional, + LLOctet7aX25Type lLOctet7aX25 optional, + LLOctet7bX25Type lLOctet7bX25 optional, + LLOctet7cType lLOctet7c optional, + LLOctet7aTR9577Type lLOctet7aTR9577 optional, + LLOctet7bTR9577Type lLOctet7bTR9577 optional +} +with { + variant (lLOctet3) "name as capitalized"; + variant (lLOctet3a) "name as capitalized"; + variant (lLOctet4) "name as capitalized"; + variant (lLOctet4_1) "name as 'LLOctet4-1'"; + variant (lLOctet5) "name as capitalized"; + variant (lLOctet5a) "name as capitalized"; + variant (lLOctet5bV110) "name as capitalized"; + variant (lLOctet5bV120) "name as capitalized"; + variant (lLOctet5c) "name as capitalized"; + variant (lLOctet5d) "name as capitalized"; + variant (lLOctet6) "name as capitalized"; + variant (lLOctet6aHDLC) "name as capitalized"; + variant (lLOctet6aUserSpecific) "name as capitalized"; + variant (lLOctet6b) "name as capitalized"; + variant (lLOctet7) "name as capitalized"; + variant (lLOctet7aUserSpecific) "name as capitalized"; + variant (lLOctet7aX25) "name as capitalized"; + variant (lLOctet7bX25) "name as capitalized"; + variant (lLOctet7c) "name as capitalized"; + variant (lLOctet7aTR9577) "name as capitalized"; + variant (lLOctet7bTR9577) "name as capitalized"; +}; + + +type record DisplayType +{ + DispOctet3Type dispOctet3 +} +with { + variant (dispOctet3) "name as capitalized"; +}; + + +/* Definition of progress indicator */ + + +type record ProgressOctet3Type +{ + TwoBitType codingStandard, + FourBitType location +} +with { + variant (codingStandard) "name as capitalized"; + variant (location) "name as capitalized"; +}; + + +type record ProgressOctet4Type +{ + SevenBitType progressDescription +} +with { + variant (progressDescription) "name as capitalized"; +}; + + +type record ProgressIndicatorType +{ + ProgressOctet3Type progressOctet3, + ProgressOctet4Type progressOctet4 +} +with { + variant (progressOctet3) "name as capitalized"; + variant (progressOctet4) "name as capitalized"; +}; + + +/* Definition of document structure */ + + +type record PSTN_transit +{ + record length(1 .. 2) of BearerCapabilityType bearerInfomationElement_list, + record length(0 .. 2) of HighLayerCompatibilityType highLayerCompatibility_list, + LowLayerCompatibilityType lowLayerCompatibility optional, + record of ProgressIndicatorType progressIndicator_list, + record of DisplayType display_list +} +with { + variant "name as 'PSTN-transit'"; + variant "element"; + variant (bearerInfomationElement_list) "untagged"; + variant (bearerInfomationElement_list[-]) "name as 'BearerInfomationElement'"; + variant (highLayerCompatibility_list) "untagged"; + variant (highLayerCompatibility_list[-]) "name as 'HighLayerCompatibility'"; + variant (lowLayerCompatibility) "name as capitalized"; + variant (progressIndicator_list) "untagged"; + variant (progressIndicator_list[-]) "name as 'ProgressIndicator'"; + variant (display_list) "untagged"; + variant (display_list[-]) "name as 'Display'"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://uri.etsi.org/ngn/params/xml/simservs/pstn'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} diff --git a/ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn b/ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn new file mode 100644 index 0000000..230df4e --- /dev/null +++ b/ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn @@ -0,0 +1,621 @@ +/******************************************************************************* +* Copyright (c) 2000-2016 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/5 R4D +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Fri Mar 4 09:23:30 2016 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - ACR_CB.xsd +// /* xml version = "1.0" */ +// /* targetnamespace = "http://uri.etsi.org/ngn/params/xml/simservs/xcap" */ +// - CDIV.xsd +// /* xml version = "1.0" */ +// /* targetnamespace = "http://uri.etsi.org/ngn/params/xml/simservs/xcap" */ +// - OIP-OIR.xsd +// /* xml version = "1.0" */ +// /* targetnamespace = "http://uri.etsi.org/ngn/params/xml/simservs/xcap" */ +// - SupplementaryServices.xsd +// /* xml version = "1.0" */ +// /* targetnamespace = "http://uri.etsi.org/ngn/params/xml/simservs/xcap" */ +// - TIP-TIR.xsd +// /* xml version = "1.0" */ +// /* targetnamespace = "http://uri.etsi.org/ngn/params/xml/simservs/xcap" */ +// - cug.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "http://uri.etsi.org/ngn/params/xml/simservs/xcap" */ +// - simservs.xsd +// /* xml version = "1.0" */ +// /* targetnamespace = "http://uri.etsi.org/ngn/params/xml/simservs/xcap" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module http_uri_etsi_org_ngn_params_xml_simservs_xcap { + + +import from XSD all; + + +import from urn_ietf_params_xml_ns_common_policy all; + + +import from urn_oma_xml_xdm_common_policy all; + + +/* import common policy definitions */ + + +/* import OMA common policy extensions */ + + +/* incoming communication barring rule set based on the common policy rule set. */ + + +/* This is the incoming communication barring configuration */ +/* document. */ +/* add service specific elements here */ +/* service specific attributes can be defined here */ +type record Incoming_communication_barring +{ + XSD.Boolean active optional, + record of XSD.String attr optional, + Ruleset ruleset optional +} +with { + variant "name as 'incoming-communication-barring'"; + variant "element"; + variant (active) "defaultForEmpty as 'true'"; + variant (active) "attribute"; + //variant (active) "text 'true' as '1'"; + //variant (active) "text 'false' as '0'"; + variant (attr) "anyAttributes"; + variant (ruleset) "namespace as 'urn:ietf:params:xml:ns:common-policy' prefix 'cp'"; +}; + + +/* outgoing communication barring rule set based on the common policy rule set. */ + + +/* This is the outgoing communication barring configuration */ +/* document. */ +/* add service specific elements here */ +/* service specific attributes can be defined here */ +type record Outgoing_communication_barring +{ + XSD.Boolean active optional, + record of XSD.String attr optional, + Ruleset ruleset optional +} +with { + variant "name as 'outgoing-communication-barring'"; + variant "element"; + variant (active) "defaultForEmpty as 'true'"; + variant (active) "attribute"; + //variant (active) "text 'true' as '1'"; + //variant (active) "text 'false' as '0'"; + variant (attr) "anyAttributes"; + variant (ruleset) "namespace as 'urn:ietf:params:xml:ns:common-policy' prefix 'cp'"; +}; + + +/* communication barring specific extensions to IETF common policy actions */ + + +type Allow_action_type Allow +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +/* communication barring specific type declarations */ + + +/* */ + + +type XSD.Boolean Allow_action_type +with { + variant "name as 'allow-action-type'"; + //variant "text 'true' as '1'"; + //variant "text 'false' as '0'"; +}; + + +/* import common policy definitions */ + + +/* import OMA common policy extensions */ + + +/* communication diversion specific extensions to IETF common policy conditions. The +cp:conditionsType is expanded with the elements: ss:not-registered, ss:busy, ss:no-answer, ss:notreachable, +ss:media as optional elements */ + + +/* communication diversion rule set based on the common policy rule set. */ + + +/* This is the communication diversion configuration */ +/* document. */ +/* add service specific elements here */ +/* service specific attributes can be defined here */ +type record Communication_diversion +{ + XSD.Boolean active optional, + record of XSD.String attr optional, + Ruleset ruleset optional +} +with { + variant "name as 'communication-diversion'"; + variant "element"; + variant (active) "defaultForEmpty as 'true'"; + variant (active) "attribute"; + //variant (active) "text 'true' as '1'"; + //variant (active) "text 'false' as '0'"; + variant (attr) "anyAttributes"; + variant (ruleset) "namespace as 'urn:ietf:params:xml:ns:common-policy' prefix 'cp'"; +}; + + +/* communication diversion specific extensions to IETF common policy actions */ + + +type Forward_to_type Forward_to +with { + variant "name as 'forward-to'"; + variant "element"; +}; + + +type enumerated Reveal_URIoptions_type +{ + false_, + not_reveal_GRUU, + true_ +} +with { + variant "text 'false_' as 'false'"; + variant "text 'not_reveal_GRUU' as 'not-reveal-GRUU'"; + variant "text 'true_' as 'true'"; + variant "name as 'reveal-URIoptions-type'"; +}; + + +/* communication diversion specific type declarations */ + + +type record Forward_to_type +{ + XSD.AnyURI target, + XSD.Boolean notify_caller optional, + Reveal_URIoptions_type reveal_identity_to_caller optional, + Reveal_URIoptions_type reveal_served_user_identity_to_caller optional, + XSD.Boolean notify_served_user optional, + XSD.Boolean notify_served_user_on_outbound_call optional, + Reveal_URIoptions_type reveal_identity_to_target optional, + NoReplyTimer noReplyTimer optional +} +with { + variant "name as 'forward-to-type'"; + variant (notify_caller) "name as 'notify-caller'"; + variant (notify_caller) "defaultForEmpty as 'true'"; + //variant (notify_caller) "text 'true' as '1'"; + //variant (notify_caller) "text 'false' as '0'"; + variant (reveal_identity_to_caller) "name as 'reveal-identity-to-caller'"; + variant (reveal_identity_to_caller) "defaultForEmpty as 'true'"; + variant (reveal_served_user_identity_to_caller) "name as 'reveal-served-user-identity-to-caller'"; + variant (reveal_served_user_identity_to_caller) "defaultForEmpty as 'true'"; + variant (notify_served_user) "name as 'notify-served-user'"; + variant (notify_served_user) "defaultForEmpty as 'false'"; + //variant (notify_served_user) "text 'true' as '1'"; + //variant (notify_served_user) "text 'false' as '0'"; + variant (notify_served_user_on_outbound_call) "name as 'notify-served-user-on-outbound-call'"; + variant (notify_served_user_on_outbound_call) "defaultForEmpty as 'false'"; + //variant (notify_served_user_on_outbound_call) "text 'true' as '1'"; + //variant (notify_served_user_on_outbound_call) "text 'false' as '0'"; + variant (reveal_identity_to_target) "name as 'reveal-identity-to-target'"; + variant (reveal_identity_to_target) "defaultForEmpty as 'true'"; + variant (noReplyTimer) "name as capitalized"; +}; + + +type XSD.PositiveInteger NoReplyTimer (5 .. 180) +with { + variant "element"; +}; + + +/* Originating Identity presentation Restriction */ +type record Originating_identity_presentation_restriction +{ + XSD.Boolean active optional, + record of XSD.String attr optional, + enumerated { + presentation_restricted, + presentation_not_restricted + } default_behaviour optional +} +with { + variant "name as 'originating--identity--presentation--restriction'"; + variant "element"; + variant (active) "defaultForEmpty as 'true'"; + variant (active) "attribute"; + //variant (active) "text 'true' as '1'"; + //variant (active) "text 'false' as '0'"; + variant (attr) "anyAttributes"; + variant (default_behaviour) "name as 'default--behaviour'"; + variant (default_behaviour) "defaultForEmpty as 'presentation--restricted'"; + variant (default_behaviour) "text 'presentation_not_restricted' as 'presentation--not--restricted'"; + variant (default_behaviour) "text 'presentation_restricted' as 'presentation--restricted'"; +}; + + +/* Originating Identity Presentation */ +type SimservType Originating_identity_presentation +with { + variant "name as 'originating--identity--presentation'"; + variant "element"; +}; + + +/* Terminating Identity presentation Restriction */ +type record Terminating_identity_presentation_restriction +{ + XSD.Boolean active optional, + record of XSD.String attr optional, + enumerated { + presentation_restricted, + presentation_not_restricted + } default_behaviour optional +} +with { + variant "name as 'terminating-identity-presentation-restriction'"; + variant "element"; + variant (active) "defaultForEmpty as 'true'"; + variant (active) "attribute"; + //variant (active) "text 'true' as '1'"; + //variant (active) "text 'false' as '0'"; + variant (attr) "anyAttributes"; + variant (default_behaviour) "name as 'default-behaviour'"; + variant (default_behaviour) "defaultForEmpty as 'presentation-restricted'"; + variant (default_behaviour) "text 'presentation_not_restricted' as 'presentation-not-restricted'"; + variant (default_behaviour) "text 'presentation_restricted' as 'presentation-restricted'"; +}; + + +/* Terminating Identity Presentation */ +type SimservType Terminating_identity_presentation +with { + variant "name as 'terminating-identity-presentation'"; + variant "element"; +}; + + +/* XML Schema Definition for the closed user group */ +/* parameter */ + + +/* Definition of simple types */ + + +type XSD.String TwobitType (pattern "[0-1][0-1]") +with { + variant "name as uncapitalized"; +}; + + +type XSD.HexBinary NetworkIdentityType length(1) +with { + variant "name as uncapitalized"; +}; + + +type XSD.HexBinary SixteenbitType length(2) +with { + variant "name as uncapitalized"; +}; + + +type XSD.Integer CugIndexType (0 .. 32767) +with { + variant "name as uncapitalized"; +}; + + +/* Definition of complex types */ + + +type record CugRequestType +{ + XSD.Boolean outgoingAccessRequest, + CugIndexType cugIndex +} +with { + variant "name as uncapitalized"; + //variant (outgoingAccessRequest) "text 'true' as '1'"; + //variant (outgoingAccessRequest) "text 'false' as '0'"; +}; + + +/* Definition of document structure */ + + +type record Cug +{ + XSD.Boolean active optional, + record of XSD.String attr optional, + CugRequestType cugCallOperation optional, + NetworkIdentityType networkIndicator optional, + SixteenbitType cugInterlockBinaryCode optional, + TwobitType cugCommunicationIndicator optional +} +with { + variant "name as uncapitalized"; + variant "element"; + variant (active) "defaultForEmpty as 'true'"; + variant (active) "attribute"; + //variant (active) "text 'true' as '1'"; + //variant (active) "text 'false' as '0'"; + variant (attr) "anyAttributes"; +}; + + +/* The element "simservs" maps to the Common Parts of an NGN PSTN/ISDN Simulation services document */ + + +/* XML Schema for data manipulation of ETSI */ +/* NGN PSTN/ISDN Simulation Services */ +/* xs:group ref="ss:absServiceGroup" minOccurs="0" maxOccurs="unbounded" / */ +type record Simservs +{ + record of XSD.String attr optional, + record of AbsService_group absService_list, + record { + record of XSD.String elem_list + } extensions optional +} +with { + variant "name as uncapitalized"; + variant "element"; + variant (attr) "anyAttributes"; + variant (absService_list) "untagged"; + variant (extensions.elem_list) "untagged"; + variant (extensions.elem_list[-]) "anyElement except unqualified, 'http://uri.etsi.org/ngn/params/xml/simservs/xcap'"; +}; + + +type record SimservType +{ + XSD.Boolean active optional, + record of XSD.String attr optional +} +with { + variant "name as uncapitalized"; + variant (active) "defaultForEmpty as 'true'"; + variant (active) "attribute"; + //variant (active) "text 'true' as '1'"; + //variant (active) "text 'false' as '0'"; + variant (attr) "anyAttributes"; +}; + + +/* service specific IETF common policy condition elements */ + + +type Empty_element_type Anonymous +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type Presence_status_activity_type Presence_status +with { + variant "name as 'presence-status'"; + variant "element"; +}; + + +type Media_type1 Media +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type Empty_element_type Communication_diverted +with { + variant "name as 'communication-diverted'"; + variant "element"; +}; + + +type Empty_element_type Rule_deactivated +with { + variant "name as 'rule-deactivated'"; + variant "element"; +}; + + +type Empty_element_type Not_registered +with { + variant "name as 'not-registered'"; + variant "element"; +}; + + +type Empty_element_type Busy +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type Empty_element_type No_answer +with { + variant "name as 'no-answer'"; + variant "element"; +}; + + +type Empty_element_type Not_reachable +with { + variant "name as 'not-reachable'"; + variant "element"; +}; + + +type Empty_element_type Roaming +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +/* service specific type declarations */ + + +type XSD.String Media_type1 +with { + variant "name as 'media-type1'"; +}; + + +type XSD.String Presence_status_activity_type +with { + variant "name as 'presence-status-activity-type'"; +}; + + +type record Empty_element_type +{ + +} +with { + variant "name as 'empty-element-type'"; +}; + + +/* ETSI substitutionGroup workaround, because TTCN-3 does not support mapping of substitutionGroup */ + + +/* xs:group name="absServiceGroup"> + + + + */ + + +/* /xs:choice */ + + +/* /xs:group */ + + +type union AbsService_group +{ + SimservType absService, + /* This is the communication diversion configuration */ + /* document. */ + /* add service specific elements here */ + /* service specific attributes can be defined here */ + Communication_diversion communication_diversion, + Cug cug, + /* This is the incoming communication barring configuration */ + /* document. */ + /* add service specific elements here */ + /* service specific attributes can be defined here */ + Incoming_communication_barring incoming_communication_barring, + /* Originating Identity Presentation */ + Originating_identity_presentation originating_identity_presentation, + /* Originating Identity presentation Restriction */ + Originating_identity_presentation_restriction originating_identity_presentation_restriction, + /* This is the outgoing communication barring configuration */ + /* document. */ + /* add service specific elements here */ + /* service specific attributes can be defined here */ + Outgoing_communication_barring outgoing_communication_barring, + /* Terminating Identity Presentation */ + Terminating_identity_presentation terminating_identity_presentation, + /* Terminating Identity presentation Restriction */ + Terminating_identity_presentation_restriction terminating_identity_presentation_restriction +} +with { + variant "untagged"; + variant (absService) "form as qualified"; + variant (absService) "abstract"; + variant (communication_diversion) "name as 'communication-diversion'"; + variant (incoming_communication_barring) "name as 'incoming-communication-barring'"; + variant (originating_identity_presentation) "name as 'originating--identity--presentation'"; + variant (originating_identity_presentation_restriction) "name as 'originating--identity--presentation--restriction'"; + variant (outgoing_communication_barring) "name as 'outgoing-communication-barring'"; + variant (terminating_identity_presentation) "name as 'terminating-identity-presentation'"; + variant (terminating_identity_presentation_restriction) "name as 'terminating-identity-presentation-restriction'"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'http://uri.etsi.org/ngn/params/xml/simservs/xcap' prefix 'ss'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} diff --git a/ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn b/ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn new file mode 100644 index 0000000..4b4458f --- /dev/null +++ b/ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn @@ -0,0 +1,79 @@ +/******************************************************************************* +* Copyright (c) 2000-2016 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/5 R4D +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: urn_3gpp_ns_cw_1_0.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Fri Mar 4 09:23:30 2016 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - cw.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "urn:3gpp:ns:cw:1.0" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module urn_3gpp_ns_cw_1_0 { + + +import from XSD all; + + +type record TEmptyType +{ + +} +with { + variant "name as uncapitalized"; +}; + + +type record TCWtype +{ + record of XSD.String attr optional, + TEmptyType communication_waiting_indication optional, + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (attr) "anyAttributes except unqualified, 'urn:3gpp:ns:cw:1.0'"; + variant (communication_waiting_indication) "name as 'communication-waiting-indication'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:3gpp:ns:cw:1.0'"; +}; + + +type TCWtype Ims_cw +with { + variant "name as 'ims-cw'"; + variant "element"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'urn:3gpp:ns:cw:1.0' prefix 'cw10'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} diff --git a/ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn b/ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn new file mode 100644 index 0000000..3d7b018 --- /dev/null +++ b/ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn @@ -0,0 +1,223 @@ +/******************************************************************************* +* Copyright (c) 2000-2016 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/5 R4D +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: urn_ietf_params_xml_ns_common_policy.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Fri Mar 4 09:23:30 2016 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - common-policy.xsd +// /* xml version = "1.0" */ +// /* targetnamespace = "urn:ietf:params:xml:ns:common-policy" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module urn_ietf_params_xml_ns_common_policy { + + +import from XSD all; + + +/* /ruleset */ + + +type record Ruleset +{ + record of RuleType rule_list +} +with { + variant "name as uncapitalized"; + variant "element"; + variant (rule_list) "untagged"; + variant (rule_list[-]) "name as 'rule'"; +}; + + +/* /ruleset/rule */ + + +type record RuleType +{ + XSD.ID id, + ConditionsType conditions optional, + ExtensibleType actions optional, + ExtensibleType transformations optional +} +with { + variant "name as uncapitalized"; + variant (id) "attribute"; +}; + + +/* //rule/conditions */ + + +type record ConditionsType +{ + record length(1 .. infinity) of union { + record length(0 .. 1) of IdentityType identity_list, + record length(1) of SphereType sphere_list, + record length(1) of ValidityType validity_list, + record length(1 .. infinity) of XSD.String elem_list + } choice_list +} +with { + variant "name as uncapitalized"; + variant (choice_list) "untagged"; + variant (choice_list[-]) "untagged"; + variant (choice_list[-].identity_list) "untagged"; + variant (choice_list[-].identity_list[-]) "name as 'identity'"; + variant (choice_list[-].sphere_list) "untagged"; + variant (choice_list[-].sphere_list[-]) "name as 'sphere'"; + variant (choice_list[-].validity_list) "untagged"; + variant (choice_list[-].validity_list[-]) "name as 'validity'"; + variant (choice_list[-].elem_list) "untagged"; + variant (choice_list[-].elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:common-policy'"; +}; + + +/* //conditions/identity */ + + +type record IdentityType +{ + record length(1 .. infinity) of union { + OneType one, + ManyType many, + XSD.String elem + } choice_list +} +with { + variant "name as uncapitalized"; + variant (choice_list) "untagged"; + variant (choice_list[-]) "untagged"; + variant (choice_list[-].elem) "anyElement except unqualified, 'urn:ietf:params:xml:ns:common-policy'"; +}; + + +/* //identity/one */ + + +type record OneType +{ + XSD.AnyURI id, + XSD.String elem optional +} +with { + variant "name as uncapitalized"; + variant (id) "attribute"; + variant (elem) "anyElement except unqualified, 'urn:ietf:params:xml:ns:common-policy'"; +}; + + +/* //identity/many */ + + +type record ManyType +{ + XSD.String domain optional, + record of union { + ExceptType except_, + record length(0 .. 1) of XSD.String elem_list + } choice_list +} +with { + variant "name as uncapitalized"; + variant (domain) "attribute"; + variant (choice_list) "untagged"; + variant (choice_list[-]) "untagged"; + variant (choice_list[-].except_) "name as 'except'"; + variant (choice_list[-].elem_list) "untagged"; + variant (choice_list[-].elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:common-policy'"; +}; + + +/* //many/except */ + + +type record ExceptType +{ + XSD.String domain optional, + XSD.AnyURI id optional +} +with { + variant "name as uncapitalized"; + variant (domain) "attribute"; + variant (id) "attribute"; +}; + + +/* //conditions/sphere */ + + +type record SphereType +{ + XSD.String value_ +} +with { + variant "name as uncapitalized"; + variant (value_) "name as 'value'"; + variant (value_) "attribute"; +}; + + +/* //conditions/validity */ + + +type record ValidityType +{ + record length(1 .. infinity) of record { + XSD.DateTime from_, + XSD.DateTime until + } sequence_list +} +with { + variant "name as uncapitalized"; + variant (sequence_list) "untagged"; + variant (sequence_list[-]) "untagged"; + variant (sequence_list[-].from_) "name as 'from'"; +}; + + +/* //rule/actions or //rule/transformations */ + + +type record ExtensibleType +{ + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:common-policy'"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'urn:ietf:params:xml:ns:common-policy' prefix 'cp'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} diff --git a/ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn b/ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn new file mode 100644 index 0000000..bfa5465 --- /dev/null +++ b/ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn @@ -0,0 +1,572 @@ +/******************************************************************************* +* Copyright (c) 2000-2016 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/5 R4D +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: urn_ietf_params_xml_ns_conference_info.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Fri Mar 4 09:23:30 2016 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - CONF.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "urn:ietf:params:xml:ns:conference-info" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module urn_ietf_params_xml_ns_conference_info { + + +import from XSD all; + + +import from http_www_w3_org_XML_1998_namespace all; + + +/* This imports the xml:language definition */ + + +/* CONFERENCE ELEMENT */ + + +type Conference_type Conference_info +with { + variant "name as 'conference-info'"; + variant "element"; +}; + + +/* CONFERENCE TYPE */ + + +type record Conference_type +{ + XSD.AnyURI entity, + State_type state optional, + XSD.UnsignedInt version optional, + record of XSD.String attr optional, + Conference_description_type conference_description optional, + Host_type host_info optional, + Conference_state_type conference_state optional, + Users_type users optional, + Uris_type sidebars_by_ref optional, + Sidebars_by_val_type sidebars_by_val optional, + record of XSD.String elem_list +} +with { + variant "name as 'conference-type'"; + variant (entity) "attribute"; + variant (state) "defaultForEmpty as 'full'"; + variant (state) "attribute"; + variant (version) "attribute"; + variant (attr) "anyAttributes except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; + variant (conference_description) "name as 'conference-description'"; + variant (host_info) "name as 'host-info'"; + variant (conference_state) "name as 'conference-state'"; + variant (sidebars_by_ref) "name as 'sidebars-by-ref'"; + variant (sidebars_by_val) "name as 'sidebars-by-val'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; +}; + + +/* STATE TYPE */ + + +type enumerated State_type +{ + deleted, + full, + partial +} +with { + variant "name as 'state-type'"; +}; + + +/* CONFERENCE DESCRIPTION TYPE */ + + +type record Conference_description_type +{ + record of XSD.String attr optional, + XSD.String display_text optional, + XSD.String subject optional, + XSD.String free_text optional, + Keywords_type keywords optional, + Uris_type conf_uris optional, + Uris_type service_uris optional, + XSD.UnsignedInt maximum_user_count optional, + Conference_media_type available_media optional, + record of XSD.String elem_list +} +with { + variant "name as 'conference-description-type'"; + variant (attr) "anyAttributes except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; + variant (display_text) "name as 'display-text'"; + variant (free_text) "name as 'free-text'"; + variant (conf_uris) "name as 'conf-uris'"; + variant (service_uris) "name as 'service-uris'"; + variant (maximum_user_count) "name as 'maximum-user-count'"; + variant (available_media) "name as 'available-media'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; +}; + + +/* HOST TYPE */ + + +type record Host_type +{ + record of XSD.String attr optional, + XSD.String display_text optional, + XSD.AnyURI web_page optional, + Uris_type uris optional, + record of XSD.String elem_list +} +with { + variant "name as 'host-type'"; + variant (attr) "anyAttributes except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; + variant (display_text) "name as 'display-text'"; + variant (web_page) "name as 'web-page'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; +}; + + +/* CONFERENCE STATE TYPE */ + + +type record Conference_state_type +{ + record of XSD.String attr optional, + XSD.UnsignedInt user_count optional, + XSD.Boolean active optional, + XSD.Boolean locked optional, + record of XSD.String elem_list +} +with { + variant "name as 'conference-state-type'"; + variant (attr) "anyAttributes except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; + variant (user_count) "name as 'user-count'"; + //variant (active) "text 'true' as '1'"; + //variant (active) "text 'false' as '0'"; + //variant (locked) "text 'true' as '1'"; + //variant (locked) "text 'false' as '0'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; +}; + + +/* CONFERENCE MEDIA TYPE */ + + +type record Conference_media_type +{ + record of XSD.String attr optional, + record length(1 .. infinity) of Conference_medium_type entry_list +} +with { + variant "name as 'conference-media-type'"; + variant (attr) "anyAttributes except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; + variant (entry_list) "untagged"; + variant (entry_list[-]) "name as 'entry'"; +}; + + +/* CONFERENCE MEDIUM TYPE */ + + +type record Conference_medium_type +{ + XSD.String label_, + record of XSD.String attr optional, + XSD.String display_text optional, + XSD.String type_, + Media_status_type status optional, + record of XSD.String elem_list +} +with { + variant "name as 'conference-medium-type'"; + variant (label_) "name as 'label'"; + variant (label_) "attribute"; + variant (attr) "anyAttributes except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; + variant (display_text) "name as 'display-text'"; + variant (type_) "name as 'type'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; +}; + + +/* URIs TYPE */ + + +type record Uris_type +{ + State_type state optional, + record of XSD.String attr optional, + record length(1 .. infinity) of Uri_type entry_list +} +with { + variant "name as 'uris-type'"; + variant (state) "defaultForEmpty as 'full'"; + variant (state) "attribute"; + variant (attr) "anyAttributes except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; + variant (entry_list) "untagged"; + variant (entry_list[-]) "name as 'entry'"; +}; + + +/* URI TYPE */ + + +type record Uri_type +{ + record of XSD.String attr optional, + XSD.AnyURI uri, + XSD.String display_text optional, + XSD.String purpose optional, + Execution_type modified optional, + record of XSD.String elem_list +} +with { + variant "name as 'uri-type'"; + variant (attr) "anyAttributes except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; + variant (display_text) "name as 'display-text'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; +}; + + +/* KEYWORDS TYPE */ + + +type record of XSD.String Keywords_type +with { + variant "name as 'keywords-type'"; + variant "list"; +}; + + +/* USERS TYPE */ + + +type record Users_type +{ + State_type state optional, + record of XSD.String attr optional, + record of User_type user_list, + record of XSD.String elem_list +} +with { + variant "name as 'users-type'"; + variant (state) "defaultForEmpty as 'full'"; + variant (state) "attribute"; + variant (attr) "anyAttributes except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; + variant (user_list) "untagged"; + variant (user_list[-]) "name as 'user'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; +}; + + +/* USER TYPE */ + + +type record User_type +{ + XSD.AnyURI entity optional, + State_type state optional, + record of XSD.String attr optional, + XSD.String display_text optional, + Uris_type associated_aors optional, + User_roles_type roles optional, + User_languages_type languages optional, + XSD.AnyURI cascaded_focus optional, + record of Endpoint_type endpoint_list, + record of XSD.String elem_list +} +with { + variant "name as 'user-type'"; + variant (entity) "attribute"; + variant (state) "defaultForEmpty as 'full'"; + variant (state) "attribute"; + variant (attr) "anyAttributes except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; + variant (display_text) "name as 'display-text'"; + variant (associated_aors) "name as 'associated-aors'"; + variant (cascaded_focus) "name as 'cascaded-focus'"; + variant (endpoint_list) "untagged"; + variant (endpoint_list[-]) "name as 'endpoint'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; +}; + + +/* USER ROLES TYPE */ + + +type record User_roles_type +{ + record of XSD.String attr optional, + record length(1 .. infinity) of XSD.String entry_list +} +with { + variant "name as 'user-roles-type'"; + variant (attr) "anyAttributes except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; + variant (entry_list) "untagged"; + variant (entry_list[-]) "name as 'entry'"; +}; + + +/* USER LANGUAGES TYPE */ + + +type record of XSD.Language User_languages_type +with { + variant "name as 'user-languages-type'"; + variant "list"; +}; + + +/* ENDPOINT TYPE */ + + +type record Endpoint_type +{ + XSD.String entity optional, + State_type state optional, + record of XSD.String attr optional, + XSD.String display_text optional, + Execution_type referred optional, + Endpoint_status_type status optional, + Joining_type joining_method optional, + Execution_type joining_info optional, + Disconnection_type disconnection_method optional, + Execution_type disconnection_info optional, + record of Media_type media_list, + Call_type call_info optional, + record of XSD.String elem_list +} +with { + variant "name as 'endpoint-type'"; + variant (entity) "attribute"; + variant (state) "defaultForEmpty as 'full'"; + variant (state) "attribute"; + variant (attr) "anyAttributes except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; + variant (display_text) "name as 'display-text'"; + variant (joining_method) "name as 'joining-method'"; + variant (joining_info) "name as 'joining-info'"; + variant (disconnection_method) "name as 'disconnection-method'"; + variant (disconnection_info) "name as 'disconnection-info'"; + variant (media_list) "untagged"; + variant (media_list[-]) "name as 'media'"; + variant (call_info) "name as 'call-info'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; +}; + + +/* ENDPOINT STATUS TYPE */ + + +type enumerated Endpoint_status_type +{ + alerting, + connected, + dialing_in, + dialing_out, + disconnected, + disconnecting, + muted_via_focus, + on_hold, + pending +} +with { + variant "text 'dialing_in' as 'dialing-in'"; + variant "text 'dialing_out' as 'dialing-out'"; + variant "text 'muted_via_focus' as 'muted-via-focus'"; + variant "text 'on_hold' as 'on-hold'"; + variant "name as 'endpoint-status-type'"; +}; + + +/* JOINING TYPE */ + + +type enumerated Joining_type +{ + dialed_in, + dialed_out, + focus_owner +} +with { + variant "text 'dialed_in' as 'dialed-in'"; + variant "text 'dialed_out' as 'dialed-out'"; + variant "text 'focus_owner' as 'focus-owner'"; + variant "name as 'joining-type'"; +}; + + +/* DISCONNECTION TYPE */ + + +type enumerated Disconnection_type +{ + booted, + busy, + departed, + failed +} +with { + variant "name as 'disconnection-type'"; +}; + + +/* EXECUTION TYPE */ + + +type record Execution_type +{ + record of XSD.String attr optional, + XSD.DateTime when optional, + XSD.String reason optional, + XSD.AnyURI by optional +} +with { + variant "name as 'execution-type'"; + variant (attr) "anyAttributes except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; +}; + + +/* CALL TYPE */ + + +type record Call_type +{ + record of XSD.String attr optional, + union { + Sip_dialog_id_type sip, + record of XSD.String elem_list + } choice +} +with { + variant "name as 'call-type'"; + variant (attr) "anyAttributes except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; + variant (choice) "untagged"; + variant (choice.elem_list) "untagged"; + variant (choice.elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; +}; + + +/* SIP DIALOG ID TYPE */ + + +type record Sip_dialog_id_type +{ + record of XSD.String attr optional, + XSD.String display_text optional, + XSD.String call_id, + XSD.String from_tag, + XSD.String to_tag, + record of XSD.String elem_list +} +with { + variant "name as 'sip-dialog-id-type'"; + variant (attr) "anyAttributes except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; + variant (display_text) "name as 'display-text'"; + variant (call_id) "name as 'call-id'"; + variant (from_tag) "name as 'from-tag'"; + variant (to_tag) "name as 'to-tag'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; +}; + + +/* MEDIA TYPE */ + + +type record Media_type +{ + XSD.String id, + record of XSD.String attr optional, + XSD.String display_text optional, + XSD.String type_ optional, + XSD.String label_ optional, + XSD.String src_id optional, + Media_status_type status optional, + record of XSD.String elem_list +} +with { + variant "name as 'media-type'"; + variant (id) "attribute"; + variant (attr) "anyAttributes except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; + variant (display_text) "name as 'display-text'"; + variant (type_) "name as 'type'"; + variant (label_) "name as 'label'"; + variant (src_id) "name as 'src-id'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; +}; + + +/* MEDIA STATUS TYPE */ + + +type enumerated Media_status_type +{ + inactive, + recvonly, + sendonly, + sendrecv +} +with { + variant "name as 'media-status-type'"; +}; + + +/* SIDEBARS BY VAL TYPE */ + + +type record Sidebars_by_val_type +{ + State_type state optional, + record of XSD.String attr optional, + record of Conference_type entry_list +} +with { + variant "name as 'sidebars-by-val-type'"; + variant (state) "defaultForEmpty as 'full'"; + variant (state) "attribute"; + variant (attr) "anyAttributes except unqualified, 'urn:ietf:params:xml:ns:conference-info'"; + variant (entry_list) "untagged"; + variant (entry_list[-]) "name as 'entry'"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'urn:ietf:params:xml:ns:conference-info' prefix 'tns'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} diff --git a/ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn b/ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn new file mode 100644 index 0000000..816218d --- /dev/null +++ b/ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn @@ -0,0 +1,165 @@ +/******************************************************************************* +* Copyright (c) 2000-2016 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/5 R4D +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: urn_ietf_params_xml_ns_reginfo.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Fri Mar 4 09:23:30 2016 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - regInfo.xsd +// /* xml version = "1.0" */ +// /* targetnamespace = "urn:ietf:params:xml:ns:reginfo" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module urn_ietf_params_xml_ns_reginfo { + + +import from XSD all; + + +import from http_www_w3_org_XML_1998_namespace all; + + +/* RFC 3680 clause 5.4 */ + + +/* This import brings in the XML language attribute xml:lang */ + + +type record Reginfo +{ + enumerated { + full, + partial + } state, + XSD.NonNegativeInteger version, + record of Registration registration_list, + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant "element"; + variant (state) "attribute"; + variant (version) "attribute"; + variant (registration_list) "untagged"; + variant (registration_list[-]) "name as 'registration'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:reginfo'"; +}; + + +type record Registration +{ + XSD.AnyURI aor, + XSD.String id, + enumerated { + active, + init, + terminated + } state, + record of Contact contact_list, + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant "element"; + variant (aor) "attribute"; + variant (id) "attribute"; + variant (state) "attribute"; + variant (contact_list) "untagged"; + variant (contact_list[-]) "name as 'contact'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:reginfo'"; +}; + + +type record Contact +{ + XSD.String callid optional, + XSD.UnsignedLong cseq optional, + XSD.UnsignedLong duration_registered optional, + enumerated { + created, + deactivated, + expired, + probation, + refreshed, + registered, + rejected, + shortened, + unregistered + } event, + XSD.UnsignedLong expires optional, + XSD.String id, + XSD.String q optional, + XSD.UnsignedLong retry_after optional, + enumerated { + active, + terminated + } state, + XSD.AnyURI uri, + record { + Lang lang optional, + XSD.String base + } display_name optional, + record of record { + XSD.String name, + XSD.String base + } unknown_param_list, + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant "element"; + variant (callid) "attribute"; + variant (cseq) "attribute"; + variant (duration_registered) "name as 'duration-registered'"; + variant (duration_registered) "attribute"; + variant (event) "attribute"; + variant (expires) "attribute"; + variant (id) "attribute"; + variant (q) "attribute"; + variant (retry_after) "name as 'retry-after'"; + variant (retry_after) "attribute"; + variant (state) "attribute"; + variant (display_name) "name as 'display-name'"; + variant (display_name.lang) "attribute"; + variant (display_name.base) "untagged"; + variant (unknown_param_list) "untagged"; + variant (unknown_param_list[-]) "name as 'unknown-param'"; + variant (unknown_param_list[-].name) "attribute"; + variant (unknown_param_list[-].base) "untagged"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:reginfo'"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'urn:ietf:params:xml:ns:reginfo' prefix 'tns'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} diff --git a/ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn b/ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn new file mode 100644 index 0000000..df54f83 --- /dev/null +++ b/ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn @@ -0,0 +1,194 @@ +/******************************************************************************* +* Copyright (c) 2000-2016 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/5 R4D +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: urn_ietf_params_xml_ns_resource_lists.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Fri Mar 4 09:23:30 2016 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - ResourceList.xsd +// /* xml version = "1.0" encoding = "UTF-8" standalone = "no" */ +// /* targetnamespace = "urn:ietf:params:xml:ns:resource-lists" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module urn_ietf_params_xml_ns_resource_lists { + + +import from XSD all; + + +import from http_www_w3_org_XML_1998_namespace all; + + +type record ListType +{ + XSD.String name optional, + record of XSD.String attr optional, + Display_nameType display_name optional, + record of record { + union { + record { + XSD.String name optional, + record of XSD.String attr optional, + Display_nameType display_name optional, + record of record { + union { + record { + XSD.String name optional, + record of XSD.String attr optional, + record of XSD.String elem_list + } list, + ExternalType external_, + EntryType entry, + Entry_refType entry_ref + } choice + } sequence_list, + record of XSD.String elem_list + } list, + ExternalType external_, + EntryType entry, + Entry_refType entry_ref + } choice + } sequence_list, + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (name) "attribute"; + variant (attr) "anyAttributes except unqualified, 'urn:ietf:params:xml:ns:resource-lists'"; + variant (display_name) "name as 'display-name'"; + variant (sequence_list) "untagged"; + variant (sequence_list[-]) "untagged"; + variant (sequence_list[-].choice) "untagged"; + variant (sequence_list[-].choice.list.name) "attribute"; + variant (sequence_list[-].choice.list.attr) "anyAttributes except unqualified, 'urn:ietf:params:xml:ns:resource-lists'"; + variant (sequence_list[-].choice.list.display_name) "name as 'display-name'"; + variant (sequence_list[-].choice.list.sequence_list) "untagged"; + variant (sequence_list[-].choice.list.sequence_list[-]) "untagged"; + variant (sequence_list[-].choice.list.sequence_list[-].choice) "untagged"; + variant (sequence_list[-].choice.list.sequence_list[-].choice.list.name) "attribute"; + variant (sequence_list[-].choice.list.sequence_list[-].choice.list.attr) "anyAttributes except unqualified, 'urn:ietf:params:xml:ns:resource-lists'"; + variant (sequence_list[-].choice.list.sequence_list[-].choice.list.elem_list) "untagged"; + variant (sequence_list[-].choice.list.sequence_list[-].choice.list.elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:resource-lists'"; + variant (sequence_list[-].choice.list.sequence_list[-].choice.external_) "name as 'external'"; + variant (sequence_list[-].choice.list.sequence_list[-].choice.entry_ref) "name as 'entry-ref'"; + variant (sequence_list[-].choice.list.elem_list) "untagged"; + variant (sequence_list[-].choice.list.elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:resource-lists'"; + variant (sequence_list[-].choice.external_) "name as 'external'"; + variant (sequence_list[-].choice.entry_ref) "name as 'entry-ref'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:resource-lists'"; +}; + + +type record EntryType +{ + XSD.AnyURI uri, + record of XSD.String attr optional, + record { + Lang lang optional, + XSD.String base + } display_name optional, + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (uri) "attribute"; + variant (attr) "anyAttributes except unqualified, 'urn:ietf:params:xml:ns:resource-lists'"; + variant (display_name) "name as 'display-name'"; + variant (display_name.lang) "attribute"; + variant (display_name.base) "untagged"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:resource-lists'"; +}; + + +type record Entry_refType +{ + XSD.AnyURI ref, + record of XSD.String attr optional, + Display_nameType display_name optional, + record of XSD.String elem_list +} +with { + variant "name as 'entry-refType'"; + variant (ref) "attribute"; + variant (attr) "anyAttributes except unqualified, 'urn:ietf:params:xml:ns:resource-lists'"; + variant (display_name) "name as 'display-name'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:resource-lists'"; +}; + + +type record ExternalType +{ + XSD.AnyURI anchor optional, + record of XSD.String attr optional, + Display_nameType display_name optional, + record of XSD.String elem_list +} +with { + variant "name as uncapitalized"; + variant (anchor) "attribute"; + variant (attr) "anyAttributes except unqualified, 'urn:ietf:params:xml:ns:resource-lists'"; + variant (display_name) "name as 'display-name'"; + variant (elem_list) "untagged"; + variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:resource-lists'"; +}; + + +type record Resource_lists +{ + record of record { + ListType list + } sequence_list +} +with { + variant "name as 'resource-lists'"; + variant "element"; + variant (sequence_list) "untagged"; + variant (sequence_list[-]) "untagged"; +}; + + +type record Display_nameType +{ + Lang lang optional, + XSD.String base +} +with { + variant "name as 'display-nameType'"; + variant (lang) "attribute"; + variant (base) "untagged"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'urn:ietf:params:xml:ns:resource-lists'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} diff --git a/ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn b/ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn new file mode 100644 index 0000000..2d6ed99 --- /dev/null +++ b/ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn @@ -0,0 +1,98 @@ +/******************************************************************************* +* Copyright (c) 2000-2016 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/5 R4D +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v1.0 +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v10.html +*******************************************************************************/ +// +// File: urn_oma_xml_xdm_common_policy.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Fri Mar 4 09:23:30 2016 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - xdm_commonPolicy-v1_0.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "urn:oma:xml:xdm:common-policy" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module urn_oma_xml_xdm_common_policy { + + +import from XSD all; + + +/* OMA specific "conditions" child elements */ + + +type EmptyType Other_identity +with { + variant "name as 'other-identity'"; + variant "element"; +}; + + +type record External_list +{ + record of AnchorType entry_list +} +with { + variant "name as 'external-list'"; + variant "element"; + variant (entry_list) "untagged"; + variant (entry_list[-]) "name as 'entry'"; +}; + + +type EmptyType Anonymous_request +with { + variant "name as 'anonymous-request'"; + variant "element"; +}; + + +type record AnchorType +{ + XSD.AnyURI anc optional, + record of XSD.String attr optional +} +with { + variant "name as uncapitalized"; + variant (anc) "attribute"; + variant (attr) "anyAttributes"; +}; + + +type record EmptyType +{ + +} +with { + variant "name as uncapitalized"; +}; + + +} +with { + encode "XML"; + variant "namespace as 'urn:oma:xml:xdm:common-policy'"; + variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; + variant "elementFormQualified"; +} diff --git a/vagrant/provisioner.bash b/vagrant/provisioner.bash index b8aa5c4..869c9d4 100755 --- a/vagrant/provisioner.bash +++ b/vagrant/provisioner.bash @@ -78,8 +78,9 @@ git clone https://forge.etsi.org/gitlab/emergency-communications/NG112 ./STF549_ cd /home/vagrant/dev/STF549_Ng112 git checkout TTCN_3_Developments cd /home/vagrant/dev/STF549_Ng112/ttcn -svn co --username svnusers --password svnusers --non-interactive https://oldforge.etsi.org/svn/LibSip/trunk ./LibSip \ -svn co --username svnusers --password svnusers --non-interactive https://oldforge.etsi.org/svn/LibCommon/trunk/ttcn ./LibCommon/ttcn \ +svn co --username svnusers --password svnusers --non-interactive https://oldforge.etsi.org/svn/LibSip/trunk ./LibSip +svn co --username svnusers --password svnusers --non-interactive https://oldforge.etsi.org/svn/LibCommon/trunk/ttcn ./LibCommon +svn co --username svnusers --password svnusers --non-interactive --trust-server-cert https://oldforge.etsi.org/svn/LibIts/branches/STF525/ttcn/Http ./LibHttp cd /home/vagrant/dev/STF549_Ng112/scripts chmod 775 *.bash devenv.bash.* cd /home/vagrant/dev/STF549_Ng112/docker -- GitLab From 355afd5a2dfe8bc920c0ddee906e82d68fc2bdbc Mon Sep 17 00:00:00 2001 From: garciay Date: Thu, 12 Jul 2018 05:33:27 +0000 Subject: [PATCH 50/72] Add LibCommon patch for TITAN --- scripts/merge_emcom_project.bash | 4 +- scripts/update_emcom_project.bash | 10 +- .../LibCommon_Sync.ttcn | 1358 +++++++++++++++++ 3 files changed, 1366 insertions(+), 6 deletions(-) create mode 100644 ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn diff --git a/scripts/merge_emcom_project.bash b/scripts/merge_emcom_project.bash index 67d78b0..6ca93da 100755 --- a/scripts/merge_emcom_project.bash +++ b/scripts/merge_emcom_project.bash @@ -15,7 +15,7 @@ if [ ! -d ${VAGRANT_DIR} ] then exit -1 else - VAGRANT_DIR=$VAGRANT_DIR/to_be_merged + VAGRANT_DIR=${VAGRANT_DIR}/to_be_merged if [ -d ${VAGRANT_DIR} ] then rm -f ${VAGRANT_DIR}/* @@ -23,12 +23,12 @@ else mkdir ${VAGRANT_DIR} fi fi +chmod 775 ${VAGRANT_DIR} # Execution path RUN_PATH="${0%/*}" PATH_DEV_EMCOM=`pwd`/../etsi_emcom - # Update ETSI Framework files echo 'Merging ETSI Framework files' FWK_SRC_PATH=${SRC_EMCOM_PATH}/ccsrc diff --git a/scripts/update_emcom_project.bash b/scripts/update_emcom_project.bash index a6e54d8..6c68b5d 100755 --- a/scripts/update_emcom_project.bash +++ b/scripts/update_emcom_project.bash @@ -130,8 +130,7 @@ do cp ${TTCN_3_ORG_PATH}/$i/xsd/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn cp ${CC_SRC_PATH}/include/$i/*.hh ${TTCN_3_DST_PATH}/$i/include cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src - fi - if [ "$i" == "LibSip" ] + elif [ "$i" == "LibSip" ] then cp ${TTCN_3_ORG_PATH}/$i/ttcn/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn cp ${TTCN_3_ORG_PATH}/$i/xsd/*.xsd ${TTCN_3_DST_PATH}/$i/xsd @@ -143,8 +142,7 @@ do cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src # Patch TITAN due to issues in xsd2ttcn cp ${SRC_EMCOM_PATH}/ttcn/patch_sip_titan/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn - fi - if [ "$i" == "LibHttp" ] + elif [ "$i" == "LibHttp" ] then cp ${TTCN_3_ORG_PATH}/$i/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn cp ${CC_SRC_PATH}/EncDec/$i/*_Encdec.cc ${TTCN_3_DST_PATH}/$i/src @@ -154,6 +152,10 @@ do cp ${CC_SRC_PATH}/src/$i/*.cc ${TTCN_3_DST_PATH}/$i/src # Patch due to svn/gitlab moving cp ${SRC_EMCOM_PATH}/ttcn/patch_lib_http/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn + elif [ "$i" == "LibCommon" ] + then + # Patch TITAN due to issues in xsd2ttcn + cp ${SRC_EMCOM_PATH}/ttcn/patch_lib_common_titan/*.ttcn ${TTCN_3_DST_PATH}/$i/ttcn fi done diff --git a/ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn b/ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn new file mode 100644 index 0000000..38e29df --- /dev/null +++ b/ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn @@ -0,0 +1,1358 @@ +/** + * @author ETSI + * @version $URL: https://oldforge.etsi.org/svn/LibCommon/tags/v1.4.0/ttcn/LibCommon_Sync.ttcn $ + * $Id: LibCommon_Sync.ttcn 66 2017-03-06 09:59:41Z filatov $ + * @desc This module implements _one_ generic synchronization mechanism + * for TTCN-3 test cases with one or more test components. + * Key concept is here that one test component acts as a + * synchronization server which listens and triggers one or more + * synchronization clients. It is recomended to use the MTC always as + * the synchronization server but in theory also a PTC can act as such + * a server.

+ * This synchronization is used by calling a function on + * the server test component to wait for a desired amount of clients + * to notify the server that they have reached a specific synchronization + * point. Each client test component must call another + * function to perform this notification.

+ * In the event that a client is not able to reach a synchronization + * point the server sends out a signal to all clients to abort the + * test case. This signal is a STOP message which can be caught by + * a test component default which in turn can then run a proper + * shut down behavior based on the current state of the test + * component.

+ * Note that this synchronization mechanism can also be used + * in a special mode called "self synchronization" when a test case + * only has one test component. Here, the test component in essence + * acts as a server and client at the same time. The main benefit of + * using self synchoronization is that the same shutdown mechanisms + * can also be reused fomr the multi component test cases.

+ * This module contains a lot of TTCN-3 definitions. It has been + * structured into tree main groups to help the user to identify + * quickly relevant TTCN-3 definitions. For rookie users of this + * module basicUserRelevantDefinitions should offer all the needed + * definitions. Advanced users can consider use of definitions in + * advancedUserRelevantDefinitions. Finally, internalDefinitions + * are definitions which are required for the module to work + * properly but do not need to be used in your code. Remember that + * the main motiviation of this sychronization module is to offer + * are _simple_ user interface. Practice has shown that when writing + * actual test component behavior _only a handful_ of functions + * usually wind up being used! Also check the synchronization examples + * module for example uses of this synchronization mechanism.

+ * The invocation of the sync functions is also closely tied + * to the verdict control functions which should also be reviewed + * prior to using this module.

+ * This module has been derived from EtsiCommon_Synchronization + * which was created in ETSIs STF256/276. It has been kept + * intentionally separate to avoid conflicts with future ETSI + * test suite releases. + * @see LibCommon_Sync.basicUserRelevantDefinitions + * @see LibCommon_Sync.advancedUserRelevantDefinitions + * @remark End users should be aware that any changes made to the in + * definitions this module may be overwritten in future releases. + * End users are encouraged to contact the distributers of this + * module regarding their modifications or additions so that future + * updates will include your changes. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * + */ +module LibCommon_Sync { + + //Common + import from LibCommon_BasicTypesAndValues { type UInt } ; + import from LibCommon_AbstractData all; + import from LibCommon_VerdictControl all; + + group basicUserRelevantDefinitions { + + group importantSyncTypeDefinitions { + + group compTypeRelated { + + /** + * @desc This type is used to be the base of any synchronization + * behavior which is to be executed on a sync server + * component. The test component which acts as a + * sync server in a test case must NOT directly use + * this component type in its runs on clause! + * Note that server synchronization functions may be + * invoked by a test component as long as its + * component type is type compatible to this component + * type definition! + */ + type component BaseSyncComp { + port SyncPort syncPort; + timer tc_sync := PX_TSYNC_TIME_LIMIT; + } + + /** + * @desc This type is used to define any synchronization + * behavior which is to be executed on a sync server + * component. The test component which acts as a + * sync server in a test case may - but does + * not have to - directly use this component type its + * runs on clause. + * Note that server synchronization functions may be + * invoked by a test component as long as its + * component type is type compatible to this component + * type definition! + */ + type component ServerSyncComp extends BaseSyncComp { + timer tc_shutDown := PX_TSHUT_DOWN_TIME_LIMIT; + } + + /** + * @desc This type is used to define any synchronization + * behavior which is to be executed on a sync client + * component. The test component(s) which act as a + * sync client in a test case may - but do not have + * to - directly use this component type their runs + * on clause. + * Note that server synchronization functions may be + * invoked by a test component as long as its + * component type is type compatible to this component + * type definition! + */ + type component ClientSyncComp extends BaseSyncComp { + var StringStack v_stateStack:= c_initStringStack; + var TestcaseStep vc_testcaseStep := e_preamble; + } + + /** + * @desc This type is used to define any synchronization + * behavior which is relevant to non-concurrent test + * cases. + * Note that self synchronization functions may be + * invoked by a test component as long as its + * component type is type compatible to this component + * type definition! + * Note also that this type is type compatible to the + * ClientSyncComp type so that shutdown altsteps from + * concurrent test cases can also be reused in single + * component test cases! + * @see LibCommon_Sync.ClientSyncComp + */ + type component SelfSyncComp extends ClientSyncComp { + port SyncPort syncSendPort; + } + + /** + * @desc This port type must be imported into test suites + * when defining test component types which are + * type compatible to a synchronization component + * type + * @see LibCommon_Sync.SelfSyncComp + * @see LibCommon_Sync.ServerSyncComp + * @see LibCommon_Sync.ClientSyncComp + */ + type port SyncPort message { + inout SyncCmd + } with { + extension "internal" + } + + + /** + * @desc Describes in which step of execution is the testcase + */ + type enumerated TestcaseStep { + e_preamble, + e_testBody, + e_postamble + } + + } // end compTypeRelated + + group standardSyncPointNames { + const charstring c_prDone := "preambleDone"; + const charstring c_poDone := "postambleDone"; + const charstring c_tbDone := "testBodyDone"; + const charstring c_initDone := "initDone"; + } + + } // end group importantSyncTypeDefinitions + + group syncCompTestConfiguration { + + /** + * @desc Calls self connect function if invoking + * component is the MTC or otherwise connects the client + * the server. This function allows to implement preambles + * in a way that they can be used by test components + * in both non-concurrent as well as concurrent test + * cases! + * @remark This function should _not_ be called if the MTC + * acts as a client (and not a server) in a concurrent + * test case. In this case f_connect4ClientSync + * should be used instead. + * @see LibCommon_Sync.f_connect4SelfSync + * @see LibCommon_Sync.f_connect4ClientSync + */ + function f_connect4SelfOrClientSync() + runs on SelfSyncComp { + if ( self == mtc ) { + f_connect4SelfSync(); + } else { + f_connect4ClientSync(); + } + } + + /** + * @desc Calls self connect function if the invoking + * component is the MTC or otherwise disconnects the client + * from the server. This function allows to implement + * postambles in a way that they can be used in both + * non-concurrent as well as concurrent test cases. + * @remark This function should _not_ be called if the MTC + * acts as a client (and not a server) in a concurrent + * test case. In this case f_disconnect4ClientSync + * should be used instead. + * @see LibCommon_Sync.f_disconnect4SelfSync + * @see LibCommon_Sync.f_disconnect4ClientSync + */ + function f_disconnect4SelfOrClientSync() + runs on SelfSyncComp { + if ( self == mtc ) { + f_disconnect4SelfSync(); + } else { + f_disconnect4ClientSync(); + } + } + + } // end group syncCompTestConfiguration + + group syncFunctions { + + /** + * @desc Implements synchronization of 2 clients from server side + * on one or more synchronization points. + * If problem occurs, then server sends STOP to all clients. + * Waits for PX_TSYNC_TIME_LIMIT to let clients + * finish executing their behavior until this + * synchronization point. After passing all synchronization + * points successfuly the server waits for all clients + * to stop. + * See f_serverSyncClientsTimed for overwriting this + * the timing constraint! + * This function sets the server component verdict. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.f_serverSyncClientsTimed + * @see LibCommon_Sync.f_serverWaitForAllClientsToStop + * @param p_syncPointIds list of synchronization point name/ids + */ + function f_serverSync2ClientsAndStop( in SyncPointList p_syncPointIds ) + runs on ServerSyncComp { + f_serverSyncNClientsAndStop(2, p_syncPointIds); + } + + /** + * @desc Implements synchronization of 3 clients from server side + * on one or more synchronization points. + * If problem occurs, then server sends STOP to all clients. + * Waits for PX_TSYNC_TIME_LIMIT to let clients + * finish executing their behavior until this + * synchronization point. After passing all synchronization + * points successfuly the server waits for all clients + * to stop. + * See f_serverSyncClientsTimed for overwriting this + * the timing constraint! + * This function sets the server component verdict. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.f_serverSyncClientsTimed + * @see LibCommon_Sync.f_serverWaitForAllClientsToStop + * @param p_syncPointIds list of synchronization point name/ids + */ + function f_serverSync3ClientsAndStop( in SyncPointList p_syncPointIds ) + runs on ServerSyncComp { + f_serverSyncNClientsAndStop(3, p_syncPointIds); + } + + /** + * @desc Implements synchronization of 4 clients from server side + * on one or more synchronization points. + * If problem occurs, then server sends STOP to all clients. + * Waits for PX_TSYNC_TIME_LIMIT to let clients + * finish executing their behavior until this + * synchronization point. After passing all synchronization + * points successfuly the server waits for all clients + * to stop. + * See f_serverSyncClientsTimed for overwriting this + * the timing constraint! + * This function sets the server component verdict. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.f_serverSyncClientsTimed + * @see LibCommon_Sync.f_serverWaitForAllClientsToStop + * @param p_syncPointIds list of synchronization point name/ids + */ + function f_serverSync4ClientsAndStop( in SyncPointList p_syncPointIds ) + runs on ServerSyncComp { + f_serverSyncNClientsAndStop(4, p_syncPointIds); + } + + /** + * @desc Implements synchronization of N clients from server side + * on one or more synchronization points. + * If problem occurs, then server sends STOP to all clients. + * Waits for PX_TSYNC_TIME_LIMIT to let clients + * finish executing their behavior until this + * synchronization point. After passing all synchronization + * points successfuly the server waits for all clients + * to stop. + * See f_serverSyncClientsTimed for overwriting this + * the timing constraint! + * This function sets the server component verdict. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.f_serverSyncClientsTimed + * @see LibCommon_Sync.f_serverWaitForAllClientsToStop + * @param p_numClients number of synchronization clients + * @param p_syncPointIds list of synchronization point name/ids + */ + function f_serverSyncNClientsAndStop ( + in UInt p_numClients, + in SyncPointList p_syncPointIds ) + runs on ServerSyncComp { + var integer i, v_noOfSyncIds := sizeof(p_syncPointIds); + for ( i := 0; i < v_noOfSyncIds; i := i+1 ) { + f_serverSyncClientsTimed ( + p_numClients, + valueof(p_syncPointIds[i]), + PX_TSYNC_TIME_LIMIT ); + } + f_serverWaitForAllClientsToStop(); + } + + /** + * @desc Implements synchronization of 2 clients and 1 UT from server side + * on one or more synchronization points. + * If problem occurs, then server sends STOP to all clients. + * Waits for PX_TSYNC_TIME_LIMIT to let clients + * finish executing their behavior until this + * synchronization point. After passing all synchronization + * points successfuly the server waits for all clients + * to stop. + * See f_serverSyncClientsTimed for overwriting this + * the timing constraint! + * This function sets the server component verdict. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.f_serverSyncClientsTimed + * @see LibCommon_Sync.f_serverWaitForAllClientsToStop + * @param p_syncPointIds list of synchronization point name/ids + */ + function f_serverSync2ClientsUtAndStop( in SyncPointList p_syncPointIds ) + runs on ServerSyncComp { + var integer i, v_noOfSyncIds := sizeof(p_syncPointIds); + for ( i := 0; i < v_noOfSyncIds; i := i+1 ) { + f_serverSyncClientsTimed(3,valueof(p_syncPointIds[i]), PX_TSYNC_TIME_LIMIT); + } + f_serverWaitForAllClientsToStop(); + } + + /** + * @desc Calls either self synchronization function if + * invoking component is the MTC, otherwise + * calls client synchronization. After that it + * sets the verdict based on the specified return code. + * This function allows to implement TTCN-3 functions + * in a way that they can be used in both non-concurrent + * as well as concurrent test cases. + * @remark This function should _not_ be called if the MTC + * acts as a client (and not a server) in a concurrent + * test case. In this case f_clientSyncAndVerdict + * should be used instead. + * @param p_syncPoint Synchronization point name/id + * @param p_ret Current behavior execution status + * @see LibCommon_Sync.f_clientSyncAndVerdict + * @see LibCommon_VerdictControl.f_setVerdict + */ + function f_selfOrClientSyncAndVerdict( in charstring p_syncPoint, + in FncRetCode p_ret) + runs on SelfSyncComp { + if ( self == mtc ) { + // then assume we are running non-conurrent test case + f_selfSyncAndVerdict(p_syncPoint, p_ret); + } else { + f_clientSyncAndVerdict(p_syncPoint, p_ret); + } + } + + /** + * @desc Calls either self synchronization function if + * invoking component is the MTC, otherwise + * calls client synchronization. After that it + * sets a preamble specific verdict based on the + * specified return code. + * This function allows to implement TTCN-3 functions + * in a way that they can be used in both non-concurrent + * as well as concurrent test cases. + * @remark This function should _not_ be called if the MTC + * acts as a client (and not a server) in a concurrent + * test case. In this case f_clientSyncAndVerdictPreamble + * should be used instead. + * @param p_syncPoint Synchronization point name/id + * @param p_ret Current behavior execution status + * @see LibCommon_Sync.f_clientSyncAndVerdict + * @see LibCommon_VerdictControl.f_setVerdictPreamble + */ + function f_selfOrClientSyncAndVerdictPreamble( in charstring p_syncPoint, + in FncRetCode p_ret) + runs on SelfSyncComp { + if ( self == mtc ) { + // then assume we are running non-conurrent test case + f_selfSyncAndVerdictPreamble(p_syncPoint, p_ret); + } else { + f_clientSyncAndVerdictPreamble(p_syncPoint, p_ret); + } + } + + /** + * @desc Calls either self synchronization function if + * invoking component is the MTC, otherwise + * calls client synchronization. After that it + * sets a preamble specific verdict based on the + * specified return code. + * This function allows to implement TTCN-3 functions + * in a way that they can be used in both non-concurrent + * as well as concurrent test cases. + * @remark This function should _not_ be called if the MTC + * acts as a client (and not a server) in a concurrent + * test case. In this case f_clientSyncAndVerdictTestBody + * should be used instead. + * @param p_syncPoint Synchronization point name/id + * @param p_ret Current behavior execution status + * @see LibCommon_Sync.f_clientSyncAndVerdict + * @see LibCommon_VerdictControl.f_setVerdictPreamble + */ + function f_selfOrClientSyncAndVerdictTestBody( in charstring p_syncPoint, + in FncRetCode p_ret) + runs on SelfSyncComp { + if ( self == mtc ) { + // then assume we are running non-conurrent test case + f_selfSyncAndVerdictTestBody(p_syncPoint, p_ret); + } else { + f_clientSyncAndVerdictTestBody(p_syncPoint, p_ret); + } + } + + /** + * @desc Function kept for backward compatibility + * @see f_selfOrClientSyncAndVerdictPreamble + * + */ + function f_selfOrClientSyncAndVerdictPR( in charstring p_syncPoint, + in FncRetCode p_ret) + runs on SelfSyncComp { + f_selfOrClientSyncAndVerdictPreamble(p_syncPoint, p_ret); + } + + } // end group syncFunctions + + group syncCompStateHandling { + + /** + * + * @desc This function updates the state (stack) of a + * sync client or self sync component. This stack is + * key in the shutdown handling of test components. + * It adds the new state name to the top of the + * sync component stack of states. + * The state will only be added in case of a current + * execution status of e_success. + * @param p_newSyncCompState Name of state which was attempted to be reached. + * @param p_ret Current behavior execution status + * @remark If the state of component changes this function must be + * _at least_ called from your test suite prior to f_selfSync + * or f_clientSync which is the only definite place for the + * shutdown default invocation! + * @see LibCommon_Sync.a_dummyShutDown + * @see LibCommon_Sync.f_selfSync + * @see LibCommon_Sync.f_clientSync + */ + function f_addSyncCompState(in charstring p_newSyncCompState, + in FncRetCode p_ret) + runs on ClientSyncComp { + if ( p_ret == e_success ) { + if ( f_isItemOnStringStack(v_stateStack,p_newSyncCompState) ) { + log("**** f_addSyncCompState: WARNING: Attempt to add state which is already on sync state stack! No additition done.****"); + } else { + f_pushStringStack(v_stateStack,p_newSyncCompState); + } + } + } // end function f_addSyncCompState + + /** + * + * @desc This function returns the top state on the sync + * state stack of a sync client or self sync + * component and removes it from the stack + * This function cna be used, e.g., in a while + * statement within a postamble or shutdown + * implementation + * @param p_state State on top of the state stack. + * @return false if state stack is empty, true otherwise + * @see LibCommon_Sync.a_dummyShutDown + */ + function f_getTopSyncCompState( out charstring p_state ) + runs on ClientSyncComp + return boolean { + if ( not f_peekStringStackTop(v_stateStack,p_state) ) { + p_state := "IDLE"; + return false; + } + f_popStringStack(v_stateStack); + return true; + } // end function f_getTopSyncCompState + + /* + * @desc This function removes the last state on the state stack + * of a sync client or self sync component. + * This stack is key in the shutdown handling of test + * components. + * @see LibCommon_Sync.a_dummyShutDown + */ + function f_popSyncCompState() + runs on ClientSyncComp { + f_popStringStack(v_stateStack); + } // end function f_popSyncCompState + + /** + * + * @desc This function returns the top state on the sync state + * stack of a sync client or self sync component. It + * does not remove it from the stack + * This stack is key in the shutdown handling of test + * components. + * @param p_state State on top of the state stack. + * @return false if state stack is empty, true otherwise + * @see LibCommon_Sync.a_dummyShutDown + */ + function f_peekTopSyncCompState(out charstring p_state) + runs on ClientSyncComp + return boolean { + return f_peekStringStackTop(v_stateStack,p_state); + } // end function f_peekTopSyncCompState + + /** + * @desc This function checks if the sync state stack + * of a sync client or self sync component is empty. + * This stack is key in the shutdown handling of test + * components. + * @see LibCommon_Sync.a_dummyShutDown + */ + function f_isSyncCompStateStackEmpty() + runs on ClientSyncComp + return boolean { + return f_isStringStackEmpty(v_stateStack); + } // end function f_isSyncCompStateStackEmpty + + } // end group syncCompStateHandling + + group shutDownAltsteps { + + /** + * @desc This is an example of a shutdown altstep which can be + * used as a "template" for a interface specific shutdown + * altstep or possily as a first temporary solution in + * test case development.

+ * This altstep shall be activated as a default as the + * first statement in each test case function which drives + * an interface, i.e., in MTC behavior of single component + * and in each client behavior of multi component test + * cases.
+ * The required behavior from this altstep is to:

+ * 1) expect the STOP either via the test component + * syncPort

+ * 2) upon its arrival it should shut down the SUT + * gracefully based on the current component state

+ * The current component state should have been + * previously kept uptodate from a test suite via the + * f_addSyncCompState function. This default will then be + * (automatically) invoked either from within f_selfSync + * or f_clientSync.
+ * Note that shutdown defaults can be written as + * _interface specific_ - they do not need to be test case + * or test component specific! See another example of a + * shutdown altstep in the sync module. + * @see LibCommon_Sync.f_addSyncCompState + * @see LibCommon_Sync.f_selfSync + * @see LibCommon_Sync.f_clientSync + * @see LibCommon_SyncExamples.a_exampleShutDown + * @remark Your application specific shutdown altstep + * implementation(s) should _not_ be defined in this + * module but as part of your test suite or application specific + * modules. + */ + altstep a_dummyShutDown() + runs on SelfSyncComp { + [] syncPort.receive(m_syncServerStop){ + var charstring v_state := ""; + tc_sync.stop; + log("**** a_dummyShutDown: Test component received STOP signal from sync server - going to IDLE state ****"); + while ( f_getTopSyncCompState(v_state) ) { + if ( v_state == "x" ) { + // then do something + } else if ( v_state == "y" ) { + // then do something else + } + } // end while + f_disconnect4SelfOrClientSync(); + // unmap/disconnect more if needed + log("**** a_dummyShutDown: -> Test component stopping itself now! ****") ; + stop ; + } + } // end altstep a_dummyShutDown + + /** + * @desc Shutdown alstep in case the sync server is requesting shutdown. + * + * @remark User shall stop the component + */ + altstep a_shutdown() + runs on ClientSyncComp { + [] syncPort.receive(m_syncServerStop){ + tc_sync.stop ; + log("**** a_shutdown: Test component received STOP signal from MTC **** "); + } + } + + } // end group shutDownAltsteps + + } // end group basicUserRelevantDefinitions + + group advancedUserRelevantDefinitions { + + group serverRelated { + + /** + * @desc Implements synchronization of "n" clients from server + * side. If a problem occurs, then server sends STOP to + * all clients. Waits for PX_TSYNC_TIME_LIMIT to let + * clients finish executing their behavior until this + * synchronization point. See f_serverSyncClientsTimed for + * overwriting this later timing constraint! + * This function sets the server component verdict. + * @remark The use of this function requires prior connection of + * the server sync port! + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.f_serverSyncClientsTimed + * @param p_noOfClients number of clients to be synchronized + * @param p_syncId synchronization point name/id + */ + function f_serverSyncClients( in UInt p_noOfClients, in charstring p_syncId ) + runs on ServerSyncComp { + f_serverSyncClientsTimed(p_noOfClients,p_syncId, PX_TSYNC_TIME_LIMIT); + } + + /** + * @desc Implements synchronization of "n" clients from server + * side including intermediate synchronization. + * If a problem occurs, then server sends STOP to + * all clients. Waits for PX_TSYNC_TIME_LIMIT to let + * clients finish executing their behavior until this + * synchronization point. See f_serverSyncClientsTimed for + * overwriting this later timing constraint! + * This function sets the server component verdict. + * @remark The use of this function requires prior connection of + * the server sync port! + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.f_serverSyncClientsTimed + * @param p_noOfClients number of clients to be synchronized + * @param p_syncId synchronization point name/id + */ + function f_serverSyncClientsIntermediateSync( in UInt p_noOfClients, in charstring p_syncId, in UInt p_NoOfClientIntermediate, in template (present) charstring p_syncIdIntermediate ) + runs on ServerSyncComp { + f_serverSyncClientsTimedIntermediateSync(p_noOfClients,p_syncId, p_NoOfClientIntermediate, p_syncIdIntermediate, PX_TSYNC_TIME_LIMIT); + } + + /** + * @desc Handles synchronization of clients from server side. + * If problem occurs, then server sends STOP to all clients. + * This function sets the server verdict. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @param p_NoOfClients number of clients to be synchronized + * @param p_syncId synchronization point name/id + * @param p_execTimeLimit time limit given to all clients to finish the execution + * of their behavior up to this synchronization point + * @see LibCommon_Sync.f_connect4SelfOrClientSync + */ + function f_serverSyncClientsTimed(in UInt p_NoOfClients, + in charstring p_syncId, + float p_execTimeLimit ) + runs on ServerSyncComp { + f_serverSyncClientsTimedIntermediateSync(p_NoOfClients, p_syncId, 0, ?, p_execTimeLimit ) + } // end function f_serverSyncClientsTimed + + /** @desc Handles synchronization of clients from server side including + * intermediate synchronization. + * If problem occurs, then server sends STOP to all clients. + * This function sets the server verdict. + * @remark The use of this function requires prior connection of + * the server sync ports! + * @param p_NoOfClients number of clients to be synchronized + * @param p_syncId synchronization point name/id + * @param p_execTimeLimit time limit given to all clients to finish the execution + * of their behavior up to this synchronization point + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @return execution status + */ + function f_serverSyncClientsTimedIntermediateSync( in UInt p_NoOfClients, + in charstring p_syncId, in UInt p_NoOfClientIntermediate, in template (present) charstring p_syncIdIntermediate, + float p_execTimeLimit ) + runs on ServerSyncComp { + + var integer v_noOfRecvdSyncMsgs := 0, v_noOfRecvdSyncMsgsIntermediate := 0; + var boolean v_stopClients := false; + var ClientSyncCompList v_clientRefs := {}, v_clientRefsIntermediate := {}; + var ClientSyncComp v_clientRef; + + if ( p_syncId == c_prDone ) { + log("**** f_serverSyncClientsTimed: Sync server now starting PREAMBLE synchronization ... ****") ; + } else if ( p_syncId == c_tbDone ) { + log("**** f_serverSyncClientsTimed: Sync server now starting TEST BODY synchronization ... ****") ; + } else if ( p_syncId == c_initDone ) { + log("**** f_serverSyncClientsTimed: Sync server now starting UPPER TESTER synchronization ... ****") ; + } else { + log("**** f_serverSyncClientsTimed: Sync server now starting handling of next synchronization point ... ****") ; + } + tc_sync.start(p_execTimeLimit) ; + alt{ + [v_noOfRecvdSyncMsgsIntermediate != p_NoOfClientIntermediate] syncPort.receive(m_syncClientReady(p_syncIdIntermediate)) -> sender v_clientRef { + if(not f_isPresentInArray(v_clientRef, v_clientRefsIntermediate)) { + v_clientRefsIntermediate[v_noOfRecvdSyncMsgsIntermediate] := v_clientRef; + v_noOfRecvdSyncMsgsIntermediate := v_noOfRecvdSyncMsgsIntermediate + 1; + if (v_noOfRecvdSyncMsgsIntermediate == p_NoOfClientIntermediate) { + f_serverSendToAllClients(v_clientRefsIntermediate, m_syncServerReady(p_syncIdIntermediate)); + } + } + repeat; + } + [] syncPort.receive(m_syncClientReady(p_syncId)) -> sender v_clientRef { + if(not f_isPresentInArray(v_clientRef, v_clientRefs)) { + v_clientRefs[v_noOfRecvdSyncMsgs] := v_clientRef; + v_noOfRecvdSyncMsgs := v_noOfRecvdSyncMsgs + 1; + } + if ( v_noOfRecvdSyncMsgs != p_NoOfClients ) { repeat; } + } + [] syncPort.receive(m_syncClientStop) -> sender v_clientRef { + log("**** f_serverSyncClientsTimed: Sync server received STOP signal from a client - server will wait for all clients to reach their next synchronization point and then stop them! ****") ; + v_stopClients := true; + if(not f_isPresentInArray(v_clientRef, v_clientRefs)) { + v_clientRefs[v_noOfRecvdSyncMsgs] := v_clientRef; + v_noOfRecvdSyncMsgs := v_noOfRecvdSyncMsgs + 1; + } + if ( v_noOfRecvdSyncMsgs != p_NoOfClients ) { repeat; } + + } + [] syncPort.receive(m_syncClientReady(?)) -> sender v_clientRef { + log("**** f_serverSyncClientsTimed: Sync server received client sync message with incorrect synchronization point id which is currently not handled - server will stop all clients! ****") ; + v_stopClients := true; + if(not f_isPresentInArray(v_clientRef, v_clientRefs)) { + v_clientRefs[v_noOfRecvdSyncMsgs] := v_clientRef; + } + } + [] syncPort.receive(SyncCmd :? ) { + log("**** f_serverSyncClientsTimed: Sync server received (invalid) sync message from other sync server - server will stop all clients! ****") ; + v_stopClients := true; } + [] any port.receive { + // leave it to be ok to receive anything else + // in case that the user has added any non-sync ports to + // his/her server component type definition! + } + [] tc_sync.timeout{ + log("**** f_serverSyncClientsTimed: A client is not responding within specified time limit - sync server is sending stop to all clients! ****"); + v_stopClients := true; } + } //end alt + if (v_noOfRecvdSyncMsgsIntermediate != p_NoOfClientIntermediate) { + v_stopClients := true; + } + tc_sync.stop ; + if ( v_stopClients ) { + setverdict(inconc); + // then send out STOP sync msg + f_serverSendToAllClients(v_clientRefs, m_syncServerStop); + f_serverWaitForAllClientsToShutDown(); // function will never return! + } else { + setverdict(pass); + // then send out READY sync msg + f_serverSendToAllClients(v_clientRefs, m_syncServerReady(p_syncId)); + if ( p_syncId == c_prDone ) { + log("**** f_serverSyncClientsTimed: Sync server successfully passed PREAMBLE synchronization point. ****") ; + } else if ( p_syncId == c_tbDone ) { + log("**** f_serverSyncClientsTimed: Sync server successfully passed TEST BODY synchronization point. ****") ; + } else { + log("**** f_serverSyncClientsTimed: Sync server successfully passed synchronization point. ****") ; + } + } + } // end function f_serverSyncClientsTimedIntermediateSync + + /** + * @desc This function is intended only for use on the sync + * server component in concurrent TTCN-3 test cases. + * It waits for all components to finish execution within + * the PX_TSYNC_TIME_LIMIT. If a timeout occurs + * the server will stop all clients. + * This function sets the server component verdict. + */ + function f_serverWaitForAllClientsToStop() + runs on ServerSyncComp { + tc_sync.start; + alt { + [] all component.done { + tc_sync.stop; + log("**** f_serverWaitForAllClientsToStop: All sync clients have finished their execution. Sync server now terminating test case. ****") ; + } + [] tc_sync.timeout { + log("**** f_serverWaitForAllClientsToStop: Not all sync clients have finshed execution within the sync time limit. Sync server will stop test case! ****") ; + stop; + } + } // end alt + setverdict(pass); + } // end function f_serverWaitForAllClientsToStop + + } // end group serverRelated + + group clientRelated { + + /** + * @desc This function creates the connection needed to + * execute client synchronization functions + * @see LibCommon_Sync.f_clientSync + * @see LibCommon_Sync.f_clientSendStop + */ + function f_connect4ClientSync() + runs on ClientSyncComp { + connect(self:syncPort, mtc:syncPort); + }// end function f_connect4ClientSync + + /** + * @desc This function removes the connection needed + * to execute client synchronization functions + * @see LibCommon_Sync.f_clientSync + * @see LibCommon_Sync.f_clientSendStop + */ + function f_disconnect4ClientSync() + runs on ClientSyncComp { + disconnect(self:syncPort, mtc:syncPort); + }// end function f_disconnect4ClientSync + + /** + * @desc This function combines client verdict setting with its + * synchronization for use,e.g, after or within a + * test body implementation. + * Note that such premables can _not_ be reused in non- + * concurrent test cases. This can be achieved by using + * the f_selfOrClientSyncAndVerdict function instead. + * This function sets the client component verdict. + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @remark The use of this function requires prior connection + * of the client sync port! + * @see LibCommon_Sync.f_connect4ClientSync + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_VerdictControl.f_setVerdict + * @see LibCommon_Sync.f_selfOrClientSyncAndVerdict + */ + function f_clientSyncAndVerdict(in charstring p_syncId, + in FncRetCode p_ret) + runs on ClientSyncComp { + if(vc_testcaseStep == e_preamble) { + f_clientSyncAndVerdictPreamble(p_syncId, p_ret); + } else if(vc_testcaseStep == e_testBody) { + f_clientSyncAndVerdictTestBody(p_syncId, p_ret); + } + else { + f_clientSyncAndVerdictPostamble(p_syncId, p_ret); + } + } + + /** + * @desc This function combines client verdict setting with its + * synchronization for use after or within a preamble + * implementation. + * Note that such preambles can _not_ be reused in non- + * concurrent test cases. + * This function sets the client component verdict. + * @remark The use of this function requires prior connection + * of the client sync port! + * @see LibCommon_Sync.f_connect4ClientSync + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_VerdictControl.f_setVerdictPreamble + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + */ + function f_clientSyncAndVerdictPreamble(in charstring p_syncId , + FncRetCode p_ret) + runs on ClientSyncComp { + f_setVerdictPreamble(p_ret); + f_clientSync(p_syncId,p_ret); + vc_testcaseStep := e_testBody; + } + + /** + * @desc This function combines client verdict setting with its + * synchronization for use,e.g, after or within a + * test body implementation. + * Note that such premables can _not_ be reused in non- + * concurrent test cases. This can be achieved by using + * the f_selfOrClientSyncAndVerdict function instead. + * This function sets the client component verdict. + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @remark The use of this function requires prior connection + * of the client sync port! + * @see LibCommon_Sync.f_connect4ClientSync + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_VerdictControl.f_setVerdict + * @see LibCommon_Sync.f_selfOrClientSyncAndVerdict + */ + function f_clientSyncAndVerdictTestBody(in charstring p_syncId, + in FncRetCode p_ret) + runs on ClientSyncComp { + f_setVerdict(p_ret); + f_clientSync(p_syncId,p_ret); + vc_testcaseStep := e_postamble; + } + + /** + * @desc This function combines client verdict setting with its + * synchronization for use after or within a + * postamble implementation. + * Note that such prostambles can _not_ be reused in non- + * concurrent test cases. + * This function sets the client component verdict. + * @remark The use of this function requires prior connection + * of the client sync port! + * @see LibCommon_Sync.f_connect4ClientSync + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_VerdictControl.f_setVerdictPostamble + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + */ + function f_clientSyncAndVerdictPostamble(in charstring p_syncId , + in FncRetCode p_ret) + runs on ClientSyncComp { + f_setVerdictPostamble(p_ret); + f_clientSync(p_syncId,p_ret); + } + + /** + * @desc This function handles synchronization of a sync client + * with the server. In case of successful execution it sends + * a READY message to the server and waits the READY back. + * The time used for waiting is defined by PX_TSYNC_TIME_LIMIT. + * In case of a non successful execution status it + * sends a STOP message to the server. + * In both cases the receipt of a STOP message or no + * response from the server it will trigger the shutdown + * default (if activated). + * This function will set only the client verdict to INCONC + * (and stop its execution) if no STOP response is received + * from the server within the PX_TSYNC_TIME_LIMIT + * or if no shutdown default is activated. In all other + * cases the client verdict is NOT set. + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @remark The use of this function requires prior connection + * of the client sync port! + * @see LibCommon_Sync.f_connect4ClientSync + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.a_dummyShutDown + * @see LibCommon_Sync.f_clientSendStop + * @return Updated execution status + */ + function f_clientSync( in charstring p_syncId , + in FncRetCode p_ret ) + runs on ClientSyncComp + return FncRetCode{ + + if (p_ret == e_success){ + syncPort.send(m_syncClientReady(p_syncId)); + tc_sync.start; + alt{ + [] syncPort.receive(m_syncServerReady(p_syncId)){ + tc_sync.stop ; } + [] tc_sync.timeout{ + log("**** f_clientSync: Sync client did not receive message from sync server within the specified time limit - sync client will ask sync server to stop test case! ****") ; + f_clientSendStop(); } // function will not return! + } //end alt + } //end if + else { + log("**** f_clientSync: Execution status indicates that execution of test component behavior was not successful - sync client will ask sync server to stop test case! ****") ; + f_clientSendStop(); // function will not return! + } + if ( p_syncId == c_prDone ) { + log("**** f_clientSync: Sync client successfully passed PREAMBLE synchronization point. ****") ; + } else if ( p_syncId == c_tbDone ) { + log("**** f_clientSync: Sync client successfully passed TEST BODY synchronization point. ****") ; + } else { + log("**** f_clientSync: Sync client successfully passed synchronization point. ****") ; + } + return e_success ; + + } // end function f_clientSync + + /** + * @desc This function can be used to request the shutdown a + * multi component test case _prior_ to reaching a + * synchronization point. It sends a STOP message to + * the sync server and awaits then the STOP from the server + * which will trigger the shutdown default (if activated). + * This function will set the server verdict to INCONC (and + * stop the test case) if no shutdown default is activated. + * This function will set only the client verdict to INCONC + * (and stop its execution) if no STOP response is received + * from the server within the PX_TSYNC_TIME_LIMIT + * or if no shutdown default is activated. In all other + * cases the client verdict is NOT set. + * @remark The use of this function requires prior connection + * of the client sync port! + * @see LibCommon_Sync.f_connect4ClientSync + * @see LibCommon_Sync.f_connect4SelfOrClientSync + * @see LibCommon_Sync.PX_TSYNC_TIME_LIMIT + * @see LibCommon_Sync.a_dummyShutDown + */ + function f_clientSendStop() + runs on ClientSyncComp { + log("**** f_clientSendStop: Sync client requesting from server to stop test case (including itself). ****") ; + syncPort.send(m_syncClientStop) ; + tc_sync.start; + alt{ + [] tc_sync.timeout{ + log("**** f_clientSendStop: Stopping sync client without shutdown - either no shutdown default active or no stop received from server. ****") ; + setverdict(inconc); + stop ; + } + }//end alt + tc_sync.stop; + stop; // stop here if shutdown default does not stop + } + + } // end group clientRelated + + } // end group advancedUserRelevantDefinitions + + group otherSyncModuleDefinitions { + + group syncModuleparams { + /** + * + * @desc Default time limit for a sync client to reach a + * synchronization point + */ + modulepar float PX_TSYNC_TIME_LIMIT := 120.0; + + /* + * @desc Default time limit for a sync client to finish + * its execution of the shutdown default + */ + modulepar float PX_TSHUT_DOWN_TIME_LIMIT := 120.0; + } + + group otherSyncTypes { + + type record of charstring SyncPointList; + + type record of ClientSyncComp ClientSyncCompList; + + } // end group otherSyncTypes + + group otherSelfSyncRelatedDefinitions { + + /** + * @desc This function creates the connection needed to + * execute self sync functions + * @see LibCommon_Sync.f_selfSync + * @see LibCommon_Sync.f_selfSyncStop + */ + function f_connect4SelfSync() + runs on SelfSyncComp { + connect(self:syncSendPort, self:syncPort); + }// end function f_connect4SelfSync + + /** + * @desc This function removes the connection needed + * to execute self sync functions + * @see LibCommon_Sync.f_selfSync + * @see LibCommon_Sync.f_selfSyncStop + */ + function f_disconnect4SelfSync() + runs on SelfSyncComp { + disconnect(self:syncSendPort, self:syncPort); + }// end function f_disconnect4SelfSync + + /** + * @desc This function combines MTC verdict setting with self + * synchronization for use in the preamble / test body / postamble + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @see LibCommon_VerdictControl.f_setVerdict + * @see LibCommon_Sync.f_selfSync + * @see LibCommon_Sync.a_dummyShutDown + */ + function f_selfSyncAndVerdict( in charstring p_syncId, + in FncRetCode p_ret ) + runs on SelfSyncComp { + if(vc_testcaseStep == e_preamble) { + f_selfSyncAndVerdictPreamble(p_syncId, p_ret); + } else if(vc_testcaseStep == e_testBody) { + f_selfSyncAndVerdictTestBody(p_syncId, p_ret); + } + else { + f_selfSyncAndVerdictPostamble(p_syncId, p_ret); + } + } + + /** + * @desc This function combines MTC verdict setting with self + * synchronization for use after the preamble. + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @see LibCommon_VerdictControl.f_setVerdictPreamble + * @see LibCommon_Sync.f_selfSync + */ + function f_selfSyncAndVerdictPreamble( in charstring p_syncId, + in FncRetCode p_ret ) + runs on SelfSyncComp { + f_setVerdictPreOrPostamble(p_ret); + f_selfSync(p_syncId,p_ret); + vc_testcaseStep := e_testBody; + } + + /** + * @desc This function combines MTC verdict setting with self + * synchronization for use after the test body. + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @see LibCommon_VerdictControl.f_setVerdict + * @see LibCommon_Sync.f_selfSync + */ + function f_selfSyncAndVerdictTestBody( in charstring p_syncId, + in FncRetCode p_ret ) + runs on SelfSyncComp { + f_setVerdict(p_ret); + f_selfSync(p_syncId,p_ret); + vc_testcaseStep := e_postamble; + } + + /** + * @desc This function combines MTC verdict setting with self + * synchronization for use after the postamble. + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @see LibCommon_VerdictControl.f_setVerdictPostamble + * @see LibCommon_Sync.f_selfSync + */ + function f_selfSyncAndVerdictPostamble( in charstring p_syncId , + in FncRetCode p_ret ) + runs on SelfSyncComp { + f_setVerdictPreOrPostamble(p_ret); + f_selfSync(p_syncId,p_ret); + } + + /** + * @desc This function synchronizes a MTC with itself. In case + * of a non successful execution status it sends a STOP + * message to itself and invokes that way the + * shutdown default (if activated). + * This function will set the server verdict to INCONC (and + * stop the test case) if no shutdown default is activated. + * Otherwise no verdict is set. + * @remark Sync ports should be connected prior to the invocation + * of this function! + * @param p_syncId Synchronization point name/id + * @param p_ret Current behavior execution status + * @return Updated execution status + * @see LibCommon_Sync.f_connect4SelfSync + * @see LibCommon_Sync.a_dummyShutDown + */ + function f_selfSync( in charstring p_syncId , + in FncRetCode p_ret ) + runs on SelfSyncComp + return FncRetCode{ + if (p_ret != e_success){ + f_selfSyncStop() ; // function will not return! + } + if ( p_syncId == c_prDone ) { + log("**** f_selfSync: Successfully passed PREAMBLE synchronization point. ****") ; + } else if ( p_syncId == c_tbDone ) { + log("**** f_selfSync: Successfully passed TEST BODY synchronization point. ****") ; + } else { + log("**** f_selfSync: Successfully passed synchronization point. ****") ; + } + return e_success ; + }// end function f_selfSync + + /** + * @desc This function can be used to shut down a test case _prior_ + * to reaching a synchronization point. it sends a STOP + * message to itself and invokes that way the + * shutdown default (if activated). + * This function will set the server verdict to INCONC (and + * stop the test case) if no shutdown default is activated. + * Otherwise no verdict is set. + * @remark Sync ports should be connected prior to the invocation + * of this function! + * @see LibCommon_Sync.f_connect4SelfSync + */ + function f_selfSyncStop() + runs on SelfSyncComp { + + log("**** f_selfSyncStop: MTC requests to stop test case (itself). ****") ; + syncSendPort.send(m_syncServerStop) ; // this MUST be _server_ for the default to catch! + tc_sync.start(PX_TSYNC_TIME_LIMIT); + alt{ + [] tc_sync.timeout{ + log("**** f_selfSyncStop: Stopping MTC without shutdown - either no shutdown default active or missing syncPort connection ****") ; + setverdict(inconc); + stop ; + } + }//end alt + tc_sync.stop; + stop; // if shutdown default is not activated or if it does not stop + } // end function f_selfSyncStop + + } // end group otherSelfSyncRelatedDefinitions + + /** + * + * @desc The sychronization protocol is conceptually based on + * named synchronization. Each synchronization point + * has it own specific synchronization message. This + * makes each synchronization unique, and allows, e.g., to + * ensure that a server synchronizes only clients which have + * reached the same synchronization point. + */ + group syncProtocolDefinition { + + type union SyncCmd { + ClientReady clientReady, + ServerReady serverReady, + ClientStop clientStop, + ServerStop serverStop + } + + type record ClientReady { + charstring syncPointId + } + + type record ServerReady { + charstring syncPointId + } + + type record ClientStop {} + + type record ServerStop {} + + } // end group syncProtocolDefinition + + group syncMessages { + template SyncCmd m_syncClientReady( template (present) charstring p_syncId ) := { + clientReady := { p_syncId } + } + + template SyncCmd m_syncServerReady( template (present) charstring p_syncId ) := { + serverReady := { p_syncId } + } + + template SyncCmd m_syncClientStop := { + clientStop := {} + } + + template SyncCmd m_syncServerStop := { + serverStop := {} + } + + } // end group syncMessages + + group otherSyncFunctions { + + /** + * @desc Makes server send a sync message to all known clients + * @param p_clientRefs List of client references to which the message is to be send + * @param p_syncCmd The actual synchronization message to be sent out + */ + function f_serverSendToAllClients( in ClientSyncCompList p_clientRefs, + in template (value) SyncCmd p_syncCmd) + runs on ServerSyncComp { + var integer i:=0; + for (i:=0; i< sizeof(p_clientRefs); i:=i+1 ){ + syncPort.send(p_syncCmd) to valueof(p_clientRefs[i]); + } + } // end function f_serverSendToAllClients + + /** + * @desc This function is intended only for use on server in concurrent + * TTCN-3 test cases. It waits for all components to shut down + * within the PX_TSHUT_DOWN_TIME_LIMIT. If a timeout occurs + * it aborts the test case (no matter how far clients got with their + * shutdown). + * This function sets the server verdict. + */ + function f_serverWaitForAllClientsToShutDown() + runs on ServerSyncComp { + + tc_shutDown.start(PX_TSHUT_DOWN_TIME_LIMIT); + alt { + [] syncPort.receive { + // clients may still try to send some sync message + } + [] all component.done { + tc_shutDown.stop; + log("**** f_serverWaitForAllClientsToShutDown: All components have properly shut down. Sync server will now terminate the test case. ****") ; + } + [] tc_shutDown.timeout { + log("**** f_serverWaitForAllClientsToShutDown: Not all clients have properly shutdown within the shut down time limit. Sync server will now terminate test case! ****") ; + } + } // end alt + // cover case that shut down default is NOT activated + setverdict(inconc); + //mtc.stop; + syncPort.send(m_syncServerStop) to self; // this MUST be _server_ for the default to catch! + tc_sync.start(PX_TSYNC_TIME_LIMIT); + alt{ + [] tc_sync.timeout{ + log("**** f_selfSyncStop: Stopping MTC without shutdown - either no shutdown default active or missing syncPort connection ****") ; + setverdict(inconc); + stop ; + } + }//end alt + tc_sync.stop; + stop; // if shutdown default is not activated or if it does not stop + } // end function f_serverWaitForAllClientsToShutDown + + function f_isPresentInArray(in ClientSyncComp p_clientRef, in ClientSyncCompList p_clientRefs) + return boolean { + var integer i; + for(i:=0; i < sizeof(p_clientRefs); i:=i+1) { + if(p_clientRefs[i] == p_clientRef) { + return true; + } + } + return false; + } + } // end group otherSyncFunctions + + } // end group otherSyncDefinitions + +} // end module LibCommon_Sync -- GitLab From 6b5af3e53f0e9ffb061d627291c14397e8a127ac Mon Sep 17 00:00:00 2001 From: garciay Date: Thu, 12 Jul 2018 13:02:28 +0200 Subject: [PATCH 51/72] Add TITAN Eclipse project --- STF549_ng112.tpd | 2817 --------------- ccsrc/Protocols/Sip/sip_layer_factory.hh | 2 +- ttcn/patch_sip_titan/LibSip_Templates.ttcn | 2 +- workspace_stf549/.metadata/.lock | 0 workspace_stf549/.metadata/.log | 274 ++ .../.mylyn/.taskListIndex/segments_1 | Bin 0 -> 71 bytes .../.mylyn/.taskListIndex/write.lock | 0 .../.metadata/.mylyn/.tasks.xml.zip | Bin 0 -> 235 bytes .../.metadata/.mylyn/repositories.xml.zip | Bin 0 -> 557 bytes .../.metadata/.mylyn/tasks.xml.zip | Bin 0 -> 235 bytes .../.plugins/org.eclipse.cdt.core/.log | 6 + .../org.eclipse.cdt.make.core/specs.c | 1 + .../org.eclipse.cdt.make.core/specs.cpp | 1 + .../dialog_settings.xml | 5 + .../org.eclipse.cdt.ui/dialog_settings.xml | 14 + .../13/70b89801b985001814de869e8ad08251 | 132 + .../15/e1b5cbe1978500181c21d10bc58219ba | 97 + .../16/b00bbfe1978500181c21d10bc58219ba | 414 +++ .../17/808fd4e1978500181c21d10bc58219ba | 71 + .../18/80770d69c28500181dc9eb7ae31560a9 | 132 + .../1a/404dc5e1978500181c21d10bc58219ba | 48 + .../1e/008e0c58b685001814de869e8ad08251 | 418 +++ .../1e/b0d6329bc28500181dc9eb7ae31560a9 | 418 +++ .../1e/f1a0d5e1978500181c21d10bc58219ba | 46 + .../20/c066b61cb985001814de869e8ad08251 | 418 +++ .../23/00493a33b685001814de869e8ad08251 | 418 +++ .../23/6063cfd3978500181c21d10bc58219ba | Bin 0 -> 870912 bytes .../24/f0215881bd85001814de869e8ad08251 | 45 + .../28/f0fbaad8b185001814de869e8ad08251 | 418 +++ .../2c/a079d26dc28500181dc9eb7ae31560a9 | 418 +++ .../2f/50a9d1e1978500181c21d10bc58219ba | 135 + .../3/3044c0e1978500181c21d10bc58219ba | 63 + .../3/c02bd5e1978500181c21d10bc58219ba | 91 + .../30/3026c5e1978500181c21d10bc58219ba | 356 ++ .../31/30b7da0ab985001814de869e8ad08251 | 418 +++ .../31/414dc5e1978500181c21d10bc58219ba | 45 + .../31/50c9eee5b08500181eabf1ba1ea37ea1 | 418 +++ .../31/b07cc1e1978500181c21d10bc58219ba | 46 + .../34/70cb39abb08500181eabf1ba1ea37ea1 | 131 + .../38/619bc5e1978500181c21d10bc58219ba | 45 + .../3a/20d21c389e8500181eabf1ba1ea37ea1 | 79 + .../3b/c084754b9e8500181eabf1ba1ea37ea1 | 91 + .../3b/f0a0d5e1978500181c21d10bc58219ba | 264 ++ .../3f/00220b34c08500181dc9eb7ae31560a9 | 418 +++ .../3f/80e03c63bc85001814de869e8ad08251 | 418 +++ .../4/50a2d8bbbd85001814de869e8ad08251 | 418 +++ .../40/60ac5fd6b185001814de869e8ad08251 | 257 ++ .../40/906eb7d3978500181c21d10bc58219ba | Bin 0 -> 723336 bytes .../40/b0e00cc0be85001814de869e8ad08251 | 418 +++ .../44/005c57e0b08500181eabf1ba1ea37ea1 | 418 +++ .../44/d0f3281cb985001814de869e8ad08251 | 98 + .../45/f0589ff0c08500181dc9eb7ae31560a9 | 418 +++ .../48/1149c7e1978500181c21d10bc58219ba | 73 + .../48/50efc5ecc08500181dc9eb7ae31560a9 | 418 +++ .../4c/90c76ed6b185001814de869e8ad08251 | 98 + .../4c/d0ce10889e8500181eabf1ba1ea37ea1 | 115 + .../4f/20dbb304b985001814de869e8ad08251 | 418 +++ .../53/51a9d1e1978500181c21d10bc58219ba | 82 + .../54/1049c7e1978500181c21d10bc58219ba | 87 + .../54/d0d08d049e8500181eabf1ba1ea37ea1 | 58 + .../58/807cbd08b985001814de869e8ad08251 | 418 +++ .../5a/2270c7e1978500181c21d10bc58219ba | 62 + .../5c/5274c5e1978500181c21d10bc58219ba | 66 + .../5d/0122c7e1978500181c21d10bc58219ba | 289 ++ .../5d/8073aed7b185001814de869e8ad08251 | 132 + .../5e/303dd6e1978500181c21d10bc58219ba | 988 ++++++ .../5f/609bc5e1978500181c21d10bc58219ba | 82 + .../60/003b0e2b9e8500181eabf1ba1ea37ea1 | 73 + .../61/70ebb22fc08500181dc9eb7ae31560a9 | 418 +++ .../62/3058727e9e8500181eabf1ba1ea37ea1 | 109 + .../64/40e123c69d8500181eabf1ba1ea37ea1 | 32 + .../6b/403f1ddfb985001814de869e8ad08251 | 418 +++ .../6d/305bd1e1978500181c21d10bc58219ba | 2821 +++++++++++++++ .../6d/90a3c3d3978500181c21d10bc58219ba | Bin 0 -> 375992 bytes .../7/0022c7e1978500181c21d10bc58219ba | 67 + .../70/d0485336b685001814de869e8ad08251 | 418 +++ .../71/10e63a61a88500181eabf1ba1ea37ea1 | 127 + .../72/c072b5d3978500181c21d10bc58219ba | Bin 0 -> 340448 bytes .../73/f0fcb796c28500181dc9eb7ae31560a9 | 132 + .../74/d011241cb985001814de869e8ad08251 | 257 ++ .../74/f033d3d3978500181c21d10bc58219ba | Bin 0 -> 663120 bytes .../75/202f796f9e8500181eabf1ba1ea37ea1 | 97 + .../75/601787eeac8500181eabf1ba1ea37ea1 | 131 + .../75/a093cf0ab985001814de869e8ad08251 | 418 +++ .../7c/e0832037b685001814de869e8ad08251 | 418 +++ .../8/b004d5e1978500181c21d10bc58219ba | 4 + .../80/b0a46cd6b185001814de869e8ad08251 | 159 + .../81/8043f232b685001814de869e8ad08251 | 418 +++ .../84/7015cde1978500181c21d10bc58219ba | 44 + .../86/109946f39d8500181eabf1ba1ea37ea1 | 52 + .../86/5074c5e1978500181c21d10bc58219ba | 23 + .../8d/003b57dfb985001814de869e8ad08251 | 418 +++ .../9/2045a71fb985001814de869e8ad08251 | 418 +++ .../91/a0caebd7b185001814de869e8ad08251 | 418 +++ .../92/c0a9071fb985001814de869e8ad08251 | 418 +++ .../95/60d0d1e1978500181c21d10bc58219ba | 82 + .../96/60a6726dc28500181dc9eb7ae31560a9 | 418 +++ .../99/a0124aeb9d8500181eabf1ba1ea37ea1 | 46 + .../99/e0ee711eb885001814de869e8ad08251 | 418 +++ .../9b/d006f332b685001814de869e8ad08251 | 418 +++ .../9b/e04fb3d3978500181c21d10bc58219ba | Bin 0 -> 135776 bytes .../9c/d09c90bbbd85001814de869e8ad08251 | 418 +++ .../9d/20049defc08500181dc9eb7ae31560a9 | 418 +++ .../9d/5156cae1978500181c21d10bc58219ba | 45 + .../9f/10b4315bbc85001814de869e8ad08251 | 418 +++ .../9f/708420b4a88500181eabf1ba1ea37ea1 | 128 + .../a2/c0387d0bb985001814de869e8ad08251 | 418 +++ .../ad/e0ead7e1978500181c21d10bc58219ba | 125 + .../ae/d05237a7ac8500181eabf1ba1ea37ea1 | 129 + .../b0/b011035bb685001814de869e8ad08251 | 418 +++ .../b2/2070c7e1978500181c21d10bc58219ba | 49 + .../b5/800d75bfbe85001814de869e8ad08251 | 159 + .../b7/2170c7e1978500181c21d10bc58219ba | 27 + .../b8/80b52d1ab885001814de869e8ad08251 | 57 + .../b9/4082d1e1978500181c21d10bc58219ba | 4 + .../ba/617dcae1978500181c21d10bc58219ba | 99 + .../ba/d0c3d7e1978500181c21d10bc58219ba | 181 + .../bb/10e667e5b08500181eabf1ba1ea37ea1 | 418 +++ .../bf/70d9d6e1978500181c21d10bc58219ba | 35 + .../c1/40febdd3978500181c21d10bc58219ba | Bin 0 -> 997736 bytes .../c2/10919f5bbc85001814de869e8ad08251 | 418 +++ .../c2/306f093f9e8500181eabf1ba1ea37ea1 | 85 + .../c2/d0c4ab04b985001814de869e8ad08251 | 418 +++ .../c4/e0b5cbe1978500181c21d10bc58219ba | 44 + .../c6/f0cc7e57b685001814de869e8ad08251 | 418 +++ .../c7/f1fac6e1978500181c21d10bc58219ba | 114 + .../cf/c0b9dd8f9e8500181eabf1ba1ea37ea1 | 121 + .../d2/00bcaed3978500181c21d10bc58219ba | Bin 0 -> 531144 bytes .../d3/503ed799c28500181dc9eb7ae31560a9 | 418 +++ .../d4/b0edd64c978500181c21d10bc58219ba | 12 + .../d5/60df62189e8500181eabf1ba1ea37ea1 | 67 + .../d8/d0adcde29d8500181eabf1ba1ea37ea1 | 40 + .../dd/607dcae1978500181c21d10bc58219ba | 72 + .../de/00f495bbbd85001814de869e8ad08251 | 418 +++ .../de/d0dd7033c08500181dc9eb7ae31560a9 | 418 +++ .../df/108b860cbc85001814de869e8ad08251 | 71 + .../e1/00485b1fb985001814de869e8ad08251 | 418 +++ .../e1/5056cae1978500181c21d10bc58219ba | 73 + .../e2/f0fac6e1978500181c21d10bc58219ba | 144 + .../e3/62d0d1e1978500181c21d10bc58219ba | 57 + .../e5/f0352becc08500181dc9eb7ae31560a9 | 132 + .../e6/20b7df769e8500181eabf1ba1ea37ea1 | 103 + .../ea/3019ff6bc28500181dc9eb7ae31560a9 | 418 +++ .../ea/e0dffc35c08500181dc9eb7ae31560a9 | 418 +++ .../ed/20ffc4e1978500181c21d10bc58219ba | 74 + .../ed/90c20963bc85001814de869e8ad08251 | 418 +++ .../ee/6087e5dfb08500181eabf1ba1ea37ea1 | 418 +++ .../ef/9064abdfb08500181eabf1ba1ea37ea1 | 418 +++ .../ef/d087d51db885001814de869e8ad08251 | 418 +++ .../f2/61d0d1e1978500181c21d10bc58219ba | 516 +++ .../f6/b0a5281cb985001814de869e8ad08251 | 159 + .../f8/20784e69c28500181dc9eb7ae31560a9 | 418 +++ .../fa/5174c5e1978500181c21d10bc58219ba | 46 + .../STF549_Ng112/.indexes/7/history.index | Bin 0 -> 1222 bytes .../STF549_Ng112/.indexes/af/history.index | Bin 0 -> 292 bytes .../.indexes/e4/22/properties.index | Bin 0 -> 1883 bytes .../.indexes/e4/84/22/e4/history.index | Bin 0 -> 74 bytes .../.indexes/e4/84/22/properties.index | Bin 0 -> 3689 bytes .../.indexes/e4/84/bb/a8/history.index | Bin 0 -> 72 bytes .../.indexes/e4/84/bb/ba/history.index | Bin 0 -> 78 bytes .../.indexes/e4/84/bb/properties.index | Bin 0 -> 12738 bytes .../.indexes/e4/84/e8/properties.index | Bin 0 -> 3686 bytes .../.indexes/e4/84/f2/properties.index | Bin 0 -> 3684 bytes .../.indexes/e4/84/properties.index | Bin 0 -> 7282 bytes .../.indexes/e4/94/94/properties.index | Bin 0 -> 3680 bytes .../.indexes/e4/94/properties.index | Bin 0 -> 1863 bytes .../STF549_Ng112/.indexes/e4/a8/history.index | Bin 0 -> 1606 bytes .../STF549_Ng112/.indexes/e4/e4/history.index | Bin 0 -> 1242 bytes .../.indexes/e4/eb/eb/74/54/properties.index | Bin 0 -> 3710 bytes .../.indexes/e4/eb/eb/74/properties.index | Bin 0 -> 1883 bytes .../.indexes/e4/eb/eb/8d/properties.index | Bin 0 -> 300 bytes .../.indexes/e4/eb/eb/b0/properties.index | Bin 0 -> 122 bytes .../.indexes/e4/eb/eb/cb/eb/properties.index | Bin 0 -> 890 bytes .../.indexes/e4/eb/eb/cb/properties.index | Bin 0 -> 3688 bytes .../.indexes/e4/eb/eb/properties.index | Bin 0 -> 16471 bytes .../.indexes/e4/eb/properties.index | Bin 0 -> 1865 bytes .../STF549_Ng112/.indexes/e4/properties.index | Bin 0 -> 7254 bytes .../STF549_Ng112/.indexes/history.index | Bin 0 -> 651 bytes .../STF549_Ng112/.indexes/properties.index | Bin 0 -> 8472 bytes .../.root/.indexes/history.version | 1 + .../.root/.indexes/properties.index | Bin 0 -> 104 bytes .../.root/.indexes/properties.version | 1 + .../org.eclipse.core.resources/.root/6.tree | Bin 0 -> 41583 bytes .../.safetable/org.eclipse.core.resources | Bin 0 -> 1054 bytes .../.settings/org.eclipse.cdt.core.prefs | 5 + ...rg.eclipse.cdt.core.prj-STF549_Ng112.prefs | 2 + .../org.eclipse.cdt.debug.core.prefs | 2 + .../.settings/org.eclipse.cdt.mylyn.ui.prefs | 2 + .../.settings/org.eclipse.cdt.ui.prefs | 5 + .../org.eclipse.core.resources.prefs | 2 + .../.settings/org.eclipse.debug.core.prefs | 5 + .../.settings/org.eclipse.debug.ui.prefs | 4 + .../org.eclipse.epp.logging.aeri.ide.prefs | 4 + .../org.eclipse.launchbar.core.prefs | 7 + .../org.eclipse.mylyn.context.core.prefs | 2 + .../org.eclipse.mylyn.monitor.ui.prefs | 2 + .../org.eclipse.mylyn.tasks.ui.prefs | 5 + .../.settings/org.eclipse.rse.core.prefs | 3 + .../.settings/org.eclipse.rse.ui.prefs | 2 + .../.settings/org.eclipse.search.prefs | 2 + .../.settings/org.eclipse.team.ui.prefs | 2 + .../org.eclipse.titan.executor.prefs | 2 + .../org.eclipse.titan.log.viewer.prefs | 2 + .../.settings/org.eclipse.ui.editors.prefs | 2 + .../.settings/org.eclipse.ui.ide.prefs | 6 + .../.settings/org.eclipse.ui.prefs | 2 + .../.settings/org.eclipse.ui.views.log.prefs | 10 + .../.settings/org.eclipse.ui.workbench.prefs | 2 + ...__etc__etc__AtsNg112__AtsNg112.cfg).launch | 37 + .../launchConfigurationHistory.xml | 25 + .../org.eclipse.e4.workbench/workbench.xmi | 3143 +++++++++++++++++ .../dialog_settings.xml | 35 + .../C/devhelp.libhover | Bin 0 -> 334 bytes .../C/glibc_library.libhover | Bin 0 -> 1039341 bytes .../.workspace/2018/7/28/refactorings.history | 3 + .../.workspace/2018/7/28/refactorings.index | 8 + .../dialog_settings.xml | 7 + .../org.eclipse.oomph.setup/workspace.setup | 6 + .../.plugins/org.eclipse.rse.core/.log | 0 ...al.core.RSELocalConnectionInitializer.mark | 0 .../FP.local.files_0/node.properties | 57 + .../PRF.vagrant_0/H.local_16/node.properties | 25 + .../profiles/PRF.vagrant_0/node.properties | 7 + .../.plugins/org.eclipse.rse.ui/.log | 0 .../org.eclipse.rse.ui/dialog_settings.xml | 5 + .../org.eclipse.search/dialog_settings.xml | 70 + .../dialog_settings.xml | 32 + .../dialog_settings.xml | 5 + .../org.eclipse.ui.ide/dialog_settings.xml | 18 + .../.plugins/org.eclipse.ui.intro/introstate | 2 + .../dialog_settings.xml | 12 + .../dialog_settings.xml | 25 + .../dialog_settings.xml | 41 + .../org.eclipse.ui.workbench/workingsets.xml | 4 + .../task-tags.properties | 3 + workspace_stf549/.metadata/version.ini | 3 + .../RemoteSystemsTempFiles/.project | 12 + .../STF549_Ng112/.TITAN_properties | 131 + workspace_stf549/STF549_Ng112/.project | 395 +++ 239 files changed, 37440 insertions(+), 2819 deletions(-) delete mode 100644 STF549_ng112.tpd create mode 100644 workspace_stf549/.metadata/.lock create mode 100644 workspace_stf549/.metadata/.log create mode 100644 workspace_stf549/.metadata/.mylyn/.taskListIndex/segments_1 create mode 100644 workspace_stf549/.metadata/.mylyn/.taskListIndex/write.lock create mode 100644 workspace_stf549/.metadata/.mylyn/.tasks.xml.zip create mode 100644 workspace_stf549/.metadata/.mylyn/repositories.xml.zip create mode 100644 workspace_stf549/.metadata/.mylyn/tasks.xml.zip create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.cdt.core/.log create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/13/70b89801b985001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/15/e1b5cbe1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/16/b00bbfe1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/17/808fd4e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/18/80770d69c28500181dc9eb7ae31560a9 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1a/404dc5e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/008e0c58b685001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/b0d6329bc28500181dc9eb7ae31560a9 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/f1a0d5e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/20/c066b61cb985001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/23/00493a33b685001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/23/6063cfd3978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/24/f0215881bd85001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/28/f0fbaad8b185001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/2c/a079d26dc28500181dc9eb7ae31560a9 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/2f/50a9d1e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3/3044c0e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3/c02bd5e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/30/3026c5e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/30b7da0ab985001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/414dc5e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/50c9eee5b08500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/b07cc1e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/34/70cb39abb08500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/38/619bc5e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3a/20d21c389e8500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3b/c084754b9e8500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3b/f0a0d5e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3f/00220b34c08500181dc9eb7ae31560a9 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3f/80e03c63bc85001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4/50a2d8bbbd85001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/40/60ac5fd6b185001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/40/906eb7d3978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/40/b0e00cc0be85001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/44/005c57e0b08500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/44/d0f3281cb985001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/45/f0589ff0c08500181dc9eb7ae31560a9 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/48/1149c7e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/48/50efc5ecc08500181dc9eb7ae31560a9 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4c/90c76ed6b185001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4c/d0ce10889e8500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4f/20dbb304b985001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/53/51a9d1e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/54/1049c7e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/54/d0d08d049e8500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/58/807cbd08b985001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5a/2270c7e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5c/5274c5e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5d/0122c7e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5d/8073aed7b185001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5e/303dd6e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5f/609bc5e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/60/003b0e2b9e8500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/61/70ebb22fc08500181dc9eb7ae31560a9 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/62/3058727e9e8500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/64/40e123c69d8500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/6b/403f1ddfb985001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/6d/305bd1e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/6d/90a3c3d3978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/7/0022c7e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/70/d0485336b685001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/71/10e63a61a88500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/72/c072b5d3978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/73/f0fcb796c28500181dc9eb7ae31560a9 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/74/d011241cb985001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/74/f033d3d3978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/75/202f796f9e8500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/75/601787eeac8500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/75/a093cf0ab985001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/7c/e0832037b685001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/8/b004d5e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/80/b0a46cd6b185001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/81/8043f232b685001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/84/7015cde1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/86/109946f39d8500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/86/5074c5e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/8d/003b57dfb985001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9/2045a71fb985001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/91/a0caebd7b185001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/92/c0a9071fb985001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/95/60d0d1e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/96/60a6726dc28500181dc9eb7ae31560a9 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/99/a0124aeb9d8500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/99/e0ee711eb885001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9b/d006f332b685001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9b/e04fb3d3978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9c/d09c90bbbd85001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9d/20049defc08500181dc9eb7ae31560a9 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9d/5156cae1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9f/10b4315bbc85001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9f/708420b4a88500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/a2/c0387d0bb985001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ad/e0ead7e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ae/d05237a7ac8500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b0/b011035bb685001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b2/2070c7e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b5/800d75bfbe85001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b7/2170c7e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b8/80b52d1ab885001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b9/4082d1e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ba/617dcae1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ba/d0c3d7e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/bb/10e667e5b08500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/bf/70d9d6e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c1/40febdd3978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/10919f5bbc85001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/306f093f9e8500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/d0c4ab04b985001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c4/e0b5cbe1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c6/f0cc7e57b685001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c7/f1fac6e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/cf/c0b9dd8f9e8500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d2/00bcaed3978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d3/503ed799c28500181dc9eb7ae31560a9 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d4/b0edd64c978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d5/60df62189e8500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d8/d0adcde29d8500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/dd/607dcae1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/de/00f495bbbd85001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/de/d0dd7033c08500181dc9eb7ae31560a9 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/df/108b860cbc85001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e1/00485b1fb985001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e1/5056cae1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e2/f0fac6e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e3/62d0d1e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e5/f0352becc08500181dc9eb7ae31560a9 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e6/20b7df769e8500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ea/3019ff6bc28500181dc9eb7ae31560a9 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ea/e0dffc35c08500181dc9eb7ae31560a9 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ed/20ffc4e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ed/90c20963bc85001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ee/6087e5dfb08500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ef/9064abdfb08500181eabf1ba1ea37ea1 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ef/d087d51db885001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f2/61d0d1e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f6/b0a5281cb985001814de869e8ad08251 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f8/20784e69c28500181dc9eb7ae31560a9 create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/fa/5174c5e1978500181c21d10bc58219ba create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/7/history.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/af/history.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/22/properties.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/22/e4/history.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/22/properties.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/bb/a8/history.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/bb/ba/history.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/bb/properties.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/e8/properties.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/f2/properties.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/properties.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/94/94/properties.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/94/properties.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/a8/history.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/e4/history.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/74/54/properties.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/74/properties.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/8d/properties.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/b0/properties.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/cb/eb/properties.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/cb/properties.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/properties.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/properties.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/properties.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/history.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/properties.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.root/6.tree create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prj-STF549_Ng112.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.mylyn.ui.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.logging.aeri.ide.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.launchbar.core.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.ui.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.tasks.ui.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.core.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.ui.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.titan.executor.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.titan.log.viewer.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.views.log.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.debug.core/.launches/new configuration (__STF549_Ng112__src__etc__etc__AtsNg112__AtsNg112.cfg).launch create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.equinox.p2.ui/dialog_settings.xml create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.linuxtools.cdt.libhover/C/devhelp.libhover create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.linuxtools.cdt.libhover/C/glibc_library.libhover create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2018/7/28/refactorings.history create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2018/7/28/refactorings.index create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.oomph.setup/workspace.setup create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.rse.core/.log create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.rse.core/initializerMarks/org.eclipse.rse.internal.core.RSELocalConnectionInitializer.mark create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.vagrant_0/FP.local.files_0/node.properties create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.vagrant_0/H.local_16/node.properties create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.vagrant_0/node.properties create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.rse.ui/.log create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.rse.ui/dialog_settings.xml create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.search/dialog_settings.xml create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.titan.log.viewer/dialog_settings.xml create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.ui.intro/introstate create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.ui.views.log/dialog_settings.xml create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml create mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.wst.sse.core/task-tags.properties create mode 100644 workspace_stf549/.metadata/version.ini create mode 100644 workspace_stf549/RemoteSystemsTempFiles/.project create mode 100644 workspace_stf549/STF549_Ng112/.TITAN_properties create mode 100644 workspace_stf549/STF549_Ng112/.project diff --git a/STF549_ng112.tpd b/STF549_ng112.tpd deleted file mode 100644 index 533353e..0000000 --- a/STF549_ng112.tpd +++ /dev/null @@ -1,2817 +0,0 @@ - - - - STF549_ng112 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Default - - - - - true - true - true - false - true - true - false - true - false - none - executable - bin\STF549_ng112.exe - cpp - - AS_USE_SSL - OSTYPE=cygwin - _XOPEN_SOURCE=700 - _USE_MATH_DEFINES - - - /usr/local/share - /usr/include/libxml2 - - - false - false - false - false - false - false - false - false - false - true - false - true - true - false - true - false - false - true - true - false - false - g++ - None - -std=c++11 - - ssl - - false - false - - Level5-CreatingExecutableTestSuitewithdependencyupdate - - - - - bin - - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Protocols/Pcap - - true - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - tsp.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Protocols/UDP - - true - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/AtsNg112 - - true - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibEmcom/LibNg112/xsd - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - docs/AtsNg112 - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibCommon - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/EncDec/LibSip - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Protocols - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Protocols/Tcp - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - docker - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Framework - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - testdata - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - etc/AtsNg112 - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibSip - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Ports - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - docs - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - etc - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibEmcom/LibNg112 - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Protocols/Http - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - docs/TestCodec - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - scripts - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Framework/include - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - logs - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibSip/xsd - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibEmcom/LibNg112/ttcn - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - etc/TestCodec - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - test_purposes - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Protocols/Held - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/EncDec/LibHttp - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibSip/ttcn - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Framework/src - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Protocols/ETH - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Protocols/Sip - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibEmcom - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibHttp - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Ports/LibHttp - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/EncDec - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Ports/LibSip - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/TestCodec - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - - - ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn - - true - - - - ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn - - true - - - - ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn - - true - - - - ccsrc/Ports/LibHttp/HttpPort.cc - - false - - - - ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn - - false - - - - ccsrc/Protocols/ETH/ethernet_layer.cc - - false - - - - docs/AtsNg112/o2.cfg - - false - - - - ttcn/LibSip/xsd/urn_ietf_params_xml_ns_common_policy.ttcn - - false - - - - ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn - - false - - - - ccsrc/Framework/include/layer_factory.hh - - false - - - - ccsrc/Protocols/Sip/sip_codec_register_request.hh - - false - - - - ttcn/LibCommon/LibCommon_VerdictControl.ttcn - - false - - - - ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - - false - - - - ttcn/LibSip/ttcn/LibSip_Interface.ttcn - - false - - - - ttcn/LibSip/xsd/simservs.xsd - - false - - - - ccsrc/Protocols/ETH/ethernet_layer_factory.hh - - false - - - - ccsrc/Framework/include/codec.hh - - false - - - - ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn - - false - - - - ttcn/LibSip/ttcn/LibSip_EncdecDeclarations.ttcn - - false - - - - ttcn/TestCodec/TestCodec_HttpResponse.ttcn - - false - - - - testdata/SIP_INVITE_Request_sdp.pcap - - false - - - - ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn - - false - - - - ttcn/LibSip/xsd/pidf.xsd - - false - - - - ccsrc/Framework/include/codec_stack_builder.hh - - false - - - - logs/STF549_ng112.yann-FSCOM-mtc.log - - false - - - - ttcn/LibSip/xsd/TIP-TIR.xsd - - false - - - - ttcn/TestCodec/TestCodec_Invite.ttcn - - false - - - - testdata/SIP_REGISTER_Request.pcap - - false - - - - ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn - - false - - - - ttcn/LibSip/xsd/ACR_CB.xsd - - false - - - - ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn - - false - - - - docs/TestCodec/o2.cfg - - false - - - - ttcn/LibSip/xsd/PSTN.xsd - - false - - - - ttcn/LibSip/xsd/UsefulTtcn3Types.ttcn - - false - - - - ccsrc/Framework/include/layer.hh - - false - - - - ttcn/LibSip/xsd/XSD.ttcn - - false - - - - ccsrc/EncDec/LibSip/LibSip_Encdec.cc - - false - - - - ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - - false - - - - ttcn/LibSip/xsd/Makefile - - false - - - - ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn - - false - - - - ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd - - false - - - - ttcn/TestCodec/TestCodec_HttpRequest.ttcn - - false - - - - docker/Dockerfile - - false - - - - ttcn/LibSip/xsd/OIP-OIR.xsd - - false - - - - ccsrc/Framework/src/params.cc - - false - - - - ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn - - false - - - - ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn - - false - - - - ttcn/LibSip/xsd/Ims3gpp.xsd - - false - - - - ccsrc/Protocols/Http/http_codec.cc - - false - - - - ttcn/LibSip/xsd/urn_ietf_params_xml_ns_conference_info.ttcn - - false - - - - ttcn/LibCommon/LibCommon_DataStrings.ttcn - - false - - - - ccsrc/Protocols/Http/http_layer_factory.hh - - false - - - - ttcn/LibSip/xsd/MCID.xsd - - false - - - - ttcn/LibSip/xsd/SupplementaryServices.xsd - - false - - - - ccsrc/Protocols/Tcp/tcp_layer.cc - - false - - - - ttcn/LibSip/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn - - false - - - - docker/run-container.sh - - false - - - - ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - - false - - - - ccsrc/Framework/include/loggers.hh - - false - - - - ccsrc/Protocols/Sip/sip_layer.cc - - false - - - - ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn - - false - - - - ccsrc/Protocols/Held/held_codec_factory.hh - - false - - - - ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn - - false - - - - ttcn/LibSip/xsd/urn_ietf_params_xml_ns_resource_lists.ttcn - - false - - - - ttcn/AtsNg112/AtsNg112_TestControl.ttcn - - false - - - - ttcn/LibSip/ttcn/LibSip_Templates.ttcn - - false - - - - ttcn/LibSip/xsd/cw.xsd - - false - - - - ccsrc/Protocols/Http/http_codec.hh - - false - - - - ccsrc/Protocols/Sip/sip_layer_factory.hh - - false - - - - ccsrc/Protocols/Pcap/pcap_layer.cc - - false - - - - ttcn/LibSip/xsd/CDIVN.xsd - - false - - - - ccsrc/Protocols/Held/held.codec.cc - - false - - - - ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn - - false - - - - ccsrc/Framework/include/layer_stack_builder.hh - - false - - - - ttcn/LibSip/ttcn/LibSip_Library.ttcn - - false - - - - testdata/SIP_STATUS_200ok.pcap - - false - - - - ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn - - false - - - - ccsrc/Protocols/Http/http_layer.hh - - false - - - - ccsrc/Protocols/UDP/udp_layer.cc - - false - - - - ttcn/LibSip/xsd/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn - - false - - - - ccsrc/Framework/src/converter.cc - - false - - - - ccsrc/Protocols/Sip/sip_regex.hh - - false - - - - ttcn/LibSip/xsd/ResourceList.xsd - - false - - - - ccsrc/Protocols/Sip/sip_codec_register_request.cc - - false - - - - ccsrc/Protocols/Held/held_codec.hh - - false - - - - ccsrc/Ports/LibSip/SipPort.cc - - false - - - - scripts/titan_repos.txt - - false - - - - ttcn/README.md - - false - - - - ccsrc/Framework/include/codec_factory.hh - - false - - - - etc/TestCodec/TestCodec.cfg - - false - - - - ttcn/LibCommon/LibCommon_TextStrings.ttcn - - false - - - - ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd - - false - - - - ccsrc/Framework/include/t_layer.hh - - false - - - - scripts/build_titan.bash - - false - - - - testdata/SIP_MESSAGE_Request.pcap - - false - - - - testdata/SIP_STATUS_100trying.pcap - - false - - - - ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd - - false - - - - ttcn/TestCodec/TestCodec_HttpPort.ttcn - - false - - - - ccsrc/Framework/include/converter.hh - - false - - - - ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn - - false - - - - ttcn/LibSip/xsd/urn_oma_xml_xdm_common_policy.ttcn - - false - - - - ccsrc/Framework/src/codec_stack_builder.cc - - false - - - - ttcn/LibSip/xsd/cug.xsd - - false - - - - ccsrc/Protocols/Sip/sip_regex.cc - - false - - - - ttcn/LibSip/xsd/http_www_w3_org_XML_1998_namespace.ttcn - - false - - - - ttcn/TestCodec/TestCodec_Register.ttcn - - false - - - - ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd - - false - - - - STF549_ng112.tpd - - false - - - - ttcn/LibSip/xsd/CONF.xsd - - false - - - - ttcn/LibSip/xsd/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn - - false - - - - ccsrc/Protocols/UDP/udp_layer_factory.hh - - false - - - - ttcn/LibSip/xsd/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn - - false - - - - test_purposes/README.md - - false - - - - ttcn/LibHttp/LibItsHttp_TestSystem.ttcn - - false - - - - ttcn/LibSip/xsd/urn_3gpp_ns_cw_1_0.ttcn - - false - - - - testdata/GridGears_LIS_HELD_NotFound_Response.pcap - - false - - - - model.tdl - - false - - - - ttcn/LibCommon/LibCommon_AbstractData.ttcn - - false - - - - ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - false - - - - ttcn/LibCommon/LibCommon_Sync.ttcn - - false - - - - ccsrc/Framework/src/loggers.cc - - false - - - - ccsrc/Protocols/ETH/ethernet_layer.hh - - false - - - - representations.aird - - false - - - - testdata/SIP_ACK_Request.pcap - - false - - - - README.md - - false - - - - docker/build-container.sh - - false - - - - ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - - false - - - - scripts/devenv.bash.ubuntu - - false - - - - ttcn/LibSip/xsd/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn - - false - - - - ttcn/LibSip/xsd/NoTargetNamespace.ttcn - - false - - - - ccsrc/Protocols/Tcp/Abstract_Socket.hh - - false - - - - test_purposes/LIS_HTTP_POST_BI_xx.tplan2 - - false - - - - ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn - - false - - - - ttcn/LibSip/xsd/CDIV.xsd - - false - - - - ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn - - false - - - - ttcn/LibSip/xsd/geopriv10basic.xsd - - false - - - - test_purposes/LIS_HTTP_POST_BV_xx.tplan2 - - false - - - - ccsrc/Protocols/Http/http_layer.cc - - false - - - - ccsrc/Protocols/UDP/udp_layer.hh - - false - - - - ttcn/LibSip/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn - - false - - - - ttcn/LibHttp/LibItsHttp_Pics.ttcn - - false - - - - testdata/SIP_INVITE_Request.pcap - - false - - - - ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd - - false - - - - ttcn/LibSip/ttcn/LibSip_Common.ttcn - - false - - - - ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn - - false - - - - docker/validate-in-docker.sh - - false - - - - ttcn/LibSip/xsd/urn_ietf_params_xml_ns_pidf.ttcn - - false - - - - testdata/SIP_BYE_Request.pcap - - false - - - - ttcn/LibHttp/LibItsHttp_Functions.ttcn - - false - - - - ttcn/LibSip/xsd/xml.xsd - - false - - - - ccsrc/Ports/LibSip/SipPort.hh - - false - - - - ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn - - false - - - - ccsrc/Framework/include/params.hh - - false - - - - ccsrc/Protocols/Pcap/pcap_layer_factory.hh - - false - - - - scripts/testcodec_generate_makefile.bash - - false - - - - ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn - - false - - - - ccsrc/Protocols/Tcp/Abstract_Socket.cc - - false - - - - scripts/update_emcom_project.bash - - false - - - - testdata/GridGears_LIS_HELD_Circle_Response.pcap - - false - - - - ttcn/LibSip/ttcn/LibSip_Steps.ttcn - - false - - - - logs/STF549_ng112.yann-FSCOM-hc.log - - false - - - - ttcn/AtsNg112/AtsNg112_TestCases.ttcn - - false - - - - ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn - - false - - - - ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn - - false - - - - ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd - - false - - - - ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd - - false - - - - ccsrc/Ports/LibHttp/HttpPort.hh - - false - - - - ccsrc/Protocols/Tcp/tcp_layer.hh - - false - - - - ttcn/LibSip/xsd/common-policy.xsd - - false - - - - ccsrc/Protocols/Tcp/tcp_layer_factory.hh - - false - - - - ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn - - false - - - - ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn - - false - - - - ttcn/TestCodec/TestCodec_TestAndSystem.ttcn - - false - - - - ccsrc/Ports/LibSip/OperatorPort.hh - - false - - - - ccsrc/Framework/src/layer_factory.cc - - false - - - - ccsrc/Protocols/Sip/sip_layer.hh - - false - - - - etc/AtsNg112/AtsNg112.cfg - - false - - - - ttcn/LibSip/xsd/pidf_lo.xsd - - false - - - - ccsrc/README.md - - false - - - - ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - - false - - - - scripts/ng112.bash - - false - - - - ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn - - false - - - - ttcn/LibCommon/LibCommon_Time.ttcn - - false - - - - ttcn/LibHttp/LibItsHttp_Templates.ttcn - - false - - - - ccsrc/Protocols/Pcap/pcap_layer.hh - - false - - - - ttcn/LibSip/xsd/regInfo.xsd - - false - - - - ttcn/LibSip/xsd/urn_ietf_params_xml_ns_reginfo.ttcn - - false - - - - - - \ No newline at end of file diff --git a/ccsrc/Protocols/Sip/sip_layer_factory.hh b/ccsrc/Protocols/Sip/sip_layer_factory.hh index 3d59dfc..115dbd7 100644 --- a/ccsrc/Protocols/Sip/sip_layer_factory.hh +++ b/ccsrc/Protocols/Sip/sip_layer_factory.hh @@ -28,7 +28,7 @@ public: //! \publicsection */ sip_layer_factory() { // Register factory - layer_stack_builder::register_layer_factory("HTTP", this); + layer_stack_builder::register_layer_factory("SIP", this); }; /*! * \fn layer* create_layer(const std::string & type, const std::string & param); diff --git a/ttcn/patch_sip_titan/LibSip_Templates.ttcn b/ttcn/patch_sip_titan/LibSip_Templates.ttcn index e3850c3..e961d63 100755 --- a/ttcn/patch_sip_titan/LibSip_Templates.ttcn +++ b/ttcn/patch_sip_titan/LibSip_Templates.ttcn @@ -3510,7 +3510,7 @@ module LibSip_Templates { template(present) SDP_attribute mw_attribute_inactive := {inactive := {}} // MRO template(present) SDP_attribute mw_attribute_sendonly_inactive := (mw_attribute_sendonly, mw_attribute_inactive); - template SDP_attribute mw_attribute_sendrecv_recvonly_omit := (mw_attribute_sendrecv, mw_attribute_recvonly, omit); + template SDP_attribute mw_attribute_sendrecv_recvonly_omit := (mw_attribute_sendrecv, mw_attribute_recvonly, *); template(value) SDP_attribute m_attribute_base( template(value) SDP_attribute_rtpmap p_attr_value ) := { diff --git a/workspace_stf549/.metadata/.lock b/workspace_stf549/.metadata/.lock new file mode 100644 index 0000000..e69de29 diff --git a/workspace_stf549/.metadata/.log b/workspace_stf549/.metadata/.log new file mode 100644 index 0000000..726dada --- /dev/null +++ b/workspace_stf549/.metadata/.log @@ -0,0 +1,274 @@ + +!ENTRY org.eclipse.titan.common 4 0 2018-07-12 08:52:43.620 +!MESSAGE When trying to execute the `sh -c make all ' shell command an error occured. +Possible reasons are: +- the command does not exist +- you have no right to execute the command +- the error occured during executing the command +and many more. +Please check the TITAN console to identify the problem. +!SESSION 2018-07-12 10:56:05.141 ----------------------------------------------- +eclipse.buildId=4.7.2.M20171130-0510 +java.version=10.0.1 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US +Framework arguments: -product org.eclipse.epp.package.cpp.product +Command-line arguments: -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.cpp.product + +!ENTRY org.eclipse.epp.logging.aeri.ide 2 17 2018-07-12 10:57:14.939 +!MESSAGE Server ‘org.eclipse.epp.logging.aeri.ide.server’ failed with exception: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty. ; version: 2.0.6.v20170906-1226 +!STACK 0 +javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty + at java.base/sun.security.ssl.Alerts.getSSLException(Alerts.java:214) + at java.base/sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1974) + at java.base/sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1926) + at java.base/sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1909) + at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1436) + at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413) + at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:394) + at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:353) + at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:141) + at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353) + at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380) + at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) + at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) + at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88) + at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) + at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) + at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) + at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55) + at org.apache.http.client.fluent.Request.internalExecute(Request.java:173) + at org.apache.http.client.fluent.Executor.execute(Executor.java:262) + at org.eclipse.epp.internal.logging.aeri.ide.server.mars.IO.request(IO.java:170) + at org.eclipse.epp.internal.logging.aeri.ide.server.mars.IO.refreshConfiguration(IO.java:64) + at org.eclipse.epp.internal.logging.aeri.ide.server.mars.ServerConnection.startUp(ServerConnection.java:124) + at com.google.common.util.concurrent.AbstractIdleService$DelegateService$1.run(AbstractIdleService.java:62) + at com.google.common.util.concurrent.Callables$4.run(Callables.java:122) + at java.base/java.lang.Thread.run(Thread.java:844) +Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty + at java.base/sun.security.validator.PKIXValidator.(PKIXValidator.java:89) + at java.base/sun.security.validator.Validator.getInstance(Validator.java:181) + at java.base/sun.security.ssl.X509TrustManagerImpl.getValidator(X509TrustManagerImpl.java:330) + at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrustedInit(X509TrustManagerImpl.java:180) + at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:192) + at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:133) + at java.base/sun.security.ssl.ClientHandshaker.checkServerCerts(ClientHandshaker.java:1947) + at java.base/sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1777) + at java.base/sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:264) + at java.base/sun.security.ssl.Handshaker.processLoop(Handshaker.java:1098) + at java.base/sun.security.ssl.Handshaker.processRecord(Handshaker.java:1026) + at java.base/sun.security.ssl.SSLSocketImpl.processInputRecord(SSLSocketImpl.java:1137) + at java.base/sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1074) + at java.base/sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973) + at java.base/sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1402) + at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1429) + ... 21 more +Caused by: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty + at java.base/java.security.cert.PKIXParameters.setTrustAnchors(PKIXParameters.java:200) + at java.base/java.security.cert.PKIXParameters.(PKIXParameters.java:120) + at java.base/java.security.cert.PKIXBuilderParameters.(PKIXBuilderParameters.java:104) + at java.base/sun.security.validator.PKIXValidator.(PKIXValidator.java:86) + ... 36 more + +!ENTRY org.eclipse.launchbar.core 2 0 2018-07-12 11:30:52.825 +!MESSAGE Enablement expression is missing for descriptor type org.eclipse.cdt.debug.core.coreBuildDescriptorType + +!ENTRY org.eclipse.launchbar.core 2 0 2018-07-12 11:30:52.827 +!MESSAGE Enablement expression is missing for config provider for org.eclipse.cdt.debug.core.coreBuildDescriptorType + +!ENTRY org.eclipse.launchbar.core 2 0 2018-07-12 11:30:52.837 +!MESSAGE Enablement expression is missing for config provider for org.eclipse.cdt.debug.core.coreBuildDescriptorType + +!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:31:02.995 +!MESSAGE Execution terminated from outside + +!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:31:22.439 +!MESSAGE Execution terminated from outside + +!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:31:30.881 +!MESSAGE Execution terminated from outside + +!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:31:31.940 +!MESSAGE Execution terminated from outside + +!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:49:08.773 +!MESSAGE When trying to execute the `sh -c make all ' shell command an error occured. +Possible reasons are: +- the command does not exist +- you have no right to execute the command +- the error occured during executing the command +and many more. +Please check the TITAN console to identify the problem. + +!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:49:09.469 +!MESSAGE When trying to execute the `sh -c make all ' shell command an error occured. +Possible reasons are: +- the command does not exist +- you have no right to execute the command +- the error occured during executing the command +and many more. +Please check the TITAN console to identify the problem. + +!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:50:50.643 +!MESSAGE When trying to execute the `sh -c make all ' shell command an error occured. +Possible reasons are: +- the command does not exist +- you have no right to execute the command +- the error occured during executing the command +and many more. +Please check the TITAN console to identify the problem. + +!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:50:53.936 +!MESSAGE When trying to execute the `sh -c make all ' shell command an error occured. +Possible reasons are: +- the command does not exist +- you have no right to execute the command +- the error occured during executing the command +and many more. +Please check the TITAN console to identify the problem. + +!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:50:55.230 +!MESSAGE When trying to execute the `sh -c make all ' shell command an error occured. +Possible reasons are: +- the command does not exist +- you have no right to execute the command +- the error occured during executing the command +and many more. +Please check the TITAN console to identify the problem. + +!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:50:55.971 +!MESSAGE When trying to execute the `sh -c make all ' shell command an error occured. +Possible reasons are: +- the command does not exist +- you have no right to execute the command +- the error occured during executing the command +and many more. +Please check the TITAN console to identify the problem. + +!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:50:56.923 +!MESSAGE When trying to execute the `sh -c make all ' shell command an error occured. +Possible reasons are: +- the command does not exist +- you have no right to execute the command +- the error occured during executing the command +and many more. +Please check the TITAN console to identify the problem. + +!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:51:28.281 +!MESSAGE When trying to execute the `sh -c make all ' shell command an error occured. +Possible reasons are: +- the command does not exist +- you have no right to execute the command +- the error occured during executing the command +and many more. +Please check the TITAN console to identify the problem. + +!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:51:28.939 +!MESSAGE When trying to execute the `sh -c make all ' shell command an error occured. +Possible reasons are: +- the command does not exist +- you have no right to execute the command +- the error occured during executing the command +and many more. +Please check the TITAN console to identify the problem. + +!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:56:27.074 +!MESSAGE Execution terminated from outside + +!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:56:38.707 +!MESSAGE Execution terminated from outside + +!ENTRY org.eclipse.ui.navigator 4 0 2018-07-12 11:56:39.748 +!MESSAGE Cannot find navigator content extension (using triggerPoints) for object "" parent path: "F/STF549_Ng112/logs". Check that you have an expression for this object in a navigatorContent triggerPoints or enablement. + +!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:56:44.489 +!MESSAGE Execution terminated from outside + +!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:56:45.491 +!MESSAGE Execution terminated from outside + +!ENTRY org.eclipse.titan.common 4 0 2018-07-12 12:14:27.800 +!MESSAGE Execution terminated from outside + +!ENTRY org.eclipse.titan.common 4 0 2018-07-12 12:14:39.144 +!MESSAGE Execution terminated from outside + +!ENTRY org.eclipse.titan.common 4 0 2018-07-12 12:14:43.982 +!MESSAGE Execution terminated from outside + +!ENTRY org.eclipse.titan.common 4 0 2018-07-12 12:14:44.989 +!MESSAGE Execution terminated from outside +!SESSION 2018-07-12 12:39:05.533 ----------------------------------------------- +eclipse.buildId=4.7.2.M20171130-0510 +java.version=10.0.1 +java.vendor=Oracle Corporation +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US +Framework arguments: -product org.eclipse.epp.package.cpp.product +Command-line arguments: -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.cpp.product + +!ENTRY org.eclipse.epp.logging.aeri.ide 2 17 2018-07-12 12:40:19.402 +!MESSAGE Server ‘org.eclipse.epp.logging.aeri.ide.server’ failed with exception: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty. ; version: 2.0.6.v20170906-1226 +!STACK 0 +javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty + at java.base/sun.security.ssl.Alerts.getSSLException(Alerts.java:214) + at java.base/sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1974) + at java.base/sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1926) + at java.base/sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1909) + at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1436) + at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413) + at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:394) + at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:353) + at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:141) + at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353) + at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380) + at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) + at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) + at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88) + at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) + at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) + at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) + at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55) + at org.apache.http.client.fluent.Request.internalExecute(Request.java:173) + at org.apache.http.client.fluent.Executor.execute(Executor.java:262) + at org.eclipse.epp.internal.logging.aeri.ide.server.mars.IO.request(IO.java:170) + at org.eclipse.epp.internal.logging.aeri.ide.server.mars.IO.refreshConfiguration(IO.java:64) + at org.eclipse.epp.internal.logging.aeri.ide.server.mars.ServerConnection.startUp(ServerConnection.java:124) + at com.google.common.util.concurrent.AbstractIdleService$DelegateService$1.run(AbstractIdleService.java:62) + at com.google.common.util.concurrent.Callables$4.run(Callables.java:122) + at java.base/java.lang.Thread.run(Thread.java:844) +Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty + at java.base/sun.security.validator.PKIXValidator.(PKIXValidator.java:89) + at java.base/sun.security.validator.Validator.getInstance(Validator.java:181) + at java.base/sun.security.ssl.X509TrustManagerImpl.getValidator(X509TrustManagerImpl.java:330) + at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrustedInit(X509TrustManagerImpl.java:180) + at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:192) + at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:133) + at java.base/sun.security.ssl.ClientHandshaker.checkServerCerts(ClientHandshaker.java:1947) + at java.base/sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1777) + at java.base/sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:264) + at java.base/sun.security.ssl.Handshaker.processLoop(Handshaker.java:1098) + at java.base/sun.security.ssl.Handshaker.processRecord(Handshaker.java:1026) + at java.base/sun.security.ssl.SSLSocketImpl.processInputRecord(SSLSocketImpl.java:1137) + at java.base/sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1074) + at java.base/sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973) + at java.base/sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1402) + at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1429) + ... 21 more +Caused by: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty + at java.base/java.security.cert.PKIXParameters.setTrustAnchors(PKIXParameters.java:200) + at java.base/java.security.cert.PKIXParameters.(PKIXParameters.java:120) + at java.base/java.security.cert.PKIXBuilderParameters.(PKIXBuilderParameters.java:104) + at java.base/sun.security.validator.PKIXValidator.(PKIXValidator.java:86) + ... 36 more + +!ENTRY org.eclipse.launchbar.core 2 0 2018-07-12 12:42:24.834 +!MESSAGE Enablement expression is missing for descriptor type org.eclipse.cdt.debug.core.coreBuildDescriptorType + +!ENTRY org.eclipse.launchbar.core 2 0 2018-07-12 12:42:24.836 +!MESSAGE Enablement expression is missing for config provider for org.eclipse.cdt.debug.core.coreBuildDescriptorType + +!ENTRY org.eclipse.launchbar.core 2 0 2018-07-12 12:42:24.838 +!MESSAGE Enablement expression is missing for config provider for org.eclipse.cdt.debug.core.coreBuildDescriptorType + +!ENTRY org.eclipse.titan.common 4 0 2018-07-12 12:44:12.911 +!MESSAGE Execution terminated from outside diff --git a/workspace_stf549/.metadata/.mylyn/.taskListIndex/segments_1 b/workspace_stf549/.metadata/.mylyn/.taskListIndex/segments_1 new file mode 100644 index 0000000000000000000000000000000000000000..8122741ca527ab8ee056fcebcc6071d0510e42e3 GIT binary patch literal 71 zcmcD&o+HjtoSL4SnpaZHz`(#JFi9zC@{Mz>*S*RFKh3Lr!Dz_F2owhcCK!X^fX3t( KFiy^-c?SUF9TEiq literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.mylyn/.taskListIndex/write.lock b/workspace_stf549/.metadata/.mylyn/.taskListIndex/write.lock new file mode 100644 index 0000000..e69de29 diff --git a/workspace_stf549/.metadata/.mylyn/.tasks.xml.zip b/workspace_stf549/.metadata/.mylyn/.tasks.xml.zip new file mode 100644 index 0000000000000000000000000000000000000000..afa5d41173629f6a034f88fedfd4f2fe4cee935a GIT binary patch literal 235 zcmWIWW@Zs#;Nak3=yQ7G!+->Mfb5dQ;_RHv;u5`z+?>rD*Pl2WsNt=vb?(gh&7nqD zj01u^&U&BoKY7M`dngxg;pMFXo3?M}^wc@`?WB%gAV>2`6Q)%y9oFj8mMnWN9;#KL z@@(moB}}DHRh?UmRtE)75&0ujY{>HUZO)g(v|Ee}0p9E!dhup9i9m~6fH=ULkx7IB d;W%VDkmFDRvQq=RS=m6cj6i4wq-TSb0st48LgWAd literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.mylyn/repositories.xml.zip b/workspace_stf549/.metadata/.mylyn/repositories.xml.zip new file mode 100644 index 0000000000000000000000000000000000000000..4ac46520e9740e6492b61ca8b24c8b46b6108d3f GIT binary patch literal 557 zcmWIWW@Zs#;Nak3DAjr6!+-@{xbl6kyJXKbLw8M$vo4Pw zOBeMDsx)#$3jM4wtKC<1VDZBQudlComs~i*anxaPc=i%g`KvplYno18=u%zS|J>}B z!8uL0utItL-ig01e!jC!O`t%{RAAwv8s_(IyiC(HWN)-) z>#Ac0GCor#EbwUyI;A^>Euv9b$F^~=)ru{ye5=n~YPr2r)jdov%Sr6&lMVN+R;%AS z?D^g0=8MB|yDzxaJh?c>-aKD;i%E*Q;L_RES}Q+Q2*<8I{dxAPy<(2;`bphi`xbwh zo$*v@!Jac$i}s%X=v`IjeSZ3)#`LE*zH!~15NSUB$glFw&|i<9ugUuAWy_c4f5-ao zQK>q{0B?4VcEQr>*^CSfvpE?U0=yZSL>LfJi!29Mfb5dQ;_RHv;u5`z+?>rD*Pl2WsNt=vb?(gh&7nqD zj01u^&U&BoKY7M`dngxg;pMFXo3?M}^wc@`?WB%gAV>2`6Q)%y9oFj8mMnWN9;#KL z@@(moB}}DHRh?UmRtE)75&0ujY{>HUZO)g(v|Ee}0p9E!dhup9i9m~6fH=ULkx7IB d;W%VDkmFDRvQq=RS=m6cj6i4wq-TSb0sx3}LFxbi literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.cdt.core/.log b/workspace_stf549/.metadata/.plugins/org.eclipse.cdt.core/.log new file mode 100644 index 0000000..86bc1df --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.cdt.core/.log @@ -0,0 +1,6 @@ +*** SESSION Jul 12, 2018 05:34:11.39 ------------------------------------------- +*** SESSION Jul 12, 2018 05:40:31.95 ------------------------------------------- +*** SESSION Jul 12, 2018 05:58:07.58 ------------------------------------------- +*** SESSION Jul 12, 2018 06:09:58.35 ------------------------------------------- +*** SESSION Jul 12, 2018 10:57:04.23 ------------------------------------------- +*** SESSION Jul 12, 2018 12:40:10.53 ------------------------------------------- diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c b/workspace_stf549/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c @@ -0,0 +1 @@ + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp b/workspace_stf549/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp @@ -0,0 +1 @@ + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml b/workspace_stf549/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml new file mode 100644 index 0000000..1cb58a4 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml @@ -0,0 +1,5 @@ + +
+
+
+
diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml b/workspace_stf549/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml new file mode 100644 index 0000000..761ad3c --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml @@ -0,0 +1,14 @@ + +
+
+
+
+ + + + + +
+
+
+
diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/13/70b89801b985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/13/70b89801b985001814de869e8ad08251 new file mode 100644 index 0000000..0313248 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/13/70b89801b985001814de869e8ad08251 @@ -0,0 +1,132 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + None + -Wall-std=c++11-pthread-fPIC + + pcap + ssl + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + -pthread-fPIC + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn + + true + + + + + + src/ttcn/ttcn/TestCodec + + false + true + + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/15/e1b5cbe1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/15/e1b5cbe1978500181c21d10bc58219ba new file mode 100644 index 0000000..c012aba --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/15/e1b5cbe1978500181c21d10bc58219ba @@ -0,0 +1,97 @@ +/*! + * \file udp_layer.hh + * \brief Header file for ITS UDP/IP protocol layer definition. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include +#if !defined(LINUX) +#include +#include +struct iphdr { + #if __BYTE_ORDER == __LITTLE_ENDIAN + u_int8_t ihl:4, + version:4; + #elif __BYTE_ORDER == __BIG_ENDIAN + u_int8_t version:4, + ihl:4; + #else + #error "Please fix " + #endif + u_int8_t tos; + u_int16_t tot_len; + u_int16_t id; + u_int16_t frag_off; + u_int8_t ttl; + u_int8_t protocol; + u_int16_t check; + struct in_addr saddr; + struct in_addr daddr; + //The options start here. +}; +#else // LINUX +#include +#include +#endif // LINUX + +#include "t_layer.hh" +#include "params.hh" + +/*! + * \class udp_layer + * \brief This class provides description of ITS UDP/IP protocol layer + */ +class udp_layer : public layer { + params _params; //! Layer parameters + struct iphdr* _iphdr; //! IP layer description + struct udphdr* _udphdr; //! UDP layer description + struct sockaddr_in _saddr; //! Source socket address description + struct sockaddr_in _daddr; //! Destination socket address description + + /*! + * \fn unsigned short inet_check_sum(const void *buf, size_t hdr_len, const unsigned short p_initial_sum = 0); + * \brief Compute the UDP checksum + * \param[in] p_buffer The data to be sent + * \param[in] p_header_length The UDP header length + * \param [in] p_initial_sum The initial checksum value. Default: 0 + * \return The checksum value + */ + unsigned short inet_check_sum(const void *p_buffer, size_t p_header_length, const unsigned short p_initial_sum = 0); + +public: //! \publicsection + /*! + * \brief Specialised constructor + * Create a new instance of the udp_layer class + * \param[in] p_type \todo + * \param[in] p_param \todo + */ + udp_layer(const std::string & p_type, const std::string & p_param); + /*! + * \brief Default destructor + */ + virtual ~udp_layer() {} + + /*! + * \virtual + * \fn void send_data(OCTETSTRING& data, params& params); + * \brief Send bytes formated data to the lower layers + * \param[in] p_data The data to be sent + * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters + */ + virtual void send_data(OCTETSTRING& data, params& params); + /*! + * \virtual + * \fn void receive_data(OCTETSTRING& data, params& params); + * \brief Receive bytes formated data from the lower layers + * \param[in] p_data The bytes formated data received + * \param[in] p_params Some lower layers parameters values when data was received + */ + virtual void receive_data(OCTETSTRING& data, params& info); +}; // End of class udp_layer + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/16/b00bbfe1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/16/b00bbfe1978500181c21d10bc58219ba new file mode 100644 index 0000000..2d7ad2a --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/16/b00bbfe1978500181c21d10bc58219ba @@ -0,0 +1,414 @@ +/****************************************************************************** +* Copyright (c) 2000-2018 Ericsson Telecom AB +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +* +* Contributors: +* Zoltan Bibo - initial implementation and initial documentation +* Gergely Futo +* Oliver Ferenc Czerman +* Balasko Jeno +* Zoltan Bibo +* Eduard Czimbalmos +* Kulcsár Endre +* Gabor Szalai +* Jozsef Gyurusi +* Csöndes Tibor +* Zoltan Jasz +******************************************************************************/ +// +// File: Abstract_Socket.hh +// Description: Abstract_Socket header file +// Rev: R9B +// Prodnr: CNL 113 384 +// + + +#ifndef Abstract_Socket_HH +#define Abstract_Socket_HH + +#ifdef AS_USE_SSL +#include +#include +#include +#endif + +#include +#include +#include + +// to support systems not supporting IPv6 define AF_INET6 to some dummy value: +#ifndef AF_INET6 +#define AF_INET6 (-255) +#endif + +class PacketHeaderDescr { +public: + // Byte order in the header + enum HeaderByteOrder{ Header_MSB, Header_LSB }; +private: + unsigned long length_offset; + unsigned long nr_bytes_in_length; + HeaderByteOrder byte_order; + long value_offset; + unsigned long length_multiplier; +public: + PacketHeaderDescr(unsigned long p_length_offset, + unsigned long p_nr_bytes_in_length, HeaderByteOrder p_byte_order, + long p_value_offset = 0, unsigned long p_length_multiplier = 1) + : length_offset(p_length_offset), nr_bytes_in_length(p_nr_bytes_in_length), + byte_order(p_byte_order), value_offset(p_value_offset), + length_multiplier(p_length_multiplier) { } + + // returns the message length + unsigned long Get_Message_Length(const unsigned char* buffer_pointer) const; + // returns the number of bytes needed to have a valid message length + inline unsigned long Get_Valid_Header_Length() const + { return length_offset + nr_bytes_in_length; } +}; + +class Abstract_Socket +{ +protected: + enum TCP_STATES {CLOSED, LISTEN, ESTABLISHED, CLOSE_WAIT, FIN_WAIT}; + enum READING_STATES {STATE_DONT_RECEIVE, STATE_WAIT_FOR_RECEIVE_CALLBACK, STATE_BLOCK_FOR_SENDING, STATE_DONT_CLOSE, STATE_NORMAL}; + // client data + struct as_client_struct { + void *user_data; // pointer to any additional data needed by the user + TTCN_Buffer *fd_buff; // pointer to the data buffer + struct sockaddr_storage clientAddr;// client address +#if defined LINUX || defined FREEBSD || defined SOLARIS8 + socklen_t +#else /* SOLARIS or WIN32 */ + int +#endif + clientAddrlen; + TCP_STATES tcp_state; // TCP state + READING_STATES reading_state; //used when SSL_write returns SSL_ERROR_WANT_READ an we are using non-blocking socket + }; + + Abstract_Socket(); + Abstract_Socket(const char *testport_type, const char *testport_name); + virtual ~Abstract_Socket(); + + // Shall be called from set_parameter() + bool parameter_set(const char *parameter_name, const char *parameter_value); + // Shall be called from user_map() + void map_user(); + // Shall be called from user_unmap() + void unmap_user(); + + // puts the IP address in the addr + void get_host_id(const char* hostName, struct sockaddr_in *addr); /* This function should not be used! Use getaddrinfo instead! */ + + // Closes the current listening port and opens the specified one + int open_listen_port(const struct sockaddr_in & localAddr); /* This function should be removed! Deprecated by: */ + int open_listen_port(const char* localHostname, const char* localServicename); + // Closes the current listening port + void close_listen_port(); + + virtual void listen_port_opened(int port_number); + + // Opens a new client connection + int open_client_connection(const struct sockaddr_in & new_remote_addr, const struct sockaddr_in & new_local_addr); /* This function should be removed! Deprecated by: */ + int open_client_connection(const char* remoteHostname, const char* remoteService, const char* localHostname, const char* localService); + + virtual void client_connection_opened(int client_id); + + // Shall be called from Handle_Fd_Event() + void Handle_Socket_Event(int fd, boolean is_readable, boolean is_writable, boolean is_error); + // Shall be called from Handle_Timeout() - for possible future development + void Handle_Timeout_Event(double /*time_since_last_call*/) {}; + + // Shall be called from outgoing_send() + void send_outgoing(const unsigned char* message_buffer, int length, int client_id = -1); + void send_shutdown(int client_id = -1); + + // Access to private variables + bool get_nagling() const {return nagling;} + bool get_use_non_blocking_socket() const {return use_non_blocking_socket;}; + bool get_server_mode() const {return server_mode;} + bool get_socket_debugging() const {return socket_debugging;} + bool get_halt_on_connection_reset() const {return halt_on_connection_reset;} + bool get_use_connection_ASPs() const {return use_connection_ASPs;} + bool get_handle_half_close() const {return handle_half_close;} + int get_socket_fd() const; + int get_listen_fd() const {return listen_fd;} + + //set non-blocking mode + int set_non_block_mode(int fd, bool enable_nonblock); + + //increase buffer size + bool increase_send_buffer(int fd, int &old_size, int& new_size); + + const char* get_local_host_name(){return local_host_name; }; + unsigned int get_local_port_number(){return local_port_number; }; + const char* get_remote_host_name(){return remote_host_name; }; + unsigned int get_remote_port_number(){return remote_port_number; }; + const struct sockaddr_in & get_remote_addr() {return remoteAddr; }; /* FIXME: This function is deprecated and should be removed! */ + const struct sockaddr_in & get_local_addr() {return localAddr; }; /* FIXME: This function is deprecated and should be removed! */ + const int& get_ai_family() const {return ai_family;} + void set_ai_family(int parameter_value) {ai_family=parameter_value;} + bool get_ttcn_buffer_usercontrol() const {return ttcn_buffer_usercontrol; } + void set_nagling(bool parameter_value) {nagling=parameter_value;} + void set_server_mode(bool parameter_value) {server_mode=parameter_value;} + void set_handle_half_close(bool parameter_value) {handle_half_close=parameter_value;} + void set_socket_debugging(bool parameter_value) {socket_debugging=parameter_value;} + void set_halt_on_connection_reset(bool parameter_value) {halt_on_connection_reset=parameter_value;} + void set_ttcn_buffer_usercontrol(bool parameter_value) {ttcn_buffer_usercontrol=parameter_value;} + const char *test_port_type; + const char *test_port_name; + + // Called when a message is received + virtual void message_incoming(const unsigned char* message_buffer, int length, int client_id = -1) = 0; + + virtual void Add_Fd_Read_Handler(int fd) = 0; + virtual void Add_Fd_Write_Handler(int fd) = 0; + virtual void Remove_Fd_Read_Handler(int fd) = 0; + virtual void Remove_Fd_Write_Handler(int fd) = 0; + virtual void Remove_Fd_All_Handlers(int fd) = 0; + virtual void Handler_Uninstall() = 0; + virtual void Timer_Set_Handler(double call_interval, boolean is_timeout = TRUE, + boolean call_anyway = TRUE, boolean is_periodic = TRUE) = 0; // unused - for possible future development + virtual const PacketHeaderDescr* Get_Header_Descriptor() const; + + // Logging functions + void log_debug(const char *fmt, ...) const + __attribute__ ((__format__ (__printf__, 2, 3))); + void log_warning(const char *fmt, ...) const + __attribute__ ((__format__ (__printf__, 2, 3))); + void log_error(const char *fmt, ...) const + __attribute__ ((__format__ (__printf__, 2, 3), __noreturn__)); + void log_hex(const char *prompt, const unsigned char *msg, size_t length) const; + + // Called when a message is to be received (an event detected) + virtual int receive_message_on_fd(int client_id); + // Called when a message is to be sent + virtual int send_message_on_fd(int client_id, const unsigned char* message_buffer, int message_length); + virtual int send_message_on_nonblocking_fd(int client_id, const unsigned char *message_buffer, int message_length); + // Called after a peer is connected + virtual void peer_connected(int client_id, sockaddr_in& remote_addr); /* This function should be removed! deprecated by: */ + virtual void peer_connected(int /*client_id*/, const char * /*host*/, const int /*port*/) {}; + // Called after a peer is disconnected + virtual void peer_disconnected(int client_id); + // Called when a peer shut down its fd for writing + virtual void peer_half_closed(int client_id); + // Called after a send error + virtual void report_error(int client_id, int msg_length, int sent_length, const unsigned char* msg, const char* error_text); + // Called after a unsent message + virtual void report_unsent(int client_id, int msg_length, int sent_length, const unsigned char* msg, const char* error_text); + + // Test port parameters + virtual const char* local_port_name(); + virtual const char* remote_address_name(); + virtual const char* local_address_name(); + virtual const char* remote_port_name(); + virtual const char* ai_family_name(); + virtual const char* use_connection_ASPs_name(); + virtual const char* halt_on_connection_reset_name(); + virtual const char* client_TCP_reconnect_name(); + virtual const char* TCP_reconnect_attempts_name(); + virtual const char* TCP_reconnect_delay_name(); + virtual const char* server_mode_name(); + virtual const char* socket_debugging_name(); + virtual const char* nagling_name(); + virtual const char* use_non_blocking_socket_name(); + virtual const char* server_backlog_name(); + + // Fetch/Set user data pointer + void* get_user_data(int client_id) {return get_peer(client_id)->user_data;} + void set_user_data(int client_id, void *uptr) {get_peer(client_id)->user_data = uptr;} + // Called after a TCP connection is established + virtual bool add_user_data(int client_id); + // Called before the TCP connection is drop down + virtual bool remove_user_data(int client_id); + // Called when a client shall be removed + virtual void remove_client(int client_id); + // Called when all clients shall be removed + virtual void remove_all_clients(); + // Called at the beginning of map() to check mandatory parameter presence + virtual bool user_all_mandatory_configparameters_present(); + TTCN_Buffer *get_buffer(int client_id) {return get_peer(client_id)->fd_buff; } + + // Client data management functions + // add peer to the list + as_client_struct *peer_list_add_peer(int client_id); + // remove peer from list + void peer_list_remove_peer(int client_id); + // remove all peers from list + void peer_list_reset_peer(); + // returns back the structure of the peer + as_client_struct *get_peer(int client_id, bool no_error=false) const; + // length of the list + int peer_list_get_length() const { return peer_list_length; } + // number of peers in the list + int peer_list_get_nr_of_peers() const; + // fd of the last peer in the list + int peer_list_get_last_peer() const; + // fd of the first peer in the list + int peer_list_get_first_peer() const; + + +private: + void handle_message(int client_id = -1); + void all_mandatory_configparameters_present(); + bool halt_on_connection_reset_set; + bool halt_on_connection_reset; + bool client_TCP_reconnect; + int TCP_reconnect_attempts; + int TCP_reconnect_delay; + bool server_mode; + bool use_connection_ASPs; + bool handle_half_close; + bool socket_debugging; + bool nagling; + bool use_non_blocking_socket; + bool ttcn_buffer_usercontrol; + char* local_host_name; + unsigned int local_port_number; + char* remote_host_name; + unsigned int remote_port_number; + int ai_family; // address family to use + // remoteAddr and localAddr is filled when map_user is called + struct sockaddr_in remoteAddr; /* FIXME: not used! should be removed */ + struct sockaddr_in localAddr; /* FIXME: not used! should be removed */ + int server_backlog; + int deadlock_counter; + int listen_fd; + int peer_list_length; + + // Client data management functions + as_client_struct **peer_list_root; + void peer_list_resize_list(int client_id); +}; + + + +#ifdef AS_USE_SSL + +class SSL_Socket: public Abstract_Socket +{ + +protected: + SSL_Socket(); + SSL_Socket(const char *tp_type, const char *tp_name); + virtual ~SSL_Socket(); + + bool parameter_set(const char * parameter_name, const char * parameter_value); + // Called after a TCP connection is established (client side or server accepted a connection). + // It will create a new SSL conenction on the top of the TCP connection. + virtual bool add_user_data(int client_id); + // Called after a TCP connection is closed. + // It will delete the SSL conenction. + virtual bool remove_user_data(int client_id); + // Called from all_mandatory_configparameters_present() function + // during map() operation to check mandatory parameter presents. + virtual bool user_all_mandatory_configparameters_present(); + // Called after an SSL connection is established (handshake finished) for further + // authentication. Shall return 'true' if verification + // is OK, otherwise 'false'. If return value was 'true', the connection is kept, otherwise + // the connection will be shutted down. + virtual bool ssl_verify_certificates(); + // Call during SSL handshake (and rehandshake as well) by OpenSSL + // Return values: + // ==1: user authentication is passed, go on with handshake + // ==0: user authentication failed, refuse the connection to the other peer + // <0 : user don't care, go on with default basic checks + virtual int ssl_verify_certificates_at_handshake(int preverify_ok, X509_STORE_CTX *ssl_ctx); + // Called to receive from the socket if data is available (select()). + // Shall return with 0 if the peer is disconnected or with the number of bytes read. + // If error occured, execution shall stop in the function by calling log_error() + virtual int receive_message_on_fd(int client_id); + // Called to send a message on the socket. + // Shall return with 0 if the peer is disconnected or with the number of bytes written. + // If error occured, execution shall stop in the function by calling log_error() + virtual int send_message_on_fd(int client_id, const unsigned char * message_buffer, int length_of_message); + virtual int send_message_on_nonblocking_fd(int client_id, const unsigned char * message_buffer, int length_of_message); + + // The following members can be called to fetch the current values + bool get_ssl_use_ssl() const {return ssl_use_ssl;} + bool get_ssl_verifycertificate() const {return ssl_verify_certificate;} + bool get_ssl_use_session_resumption() const {return ssl_use_session_resumption;} + bool get_ssl_initialized() const {return ssl_initialized;} + char * get_ssl_key_file() const {return ssl_key_file;} + char * get_ssl_certificate_file() const {return ssl_certificate_file;} + char * get_ssl_trustedCAlist_file() const {return ssl_trustedCAlist_file;} + char * get_ssl_cipher_list() const {return ssl_cipher_list;} + char * get_ssl_password() const; + const unsigned char * get_ssl_server_auth_session_id_context() const {return ssl_server_auth_session_id_context;} +// const SSL_METHOD * get_current_ssl_method() const {return ssl_method;} +// const SSL_CIPHER * get_current_ssl_cipher() const {return ssl_cipher;} + SSL_SESSION* get_current_ssl_session() const {return ssl_session;} + SSL_CTX * get_current_ssl_ctx() const {return ssl_ctx;} + SSL * get_current_ssl() const {return ssl_current_ssl;} + + // The following members can be called to set the current values + // NOTE that in case the parameter_value is a char *pointer, the old character + // array is deleted by these functions automatically. + void set_ssl_use_ssl(bool parameter_value); + void set_ssl_verifycertificate(bool parameter_value); + void set_ssl_use_session_resumption(bool parameter_value); + void set_ssl_key_file(char * parameter_value); + void set_ssl_certificate_file(char * parameter_value); + void set_ssl_trustedCAlist_file(char * parameter_value); + void set_ssl_cipher_list(char * parameter_value); + void set_ssl_server_auth_session_id_context(const unsigned char * parameter_value); + + // The following members can be called to fetch the default test port parameter names + virtual const char* ssl_use_ssl_name(); + virtual const char* ssl_use_session_resumption_name(); + virtual const char* ssl_private_key_file_name(); + virtual const char* ssl_trustedCAlist_file_name(); + virtual const char* ssl_certificate_file_name(); + virtual const char* ssl_password_name(); + virtual const char* ssl_cipher_list_name(); + virtual const char* ssl_verifycertificate_name(); + virtual const char* ssl_disable_SSLv2(); + virtual const char* ssl_disable_SSLv3(); + virtual const char* ssl_disable_TLSv1(); + virtual const char* ssl_disable_TLSv1_1(); + virtual const char* ssl_disable_TLSv1_2(); + +private: + bool ssl_verify_certificate; // verify other part's certificate or not + bool ssl_use_ssl; // whether to use SSL + bool ssl_initialized; // whether SSL already initialized or not + bool ssl_use_session_resumption; // use SSL sessions or not + + bool SSLv2; + bool SSLv3; + bool TLSv1; + bool TLSv1_1; + bool TLSv1_2; + + + char *ssl_key_file; // private key file + char *ssl_certificate_file; // own certificate file + char *ssl_trustedCAlist_file; // trusted CA list file + char *ssl_cipher_list; // ssl_cipher list restriction to apply + char *ssl_password; // password to decode the private key + static const unsigned char * ssl_server_auth_session_id_context; + +// const SSL_METHOD *ssl_method; // SSL context method + SSL_CTX *ssl_ctx; // SSL context +// const SSL_CIPHER *ssl_cipher; // used SSL ssl_cipher + SSL_SESSION *ssl_session; // SSL ssl_session + SSL *ssl_current_ssl; // currently used SSL object + static void *ssl_current_client; // current SSL object, used only during authentication + + void ssl_actions_to_seed_PRNG(); // Seed the PRNG with enough random data + void ssl_init_SSL(); // Initialize SSL libraries and create the SSL context + void ssl_log_SSL_info(); // Log the currently used SSL setting (debug) + int ssl_getresult(int result_code); // Fetch and log the SSL error code from I/O operation result codes + // Callback function to pass the password to OpenSSL. Called by OpenSSL + // during SSL handshake. + static int ssl_password_cb(char * password_buffer, int length_of_password, int rw_flag, void * user_data); + // Callback function to perform authentication during SSL handshake. Called by OpenSSL. + // NOTE: for further authentication, use ssl_verify_certificates(). + static int ssl_verify_callback(int preverify_status, X509_STORE_CTX * ssl_context); +}; +#endif + +#endif diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/17/808fd4e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/17/808fd4e1978500181c21d10bc58219ba new file mode 100644 index 0000000..33f24fe --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/17/808fd4e1978500181c21d10bc58219ba @@ -0,0 +1,71 @@ +#include +#include + +#include "layer_stack_builder.hh" + +#include "loggers.hh" + +layer_stack_builder* layer_stack_builder::_instance = NULL; + +// static functions +layer_stack_builder * layer_stack_builder::get_instance() +{ + return _instance ? _instance : _instance = new layer_stack_builder(); +} + +void layer_stack_builder::register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory) +{ + layer_stack_builder::get_instance()->_register_layer_factory(p_type, p_layer_factory); +} + +// member functions +layer_stack_builder::layer_stack_builder() +{ +} + +void layer_stack_builder::_register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory) +{ + _layer_factories[p_type] = p_layer_factory; +} + +layer* layer_stack_builder::create_layer_stack(const char* p_layer_stack_description) +{ + loggers::get_instance().log(">>> layer_stack_builder::create_layer_stack: %s", p_layer_stack_description); + + layer* entry = NULL; // Initial layer (the first declared) + layer* up = NULL; // Upper layer + // Parse the layer description + try { + std::regex rgx ("(\\w+)(\\((.*?)\\))?(\\/|$)"); + std::string str = p_layer_stack_description; + std::sregex_iterator begin(str.cbegin(), str.cend(), rgx); + std::sregex_iterator end = std::sregex_iterator(); + for (std::sregex_iterator it = begin; it != end; ++it) { + std::smatch m = *it; + loggers::get_instance().log("layer_stack_builder::create_layer_stack: %d - %s - %s - %s - %s", m.size(), m[0].str().c_str(), m[1].str().c_str(), m[2].str().c_str(), m[3].str().c_str()); + LayerFactoryMap::iterator i = _layer_factories.find(m[1].str()); + if (i == _layer_factories.end()) { + loggers::get_instance().error("layer_stack_builder::create_layer_stack: %s: Unknown layer type", m[1].str().c_str()); + } + loggers::get_instance().log("layer_stack_builder::create_layer_stack: Create layer %s, %s", m[1].str().c_str(), m[3].str().c_str()); + layer* l = i->second->create_layer(m[1].str(), m[3].str()); + if (NULL == l) { + loggers::get_instance().error("layer_stack_builder::create_layer_stack: %s: Layer creation error", m[1].str().c_str()); + } + + loggers::get_instance().log("layer_stack_builder::create_layer_stack: Setup layers for %s", l->to_string().c_str()); + l->add_upper_layer(up); + if (entry == NULL) { // Set the first declared layer + entry = l; + } + up = l; // Build the linked list of layers + } // End of 'for' statement + } + catch(const std::logic_error& e){ + if(up){ // FIXME To be reviewed + up->delete_layer(); + up = NULL; + } + } + return entry; +} diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/18/80770d69c28500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/18/80770d69c28500181dc9eb7ae31560a9 new file mode 100644 index 0000000..0313248 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/18/80770d69c28500181dc9eb7ae31560a9 @@ -0,0 +1,132 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + None + -Wall-std=c++11-pthread-fPIC + + pcap + ssl + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + -pthread-fPIC + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn + + true + + + + + + src/ttcn/ttcn/TestCodec + + false + true + + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1a/404dc5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1a/404dc5e1978500181c21d10bc58219ba new file mode 100644 index 0000000..6f224a8 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1a/404dc5e1978500181c21d10bc58219ba @@ -0,0 +1,48 @@ +/*! + * \file udp_layer.hh + * \brief Header file for ITS UDP/IP protocol layer definition. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "t_layer.hh" +#include "params.hh" + +class ethernet_layer : public layer { + params _params; //! Layer parameters + +public: //! \publicsection + /*! + * \brief Specialised constructor + * Create a new instance of the ethernet_layer class + * \param[in] p_type \todo + * \param[in] p_param \todo + */ + ethernet_layer(const std::string & p_type, const std::string & param); + /*! + * \brief Default destructor + */ + virtual ~ethernet_layer() {}; + + /*! + * \virtual + * \fn void send_data(OCTETSTRING& data, params& params); + * \brief Send bytes formated data to the lower layers + * \param[in] p_data The data to be sent + * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters + */ + virtual void send_data(OCTETSTRING& data, params& params); + /*! + * \virtual + * \fn void receive_data(OCTETSTRING& data, params& params); + * \brief Receive bytes formated data from the lower layers + * \param[in] p_data The bytes formated data received + * \param[in] p_params Some lower layers parameters values when data was received + */ + virtual void receive_data(OCTETSTRING& data, params& info); +}; // End of class ethernet_layer diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/008e0c58b685001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/008e0c58b685001814de869e8ad08251 new file mode 100644 index 0000000..34ae5ce --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/008e0c58b685001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 11:31:23 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall-std=c++11-pthread-fPIC + +# Flags for the linker: +LDFLAGS = -pthread-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/b0d6329bc28500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/b0d6329bc28500181dc9eb7ae31560a9 new file mode 100644 index 0000000..026fc03 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/b0d6329bc28500181dc9eb7ae31560a9 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 12:59:08 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -std=c++11 + +# Flags for the linker: +LDFLAGS = + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/f1a0d5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/f1a0d5e1978500181c21d10bc58219ba new file mode 100644 index 0000000..3a9df27 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/f1a0d5e1978500181c21d10bc58219ba @@ -0,0 +1,46 @@ +#include "LibSip_SIPTypesAndValues.hh" + +#include "sip_codec_register_request.hh" +#include "loggers.hh" + +int sip_codec_register_request::encode (const LibSip__SIPTypesAndValues::REGISTER__Request& msg, OCTETSTRING& data) +{ + loggers::get_instance().log_msg(">>> sip_codec_register_request::encode: ", (const Base_Type&)msg); + + loggers::get_instance().log_msg("<<< sip_codec_register_request::encode: data=", data); + if (_codec.encode((LibSip__SIPTypesAndValues::Request&)msg, data) == -1) { + loggers::get_instance().warning("sip_codec_register_request::encode: Failed to encode message"); + return -1; + } + + return 0; +} + +int sip_codec_register_request::decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::REGISTER__Request& msg, params* p_params) +{ + loggers::get_instance().log_msg(">>> sip_codec_register_request::decode: data=", data); + + // Sanity checks + if (data.lengthof() == 0) { + loggers::get_instance().warning("sip_codec_register_request::decode: Wrong parameters"); + return -1; + } + + // LibSip__SIPTypesAndValues::Request request; + if (_codec.decode(data, (LibSip__SIPTypesAndValues::Request&)msg) == -1) { + // if (_codec.decode(data, request) == -1) { + loggers::get_instance().warning("sip_codec_register_request::decode: Failed to decode message"); + return -1; + } + // msg.requestLine() = request.requestLine(); + // msg.msgHeader() = request.msgHeader(); + // msg.messageBody() = request.messageBody(); + // msg.payload() = request.payload(); + + if (msg.requestLine().method() != LibSip__SIPTypesAndValues::Method::REGISTER__E) { + loggers::get_instance().warning("sip_codec_register_request::decode: Wrong SIP Method, expected REGISTER"); + return -1; + } + + return 0; +} diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/20/c066b61cb985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/20/c066b61cb985001814de869e8ad08251 new file mode 100644 index 0000000..1de96de --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/20/c066b61cb985001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 11:50:44 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC + +# Flags for the linker: +LDFLAGS = -pthread,-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/23/00493a33b685001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/23/00493a33b685001814de869e8ad08251 new file mode 100644 index 0000000..8d9519d --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/23/00493a33b685001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 10:59:12 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall -std=c++11 -pthread -fPIC + +# Flags for the linker: +LDFLAGS = -pthread -fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/23/6063cfd3978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/23/6063cfd3978500181c21d10bc58219ba new file mode 100644 index 0000000000000000000000000000000000000000..0e6c799b8037bdd3590eabc15371d4b684c01f7b GIT binary patch literal 870912 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

+(5%MffA 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

LEI`y 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%0DtnU^2~z! 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 literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/24/f0215881bd85001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/24/f0215881bd85001814de869e8ad08251 new file mode 100644 index 0000000..3d59dfc --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/24/f0215881bd85001814de869e8ad08251 @@ -0,0 +1,45 @@ +/*! + * \file sip_layer_factory.hh + * \brief Header file for ITS Sip protocol layer factory. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "layer_stack_builder.hh" + +#include "sip_layer.hh" + +/*! + * \class sip_layer_factory + * \brief This class provides a factory class to create an sip_layer class instance + */ +class sip_layer_factory : public layer_factory { + static sip_layer_factory _f; //! Reference to the unique instance of this class +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the udp_layer_factory class + * \remark The HTTP layer identifier is HTTP + */ + sip_layer_factory() { + // Register factory + layer_stack_builder::register_layer_factory("HTTP", this); + }; + /*! + * \fn layer* create_layer(const std::string & type, const std::string & param); + * \brief Create the layers stack based on the provided layers stack description + * \param[in] p_type The provided layers stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + * \inline + */ + inline virtual layer* create_layer(const std::string& p_type, const std::string& p_param){ + return new sip_layer(p_type, p_param); + }; +}; // End of class sip_layer_factory + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/28/f0fbaad8b185001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/28/f0fbaad8b185001814de869e8ad08251 new file mode 100644 index 0000000..ed111ce --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/28/f0fbaad8b185001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 10:58:53 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall -std=c++11 -pthread -fPIC + +# Flags for the linker: +LDFLAGS = -pthread -fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/2c/a079d26dc28500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/2c/a079d26dc28500181dc9eb7ae31560a9 new file mode 100644 index 0000000..85c1b22 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/2c/a079d26dc28500181dc9eb7ae31560a9 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 12:57:54 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -std=c++11-pthread-fPIC + +# Flags for the linker: +LDFLAGS = -pthread-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/2f/50a9d1e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/2f/50a9d1e1978500181c21d10bc58219ba new file mode 100644 index 0000000..84bef6d --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/2f/50a9d1e1978500181c21d10bc58219ba @@ -0,0 +1,135 @@ +#include "converter.hh" + +converter * converter::instance = NULL; + +uint16_t converter::swap(const uint16_t p_value) { + uint8_t *ptr = (uint8_t *)&p_value; + return (ptr[0] << 8) | ptr[1]; +} + +uint32_t converter::swap(const uint32_t p_value) { + uint8_t *ptr = (uint8_t *)&p_value; + return (ptr[0] << 24) | (ptr[1] << 16) | (ptr[2] << 8) | ptr[3]; +} + +std::string converter::string_to_hexa(const std::string & p_value) { + static const char * const lut = "0123456789ABCDEF"; + + std::string input(p_value); + std::for_each( + input.begin(), + input.end(), + [](char & c) { + c = std::toupper(c); + } + ); + + std::string output; + uint32_t length = p_value.length(); + output.reserve(2 * length); + for (uint32_t i = 0; i < length; ++i) { + const uint8_t c = input[i]; + output.push_back(lut[c >> 4]); + output.push_back(lut[c & 15]); + } // End of 'for' statement + + return output; +} + +std::string converter::bytes_to_hexa(const std::vector & p_value) { + std::ostringstream oss; + oss << std::setfill('0'); + std::for_each( + p_value.begin(), + p_value.end(), + [&oss](uint8_t ch) { + oss << std::hex + << std::setw(2) + << static_cast(ch); + } + ); + return oss.str(); +} + +std::vector converter::hexa_to_bytes(const std::string & p_value) { + static const char * const lut = "0123456789ABCDEF"; + + // Sanity check + std::vector output; + if (p_value.length() & 1) { + return output; + } + + std::string input(p_value); + std::for_each( + input.begin(), + input.end(), + [](char & c) { + c = std::toupper(c); + } + ); + + output.reserve(p_value.length() / 2); + for (uint32_t i = 0; i < p_value.length(); i += 2) { + char msbDigit = input[i]; + const char *msbIndex = std::lower_bound(lut, lut + 16, msbDigit); + if (*msbIndex != msbDigit) { + output.clear(); + return output; + } + char lsbDigit = input[i + 1]; + const char* lsbIndex = std::lower_bound(lut, lut + 16, lsbDigit); + if (*lsbIndex != lsbDigit) { + output.clear(); + return output; + } + output.push_back(((msbIndex - lut) << 4) | (lsbIndex - lut)); + } // End of 'for' statement + + return output; +} + +std::string converter::time_to_string(const time_t p_time) { + struct tm * t = std::localtime(&p_time); + return time_to_string(*t); +} + +std::string converter::time_to_string(const struct tm & p_time) { + char buffer[64] = { 0 }; + // Format: RFC 822, 1036, 1123, 2822 + std::strftime(buffer, 64, "%a, %d %b %Y %H:%M:%S %z", &p_time); + return std::string(buffer); +} + +std::string converter::trim(const std::string& str, const std::string& whitespace) { + size_t strBegin = str.find_first_not_of(whitespace); + if (strBegin == std::string::npos) + return ""; // no content + + size_t strEnd = str.find_last_not_of(whitespace); + size_t strRange = strEnd - strBegin + 1; + + return str.substr(strBegin, strRange); +} + +std::vector converter::split_arguments_line(const std::string & p_value) { + std::vector output; + std::string line = trim(p_value); + if (!line.empty() && (line[0] == '-')) { // Valid command line + size_t current = 0; + size_t next = (size_t)-1; + size_t pos = 0; + do { + if (line[pos + 1] == '-') { // -- + current = pos + 2; + } else { + current = pos + 1; + } + next = line.find("-", current); + std::string str(line.substr(pos, next - pos)); + output.push_back(str); + pos = next; + } while (next != std::string::npos); + } // else, invalid command line + return output; +} diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3/3044c0e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3/3044c0e1978500181c21d10bc58219ba new file mode 100644 index 0000000..9a6f4b5 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3/3044c0e1978500181c21d10bc58219ba @@ -0,0 +1,63 @@ +/*! + * \file codec.hh + * \brief Header file for ITS abstract codec definition. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "params.hh" + +class OCTETSTRING; //! Declare TITAN class +class CHARSTRING; //! Declare TITAN class +class BITSTRING; //! Declare TITAN class + +/*! + * \class codec + * \brief This class provides the interface for all ITS codecs, include UT and AC codecs + * \abstract + */ +template +class codec { +protected: + params* _params; //! Reference to params stack + // \todo Use smart pointer std::unique_ptr + +public: //! \publicsection + /*! + * \fn codec(); + * \brief Default constructor + * \todo Remove logs + */ + explicit codec() : _params(nullptr) { }; + /*! + * \fn ~codec(); + * \brief Default destructor + * \virtual + * \todo Remove logs + */ + virtual ~codec() { }; + /*! + * \fn int encode(const TPDUEnc& msg, OCTETSTRING& data); + * \brief Encode typed message into an octet string + * \param[in] p_message The typed message to be encoded + * \param[out] p_data The encoding result + * \return 0 on success, -1 otherwise + * \pure + */ + virtual int encode(const TPDUEnc& p_message, OCTETSTRING& p_data) = 0; + /*! + * \fn int decode(const OCTETSTRING& p_, TPDUDec& p_message, params* p_params = NULL); + * \brief Encode typed message into an octet string format + * \param[in] p_data The message in its octet string + * \param[out] p_message The decoded typed message + * \return 0 on success, -1 otherwise + * \pure + */ + virtual int decode(const OCTETSTRING& p_, TPDUDec& p_message, params* p_params = NULL) = 0; +}; // End of class codec + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3/c02bd5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3/c02bd5e1978500181c21d10bc58219ba new file mode 100644 index 0000000..1fae651 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3/c02bd5e1978500181c21d10bc58219ba @@ -0,0 +1,91 @@ +/*! + * \file params.cc + * \brief Source file for the parameter dictionary. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#include +#include + +#include "params.hh" +#include "loggers.hh" + +const std::string& params::debug = std::string("debug"); + +const std::string& params::loopback = std::string("loopback"); + +const std::string& params::mac_src = std::string("mac_src"); +const std::string& params::mac_dst = std::string("mac_dst"); +const std::string& params::mac_bc = std::string("mac_bc"); +const std::string& params::eth_type = std::string("eth_type"); + + +const std::string& params::nic = std::string("nic"); +const std::string& params::latitude = std::string("latitude"); +const std::string& params::longitude = std::string("longitude"); + +const std::string& params::server = std::string("server"); +const std::string& params::port = std::string("port"); +const std::string& params::use_ssl = std::string("use_ssl"); + +const std::string& params::sip_url = std::string("sip_url"); +const std::string& params::sip_version = std::string("sip_version"); +const std::string& params::payload = std::string("payload"); + +const std::string& params::codecs = std::string("codecs"); + +void params::convert(params& p_param, const std::string p_parameters) { + // Sanity checks + if (p_parameters.length() == 0) { + return; + } + loggers::get_instance().log(">>> params::convert: %s", p_parameters.c_str()); + // Extract parameters + try { + std::regex rgx ("(\\w+)=(.*?)(,|$)"); + std::sregex_iterator begin(p_parameters.cbegin(), p_parameters.cend(), rgx); + std::sregex_iterator end = std::sregex_iterator(); + for (std::sregex_iterator it = begin; it != end; ++it) { + std::smatch m = *it; + loggers::get_instance().log("params::convert: %d - %s - %s - %s - %s", m.size(), m[0].str().c_str(), m[1].str().c_str(), m[2].str().c_str(), m[3].str().c_str()); + p_param.insert(std::pair(m[1].str(), m[2].str())); + } // End of 'for' statement + } + catch(const std::logic_error& e){ + p_param.clear(); + } + loggers::get_instance().log("<<< params::convert"); +} + +void params::log() const { + loggers::get_instance().log("params::log"); + if (size() == 0) { + loggers::get_instance().log("\tEmpty"); + } else { + for (const_iterator it = cbegin(); it != cend(); ++it) { + loggers::get_instance().log("\t(%s, %s)", it->first.c_str(), it->second.c_str()); + } // End of 'for' statement + } +} + +void params::log() { + loggers::get_instance().log("params::log"); + if (size() == 0) { + loggers::get_instance().log("\tEmpty"); + } else { + for (const_iterator it = cbegin(); it != cend(); ++it) { + loggers::get_instance().log("\t(%s, %s)", it->first.c_str(), it->second.c_str()); + } // End of 'for' statement + } +} + +void params::reset() { + loggers::get_instance().log("params::reset"); + for (iterator it = begin(); it != end(); ++it) { + it->second.clear(); + } // End of 'for' statement +} diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/30/3026c5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/30/3026c5e1978500181c21d10bc58219ba new file mode 100644 index 0000000..5d67984 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/30/3026c5e1978500181c21d10bc58219ba @@ -0,0 +1,356 @@ +/*! + * \file converter.hh + * \brief Helper class for types converter. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include // LONG_MAX, LLONG_MAX +#include // time_t, struct tm, difftime, time, mktime + +/*! + * \class converter + * \brief This class provide a set of methods for types conversions + * \remark Singleton pattern + */ +class converter { + + /*! + * \brief Unique static object reference of this class + */ + static converter * instance; + + /*! + * \brief Default private ctor + */ + converter() {}; + /*! + * \brief Default private dtor + */ + ~converter() { + if (instance != NULL) { + delete instance; + instance = NULL; + } + }; + +public: /*! \publicsection */ + /*! + * \brief Public accessor to the single object reference + */ + inline static converter & get_instance() { + if (instance == NULL) instance = new converter(); + return *instance; + }; + +public: + /*! + * \enum endian_t + * \brief Endianess style + */ + typedef enum { + big_endian, + little_endian + } endian_t; + +public: + /*! + * \brief Convert a Binary Coded Decimal value into a binary value + * \param[in] p_value The BDC value + * \return The binary value + * \inline + */ + inline uint8_t bcd_to_bin(const uint8_t p_value) { + return ((p_value / 16 * 10) + (p_value % 16)); + }; + + /*! + * \brief Convert a binary value into a Binary Coded Decimal value + * \param[in] p_value The binary value + * \return The BCD value + * \inline + */ + inline uint8_t bin_to_bcd(const uint8_t p_value) { + return ((p_value / 10 * 16) + (p_value % 10)); + }; + + /*! + * \brief Swap two bytes length value (e.g. 0xCAFE becomes 0xFECA) + * \param[in] p_value The value to swap + * \return The swapped value + * \inline + */ + uint16_t swap(const uint16_t p_value); + inline int16_t swap(const int16_t p_value) { + return static_cast(swap(static_cast(p_value))); + }; + /*! + * \brief Swap four bytes length value (used for littel endian / big endian) + * \param[in] p_value The value to swap + * \return The swapped value + */ + uint32_t swap(const uint32_t p_value); + inline int32_t swap(const int32_t p_value) { + return static_cast(swap(static_cast(p_value))); + }; + + /*! + * \brief Convert a string into an hexadecimal string + * \param[in] p_value The string value + * \return The hexadecimal value + */ + std::string string_to_hexa(const std::string & p_value); + /*! + * \brief Convert a bytes array int32_t an hexadecimal string + * \param[in] p_value The bytes array value + * \return The hexadecimal value + */ + std::string bytes_to_hexa(const std::vector & p_value); + /*! + * \brief Convert an hexadecimal string into a bytes array + * \param[in] p_value The hexadecimal value + * \return The bytes array value + */ + std::vector hexa_to_bytes(const std::string & p_value); + + /*! + * \brief Convert a time in time_t format into a string formated according to RFC 822, 1036, 1123, 2822 + * \param[in] p_time The time to convert in time_t format + * \return The time string formated + * \see http://www.unixtimestamp.com/ + * @code + * std::string result = time_to_string(1489755780); + * result.compare("Fri, 17 Mar 2017 13:03:00 +0000") == 0 // When time zone is set to UTC + * @endcode + * \remark Use commands 1) timedatectl to change your machine timezone (e.g. sudo timedatectl set-timezone UTC to change machine timezone to UTC, 2) timedatectl list-timezones to get the list of the timezones) + */ + std::string time_to_string(const time_t p_time); + /*! + * \brief Convert a time in struct tm format into a string formated according to RFC 822, 1036, 1123, 2822 + * \param[in] p_time The time to convert in struct tm format + * \return The time string formated + * \see http://www.unixtimestamp.com/ + */ + std::string time_to_string(const struct tm & p_time); + + /*! + * \brief Convert a 16-bits integer (int16_t) into a bytes array + * \param[in] p_value The 16-bits integer value + * \param[in] p_endianess Endianess style. Default: big_endian + * \return The bytes array value + */ + inline std::vector short_to_bytes(const int16_t p_value, const endian_t p_endianess = big_endian) const { + std::vector result(sizeof(short), 0x00); + for (int i = sizeof(short) - 1; i >= 0; i--) { + int offset = (sizeof(short) - 1 - i) * 8; + result[i] = static_cast((p_value >> offset) & 0xFF); + } // End of 'for' statement + return result; + }; // End of short_to_bytes + + /*! + * \brief Convert a bytes array into a 16-bits integer (int16_t) + * \param[in] p_value The bytes array + * \param[in] p_endianess Endianess style. Default: big_endian + * \return The 16-bits integer on success, SHRT_MAX on error (wrong bytes array size) + */ + inline int16_t bytes_to_short(const std::vector & p_value, const endian_t p_endianess = big_endian) const { + // Sanity check + if (p_value.size() > sizeof(short)) { + return SHRT_MAX; + } + int16_t value = 0; + for (size_t i = 0; i < p_value.size(); i++) { + value = (value << 8) + (p_value[i] & 0xff); + } // End of 'for' statement + return value; + }; // End of bytes_to_short + + /*! + * \brief Convert a 32-bits integer (int32_t) into a bytes array + * \param[in] p_value The 32-bits integer value + * \param[in] p_endianess Endianess style. Default: big_endian + * \return The bytes array value + */ + inline std::vector int_to_bytes(const int32_t p_value, const endian_t p_endianess = big_endian) const { + /*uint8_t bytes[sizeof(p_value)]; + std::copy( + static_cast(static_cast(&p_value)), + static_cast(static_cast(&p_value)) + sizeof(p_value), + bytes + ); + std::vector result(bytes, bytes + sizeof(bytes) / sizeof(uint8_t));*/ + std::vector result(sizeof(int), 0x00); + for (int i = sizeof(int) - 1; i >= 0; i--) { + int offset = (sizeof(int) - 1 - i) * 8; + result[i] = static_cast((p_value >> offset) & 0xFF); + } // End of 'for' statement + return result; + }; // End of int_to_bytes + + /*! + * \brief Convert a bytes array into a 32-bits integer (int32_t) + * \param[in] p_value The bytes array + * \param[in] p_endianess Endianess style. Default: big_endian + * \return The 32-bits integer on success, LONG_MAX on error (wrong bytes array size) + */ + inline int32_t bytes_to_int(const std::vector & p_value, const endian_t p_endianess = big_endian) const { + // Sanity check + if (p_value.size() > sizeof(int)) { + return INT_MAX; + } + int32_t value = 0; + for (size_t i = 0; i < p_value.size(); i++) { + value = (value << 8) + (p_value[i] & 0xff); + } // End of 'for' statement + return value; + // return *((int *)(&p_value[0])); + }; // End of bytes_to_int + + /*! + * \brief Convert a 64-bits integer (int64_t) into a bytes array + * \param[in] p_value The 64-bits integer value + * \param[in] p_endianess Endianess style. Default: big_endian + * \return The bytes array value + */ + inline std::vector long_to_bytes(const int64_t p_value, const endian_t p_endianess = big_endian) const { + /*uint8_t bytes[sizeof(p_value)]; + std::copy( + static_cast(static_cast(&p_value)), + static_cast(static_cast(&p_value)) + sizeof(p_value), + bytes + ); + std::vector result(bytes, bytes + sizeof(bytes) / sizeof(uint8_t));*/ + std::vector result(sizeof(int64_t), 0x00); + for (int i = sizeof(int64_t) - 1; i >= 0; i--) { + int offset = (sizeof(int64_t) - 1 - i) * 8; + result[i] = static_cast((p_value >> offset) & 0xFF); + } // End of 'for' statement + return result; + }; // End of long_to_bytes + + /*! + * \brief Convert a bytes array into a 64-bits integer (int64_t) + * \param[in] p_value The bytes array + * \param[in] p_endianess Endianess style. Default: big_endian + * \return The 64-bits integer on success, LLONG_MAX on error (wrong bytes array size) + */ + inline int64_t bytes_to_long(const std::vector & p_value, const endian_t p_endianess = big_endian) const { + // Sanity check + if (p_value.size() > sizeof(int64_t)) { + return LLONG_MAX; + } + int64_t value = 0; + for (size_t i = 0; i < p_value.size(); i++) { + value = (value << 8) + (p_value[i] & 0xff); + } // End of 'for' statement + return value; + // return *((long *)(&p_value[0])); + }; // End of bytes_to_long + + /*! + * \brief Convert a float value into a bytes array + * \param[in] p_value The float value + * \return The bytes array value + */ + inline std::vector float_to_bytes(const float p_value) const { + uint8_t bytes[sizeof(p_value)]; + std::copy( + static_cast(static_cast(&p_value)), + static_cast(static_cast(&p_value)) + sizeof(p_value), + bytes + ); + std::vector result(bytes, bytes + sizeof(bytes) / sizeof(uint8_t)); + return result; + }; // End of float_to_long + + /*! + * \brief Convert a bytes array into a float + * \param[in] p_value The bytes array + * \return The float value + */ + inline float bytes_to_float(const std::vector & p_value) const { + return *((float *)(&p_value[0])); + }; // End of bytes_to_float + + /*! + * \brief Convert a string into a bytes array + * \param[in] p_value The string value + * \return The bytes array value + */ + inline std::vector string_to_bytes(const std::string & p_value) const { + return std::vector(p_value.begin(), p_value.end()); + }; // End of string_to_bytes + + /*! + * \brief Convert a bytes array into a string + * \param[in] p_value The bytes array value + * \return The string value + */ + inline std::string bytes_to_string(const std::vector & p_value) const { + return std::string(p_value.begin(), p_value.end()); + }; // End of bytes_to_string + +public: + /*! + * \brief Convert a string into an integer + * \param[in] p_value The string value + * \return The integer value + */ + inline int32_t string_to_int(const std::string & p_value) const { + return std::stoi(p_value); + //return atoi(p_value.c_str()); + }; // End of string_to_int + + /*! + * \brief Convert an integer into a string + * \param[in] p_value The integer value + * \return The string value + */ + inline std::string int_to_string(const int32_t & p_value) const { + std::ostringstream ss; + ss << p_value; + return ss.str(); + }; // End of string_to_bytes + +public: + + /*! + * \brief Returns a copy of the string, with leading and trailing special characters omitted + * \param[in] p_value The string value + * \param[in] p_trim_chars The special characters to be omitted. Default: ' ' and TAB + * \return The new string value + */ + std::string trim(const std::string& p_value, const std::string& p_trim_chars = " \t"); + + /*! + * \brief Convert the provided string into a list of arguments + * \param[in] p_value The string value + * \return The arguments list + * \code{.cc} + * std::string str = "--host localhost --port 12345 --duration -1"; + * std::vector tokens = converter::get_instance().split_arguments_line(str); + * std::clog << "Tokens: " << std::endl; + * for (auto it = tokens.begin(); it != tokens.end(); ++it) { + * std::clog << " " << *it << std::endl; + * } + * \endcode + */ + std::vector split_arguments_line(const std::string & p_value); + +}; // End of class converter diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/30b7da0ab985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/30b7da0ab985001814de869e8ad08251 new file mode 100644 index 0000000..aea0c14 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/30b7da0ab985001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 11:50:43 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC + +# Flags for the linker: +LDFLAGS = -pthread,-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/414dc5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/414dc5e1978500181c21d10bc58219ba new file mode 100644 index 0000000..099a925 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/414dc5e1978500181c21d10bc58219ba @@ -0,0 +1,45 @@ +/*! + * \file ethernet_layer_factory.hh + * \brief Header file for ITS Ethernet protocol layer factory. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "layer_stack_builder.hh" + +#include "ethernet_layer.hh" + +/*! + * \class ethernet_layer_factory + * \brief This class provides a factory class to create an ethernet_layer class instance + */ +class ethernet_layer_factory: public layer_factory { + static ethernet_layer_factory _f; //! Reference to the unique instance of this class +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the ethernet_layer_factory class + * \remark The ETH layer identifier is ETH + */ + ethernet_layer_factory() { + // register factory + layer_stack_builder::register_layer_factory("ETH", this); + }; + /*! + * \fn layer* create_layer(const std::string & type, const std::string & param); + * \brief Create the layers stack based on the provided layers stack description + * \param[in] p_type The provided layers stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + * \inline + */ + inline virtual layer* create_layer(const std::string& p_type, const std::string& p_param) { + return new ethernet_layer(p_type, p_param); + }; +}; // End of class ethernet_layer_factory + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/50c9eee5b08500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/50c9eee5b08500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..92434f7 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/50c9eee5b08500181eabf1ba1ea37ea1 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 08:52:24 UTC 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -std=c++11-pthread-gPIC + +# Flags for the linker: +LDFLAGS = -pthread-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/b07cc1e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/b07cc1e1978500181c21d10bc58219ba new file mode 100644 index 0000000..cbded3b --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/b07cc1e1978500181c21d10bc58219ba @@ -0,0 +1,46 @@ +/*! + * \file codec_factory.hh + * \brief Header file for ITS abstract protocol codec definition. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include +#include +#include +#include + +#include "codec.hh" + +class Record_Type; //! TITAN forward declaration + +/*! + * \class codec_factory + * \brief This class provides a factory class to create codec class instances + * \abstract + */ +class codec_factory { +public: //! \publicsection + /*! + * \fn codec(); + * \brief Default constructor + */ + codec_factory() { }; + /*! + * \fn codec* create_codec(const std::string & type, const std::string & param); + * \brief Create the codecs stack based on the provided codecs stack description (cf. remark) + * \param[in] p_type The provided codecs stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + * \remark The description below introduces codecs stack in case of ITS project: + * HTTP(codecs=xml:held_codec;html:html_codec,json:json_codec)/TCP(debug=1,server=httpbin.org,port=80,use_ssl=0) + * \pure + */ + virtual codec* create_codec() = 0; +}; // End of class codec_factory + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/34/70cb39abb08500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/34/70cb39abb08500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..beb5b02 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/34/70cb39abb08500181eabf1ba1ea37ea1 @@ -0,0 +1,131 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + None + -std=c++11 + + pcap + ssl + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn + + true + + + + + + src/ttcn/ttcn/TestCodec + + false + true + + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/38/619bc5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/38/619bc5e1978500181c21d10bc58219ba new file mode 100644 index 0000000..8f79560 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/38/619bc5e1978500181c21d10bc58219ba @@ -0,0 +1,45 @@ +/*! + * \file http_layer_factory.hh + * \brief Header file for ITS Http protocol layer factory. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "layer_stack_builder.hh" + +#include "http_layer.hh" + +/*! + * \class http_layer_factory + * \brief This class provides a factory class to create an http_layer class instance + */ +class http_layer_factory : public layer_factory { + static http_layer_factory _f; //! Reference to the unique instance of this class +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the tcp_layer_factory class + * \remark The HTTP layer identifier is HTTP + */ + http_layer_factory() { + // Register factory + layer_stack_builder::register_layer_factory("HTTP", this); + }; + /*! + * \fn layer* create_layer(const std::string & type, const std::string & param); + * \brief Create the layers stack based on the provided layers stack description + * \param[in] p_type The provided layers stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + * \inline + */ + inline virtual layer* create_layer(const std::string& p_type, const std::string& p_param){ + return new http_layer(p_type, p_param); + }; +}; // End of class http_layer_factory + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3a/20d21c389e8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3a/20d21c389e8500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..4f23035 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3a/20d21c389e8500181eabf1ba1ea37ea1 @@ -0,0 +1,79 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn + + true + + + + + + src/ttcn/ttcn/TestCodec + + false + true + + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3b/c084754b9e8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3b/c084754b9e8500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..047f896 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3b/c084754b9e8500181eabf1ba1ea37ea1 @@ -0,0 +1,91 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn + + true + + + + + + src/ttcn/ttcn/TestCodec + + false + true + + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3b/f0a0d5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3b/f0a0d5e1978500181c21d10bc58219ba new file mode 100644 index 0000000..8872a33 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3b/f0a0d5e1978500181c21d10bc58219ba @@ -0,0 +1,264 @@ +#if (OSTYPE == linux) + +#include +#include +#include +#include +#include + +#include "Port.hh" + +#include "pcap_layer_factory.hh" + +#include "loggers.hh" + +pcap_layer::pcap_layer(const std::string& p_type, const std::string& param) : layer(p_type), PORT(p_type.c_str()), _params(), _device(NULL), _pcap_h(-1), _thread(NULL), _running(FALSE), _resume(), _sent_file(NULL), _time_key("pcap_layer::Handle_Fd_Event_Readable") { + loggers::get_instance().log(">>> pcap_layer::pcap_layer: %s, %s", to_string().c_str(), param.c_str()); + _fd[0] = -1; _fd[1] = -1; + // Setup parameters + params::convert(_params, param); + //_params.log(); + // Prepare capture processing + char error_buffer[PCAP_ERRBUF_SIZE]; + params::const_iterator it = _params.find(params::nic); + if ((it != _params.end()) && !it->second.empty()) { // Use online capture + // Fetch the network address and network mask + bpf_u_int32 mask; // subnet mask + bpf_u_int32 net; // ip address + if (pcap_lookupnet(_params[params::nic].c_str(), &net, &mask, error_buffer) != 0) { + loggers::get_instance().error("pcap_layer::pcap_layer: pcap_layer::pcap_layer: Failed to fetch newtork address for device %s", _params[params::nic].c_str()); + } + loggers::get_instance().log("pcap_layer::pcap_layer: Device %s Network address: %d", _params[params::nic].c_str(), net); + // Open the device + _device = pcap_open_live(_params[params::nic].c_str(), 65536, 1, 1000, error_buffer); // TODO Replace hard coded values by pcap_layer:: + if (_device == NULL) { + loggers::get_instance().error("pcap_layer::pcap_layer: Failed to open device %s", _params[params::nic].c_str()); + } // else, continue + // Set non-blocking flag for the polling procedure + if (pcap_setnonblock(_device, 1, error_buffer) != 0) { + loggers::get_instance().error("pcap_layer::pcap_layer: Failed to set blocking mode: %s", error_buffer); + } + // Retrieve the device file handler + _pcap_h = pcap_get_selectable_fd(_device); + if (_pcap_h == -1) { + loggers::get_instance().error("pcap_layer::pcap_layer: Failed to get device handler"); + } + } else { + // Check file name + it = _params.find(std::string("file")); + if ((it != _params.cend()) && !it->second.empty()) { // Use offline capture + struct stat s = {0}; + if ((stat(_params["file"].c_str(), &s) != 0) || !S_ISREG(s.st_mode)) { + loggers::get_instance().error("pcap_layer::pcap_layer: Failed to acces PCAP file %s", _params["file"].c_str()); + } + // File exist, open it + _device = pcap_open_offline(_params["file"].c_str(), error_buffer); + if (_device == NULL) { + loggers::get_instance().error("pcap_layer::pcap_layer: Failed to open PCAP file %s", error_buffer); + } // else, continue + // Create the dump file for the sent packet based on the openned file name and the current time in milliseconds + it = _params.find("save_mode"); + if ((it != _params.cend()) && (it->second.compare("1") == 0)) { + unsigned long ms = std::chrono::system_clock::now().time_since_epoch() / std::chrono::milliseconds(1); + std::string ext("_" + std::to_string(ms)); + int i = _params["file"].find(".pcap"); + if (i > 0) { + std::string f(_params["file"].substr(0, i) + ext + ".pcap"); + loggers::get_instance().log("pcap_layer::pcap_layer: Save file name: %s", f.c_str()); + if ((_sent_file = pcap_dump_open(_device, f.c_str())) == NULL) { + loggers::get_instance().warning("pcap_layer::pcap_layer: Failed to open save file %s", f.c_str()); + } + } + } // else, nothing to do + } else { + loggers::get_instance().error("pcap_layer::pcap_layer: Failed to open PCAP file %s", error_buffer); + } + } + // Setup filter + std::string filter = ""; + it = _params.find(params::mac_src); + if (it == _params.end()) { // Not found + loggers::get_instance().error("pcap_layer::pcap_layer: mac_src parameter not found, cannot continue"); + } else { + // Reject ITS messages sent by this component + filter = "not ether src " + _params[params::mac_src]; + // Accept ITS broadcasted to this componenet + filter += " and (ether dst " + _params[params::mac_src]; + // Accept ITS broadcasted messages + it = _params.find(params::mac_bc); + if ((it != _params.end()) && !it->second.empty()) { + filter += " or ether dst " + it->second + ")"; + } else { + filter += " or ether dst ffffffffffff) "; + } + // Add user defined filter + it = _params.find(std::string("filter")); + if ((it != _params.end()) && !it->second.empty()) { + filter += _params["filter"]; + } // else nothing to do + } + // Log final PCAP filter + loggers::get_instance().user("pcap_layer::pcap_layer: Filter: %s", filter.c_str()); + if (!filter.empty()) { + struct bpf_program f = {0}; + if (pcap_compile(_device, &f, filter.c_str(), 1, PCAP_NETMASK_UNKNOWN) != 0) { + loggers::get_instance().error("pcap_layer::pcap_layer: Failed to compile PCAP filter"); + } + if (pcap_setfilter(_device, &f) != 0) { + loggers::get_instance().error("pcap_layer::pcap_layer: Failed to set PCAP filter"); + } + pcap_freecode(&f); + } + // Pass the device file handler to the polling procedure + if (_pcap_h != -1) { // Live capture + Handler_Add_Fd_Read(_pcap_h); + } else { // Offline capture + // Create a pipe + if (pipe2(_fd, O_NONBLOCK) == -1) { + loggers::get_instance().error("pcap_layer::pcap_layer: Failed to create a pipe: %s", ::strerror(errno)); + } + // Pass the pipe handler to the polling procedure + loggers::get_instance().log("pcap_layer::pcap_layer: Call handler with descriptor %d", _fd[0]); + Handler_Add_Fd_Read(_fd[0]); + // Create the offline reader thread + _thread = new std::thread(&pcap_layer::run, (void *)this); + if (_thread == NULL) { + loggers::get_instance().error("pcap_layer::pcap_layer: Failed to start offline thread"); + } + // Start it to dispatch packet to a pipe + while (_running == FALSE) { + std::this_thread::sleep_for(std::chrono::milliseconds(500)); + } + // Thread was started + loggers::get_instance().log("<<< pcap_layer::pcap_layer"); + } +} // End of ctor + +pcap_layer::~pcap_layer() { + loggers::get_instance().log(">>> pcap_layer::~pcap_layer"); + + if (_device != NULL) { + if (_thread != NULL) { + _running = FALSE; + // Wait for the working thread to terminate + _thread->join(); + loggers::get_instance().log("pcap_layer::~pcap_layer: Thread were stops"); + // Cleanup + delete _thread; + close(_fd[0]); + close(_fd[1]); + } + if (_sent_file != NULL) { + pcap_dump_close(_sent_file); + } + pcap_close(_device); + } +} // End of dtor + +void* pcap_layer::run(void* p_this) { + loggers::get_instance().log(">>> pcap_layer::run"); + + // Pointer the main object + pcap_layer& p = *static_cast(p_this); + // Wait a little bit before to start sending packet + std::this_thread::sleep_for(std::chrono::milliseconds(500)); + params::const_iterator it = p._params.find("frame_offset"); + if ((it != p._params.cend()) && (it->second.compare("0") != 0)) { + // TODO Try t use PCAP filter to start directly to the correct frame offset + /*try { + unsigned int offset = std::stoul(str_dec, &s); + // Skip frames + struct pcap_pkthdr *pkt_header; + const u_char *pkt_data; + int result = pcap_next_ex(_device, &pkt_header, &pkt_data); + if (result == 1) { // Succeed + } + } + catch (invalid_argument& i) { + } + catch (out_of_range& o) { + }*/ + } + // Let's go + p._running = TRUE; + while (p._running) { // Loop while _running flag is up + if (p._resume.try_lock() == TRUE) { // Previous packet was consumed, lock for the next one + write(p._fd[1], "\n", 1); // Any character will do the job + } else { // not ready yet + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + } + } + + loggers::get_instance().log("<<< pcap_layer::run"); + return NULL; +} + +void pcap_layer::send_data(OCTETSTRING& data, params& params) { + loggers::get_instance().log_msg(">>> pcap_layer::send_data: ", data); + + if (_pcap_h != -1) { // Check if offline mode is used + if (pcap_sendpacket(_device, static_cast(data), data.lengthof()) == -1) { + loggers::get_instance().error("pcap_layer::send_data: Failed to send packet: %s", pcap_geterr(_device)); + } + } else if (_sent_file != NULL) { + struct pcap_pkthdr hdr; + std::chrono::system_clock::time_point now = std::chrono::system_clock::now(); + std::chrono::milliseconds ms = std::chrono::duration_cast(now.time_since_epoch()); + hdr.ts.tv_sec = ms.count() / 1000; + hdr.ts.tv_usec = (ms.count() % 1000) * 1000; + hdr.caplen = data.lengthof(); + hdr.len = hdr.caplen; + pcap_dump((u_char *)_sent_file, &hdr, static_cast(data)); + } else { + loggers::get_instance().log("pcap_layer::send_data: Offline mode, operation was skipped"); + } +} + +void pcap_layer::receive_data(OCTETSTRING& data, params& params) { + loggers::get_instance().log(">>> pcap_layer::receive_data: Received %d bytes", data.lengthof()); + loggers::get_instance().log_to_hexa("Packet dump", data); + + // Pass the packet to the upper layers + receive_to_all_layers(data, params); +} + +void pcap_layer::Handle_Fd_Event_Readable(int fd) { + //loggers::get_instance().log(">>> pcap_layer::Handle_Fd_Event_Readable: %d", fd); + + struct pcap_pkthdr *pkt_header; + const u_char *pkt_data; + int result = pcap_next_ex(_device, &pkt_header, &pkt_data); + if (result == 1) { // Succeed + if (pkt_header->caplen > 14) { // Reject too small packet + //loggers::get_instance().log("pcap_layer::Handle_Fd_Event_Readable: %.6d - %d", pkt_header->ts.tv_usec, pkt_header->len); + // Fill parameters from PCAP layer + params params; + params.insert(std::pair(std::string("timestamp"), std::to_string(pkt_header->ts.tv_usec))); + // Process the packet at this layer + OCTETSTRING os(pkt_header->caplen, pkt_data); + //loggers::get_instance().log_to_hexa("pcap_layer::Handle_Fd_Event_Readable: ", os); + // TODO Case of caplen != len !!! + float duration; + loggers::get_instance().set_start_time(_time_key); + this->receive_data(os, params); // TODO Check execution time for decoding operation + loggers::get_instance().set_stop_time(_time_key, duration); + } + } // else, skip the packet + // Specific to offline mode + if (_fd[0] != -1) { // Check if offline mode is used + //loggers::get_instance().log("pcap_layer::Handle_Fd_Event_Readable: Read pipe"); + char c[2]; + read(_fd[0], &c, 1); + if (result == -2) { // End of file, therminate worker thread + _running = FALSE; + } else { // Get next packet + //loggers::get_instance().log("pcap_layer::Handle_Fd_Event_Readable: pcap_next_ex failed: result=%d", result); + _resume.unlock(); + } + } // else, nothing to do +} + +pcap_layer_factory pcap_layer_factory::_f; + +#endif + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3f/00220b34c08500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3f/00220b34c08500181dc9eb7ae31560a9 new file mode 100644 index 0000000..5a96b0c --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3f/00220b34c08500181dc9eb7ae31560a9 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 12:41:57 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall -std=c++11 -pthread -fPIC + +# Flags for the linker: +LDFLAGS = -pthread -fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3f/80e03c63bc85001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3f/80e03c63bc85001814de869e8ad08251 new file mode 100644 index 0000000..a9b5768 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3f/80e03c63bc85001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 12:14:39 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC + +# Flags for the linker: +LDFLAGS = -pthread,-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4/50a2d8bbbd85001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4/50a2d8bbbd85001814de869e8ad08251 new file mode 100644 index 0000000..03ca899 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4/50a2d8bbbd85001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 12:24:17 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC + +# Flags for the linker: +LDFLAGS = -pthread,-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/40/60ac5fd6b185001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/40/60ac5fd6b185001814de869e8ad08251 new file mode 100644 index 0000000..e4390e0 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/40/60ac5fd6b185001814de869e8ad08251 @@ -0,0 +1,257 @@ +10:45:33.761930 hc EXECUTOR - TTCN-3 Host Controller started on vagrant. Version: CRL 113 200/6 R4A. +10:45:33.761966 hc EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error +10:45:33.761970 hc EXECUTOR - Maximum number of open file descriptors: 1048576, FD_SETSIZE = 1024 +10:45:33.762077 hc WARNING - Warning: The address of MC was set to a local IP address. This may cause incorrect behavior if a HC from a remote host also connects to MC. +10:45:33.762084 hc EXECUTOR - The address of MC was set to 127.0.0.1:0. +10:45:33.766623 hc EXECUTOR - Connected to MC. +10:45:33.766734 hc EXECUTOR - This host supports UNIX domain sockets for local communication. +10:45:33.767039 hc EXECUTOR - Processing configuration data received from MC. +10:45:33.767643 hc EXECUTOR - Module LibCommon_Sync has the following parameters: { PX_TSYNC_TIME_LIMIT := 120.000000, PX_TSHUT_DOWN_TIME_LIMIT := 120.000000 } +10:45:33.767693 hc EXECUTOR - Module LibCommon_Time has the following parameters: { PX_TDONE := 120.000000, PX_TAC := 30.000000, PX_TNOAC := 10.000000, PX_TWAIT := 120.000000, PX_LOOP := 1.000000 } +10:45:33.767751 hc EXECUTOR - Module LibItsHttp_Pics has the following parameters: { PICS_HEADER_HOST := "ptsv2.com", PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8" } +10:45:33.767802 hc EXECUTOR - Module LibNg112_Pics has the following parameters: { PICS_LIS_IUT := true, PICS_ECRF_IUT := false, PICS_HTTP_POST_REQUEST := true, PICS_LOCATION_HELD := true, PICS_SERVICE_LOST := true, PICS_LIS_REQUEST_URIs := { "/t/9rk8l-1531130342/post", "/t/r143f-1528105031/post", "/t/6ouem-1531201238/post" }, PICS_ECRF_URI := "/service" } +10:45:33.768211 hc EXECUTOR - Module LibNg112_Pixits has the following parameters: { PX_DOUBLE_CMP_EPSILON := 1.000000e-05, PX_DEVICE_URI_SIP := "sip:user@example.net;gr=kjh29x97us97d", PX_DEVICE_URI_TEL := "+436501234567", PX_UNKNOWN_DEVICE_URI := "sip:no_one@example.net;gr=kjh29x97us97d", PX_DEVICE_POSITION := { -34.407000, 150.883000, 24.800000 }, PX_CIRCLE_POS := { 48.215388, 16.290300 }, PX_CIRCLE_UOM := "urn:ogc:def:uom:EPSG::9001", PX_CIRCLE_BASE := 23.600000, PX_SRS_NAME := "urn:ogc:def:crs:EPSG::4326" } +10:45:33.768314 hc EXECUTOR - Module LibSip_PIXITS has the following parameters: { PX_SIP_SDP_USER_NAME := "voicesession", PX_SIP_SDP_SESSION_ID := "30000", PX_SIP_SDP_DYN := "0", PX_SIP_SDP_B_MODIFIER := "AS", PX_SIP_SDP_B_BANDWIDTH := 64, PX_SIP_SDP_ENCODING := "PCMU", PX_SIP_SDP_CLOCKRATE := "8000", PX_MB_LENGTH_FROM_ENCVAL := true, PX_USE_FX_FOR_XML_LENGTH := false, PX_SIP_TRANSPORT := "UDP", PX_SIP_REGISTRATION := false, PX_AUTH_ALGORITHM := "AKAv1-MD5", PX_SIP_REGISTER_AUTHENTICATION_ENABLED := true, PX_SIP_INVITE_AUTHENTICATION_ENABLED := false, PX_SIP_TWAIT := 30.000000, PX_SIP_TACK := 8.000000, PX_SIP_TRESP := 15.000000, PX_SIP_TNOACT := 1.000000, PX_SIP_MIME_BOUNDARY := "boundary1" } +10:45:33.776982 hc EXECUTOR - Initializing module AtsNg112_TestCases. +10:45:33.779421 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibItsHttp_Functions. +10:45:33.779522 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_TypesAndValues. +10:45:33.779574 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0 Initializing module LibItsHttp_MessageBodyTypes. +10:45:33.779628 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XmlMessageBodyTypes. +10:45:33.779687 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XMLTypes. +10:45:33.779762 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held. +10:45:33.779835 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initializing module http_www_w3_org_XML_1998_namespace. +10:45:33.779951 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initializing module XSD. +10:45:33.780058 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn:0 Initializing module UsefulTtcn3Types. +10:45:33.780144 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn:0 Initialization of module UsefulTtcn3Types finished. +10:45:33.780222 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initialization of module XSD finished. +10:45:33.780294 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initialization of module http_www_w3_org_XML_1998_namespace finished. +10:45:33.780406 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held finished. +10:45:33.780480 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held_id. +10:45:33.780546 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held_id finished. +10:45:33.783484 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10. +10:45:33.783580 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy. +10:45:33.783651 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy finished. +10:45:33.783723 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10 finished. +10:45:33.783788 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc. +10:45:33.783895 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc finished. +10:45:33.783963 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf. +10:45:33.784039 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf finished. +10:45:33.784103 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XMLTypes finished. +10:45:33.784164 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XmlMessageBodyTypes finished. +10:45:33.784223 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_BinaryMessageBodyTypes. +10:45:33.784282 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_BinaryMessageBodyTypes finished. +10:45:33.784340 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0 Initialization of module LibItsHttp_MessageBodyTypes finished. +10:45:33.784476 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_TypesAndValues finished. +10:45:33.784527 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_Pics. +10:45:33.784577 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_Pics finished. +10:45:33.784628 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibItsHttp_Functions finished. +10:45:33.784672 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Templates. +10:45:33.784716 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Templates finished. +10:45:33.786933 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Functions. +10:45:33.787029 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_Templates. +10:45:33.787080 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_Templates finished. +10:45:33.787129 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_XmlTemplates. +10:45:33.787178 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape. +10:45:33.787235 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0 Initializing module http_www_opengis_net_pidflo_1_0. +10:45:33.787309 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn:0 Initializing module http_www_opengis_net_gml. +10:45:33.787417 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn:0 Initialization of module http_www_opengis_net_gml finished. +10:45:33.787493 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0 Initialization of module http_www_opengis_net_pidflo_1_0 finished. +10:45:33.787553 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape finished. +10:45:33.787613 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_XmlTemplates finished. +10:45:33.787663 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TypesAndValues. +10:45:33.787712 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TypesAndValues finished. +10:45:33.787760 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TestSystem. +10:45:33.787810 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibItsHttp_TestSystem. +10:45:33.787906 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Sync. +10:45:33.787968 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initializing module LibCommon_AbstractData. +10:45:33.788032 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0->../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initializing module LibCommon_BasicTypesAndValues. +10:45:33.788098 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0->../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initialization of module LibCommon_BasicTypesAndValues finished. +10:45:33.788174 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_AbstractData finished. +10:45:33.788237 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initializing module LibCommon_VerdictControl. +10:45:33.788305 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_VerdictControl finished. +10:45:33.788412 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Sync finished. +10:45:33.788473 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Time. +10:45:33.788533 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Time finished. +10:45:33.788593 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibItsHttp_TestSystem finished. +10:45:33.788648 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibSip_Interface. +10:45:33.788703 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_SIPTypesAndValues. +10:45:33.788765 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0 Initializing module LibSip_MessageBodyTypes. +10:45:33.788828 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SDPTypes. +10:45:33.793010 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn:0 Initializing module LibSip_Common. +10:45:33.793098 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn:0 Initialization of module LibSip_Common finished. +10:45:33.793168 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SDPTypes finished. +10:45:33.793236 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SimpleMsgSummaryTypes. +10:45:33.793697 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SimpleMsgSummaryTypes finished. +10:45:33.793770 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_XMLTypes. +10:45:33.793838 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_resource_lists. +10:45:33.793953 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_resource_lists finished. +10:45:33.794024 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_xcap. +10:45:33.794110 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_ietf_params_xml_ns_common_policy. +10:45:33.801059 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_ietf_params_xml_ns_common_policy finished. +10:45:33.801196 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_oma_xml_xdm_common_policy. +10:45:33.801272 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_oma_xml_xdm_common_policy finished. +10:45:33.801357 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_xcap finished. +10:45:33.801485 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_mcid. +10:45:33.801555 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_mcid finished. +10:45:33.801625 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module NoTargetNamespace. +10:45:33.801696 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module NoTargetNamespace finished. +10:45:33.801777 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_3gpp_ns_cw_1_0. +10:45:33.801858 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_3gpp_ns_cw_1_0 finished. +10:45:33.801958 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_conference_info. +10:45:33.802029 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_conference_info finished. +10:45:33.802098 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_pstn. +10:45:33.802168 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_pstn finished. +10:45:33.802237 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_comm_div_info. +10:45:33.802307 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_comm_div_info finished. +10:45:33.802424 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_reginfo. +10:45:33.802495 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_reginfo finished. +10:45:33.802564 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_XMLTypes finished. +10:45:33.802631 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0 Initialization of module LibSip_MessageBodyTypes finished. +10:45:33.802694 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_SIPTypesAndValues finished. +10:45:33.802754 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_PIXITS. +10:45:33.802814 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initializing module LibCommon_DataStrings. +10:45:33.802928 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initialization of module LibCommon_DataStrings finished. +10:45:33.802992 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_PIXITS finished. +10:45:33.803052 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibSip_Interface finished. +10:45:33.803107 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TestSystem finished. +10:45:33.803163 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Functions finished. +10:45:33.803207 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pics. +10:45:33.803250 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pics finished. +10:45:33.803293 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pixits. +10:45:33.807410 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pixits finished. +10:45:33.807517 hc EXECUTOR - Initialization of module AtsNg112_TestCases finished. +10:45:33.807561 hc EXECUTOR - Initializing module AtsNg112_TestControl. +10:45:33.807603 hc EXECUTOR - Initialization of module AtsNg112_TestControl finished. +10:45:33.807645 hc EXECUTOR - Initializing module LibCommon_TextStrings. +10:45:33.807688 hc EXECUTOR - Initialization of module LibCommon_TextStrings finished. +10:45:33.807730 hc EXECUTOR - Initializing module LibItsHttp_BinaryTemplates. +10:45:33.807772 hc EXECUTOR - Initialization of module LibItsHttp_BinaryTemplates finished. +10:45:33.807814 hc EXECUTOR - Initializing module LibItsHttp_BinaryTypes. +10:45:33.807899 hc EXECUTOR - Initialization of module LibItsHttp_BinaryTypes finished. +10:45:33.807945 hc EXECUTOR - Initializing module LibItsHttp_EncdecDeclarations. +10:45:33.807986 hc EXECUTOR - Initialization of module LibItsHttp_EncdecDeclarations finished. +10:45:33.808028 hc EXECUTOR - Initializing module LibNg112_EncdecDeclarations. +10:45:33.808070 hc EXECUTOR - Initialization of module LibNg112_EncdecDeclarations finished. +10:45:33.808112 hc EXECUTOR - Initializing module LibSip_EncdecDeclarations. +10:45:33.808153 hc EXECUTOR ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn:0 Initializing module LibSip_SMSTypesAndValues. +10:45:33.808198 hc EXECUTOR ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn:0 Initialization of module LibSip_SMSTypesAndValues finished. +10:45:33.808243 hc EXECUTOR - Initialization of module LibSip_EncdecDeclarations finished. +10:45:33.808284 hc EXECUTOR - Initializing module LibSip_Library. +10:45:33.808326 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_SMSTemplates. +10:45:33.808412 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn:0 Initializing module LibSip_SMSFunctions. +10:45:33.808463 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn:0 Initialization of module LibSip_SMSFunctions finished. +10:45:33.810943 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_SMSTemplates finished. +10:45:33.811025 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_Steps. +10:45:33.811070 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn:0 Initializing module LibSip_Templates. +10:45:33.814808 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn:0 Initialization of module LibSip_Templates finished. +10:45:33.819438 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_Steps finished. +10:45:33.819539 hc EXECUTOR - Initialization of module LibSip_Library finished. +10:45:33.819583 hc EXECUTOR - Initializing module PreGenRecordOf. +10:45:33.819624 hc EXECUTOR - Initialization of module PreGenRecordOf finished. +10:45:33.819665 hc EXECUTOR - Initializing module TitanLoggerApi. +10:45:33.819707 hc EXECUTOR - Initialization of module TitanLoggerApi finished. +10:45:33.819749 hc EXECUTOR - Initializing module urn_ietf_params_xml_ns_geopriv_conf. +10:45:33.819792 hc EXECUTOR - Initialization of module urn_ietf_params_xml_ns_geopriv_conf finished. +10:45:33.819919 hc EXECUTOR - Configuration data was processed successfully. +10:45:33.820212 hc EXECUTOR - MTC was created. Process id: 16092. +10:45:33.823667 mtc EXECUTOR - TTCN-3 Main Test Component started on vagrant. Version: CRL 113 200/6 R4A. +10:45:33.823773 mtc EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error +10:45:33.823935 mtc EXECUTOR - Connected to MC. +10:45:33.824010 mtc EXECUTOR - Executing test case TC_LIS_HTTP_POST_BV_01 in module AtsNg112_TestCases. +10:45:33.824104 mtc TESTCASE ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Test case TC_LIS_HTTP_POST_BV_01 started. +10:45:33.824164 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Initializing variables, timers and ports of component type LibItsHttp_TestSystem.HttpComponent inside testcase TC_LIS_HTTP_POST_BV_01. +10:45:33.824251 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port syncPort was started. +10:45:33.824305 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port syncSendPort was started. +10:45:33.824392 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) >>> HttpPort::user_start +10:45:33.824460 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port httpPort was started. +10:45:33.824507 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Component type LibItsHttp_TestSystem.HttpComponent was initialized. +10:45:33.824585 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Mapping port mtc:httpPort to system:httpPort. +10:45:33.824664 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) HttpPort::set_parameter: params=HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) +10:45:33.824739 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> HttpPort::user_map: httpPort +10:45:33.824798 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) HttpPort::user_map: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) +10:45:33.824922 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) +10:45:33.826026 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1, - codecs - held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1 - , +10:45:33.831456 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - server=ptsv2.com, - server - ptsv2.com - , +10:45:33.831590 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - port=80, - port - 80 - , +10:45:33.831666 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - use_ssl=0) - use_ssl - 0) - +10:45:33.831749 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert +10:45:33.831802 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> layer_stack_builder::create_layer_stack: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) +10:45:33.832716 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: 5 - HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/ - HTTP - (codecs=held:held_codec;html:html_codec;json:json_codec) - codecs=held:held_codec;html:html_codec;json:json_codec +10:45:33.832782 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Create layer HTTP, codecs=held:held_codec;html:html_codec;json:json_codec +10:45:33.832844 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> sip_layer::sip_layer: HTTP, codecs=held:held_codec;html:html_codec;json:json_codec +10:45:33.832940 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: codecs=held:held_codec;html:html_codec;json:json_codec +10:45:33.833796 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - codecs=held:held_codec;html:html_codec;json:json_codec - codecs - held:held_codec;html:html_codec;json:json_codec - +10:45:33.833910 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert +10:45:33.833966 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Setup layers for HTTP +10:45:33.834072 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: 5 - TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) - TCP - (debug=1,server=ptsv2.com,port=80,use_ssl=0) - debug=1,server=ptsv2.com,port=80,use_ssl=0 +10:45:33.834131 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Create layer TCP, debug=1,server=ptsv2.com,port=80,use_ssl=0 +10:45:33.834193 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::tcp_layer: TCP, debug=1,server=ptsv2.com,port=80,use_ssl=0 +10:45:33.834246 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: debug=1,server=ptsv2.com,port=80,use_ssl=0 +10:45:33.835116 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - debug=1, - debug - 1 - , +10:45:33.835224 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - server=ptsv2.com, - server - ptsv2.com - , +10:45:33.835301 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - port=80, - port - 80 - , +10:45:33.835408 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - use_ssl=0 - use_ssl - 0 - +10:45:33.835486 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert +10:45:33.835544 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::log +10:45:33.835600 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (debug, 1) +10:45:33.835656 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (port, 80) +10:45:33.835715 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (server, ptsv2.com) +10:45:33.835770 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (use_ssl, 0) +10:45:33.835829 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(server, ptsv2.com) +10:45:33.835918 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(server, ptsv2.com) +10:45:33.835977 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(server, ptsv2.com) +10:45:33.836035 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(server, ptsv2.com) +10:45:33.836094 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(port, 80) +10:45:33.836152 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(port, 80) +10:45:33.836210 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(port, 80) +10:45:33.836275 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(port, 80) +10:45:33.836339 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(use_connection_ASPs, yes) +10:45:33.836423 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(use_connection_ASPs, yes) +10:45:33.836480 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(use_connection_ASPs, yes) +10:45:33.836537 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(use_connection_ASPs, yes) +10:45:33.836593 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(server_backlog, 1024) +10:45:33.836650 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(server_backlog, 1024) +10:45:33.836715 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(server_backlog, 1024) +10:45:33.836769 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(server_backlog, 1024) +10:45:33.836822 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::map_user() +10:45:33.836917 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::map_user() +10:45:33.836972 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::open_client_connection(remoteAddr: ptsv2.com/80, localAddr: UNSPEC/UNSPEC) called +10:45:33.843325 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Number of remote addresses: 8 + +10:45:33.843512 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Using address family for socket 6: IPv4 +10:45:33.843572 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Connecting to server from address UNSPEC/UNSPEC +10:45:33.869099 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Connection established (addr): 10.0.2.15/43136 -> ptsv2.com/80 + +10:45:33.869207 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: connected to: host ptsv2.com service 80 via address family IPv4 + +10:45:33.869249 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_add_peer: Adding client 6 to peer list +10:45:33.869286 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_get_last_peer: Finding last peer of the peer array +10:45:33.869321 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_get_last_peer: No active peer found +10:45:33.869367 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_resize_list: Resizing to 7 +10:45:33.869483 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_resize_list: New length is 7 +10:45:33.869527 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::open_client_connection(). Handler set to socket fd 6 +10:45:33.869565 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::add_user_data: 6 +10:45:33.869604 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) tcp_layer::add_user_data: Non secured mode +10:45:33.869640 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::client_connection_opened: 6 +10:45:33.869677 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Setup layers for TCP +10:45:33.869737 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Port httpPort was mapped to system:httpPort. +10:45:33.869965 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Map operation of mtc:httpPort to system:httpPort finished. +10:45:33.870038 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Connecting ports mtc:syncSendPort and mtc:syncPort. +10:45:33.870128 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Port syncPort has established the connection with local port syncSendPort. +10:45:33.870187 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Port syncSendPort has established the connection with local port syncPort. +10:45:33.870274 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Connect operation on mtc:syncSendPort and mtc:syncPort finished. +10:45:33.870337 mtc DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:28(function:f_cf_01_http_up) Altstep a_cf_01_http_down was activated as default, id 1 +10:45:33.870417 mtc DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:29(function:f_cf_01_http_up) Altstep a_default_requests was activated as default, id 2 +10:45:33.870456 mtc DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:30(function:f_cf_01_http_up) Altstep a_default_responses was activated as default, id 3 +10:45:33.870699 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) Warning: No UTF-8 Byte Order Mark(BOM) detected. It may result decoding errors +10:45:33.871298 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) Sent on httpPort to system @LibItsHttp_TypesAndValues.HttpMessage : { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } +10:45:33.871399 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> HttpPort::outgoing_send: payload={ request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } +10:45:33.871544 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_layer::sendMsg: { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } +10:45:33.871669 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode: { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } +10:45:33.871791 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode_request: { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } +10:45:33.871954 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_request: body: { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } +10:45:33.872019 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode_body: { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } +10:45:33.872083 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_body: # of codecs=0 +10:45:34.860715 hc EXECUTOR - Exit was requested from MC. Terminating HC. +10:45:34.862156 hc EXECUTOR - Disconnected from MC. +10:45:34.862206 hc EXECUTOR - TTCN-3 Host Controller finished. diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/40/906eb7d3978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/40/906eb7d3978500181c21d10bc58219ba new file mode 100644 index 0000000000000000000000000000000000000000..4319facdc8b762040abb549af8f720e9fa06e43f GIT binary patch literal 723336 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

s9}(V-_~f#c#E4P&fAHP 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 $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/44/005c57e0b08500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/44/005c57e0b08500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..e1cf6af --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/44/005c57e0b08500181eabf1ba1ea37ea1 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 08:52:15 UTC 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -std=c++11-pthread-gPIC + +# Flags for the linker: +LDFLAGS = -pthread-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/44/d0f3281cb985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/44/d0f3281cb985001814de869e8ad08251 new file mode 100644 index 0000000..1c80331 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/44/d0f3281cb985001814de869e8ad08251 @@ -0,0 +1,98 @@ +11:31:00.861820 EXECUTOR - TTCN-3 Main Test Component started on vagrant. Version: CRL 113 200/6 R4A. +11:31:00.861932 EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error +11:31:00.862105 EXECUTOR - Connected to MC. +11:31:00.862183 EXECUTOR - Executing test case TC_LIS_HTTP_POST_BV_01 in module AtsNg112_TestCases. +11:31:00.862289 TESTCASE ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Test case TC_LIS_HTTP_POST_BV_01 started. +11:31:00.862347 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Initializing variables, timers and ports of component type LibItsHttp_TestSystem.HttpComponent inside testcase TC_LIS_HTTP_POST_BV_01. +11:31:00.862456 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port syncPort was started. +11:31:00.862547 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port syncSendPort was started. +11:31:00.862601 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) >>> HttpPort::user_start +11:31:00.862651 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port httpPort was started. +11:31:00.862699 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Component type LibItsHttp_TestSystem.HttpComponent was initialized. +11:31:00.862779 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Mapping port mtc:httpPort to system:httpPort. +11:31:00.866560 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) HttpPort::set_parameter: params=HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) +11:31:00.866682 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> HttpPort::user_map: httpPort +11:31:00.866749 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) HttpPort::user_map: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) +11:31:00.866814 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) +11:31:00.867930 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1, - codecs - held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1 - , +11:31:00.868067 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - server=ptsv2.com, - server - ptsv2.com - , +11:31:00.868143 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - port=80, - port - 80 - , +11:31:00.868219 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - use_ssl=0) - use_ssl - 0) - +11:31:00.868299 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert +11:31:00.868353 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> layer_stack_builder::create_layer_stack: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) +11:31:00.869245 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: 5 - HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/ - HTTP - (codecs=held:held_codec;html:html_codec;json:json_codec) - codecs=held:held_codec;html:html_codec;json:json_codec +11:31:00.877679 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Create layer HTTP, codecs=held:held_codec;html:html_codec;json:json_codec +11:31:00.877814 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> sip_layer::sip_layer: HTTP, codecs=held:held_codec;html:html_codec;json:json_codec +11:31:00.877874 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: codecs=held:held_codec;html:html_codec;json:json_codec +11:31:00.878777 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - codecs=held:held_codec;html:html_codec;json:json_codec - codecs - held:held_codec;html:html_codec;json:json_codec - +11:31:00.883125 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert +11:31:00.883244 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Setup layers for HTTP +11:31:00.883357 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: 5 - TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) - TCP - (debug=1,server=ptsv2.com,port=80,use_ssl=0) - debug=1,server=ptsv2.com,port=80,use_ssl=0 +11:31:00.883419 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Create layer TCP, debug=1,server=ptsv2.com,port=80,use_ssl=0 +11:31:00.883527 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::tcp_layer: TCP, debug=1,server=ptsv2.com,port=80,use_ssl=0 +11:31:00.883601 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: debug=1,server=ptsv2.com,port=80,use_ssl=0 +11:31:00.884476 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - debug=1, - debug - 1 - , +11:31:00.884587 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - server=ptsv2.com, - server - ptsv2.com - , +11:31:00.884667 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - port=80, - port - 80 - , +11:31:00.884748 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - use_ssl=0 - use_ssl - 0 - +11:31:00.884820 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert +11:31:00.884876 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::log +11:31:00.884940 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (debug, 1) +11:31:00.885037 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (port, 80) +11:31:00.885091 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (server, ptsv2.com) +11:31:00.885144 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (use_ssl, 0) +11:31:00.885199 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(server, ptsv2.com) +11:31:00.885254 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(server, ptsv2.com) +11:31:00.885308 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(server, ptsv2.com) +11:31:00.885362 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(server, ptsv2.com) +11:31:00.885418 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(port, 80) +11:31:00.885513 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(port, 80) +11:31:00.885571 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(port, 80) +11:31:00.885634 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(port, 80) +11:31:00.885696 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(use_connection_ASPs, yes) +11:31:00.885752 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(use_connection_ASPs, yes) +11:31:00.885805 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(use_connection_ASPs, yes) +11:31:00.885860 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(use_connection_ASPs, yes) +11:31:00.885913 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(server_backlog, 1024) +11:31:00.886009 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(server_backlog, 1024) +11:31:00.886065 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(server_backlog, 1024) +11:31:00.886121 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(server_backlog, 1024) +11:31:00.886175 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::map_user() +11:31:00.886228 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::map_user() +11:31:00.886283 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::open_client_connection(remoteAddr: ptsv2.com/80, localAddr: UNSPEC/UNSPEC) called +11:31:00.888097 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Number of remote addresses: 8 + +11:31:00.891050 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Using address family for socket 6: IPv4 +11:31:00.891178 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Connecting to server from address UNSPEC/UNSPEC +11:31:00.917758 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Connection established (addr): 10.0.2.15/43142 -> ptsv2.com/80 + +11:31:00.917855 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: connected to: host ptsv2.com service 80 via address family IPv4 + +11:31:00.917896 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_add_peer: Adding client 6 to peer list +11:31:00.917932 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_get_last_peer: Finding last peer of the peer array +11:31:00.918055 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_get_last_peer: No active peer found +11:31:00.918093 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_resize_list: Resizing to 7 +11:31:00.918128 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_resize_list: New length is 7 +11:31:00.918172 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::open_client_connection(). Handler set to socket fd 6 +11:31:00.918210 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::add_user_data: 6 +11:31:00.918249 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) tcp_layer::add_user_data: Non secured mode +11:31:00.918285 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::client_connection_opened: 6 +11:31:00.918321 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Setup layers for TCP +11:31:00.918381 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Port httpPort was mapped to system:httpPort. +11:31:00.918603 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Map operation of mtc:httpPort to system:httpPort finished. +11:31:00.918680 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Connecting ports mtc:syncSendPort and mtc:syncPort. +11:31:00.918771 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Port syncPort has established the connection with local port syncSendPort. +11:31:00.918831 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Port syncSendPort has established the connection with local port syncPort. +11:31:00.918919 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Connect operation on mtc:syncSendPort and mtc:syncPort finished. +11:31:00.919041 DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:28(function:f_cf_01_http_up) Altstep a_cf_01_http_down was activated as default, id 1 +11:31:00.919082 DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:29(function:f_cf_01_http_up) Altstep a_default_requests was activated as default, id 2 +11:31:00.919119 DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:30(function:f_cf_01_http_up) Altstep a_default_responses was activated as default, id 3 +11:31:00.919387 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) Warning: No UTF-8 Byte Order Mark(BOM) detected. It may result decoding errors +11:31:00.919998 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) Sent on httpPort to system @LibItsHttp_TypesAndValues.HttpMessage : { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } +11:31:00.920062 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> HttpPort::outgoing_send: payload={ request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } +11:31:00.920207 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_layer::sendMsg: { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } +11:31:00.920333 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode: { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } +11:31:00.920484 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode_request: { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } +11:31:00.920627 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_request: body: { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } +11:31:00.920692 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode_body: { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } +11:31:00.920757 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_body: # of codecs=0 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/45/f0589ff0c08500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/45/f0589ff0c08500181dc9eb7ae31560a9 new file mode 100644 index 0000000..9b788a8 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/45/f0589ff0c08500181dc9eb7ae31560a9 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 12:47:13 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall-std=c++11-pthread-fPIC + +# Flags for the linker: +LDFLAGS = -pthread-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/48/1149c7e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/48/1149c7e1978500181c21d10bc58219ba new file mode 100644 index 0000000..9b37f41 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/48/1149c7e1978500181c21d10bc58219ba @@ -0,0 +1,73 @@ +/*! + * \file pcap_layer.hh + * \brief Header file for ITS Pcap port layer. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#if (OSTYPE == linux) + +#include +#include +#include + +#include "t_layer.hh" +#include "params.hh" + +class PORT; //! Forward declaration of TITAN class + +/*! + * \class pcap_layer + * \brief This class provides description of ITS PCAP port protocol layer + */ +class pcap_layer : public layer, public PORT { + params _params; //! Layer parameters + pcap_t* _device; //! Device handle + int _pcap_h; //! PCAP instance handle + std::thread* _thread; //! Thread handle, used to read PCAP file instead of NIC, used in file mode + bool _running; //! Set to true when the thread is running, used in file mode + std::mutex _resume; //! \todo + pcap_dumper_t* _sent_file; //! Write file handle to save sent packet, used in file mode + std::string _time_key; //! \todo + int _fd[2]; //! \todo + + static void* run(void* p_this); +public: //! \publicsection + /*! + * \brief Specialised constructor + * Create a new instance of the pcap_layer class + * \param[in] p_type \todo + * \param[in] p_param \todo + */ + pcap_layer(const std::string& p_type, const std::string& param); + /*! + * \brief Default destructor + */ + virtual ~pcap_layer(); + + /*! + * \virtual + * \fn void send_data(OCTETSTRING& data, params& params); + * \brief Send bytes formated data to the lower layers + * \param[in] p_data The data to be sent + * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters + */ + virtual void send_data(OCTETSTRING& data, params& params); + /*! + * \virtual + * \fn void receive_data(OCTETSTRING& data, params& params); + * \brief Receive bytes formated data from the lower layers + * \param[in] p_data The bytes formated data received + * \param[in] p_params Some lower layers parameters values when data was received + */ + virtual void receive_data(OCTETSTRING& data, params& info); + + void Handle_Fd_Event_Readable(int fd); +}; + +#endif diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/48/50efc5ecc08500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/48/50efc5ecc08500181dc9eb7ae31560a9 new file mode 100644 index 0000000..5a96b0c --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/48/50efc5ecc08500181dc9eb7ae31560a9 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 12:41:57 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall -std=c++11 -pthread -fPIC + +# Flags for the linker: +LDFLAGS = -pthread -fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4c/90c76ed6b185001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4c/90c76ed6b185001814de869e8ad08251 new file mode 100644 index 0000000..cd8e44d --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4c/90c76ed6b185001814de869e8ad08251 @@ -0,0 +1,98 @@ +10:45:33.823667 EXECUTOR - TTCN-3 Main Test Component started on vagrant. Version: CRL 113 200/6 R4A. +10:45:33.823773 EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error +10:45:33.823935 EXECUTOR - Connected to MC. +10:45:33.824010 EXECUTOR - Executing test case TC_LIS_HTTP_POST_BV_01 in module AtsNg112_TestCases. +10:45:33.824104 TESTCASE ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Test case TC_LIS_HTTP_POST_BV_01 started. +10:45:33.824164 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Initializing variables, timers and ports of component type LibItsHttp_TestSystem.HttpComponent inside testcase TC_LIS_HTTP_POST_BV_01. +10:45:33.824251 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port syncPort was started. +10:45:33.824305 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port syncSendPort was started. +10:45:33.824392 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) >>> HttpPort::user_start +10:45:33.824460 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port httpPort was started. +10:45:33.824507 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Component type LibItsHttp_TestSystem.HttpComponent was initialized. +10:45:33.824585 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Mapping port mtc:httpPort to system:httpPort. +10:45:33.824664 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) HttpPort::set_parameter: params=HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) +10:45:33.824739 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> HttpPort::user_map: httpPort +10:45:33.824798 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) HttpPort::user_map: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) +10:45:33.824922 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) +10:45:33.826026 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1, - codecs - held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1 - , +10:45:33.831456 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - server=ptsv2.com, - server - ptsv2.com - , +10:45:33.831590 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - port=80, - port - 80 - , +10:45:33.831666 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - use_ssl=0) - use_ssl - 0) - +10:45:33.831749 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert +10:45:33.831802 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> layer_stack_builder::create_layer_stack: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) +10:45:33.832716 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: 5 - HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/ - HTTP - (codecs=held:held_codec;html:html_codec;json:json_codec) - codecs=held:held_codec;html:html_codec;json:json_codec +10:45:33.832782 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Create layer HTTP, codecs=held:held_codec;html:html_codec;json:json_codec +10:45:33.832844 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> sip_layer::sip_layer: HTTP, codecs=held:held_codec;html:html_codec;json:json_codec +10:45:33.832940 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: codecs=held:held_codec;html:html_codec;json:json_codec +10:45:33.833796 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - codecs=held:held_codec;html:html_codec;json:json_codec - codecs - held:held_codec;html:html_codec;json:json_codec - +10:45:33.833910 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert +10:45:33.833966 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Setup layers for HTTP +10:45:33.834072 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: 5 - TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) - TCP - (debug=1,server=ptsv2.com,port=80,use_ssl=0) - debug=1,server=ptsv2.com,port=80,use_ssl=0 +10:45:33.834131 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Create layer TCP, debug=1,server=ptsv2.com,port=80,use_ssl=0 +10:45:33.834193 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::tcp_layer: TCP, debug=1,server=ptsv2.com,port=80,use_ssl=0 +10:45:33.834246 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: debug=1,server=ptsv2.com,port=80,use_ssl=0 +10:45:33.835116 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - debug=1, - debug - 1 - , +10:45:33.835224 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - server=ptsv2.com, - server - ptsv2.com - , +10:45:33.835301 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - port=80, - port - 80 - , +10:45:33.835408 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - use_ssl=0 - use_ssl - 0 - +10:45:33.835486 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert +10:45:33.835544 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::log +10:45:33.835600 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (debug, 1) +10:45:33.835656 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (port, 80) +10:45:33.835715 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (server, ptsv2.com) +10:45:33.835770 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (use_ssl, 0) +10:45:33.835829 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(server, ptsv2.com) +10:45:33.835918 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(server, ptsv2.com) +10:45:33.835977 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(server, ptsv2.com) +10:45:33.836035 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(server, ptsv2.com) +10:45:33.836094 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(port, 80) +10:45:33.836152 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(port, 80) +10:45:33.836210 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(port, 80) +10:45:33.836275 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(port, 80) +10:45:33.836339 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(use_connection_ASPs, yes) +10:45:33.836423 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(use_connection_ASPs, yes) +10:45:33.836480 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(use_connection_ASPs, yes) +10:45:33.836537 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(use_connection_ASPs, yes) +10:45:33.836593 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(server_backlog, 1024) +10:45:33.836650 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(server_backlog, 1024) +10:45:33.836715 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(server_backlog, 1024) +10:45:33.836769 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(server_backlog, 1024) +10:45:33.836822 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::map_user() +10:45:33.836917 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::map_user() +10:45:33.836972 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::open_client_connection(remoteAddr: ptsv2.com/80, localAddr: UNSPEC/UNSPEC) called +10:45:33.843325 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Number of remote addresses: 8 + +10:45:33.843512 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Using address family for socket 6: IPv4 +10:45:33.843572 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Connecting to server from address UNSPEC/UNSPEC +10:45:33.869099 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Connection established (addr): 10.0.2.15/43136 -> ptsv2.com/80 + +10:45:33.869207 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: connected to: host ptsv2.com service 80 via address family IPv4 + +10:45:33.869249 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_add_peer: Adding client 6 to peer list +10:45:33.869286 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_get_last_peer: Finding last peer of the peer array +10:45:33.869321 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_get_last_peer: No active peer found +10:45:33.869367 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_resize_list: Resizing to 7 +10:45:33.869483 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_resize_list: New length is 7 +10:45:33.869527 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::open_client_connection(). Handler set to socket fd 6 +10:45:33.869565 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::add_user_data: 6 +10:45:33.869604 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) tcp_layer::add_user_data: Non secured mode +10:45:33.869640 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::client_connection_opened: 6 +10:45:33.869677 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Setup layers for TCP +10:45:33.869737 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Port httpPort was mapped to system:httpPort. +10:45:33.869965 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Map operation of mtc:httpPort to system:httpPort finished. +10:45:33.870038 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Connecting ports mtc:syncSendPort and mtc:syncPort. +10:45:33.870128 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Port syncPort has established the connection with local port syncSendPort. +10:45:33.870187 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Port syncSendPort has established the connection with local port syncPort. +10:45:33.870274 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Connect operation on mtc:syncSendPort and mtc:syncPort finished. +10:45:33.870337 DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:28(function:f_cf_01_http_up) Altstep a_cf_01_http_down was activated as default, id 1 +10:45:33.870417 DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:29(function:f_cf_01_http_up) Altstep a_default_requests was activated as default, id 2 +10:45:33.870456 DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:30(function:f_cf_01_http_up) Altstep a_default_responses was activated as default, id 3 +10:45:33.870699 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) Warning: No UTF-8 Byte Order Mark(BOM) detected. It may result decoding errors +10:45:33.871298 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) Sent on httpPort to system @LibItsHttp_TypesAndValues.HttpMessage : { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } +10:45:33.871399 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> HttpPort::outgoing_send: payload={ request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } +10:45:33.871544 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_layer::sendMsg: { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } +10:45:33.871669 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode: { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } +10:45:33.871791 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode_request: { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } +10:45:33.871954 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_request: body: { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } +10:45:33.872019 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode_body: { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } +10:45:33.872083 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_body: # of codecs=0 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4c/d0ce10889e8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4c/d0ce10889e8500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..e8c0235 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4c/d0ce10889e8500181eabf1ba1ea37ea1 @@ -0,0 +1,115 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn + + true + + + + + + src/ttcn/ttcn/TestCodec + + false + true + + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4f/20dbb304b985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4f/20dbb304b985001814de869e8ad08251 new file mode 100644 index 0000000..b251177 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4f/20dbb304b985001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 11:50:32 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC + +# Flags for the linker: +LDFLAGS = -pthread,-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/53/51a9d1e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/53/51a9d1e1978500181c21d10bc58219ba new file mode 100644 index 0000000..d0ba32a --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/53/51a9d1e1978500181c21d10bc58219ba @@ -0,0 +1,82 @@ +#include "ethernet_layer_factory.hh" + +#include "loggers.hh" + +ethernet_layer::ethernet_layer(const std::string & p_type, const std::string & param) : layer(p_type), _params() { + loggers::get_instance().log(">>> ethernet_layer::ethernet_layer: %s, %s", to_string().c_str(), param.c_str()); + // Setup parameters + params::convert(_params, param); + params::const_iterator it = _params.find("mac_src"); + if (it == _params.cend()) { + _params.insert(std::pair(std::string("mac_src"), "000000000000")); + } + it = _params.find("mac_bc"); + if (it == _params.cend()) { + _params.insert(std::pair(std::string("mac_bc"), "FFFFFFFFFFFF")); + } + it = _params.find("eth_type"); + if (it == _params.cend()) { + _params.insert(std::pair(std::string("eth_type"), "8947")); + } + //_params.log(); +} + +void ethernet_layer::send_data(OCTETSTRING& data, params& params) { + loggers::get_instance().log_msg(">>> ethernet_layer::send_data: ", data); + + OCTETSTRING eth; + // Destination MAC address + params::const_iterator it = params.find(params::mac_dst); // Find in provided parameters, params + if (it != params.cend()) { + eth = str2oct(CHARSTRING(it->second.c_str())); + } else { + it = _params.find(params::mac_dst); + if (it != _params.cend()) { + eth = str2oct(CHARSTRING(it->second.c_str())); + } else { + eth = str2oct(CHARSTRING(_params[params::mac_bc].c_str())); + } + } + // Source MAC address + it = params.find(params::mac_src); // Find in provided parameters, params + if (it != params.cend()) { + eth += str2oct(CHARSTRING(it->second.c_str())); + } else { + eth += str2oct(CHARSTRING(_params[params::mac_src].c_str())); + } + // Ethernet type + it = params.find(params::eth_type); // Find in layer parameters + if (it != params.cend()) { + eth += str2oct(CHARSTRING(it->second.c_str())); + } else { + eth += str2oct(CHARSTRING(_params[params::eth_type].c_str())); + } + + eth += data; + send_to_all_layers(eth, params); +} + +void ethernet_layer::receive_data(OCTETSTRING& data, params& params) { + loggers::get_instance().log_msg(">>> ethernet_layer::receive_data: ", data); + + // Extract dest MAC Address + OCTETSTRING dst = OCTETSTRING(6, static_cast(data)); + //loggers::get_instance().log_msg("ethernet_layer::receive_data: dst: ", dst); + // Extract source MAC Address + OCTETSTRING src = OCTETSTRING(6, 6 + static_cast(data)); + //loggers::get_instance().log_msg("ethernet_layer::receive_data: src: ", src); + // Extract ethertype + OCTETSTRING proto = OCTETSTRING(2, 2 + static_cast(data)); + //loggers::get_instance().log_msg("ethernet_layer::receive_data: proto: ", proto); + data = OCTETSTRING(data.lengthof() - 14, 14 + static_cast(data)); + // Update params + CHARSTRING s = oct2str(dst); + params.insert(std::pair(params::mac_dst, std::string(static_cast(s)))); + s = oct2str(src); + params.insert(std::pair(params::mac_src, std::string(static_cast(s)))); + //loggers::get_instance().log_msg("ethernet_layer::receive_data: payload for upper layer:", data); + + receive_to_all_layers(data, params); +} + +ethernet_layer_factory ethernet_layer_factory::_f; diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/54/1049c7e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/54/1049c7e1978500181c21d10bc58219ba new file mode 100644 index 0000000..a0c841d --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/54/1049c7e1978500181c21d10bc58219ba @@ -0,0 +1,87 @@ +/*! + * \file params.hh + * \brief Header file for the parameter dictionary. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include +#include + + /*! + * \class params + * \brief This class provides basic functionalities for an ITS dictionary + * \implements std::map + */ +class params : public std::map { +public: //! \publicsection + // TODO Use static constexpr (see commsignia_layer.hh) + static const std::string& debug; //! Set to 1 to enable the debug mode + + static const std::string& loopback; + + static const std::string& mac_src; //! Source MAC address parameter name + static const std::string& mac_dst; //! Destination MAC address parameter name + static const std::string& mac_bc; //! Broadcast MAC address parameter name + static const std::string& eth_type; //! Ethernet type parameter name + static const std::string& nic; //! Network Interface Card parameter name + static const std::string& latitude; //! Test system Latitude parameter name + static const std::string& longitude; //! Test system Longitude parameter name + + static const std::string& server; //! HTTP server address (e.g. www.etsi.org) + static const std::string& port; //! Commsignia HTTP server port. Default: 80 + static const std::string& use_ssl; //! Set to 1 to use SSL to communicate with the HTTP server. Default: false + + static const std::string& sip_url; + static const std::string& sip_version; + static const std::string& payload; //! UpperLayer Payload parameter name + + static const std::string& codecs; //! List of codecs to use for HTTP application layers + + /*! + * \brief Default constructor + * Create a new instance of the params class + */ + params() : std::map() {}; + /*! + * \brief Copy constructor + * Clone an existing instance of a params object + * \param[in] p_params An existing instance of a params object + */ + explicit params(const params& p_params) : std::map(p_params.begin(), p_params.end()) { }; + + /*! + * \brief Default destructor + */ + virtual ~params() { }; + + /*! + * \fn void log() const; + * \brief Provides a dump of the content of this instance + */ + void log() const; + /*! + * \fn void log() const; + * \brief Provides a dump of the content of this instance + */ + void log(); + /*! + * \fn void reset(); + * \brief Reset the content of this instance + */ + void reset(); + + /*! + * \static + * \fn void convert(params& p_param, const std::string p_parameters); + * \brief Create a new instance of a params object by converting a list of ITS parameters in string format (t1=v1,T2=(v0,v1v2)...) + * \return a new instance of a params object + */ + static void convert(params& p_param, const std::string p_parameters); +}; // End of class params + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/54/d0d08d049e8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/54/d0d08d049e8500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..9e66651 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/54/d0d08d049e8500181eabf1ba1ea37ea1 @@ -0,0 +1,58 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + true + + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/58/807cbd08b985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/58/807cbd08b985001814de869e8ad08251 new file mode 100644 index 0000000..b251177 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/58/807cbd08b985001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 11:50:32 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC + +# Flags for the linker: +LDFLAGS = -pthread,-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5a/2270c7e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5a/2270c7e1978500181c21d10bc58219ba new file mode 100644 index 0000000..2f2f946 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5a/2270c7e1978500181c21d10bc58219ba @@ -0,0 +1,62 @@ +#pragma once + +#include "codec.hh" +#include "params.hh" + +#include "osipparser2/osip_parser.h" + +class Base_Type; +class TTCN_Typedescriptor_t; +class TTCN_Buffer; + +namespace LibSip__SIPTypesAndValues { + class Request; + class HostPort; + class Authorization; + class From; + class To; + class Via; +} + +namespace LibSip__Common { + class SemicolonParam__List; + class AmpersandParam__List; +} +// class OPTIONAL; +// class OPTIONAL; + +class sip_codec_request: public codec < +LibSip__SIPTypesAndValues::Request, +LibSip__SIPTypesAndValues::Request> +{ +public: + explicit sip_codec_request() : codec() { }; + virtual ~sip_codec_request() { }; + + virtual int encode (const LibSip__SIPTypesAndValues::Request& msg, OCTETSTRING& data); + virtual int decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::Request& msg, params* p_params = NULL); +private: //! \todo Move this section into a sip_codec_helper class, need to decode Response too + void fill_message_body(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request); + void fill_payload(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request); + void fill_uri(LibSip__SIPTypesAndValues::SipUrl& p_sip_url, const osip_uri_t* p_uri); + void fill_request_line(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& msg); + void fill_headers(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& msg); + + + void fill_accept_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Accept& p_accept_header); + void fill_accept_contact_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptContact& p_accept_contact_header); + void fill_accept_encoding_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptEncoding& p_accept_encoding_header); + void fill_accept_language_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptLanguage& p_accept_language_header); + void fill_alert_info_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AlertInfo& p_alert_info_header); + void fill_allow_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Allow& p_allow_header); + void fill_allow_events_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AllowEvents& p_allow_events_header); + void fill_authorization_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Authorization& p_authorization_header); + void fill_from_header(const osip_from_t* p_sip_from, LibSip__SIPTypesAndValues::From& p_from_header); + void fill_to_header(const osip_to_t* p_sip_to, LibSip__SIPTypesAndValues::To& p_to_header); + void fill_via_header(const osip_message_t* p_sip_via_list, LibSip__SIPTypesAndValues::Via& p_via_header); + + void fill_host_port(const char* p_host, const char* p_port, LibSip__SIPTypesAndValues::HostPort& p_host_port); + void fill_semi_colon_params(const osip_list_t& p_sip_list, OPTIONAL& p_list); + void fill_ampersand_params(const osip_list_t& p_sip_list, OPTIONAL& p_list); + +}; // End of class sip_codec_request diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5c/5274c5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5c/5274c5e1978500181c21d10bc58219ba new file mode 100644 index 0000000..1a0f651 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5c/5274c5e1978500181c21d10bc58219ba @@ -0,0 +1,66 @@ +#pragma once + +#include + +#include "codec.hh" +#include "params.hh" + +class Base_Type; +class Record_Type; +class TTCN_Typedescriptor_t; +class TTCN_Buffer; + +namespace LibItsHttp__TypesAndValues { + class HttpMessage; + class Request; + class Response; + class HeaderLines; + class HeaderLine; +} +namespace LibItsHttp__MessageBodyTypes { + class HttpMessageBody; +} + +struct encoding_context { + unsigned int length; + unsigned char is_content_length_present; + + encoding_context() { reset(); }; + void reset() { length = -1; is_content_length_present = 0x00; }; +}; + +struct decoding_context { + unsigned int length; + unsigned char is_binary; + + decoding_context() { reset(); }; + void reset() { length = -1; is_binary = 0x00; }; +}; + +class http_codec: public codec < +LibItsHttp__TypesAndValues::HttpMessage, +LibItsHttp__TypesAndValues::HttpMessage> +{ + encoding_context _ec; + decoding_context _dc; + std::map > > _codecs; +public: + explicit http_codec() : codec(), _ec(), _dc(), _codecs() { }; + virtual ~http_codec() { }; + + virtual int encode (const LibItsHttp__TypesAndValues::HttpMessage&, OCTETSTRING& data); + virtual int decode (const OCTETSTRING& data, LibItsHttp__TypesAndValues::HttpMessage&, params* params = NULL); + + void set_payload_codecs(const std::string& p_codecs); + +private: + int encode_request (const LibItsHttp__TypesAndValues::Request& p_request, TTCN_Buffer& p_encoding_buffer); + int encode_response (const LibItsHttp__TypesAndValues::Response& p_response, TTCN_Buffer& p_encoding_buffer); + int encode_body(const LibItsHttp__MessageBodyTypes::HttpMessageBody& p_message_body, OCTETSTRING& p_encoding_buffer); + + int decode_headers(TTCN_Buffer& decoding_buffer, LibItsHttp__TypesAndValues::HeaderLines& headers); + int decode_header(CHARSTRING& header_line, LibItsHttp__TypesAndValues::HeaderLine& header); + int decode_body(TTCN_Buffer& decoding_buffer, LibItsHttp__MessageBodyTypes::HttpMessageBody& message_body); + int get_line(TTCN_Buffer& buffer, CHARSTRING& to, const bool concatenate_header_lines = false); + +}; // End of class http_codec diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5d/0122c7e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5d/0122c7e1978500181c21d10bc58219ba new file mode 100644 index 0000000..6f252f5 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5d/0122c7e1978500181c21d10bc58219ba @@ -0,0 +1,289 @@ +/*! + * \file loogers.hh + * \brief Header file for the logger framework. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include +#include +#include +#include +#include + +/** +class Base_Type; +class OCTETSTRING; +class TTCN_Buffer; +class TTCN_Logger; +enum TTCN_Logger::Severity; +extern void TTCN_error(const char *err_msg, ...) __attribute__ ((__format__ (__printf__, 1, 2), __noreturn__)); +extern void TTCN_error_begin(const char *err_msg, ...) __attribute__ ((__format__ (__printf__, 1, 2))); +extern void TTCN_error_end() __attribute__ ((__noreturn__)); +void TTCN_warning(const char *warning_msg, ...) __attribute__ ((__format__ (__printf__, 1, 2))); +extern void TTCN_warning_begin(const char *warning_msg, ...) __attribute__ ((__format__ (__printf__, 1, 2))); +extern void TTCN_warning_end(); +**/ + +using namespace std; // Required for isnan() +#include + +/*! + * \class loggers + * \brief This class provides basic functionalities for an ITS dictionary + * \implements Singleton pattern + * \todo Remove reference to TTCN3.hh + */ +class loggers { +private: //! \privatesection + static std::unique_ptr _instance; //! Smart pointer to the unique instance of the logger framework + std::map _times; //! Timer used to measure execution time between calls to methods \loggers::set_start_time and \loggers::set_stop_time + + /*! + * \brief Default constructor + * Create a new instance of the loggers class + * \private + */ + explicit loggers() : _times() { }; + + inline void log_time_exec(const char *p_fmt, ...); + +public: //! \publicsection + /*! + * \brief Default destructor + */ + virtual ~loggers() {}; + + /*! + * \fn static loggers& get_instance(); + * \brief Accessor for the unique instance of the logger framework + * \inline + */ + static inline loggers& get_instance() { return *_instance.get(); }; + + /*! + * \fn void log_to_hexa(const char *p_prompt, const TTCN_Buffer& buffer); + * \brief Hexa dump of the \see TTCN_Buffer buffer + * \param[in] p_prompt Label of the log to be produced + * \param[in] buffer The TTCN_Buffer buffer to dump + * \inline + */ + inline void log_to_hexa(const char *p_prompt, const TTCN_Buffer& buffer); + /*! + * \fn void log_to_hexa(const char *p_prompt, const OCTETSTRING& msg); + * \brief Hexa dump of the \see OCTETSTRING buffer + * \param[in] p_prompt Label of the log to be produced + * \param[in] msg The OCTETSTRING buffer to dump + * \inline + */ + inline void log_to_hexa(const char *p_prompt, const OCTETSTRING& msg); + /*! + * \fn void log_to_hexa(const char *p_prompt, const unsigned char* msg, const size_t msg_size); + * \brief Hexa dump of the provided buffer + * \param[in] p_prompt Label of the log to be produced + * \param[in] msg The buffer to dump + * \inline + */ + inline void log_to_hexa(const char *p_prompt, const unsigned char* msg, const size_t msg_size); + /*! + * \fn void log_msg(const char *p_prompt, const Base_Type& p_type); + * \brief Debug log of TITAN data structures + * \param[in] p_prompt Label of the log to be produced + * \param[in] msg The TITAN data structure to log + * \inline + */ + inline void log_msg(const char *p_prompt, const Base_Type& p_type); + /*! + * \fn void log(const char *p_fmt, ...); + * \brief Debug message based on printf-compliant formatting message + * \param[in] p_fmt The printf-compliant format of the message to log + * \param[in] ... The arguments + * \inline + */ + inline void log(const char *p_fmt, ...); + + /*! + * \fn void user_msg(const char *p_prompt, const Base_Type& p_type); + * \brief User message of TITAN data structures + * \param[in] p_prompt Label of the log to be produced + * \param[in] msg The TITAN data structure to log + * \inline + */ + inline void user_msg(const char *p_prompt, const Base_Type& p_type); + /*! + * \fn void user(const char *p_fmt, ...); + * \brief User message based on printf-compliant formatting message + * \param[in] p_fmt The printf-compliant format of the message to log + * \param[in] ... The arguments + * \inline + */ + inline void user(const char *p_fmt, ...); + + /*! + * \fn void user_msg(const char *p_prompt, const Base_Type& p_type); + * \brief Warning message of TITAN data structures + * \param[in] p_prompt Label of the log to be produced + * \param[in] msg The TITAN data structure to log + * \inline + */ + inline void warning_msg(const char *p_prompt, const Base_Type& p_type); + /*! + * \fn void user(const char *p_fmt, ...); + * \brief Warning message based on printf-compliant formatting message + * \param[in] p_fmt The printf-compliant format of the message to log + * \param[in] ... The arguments + * \inline + */ + inline void warning(const char *p_fmt, ...); + + /*! + * \fn void user(const char *p_fmt, ...); + * \brief Error message based on printf-compliant formatting message + * \param[in] p_fmt The printf-compliant format of the message to log + * \param[in] ... The arguments + * \inline + */ + inline void error(const char *p_fmt, ...); + + /*! + * \fn void set_start_time(std::string& p_time_key); + * \brief Start execution time measurement + * \param[in] p_time_key A timer identifier (any string) + * \inline + */ + inline void set_start_time(std::string& p_time_key); + /*! + * \fn void set_stop_time(std::string& p_time_key, float& p_time); + * \brief Stop execution time measurement + * \param[in] p_time_key The timer identifier provided while calling \see loggers::set_start_time method + * \param[out] p_time The execution time measured in milliseconds + * \inline + */ + inline void set_stop_time(std::string& p_time_key, float& p_time); +}; // End of class loggers + +void loggers::log_to_hexa(const char *p_prompt, const TTCN_Buffer & buffer) +{ + TTCN_Logger::begin_event(TTCN_Logger::DEBUG_UNQUALIFIED); + TTCN_Logger::log_event_str(p_prompt); + buffer.log(); + TTCN_Logger::end_event(); +} + +void loggers::log_to_hexa(const char *p_prompt, const OCTETSTRING& msg) +{ + TTCN_Logger::begin_event(TTCN_Logger::DEBUG_UNQUALIFIED); + TTCN_Logger::log_event_str(p_prompt); + TTCN_Logger::log_event("Size: %d,\nMsg: ", msg.lengthof()); + + for(int i = 0; i < msg.lengthof(); i++) { + TTCN_Logger::log_event(" %02x", ((const unsigned char*)msg)[i]); + } + TTCN_Logger::log_event("\n"); + TTCN_Logger::end_event(); +} + +void loggers::log_to_hexa(const char *p_prompt, const unsigned char* msg, const size_t msg_size) +{ + TTCN_Logger::begin_event(TTCN_Logger::DEBUG_UNQUALIFIED); + TTCN_Logger::log_event_str(p_prompt); + for(size_t i = 0; i < msg_size; i++) { + TTCN_Logger::log_event(" %02x", *(msg + i)); + } + TTCN_Logger::log_event("\n"); + TTCN_Logger::end_event(); +} + +void loggers::log_msg(const char *p_prompt, const Base_Type& p_type) +{ + TTCN_Logger::begin_event(TTCN_Logger::DEBUG_UNQUALIFIED); + TTCN_Logger::log_event_str(p_prompt); + p_type.log(); + TTCN_Logger::end_event(); +} + +void loggers::log(const char *p_fmt, ...) +{ + TTCN_Logger::begin_event(TTCN_Logger::DEBUG_UNQUALIFIED); + va_list args; + va_start(args, p_fmt); + TTCN_Logger::log_event_va_list(p_fmt, args); + va_end(args); + TTCN_Logger::end_event(); +} + +void loggers::user_msg(const char *p_prompt, const Base_Type& p_type) +{ + TTCN_Logger::begin_event(TTCN_Logger::USER_UNQUALIFIED); + TTCN_Logger::log_event_str(p_prompt); + p_type.log(); + TTCN_Logger::end_event(); +} + +void loggers::user(const char *p_fmt, ...) +{ + TTCN_Logger::begin_event(TTCN_Logger::USER_UNQUALIFIED); + va_list args; + va_start(args, p_fmt); + TTCN_Logger::log_event_va_list(p_fmt, args); + va_end(args); + TTCN_Logger::end_event(); +} + +void loggers::warning(const char *p_fmt, ...) +{ + TTCN_Logger::begin_event(TTCN_Logger::WARNING_UNQUALIFIED); + va_list args; + va_start(args, p_fmt); + TTCN_Logger::log_event_va_list(p_fmt, args); + va_end(args); + TTCN_Logger::end_event(); +} + +void loggers::warning_msg(const char *p_prompt, const Base_Type& p_type) +{ + TTCN_Logger::begin_event(TTCN_Logger::WARNING_UNQUALIFIED); + TTCN_Logger::log_event_str(p_prompt); + p_type.log(); + TTCN_Logger::end_event(); +} + +void loggers::error(const char *p_fmt, ...) +{ + va_list args; + va_start(args, p_fmt); + TTCN_error(p_fmt, args); + va_end(args); +} + +void loggers::set_start_time(std::string& p_time_key) +{ + _times[p_time_key] = std::clock(); +} + +void loggers::set_stop_time(std::string& p_time_key, float& p_time) +{ + std::map::iterator it = _times.find(p_time_key); + if (it != loggers::_times.end()) { + p_time = (std::clock() - _times[p_time_key]) * 1000.0 / CLOCKS_PER_SEC; // in milliseconds + _times.erase(it); + loggers::get_instance().log_time_exec("%s: Execution duration: %f ms", p_time_key.c_str(), p_time); + + } +} + +void loggers::log_time_exec(const char *p_fmt, ...) +{ + TTCN_Logger::begin_event(TTCN_Logger::EXECUTOR_RUNTIME); + va_list args; + va_start(args, p_fmt); + TTCN_Logger::log_event_va_list(p_fmt, args); + va_end(args); + TTCN_Logger::end_event(); +} + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5d/8073aed7b185001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5d/8073aed7b185001814de869e8ad08251 new file mode 100644 index 0000000..a855fe0 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5d/8073aed7b185001814de869e8ad08251 @@ -0,0 +1,132 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + None + -Wall -std=c++11 -pthread -fPIC + + pcap + ssl + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + -pthread -fPIC + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn + + true + + + + + + src/ttcn/ttcn/TestCodec + + false + true + + + + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5e/303dd6e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5e/303dd6e1978500181c21d10bc58219ba new file mode 100644 index 0000000..fc4b37f --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5e/303dd6e1978500181c21d10bc58219ba @@ -0,0 +1,988 @@ +#include "LibSip_SIPTypesAndValues.hh" +#include "LibSip_Common.hh" + +#include "sip_codec_request.hh" +#include "loggers.hh" + +int sip_codec_request::encode (const LibSip__SIPTypesAndValues::Request& msg, OCTETSTRING& data) +{ + loggers::get_instance().log_msg(">>> sip_codec_request::encode: ", (const Base_Type&)msg); + + osip_message_t* _sip_message; + ::parser_init(); + int result = ::osip_message_init(&_sip_message); + if (result != 0) { + loggers::get_instance().warning("sip_codec_request::encode: Failed to initialise internal data structures"); + return -1; + } + + char* buffer = nullptr; + size_t length = 0; + result = ::osip_message_to_str(_sip_message, &buffer, &length); + if (result != 0) { + loggers::get_instance().warning("sip_codec_request::encode: Failed to encode data structures"); + ::osip_message_free(_sip_message); + return -1; + } + ::osip_message_free(_sip_message); + data = OCTETSTRING(length, (const unsigned char*)buffer); + + loggers::get_instance().log_msg("<<< sip_codec_request::encode: data=", data); + return result; +} + +int sip_codec_request::decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::Request& msg, params* p_params) +{ + loggers::get_instance().log_msg(">>> sip_codec_request::decode: data=", data); + + // Sanity checks + if (data.lengthof() == 0) { + loggers::get_instance().warning("sip_codec_request::decode: Wrong parameters"); + return -1; + } + + osip_message_t* _sip_message; + ::parser_init(); + int result = ::osip_message_init(&_sip_message); + if (result != 0) { + loggers::get_instance().warning("sip_codec_request::decode: Failed to initialise internal data structures"); + return -1; + } + result = ::osip_message_parse(_sip_message, (const char*)static_cast(data), data.lengthof()); + if (result != 0) { + loggers::get_instance().warning("sip_codec_request::decode: Failed to parse SIP message"); + return -1; + } + + // Fill RequestLine + fill_request_line(_sip_message, msg); + + // Fill Headers + fill_headers(_sip_message, msg); + + // Fill MessageBody + fill_message_body(_sip_message, msg); + + // Fill Payload + fill_payload(_sip_message, msg); + + ::osip_message_free(_sip_message); + loggers::get_instance().log_msg("sip_codec_request::decode: ", msg); + + return 0; +} + +void sip_codec_request::fill_headers(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_headers"); + + LibSip__SIPTypesAndValues::MessageHeader headers; + // Fill mandatory fields + // From + LibSip__SIPTypesAndValues::From from_header; + fill_from_header(::osip_message_get_from(p_sip_message), from_header); + if (from_header.is_value()) { + headers.fromField() = from_header; + } else { + headers.fromField().set_to_omit(); + } + // To + LibSip__SIPTypesAndValues::To to_header; + fill_to_header(::osip_message_get_to(p_sip_message), to_header); + if (to_header.is_value()) { + headers.toField() = to_header; + } else { + headers.toField().set_to_omit(); + } + // Via + LibSip__SIPTypesAndValues::Via via_header; + fill_via_header(p_sip_message, via_header); + if (via_header.is_value()) { + headers.via() = via_header; + } else { + headers.via().set_to_omit(); + } + + // Fill Optional fields + LibSip__SIPTypesAndValues::Accept accept_header; + fill_accept_header(p_sip_message, accept_header); + if (accept_header.is_value()) { + headers.accept() = accept_header; + } else { + headers.accept().set_to_omit(); + } + + LibSip__SIPTypesAndValues::AcceptContact accept_contact_header; + fill_accept_contact_header(p_sip_message, accept_contact_header); + if (accept_contact_header.is_value()) { + headers.acceptContact() = accept_contact_header; + } else { + headers.acceptContact().set_to_omit(); + } + + LibSip__SIPTypesAndValues::AcceptEncoding accept_encoding_header; + fill_accept_encoding_header(p_sip_message, accept_encoding_header); + if (accept_encoding_header.is_value()) { + headers.acceptEncoding() = accept_encoding_header; + } else { + headers.acceptEncoding().set_to_omit(); + } + + LibSip__SIPTypesAndValues::AcceptLanguage accept_language_header; + fill_accept_language_header(p_sip_message, accept_language_header); + if (accept_language_header.is_value()) { + headers.acceptLanguage() = accept_language_header; + } else { + headers.acceptLanguage().set_to_omit(); + } + + LibSip__SIPTypesAndValues::AlertInfo alert_info_header; + fill_alert_info_header(p_sip_message, alert_info_header); + if (alert_info_header.is_value()) { + headers.alertInfo() = alert_info_header; + } else { + headers.alertInfo().set_to_omit(); + } + + LibSip__SIPTypesAndValues::Allow allow_header; + fill_allow_header(p_sip_message, allow_header); + if (allow_header.is_value()) { + headers.allow() = allow_header; + } else { + headers.allow().set_to_omit(); + } + + LibSip__SIPTypesAndValues::AllowEvents allow_events_header; + fill_allow_events_header(p_sip_message, allow_events_header); + if (allow_events_header.is_value()) { + headers.allowEvents() = allow_events_header; + } else { + headers.allowEvents().set_to_omit(); + } + + LibSip__SIPTypesAndValues::Authorization authorization_header; + fill_authorization_header(p_sip_message, authorization_header); + if (authorization_header.is_value()) { + headers.authorization() = authorization_header; + } else { + headers.authorization().set_to_omit(); + } + headers.authenticationInfo().set_to_omit(); + headers.callId().set_to_omit(); + headers.callInfo().set_to_omit(); + headers.contact().set_to_omit(); + headers.contentDisposition().set_to_omit(); + headers.contentEncoding().set_to_omit(); + headers.contentLanguage().set_to_omit(); + headers.contentLength().set_to_omit(); + headers.contentType().set_to_omit(); + headers.cSeq().set_to_omit(); + headers.date().set_to_omit(); + headers.errorInfo().set_to_omit(); + headers.event().set_to_omit(); + headers.expires().set_to_omit(); + headers.featureCaps().set_to_omit(); + headers.geolocation().set_to_omit(); + headers.geolocationRouting().set_to_omit(); + headers.historyInfo().set_to_omit(); + headers.infoPackage().set_to_omit(); + headers.inReplyTo().set_to_omit(); + headers.maxForwards().set_to_omit(); + headers.mimeVersion().set_to_omit(); + headers.minExpires().set_to_omit(); + headers.minSE().set_to_omit(); + headers.organization().set_to_omit(); + headers.pAccessNetworkInfo().set_to_omit(); + headers.pAssertedID().set_to_omit(); + headers.pAssertedService().set_to_omit(); + headers.pAssociatedURI().set_to_omit(); + headers.path().set_to_omit(); + headers.pCalledPartyID().set_to_omit(); + headers.pChargingFunctionAddresses().set_to_omit(); + headers.pChargingVector().set_to_omit(); + headers.pEarlyMedia().set_to_omit(); + headers.pMediaAuthorization().set_to_omit(); + headers.pPreferredID().set_to_omit(); + headers.pPreferredService().set_to_omit(); + headers.priority().set_to_omit(); + headers.privacy().set_to_omit(); + headers.proxyAuthenticate().set_to_omit(); + headers.proxyAuthorization().set_to_omit(); + headers.proxyRequire().set_to_omit(); + headers.pVisitedNetworkID().set_to_omit(); + headers.rAck().set_to_omit(); + headers.rSeq().set_to_omit(); + headers.reason().set_to_omit(); + headers.recordRoute().set_to_omit(); + headers.recvInfo().set_to_omit(); + headers.requestDisposition().set_to_omit(); + headers.referredBy().set_to_omit(); + headers.referTo().set_to_omit(); + headers.referSub().set_to_omit(); + headers.replaces().set_to_omit(); + headers.replyTo().set_to_omit(); + headers.require().set_to_omit(); + headers.retryAfter().set_to_omit(); + headers.route().set_to_omit(); + headers.securityClient().set_to_omit(); + headers.securityServer().set_to_omit(); + headers.securityVerify().set_to_omit(); + headers.server().set_to_omit(); + headers.serviceRoute().set_to_omit(); + headers.sessionExpires().set_to_omit(); + headers.sessionId().set_to_omit(); + headers.sipETag().set_to_omit(); + headers.sipIfMatch().set_to_omit(); + headers.subject().set_to_omit(); + headers.subscriptionState().set_to_omit(); + headers.supported().set_to_omit(); + headers.timestamp().set_to_omit(); + headers.unsupported().set_to_omit(); + headers.userToUser().set_to_omit(); + headers.userAgent().set_to_omit(); + headers.warning().set_to_omit(); + headers.wwwAuthenticate().set_to_omit(); + headers.resourcePriority().set_to_omit(); + headers.answerMode().set_to_omit(); + headers.privAnswerMode().set_to_omit(); + headers.targetDialog().set_to_omit(); + headers.pAnswerState().set_to_omit(); + headers.undefinedHeader__List().set_to_omit(); + + p_request.msgHeader() = headers; + + loggers::get_instance().log_msg("sip_codec_request::fill_headers: ", p_request); +} // End of method fill_headers + +void sip_codec_request::fill_message_body(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_message_body"); + + p_request.messageBody().set_to_omit(); +} // End of method fill_message_body + +void sip_codec_request::fill_payload(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_payload"); + + p_request.payload().set_to_omit(); + +} // End of method fill_payload + +void sip_codec_request::fill_semi_colon_params(const osip_list_t& p_sip_list, OPTIONAL& p_list) { + loggers::get_instance().log(">>> sip_codec_request::fill_semi_colon_params"); + + if (::osip_list_size(&p_sip_list) != 0) { + LibSip__Common::SemicolonParam__List l; + for (int i = 0; i < ::osip_list_size(&p_sip_list); i++) { + osip_generic_param_t* p = (osip_generic_param_t*)::osip_list_get(&p_sip_list, i); + loggers::get_instance().log("sip_codec_request::fill_semi_colon_params: After cast: %p", p); + CHARSTRING name(p->gname); + if (p->gvalue == nullptr) { + l[i] = LibSip__Common::GenericParam(name, OPTIONAL(OMIT_VALUE)); + } else { + LibSip__Common::GenValue g; + g.tokenOrHost() = CHARSTRING(p->gvalue); + l[i] = LibSip__Common::GenericParam(name, g); + } + } // End of 'for' statement + p_list = OPTIONAL(l); + } else { + p_list.set_to_omit(); + } + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_semi_colon_params: ", p_list); +} // End of method fill_semi_colon_params + +void sip_codec_request::fill_ampersand_params(const osip_list_t& p_sip_list, OPTIONAL& p_list) { + loggers::get_instance().log(">>> sip_codec_request::fill_ampersand_params"); + + if (::osip_list_size(&p_sip_list) != 0) { + LibSip__Common::AmpersandParam__List l; + for (int i = 0; i < ::osip_list_size(&p_sip_list); i++) { + osip_generic_param_t* p = (osip_generic_param_t*)::osip_list_get(&p_sip_list, i); + loggers::get_instance().log("sip_codec_request::fill_ampersand_params: After cast: %p", p); + CHARSTRING name(p->gname); + if (p->gvalue == nullptr) { + l[i] = LibSip__Common::GenericParam(name, OPTIONAL(OMIT_VALUE)); + } else { + LibSip__Common::GenValue g; + g.tokenOrHost() = CHARSTRING(p->gvalue); + l[i] = LibSip__Common::GenericParam(name, g); + } + } // End of 'for' statement + p_list = OPTIONAL(l); + } else { + p_list.set_to_omit(); + } + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_ampersand_params: ", p_list); +} // End of method fill_ampersand_params + +void sip_codec_request::fill_host_port(const char* p_host, const char* p_port, LibSip__SIPTypesAndValues::HostPort& p_host_port) { + loggers::get_instance().log(">>> sip_codec_request::fill_host_port"); + + if (p_host == nullptr) { + p_host_port.host().set_to_omit(); + } else { + p_host_port.host() = OPTIONAL(CHARSTRING(p_host)); + } + OPTIONAL port; + if (p_port == nullptr) { + p_host_port.portField().set_to_omit(); + } else { + p_host_port.portField() = OPTIONAL(INTEGER(std::stoi(p_port))); + } + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_host_port: ", p_host_port); +} // End of method fill_host_port" + +void sip_codec_request::fill_request_line(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_request_line"); + + LibSip__SIPTypesAndValues::RequestLine request_line; + std::string str(::osip_message_get_method(p_sip_message)); + str += "_E"; + request_line.method() = LibSip__SIPTypesAndValues::Method(LibSip__SIPTypesAndValues::Method::str_to_enum(str.c_str())); + loggers::get_instance().log_msg("sip_codec_request::fill_request_line: Method: ", request_line.method()); + LibSip__SIPTypesAndValues::SipUrl uri; + fill_uri(uri, ::osip_message_get_uri(p_sip_message)); + loggers::get_instance().log_msg("sip_codec_request::fill_request_line: SipUrl: ", uri); + request_line.requestUri() = uri; + request_line.sipVersion() = CHARSTRING(::osip_message_get_version(p_sip_message)); + p_request.requestLine() = request_line; + // FIXME To be continued + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_request_line: ", p_request); +} + +void sip_codec_request::fill_uri(LibSip__SIPTypesAndValues::SipUrl& p_sip_url, const osip_uri_t* p_uri) { + loggers::get_instance().log(">>> sip_codec_request::fill_uri"); + + // Scheme + LibSip__SIPTypesAndValues::UriComponents uri_components; + if (::osip_uri_get_scheme((osip_uri_t*)p_uri) != nullptr) { + p_sip_url.scheme() = CHARSTRING(::osip_uri_get_scheme((osip_uri_t*)p_uri)); + loggers::get_instance().log_msg("sip_codec_request::fill_uri: scheme", p_sip_url.scheme()); + // SipUriComponents + if (strcmp(::osip_uri_get_scheme((osip_uri_t*)p_uri), "sip") == 0) { + // User Info + OPTIONAL user_info; + if (::osip_uri_get_username((osip_uri_t*)p_uri) == nullptr) { + user_info.set_to_omit(); + } else { + OPTIONAL password; + if (::osip_uri_get_password((osip_uri_t*)p_uri) == nullptr) { + password.set_to_omit(); + } else { + password = CHARSTRING(::osip_uri_get_password((osip_uri_t*)p_uri)); + } + LibSip__SIPTypesAndValues::UserInfo u(CHARSTRING(::osip_uri_get_username((osip_uri_t*)p_uri)), password); + user_info = OPTIONAL(u); + } + loggers::get_instance().log_msg("sip_codec_request::fill_uri: user_info: ", user_info); + // HostPort + LibSip__SIPTypesAndValues::HostPort host_port; + fill_host_port(::osip_uri_get_host((osip_uri_t*)p_uri), ::osip_uri_get_port((osip_uri_t*)p_uri), host_port); + loggers::get_instance().log_msg("sip_codec_request::fill_uri: host_port: ", host_port); + uri_components.sip() = LibSip__SIPTypesAndValues::SipUriComponents(user_info, host_port); + } else if (strcmp(::osip_uri_get_scheme((osip_uri_t*)p_uri), "tel") == 0) { + // FIXME uri_components.tel() = LibSip__SIPTypesAndValues::TelUriComponents(user_info, host_port); + } else if (strcmp(::osip_uri_get_scheme((osip_uri_t*)p_uri), "urn") == 0) { + // FIXME uri_components.urn() = LibSip__SIPTypesAndValues::UrnUriComponents(user_info, host_port); + } else { + char *buffer = nullptr; + ::osip_uri_to_str_canonical((osip_uri_t*)p_uri, &buffer); + uri_components.other() = CHARSTRING(buffer); + osip_free(buffer); // Macro + } + } else { + char *buffer = nullptr; + ::osip_uri_to_str_canonical((osip_uri_t*)p_uri, &buffer); + uri_components.other() = CHARSTRING(buffer); + osip_free(buffer); // Macro + } + p_sip_url.components() = uri_components; + // UrlParameters + OPTIONAL params; + fill_semi_colon_params(p_uri->url_params, params); + p_sip_url.urlParameters() = params; + // Headers + OPTIONAL headers; + fill_ampersand_params(p_uri->url_headers, headers); + p_sip_url.headers() = headers; + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_uri: ", p_sip_url); +} // End of method fill_uri + +void sip_codec_request::fill_authorization_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Authorization& p_authorization_header) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_authorization_header: %p", p_sip_message->authorizations); + + // FieldName + p_authorization_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("AUTHORIZATION_E")); + // CredentialsList + LibSip__SIPTypesAndValues::CredentialsList l; + int i = 0; + osip_authorization_t *sip_authorization = nullptr; + while(::osip_message_get_authorization(p_sip_message, i, &sip_authorization) == 0) { + loggers::get_instance().log("sip_codec_request::fill_authorization_header: Processing item #%d", i); + LibSip__SIPTypesAndValues::Credentials v; + LibSip__Common::CommaParam__List cl; + int j = 0; + if (::osip_authorization_get_digest(sip_authorization) != nullptr) { + LibSip__Common::GenValue v; + v.tokenOrHost() = CHARSTRING(::osip_authorization_get_digest(sip_authorization)); + cl[j++] = LibSip__Common::GenericParam( + CHARSTRING("Digest"), + OPTIONAL(v) + ); + } + if (::osip_authorization_get_realm(sip_authorization) != nullptr) { + LibSip__Common::GenValue v; + v.tokenOrHost() = CHARSTRING(::osip_authorization_get_realm(sip_authorization)); + cl[j++] = LibSip__Common::GenericParam( + CHARSTRING("Realm"), + OPTIONAL(v) + ); + } + // FIXME To be contiuened + v.digestResponse() = cl; + l[i++] = v; + } // End of 'while' statement + p_authorization_header.body() = l; + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_authorization_header: ", p_authorization_header); +} // End of method fill_authorization_header + + + + + + + + + + + + + + +void sip_codec_request::fill_from_header(const osip_from_t* p_sip_from, LibSip__SIPTypesAndValues::From& p_from_header) +{ + loggers::get_instance().log("sip_codec_request::fill_from_header"); + + // FieldName + p_from_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("FROM_E")); + // Addr_Union + LibSip__SIPTypesAndValues::SipUrl uri; + fill_uri(uri, ::osip_from_get_url((osip_from_t*)p_sip_from)); + OPTIONAL display_name; + if (::osip_from_get_displayname((osip_from_t*)p_sip_from) != nullptr) { + LibSip__SIPTypesAndValues::DisplayName n; + n.token() = CHARSTRING(::osip_from_get_displayname((osip_from_t*)p_sip_from)); + display_name = OPTIONAL(n); + } else { + display_name.set_to_omit(); + } + LibSip__SIPTypesAndValues::NameAddr name_addr(display_name, uri); + LibSip__SIPTypesAndValues::Addr__Union addr; + addr.nameAddr() = name_addr; + p_from_header.addressField() = addr; + // Params + OPTIONAL params; + fill_semi_colon_params(p_sip_from->gen_params, params); + p_from_header.fromParams() = params; + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_from_header: ", p_from_header); +} // End of method fill_from_header + +void sip_codec_request::fill_to_header(const osip_to_t* p_sip_to, LibSip__SIPTypesAndValues::To& p_to_header) +{ + loggers::get_instance().log("sip_codec_request::fill_to_header"); + + // FieldName + p_to_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("TO_E")); + // Addr_Union + LibSip__SIPTypesAndValues::SipUrl uri; + fill_uri(uri, ::osip_to_get_url((osip_to_t*)p_sip_to)); + OPTIONAL display_name; + if (::osip_to_get_displayname((osip_to_t*)p_sip_to) != nullptr) { + LibSip__SIPTypesAndValues::DisplayName n; + n.token() = CHARSTRING(::osip_to_get_displayname((osip_to_t*)p_sip_to)); + display_name = OPTIONAL(n); + } else { + display_name.set_to_omit(); + } + LibSip__SIPTypesAndValues::NameAddr name_addr(display_name, uri); + LibSip__SIPTypesAndValues::Addr__Union addr; + addr.nameAddr() = name_addr; + p_to_header.addressField() = addr; + // Params + OPTIONAL params; + fill_semi_colon_params(p_sip_to->gen_params, params); + p_to_header.toParams() = params; + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_to_header: ", p_to_header); +} // End of method fill_to_header + +void sip_codec_request::fill_accept_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Accept& p_accept_header) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_accept_header: %p", p_sip_message->vias); + + // FieldName + p_accept_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ACCEPT_E")); + // AcceptArgs + // TODO To be done + p_accept_header.acceptArgs().set_to_omit(); + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_accept_header: ", p_accept_header); +} // End of method fill_accept_header + +void sip_codec_request::fill_accept_contact_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptContact& p_accept_contact_header) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_accept_contact_header: %p", p_sip_message->vias); + + // FieldName + p_accept_contact_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ACCEPT_CONTACT_E")); + // AcRcValue + LibSip__SIPTypesAndValues::AcRcValue__List l; + // TODO To be done + l[0] = LibSip__SIPTypesAndValues::AcRcValue(CHARSTRING("*"), OPTIONAL(OMIT_VALUE)); + p_accept_contact_header.acValues() = l; + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_accept_contact_header: ", p_accept_contact_header); +} // End of method fill_accept_contact_header + +void sip_codec_request::fill_accept_encoding_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptEncoding& p_accept_encoding_header) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_accept_encoding_header: %p", p_sip_message->vias); + + // FieldName + p_accept_encoding_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ACCEPT_ENCODING_E")); + // ContentCoding + p_accept_encoding_header.contentCoding().set_to_omit(); + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_accept_encoding_header: ", p_accept_encoding_header); +} // End of method fill_accept_encoding_header + +void sip_codec_request::fill_accept_language_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptLanguage& p_accept_language_header) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_accept_language_header: %p", p_sip_message->vias); + + // FieldName + p_accept_language_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ACCEPT_LANGUAGE_E")); + // LanguageBody + p_accept_language_header.languageBody().set_to_omit(); + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_accept_language_header: ", p_accept_language_header); +} // End of method fill_accept_language_header + +void sip_codec_request::fill_alert_info_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AlertInfo& p_alert_info_header) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_alert_info_header: %p", p_sip_message->vias); + + // FieldName + p_alert_info_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ALERT_INFO_E")); + // AlertInfoBody + p_alert_info_header.alertInfoBody().set_to_omit(); + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_alert_info_header: ", p_alert_info_header); +} // End of method fill_alert_info_header + +void sip_codec_request::fill_allow_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Allow& p_allow_header) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_allow_header: %p", p_sip_message->vias); + + // FieldName + p_allow_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ALLOW_E")); + // Methods + p_allow_header.methods().set_to_omit(); + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_allow_header: ", p_allow_header); +} // End of method fill_allow_header + +void sip_codec_request::fill_allow_events_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AllowEvents& p_allow_events_header) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_allow_events_header: %p", p_sip_message->vias); + + // FieldName + p_allow_events_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ALLOW_EVENTS_E")); + // EventTypes + LibSip__SIPTypesAndValues::EventType__List l; + // TODO To be done + l[0] = CHARSTRING("*"); + p_allow_events_header.eventTypes() = l; + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_allow_events_header: ", p_allow_events_header); +} // End of method fill_allow_events_header + +void sip_codec_request::fill_via_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Via& p_via_header) +{ + loggers::get_instance().log(">>> sip_codec_request::fill_via_header: %p", p_sip_message->vias); + + // FieldName + p_via_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("VIA_E")); + // ViaBody + LibSip__SIPTypesAndValues::ViaBody__List l; + int i = 0; + osip_via_t *sip_via = nullptr; + while(::osip_message_get_via(p_sip_message, i, &sip_via) == 0) { + loggers::get_instance().log("sip_codec_request::fill_via_header: Processing item #%d", i); + LibSip__SIPTypesAndValues::ViaBody v; + v.sentProtocol() = LibSip__SIPTypesAndValues::SentProtocol( + CHARSTRING(::via_get_protocol(sip_via)), + CHARSTRING(::via_get_version(sip_via)), + CHARSTRING(::via_get_comment(sip_via)) + ); + OPTIONAL host_port; + fill_host_port(::via_get_host(sip_via), ::via_get_port(sip_via), host_port); + loggers::get_instance().log_msg("sip_codec_request::fill_via_uri: host_port: ", host_port); + v.sentBy() = host_port; + OPTIONAL params; + fill_semi_colon_params(sip_via->via_params, params); + v.viaParams() = params; + l[i++] = v; + } // End of 'while' statement + p_via_header.viaBody() = l; + + loggers::get_instance().log_msg("<<< sip_codec_request::fill_via_header: ", p_via_header); +} // End of method fill_via_header + +/*** + + inline OPTIONAL& authenticationInfo() + {return field_authenticationInfo;} + inline const OPTIONAL& authenticationInfo() const + {return field_authenticationInfo;} + inline OPTIONAL& authorization() + {return field_authorization;} + inline const OPTIONAL& authorization() const + {return field_authorization;} + inline OPTIONAL& callId() + {return field_callId;} + inline const OPTIONAL& callId() const + {return field_callId;} + inline OPTIONAL& callInfo() + {return field_callInfo;} + inline const OPTIONAL& callInfo() const + {return field_callInfo;} + inline OPTIONAL& contact() + {return field_contact;} + inline const OPTIONAL& contact() const + {return field_contact;} + inline OPTIONAL& contentDisposition() + {return field_contentDisposition;} + inline const OPTIONAL& contentDisposition() const + {return field_contentDisposition;} + inline OPTIONAL& contentEncoding() + {return field_contentEncoding;} + inline const OPTIONAL& contentEncoding() const + {return field_contentEncoding;} + inline OPTIONAL& contentLanguage() + {return field_contentLanguage;} + inline const OPTIONAL& contentLanguage() const + {return field_contentLanguage;} + inline OPTIONAL& contentLength() + {return field_contentLength;} + inline const OPTIONAL& contentLength() const + {return field_contentLength;} + inline OPTIONAL& contentType() + {return field_contentType;} + inline const OPTIONAL& contentType() const + {return field_contentType;} + inline OPTIONAL& cSeq() + {return field_cSeq;} + inline const OPTIONAL& cSeq() const + {return field_cSeq;} + inline OPTIONAL& date() + {return field_date;} + inline const OPTIONAL& date() const + {return field_date;} + inline OPTIONAL& diversion() + {return field_diversion;} + inline const OPTIONAL& diversion() const + {return field_diversion;} + inline OPTIONAL& errorInfo() + {return field_errorInfo;} + inline const OPTIONAL& errorInfo() const + {return field_errorInfo;} + inline OPTIONAL& event() + {return field_event;} + inline const OPTIONAL& event() const + {return field_event;} + inline OPTIONAL& expires() + {return field_expires;} + inline const OPTIONAL& expires() const + {return field_expires;} + inline OPTIONAL& featureCaps() + {return field_featureCaps;} + inline const OPTIONAL& featureCaps() const + {return field_featureCaps;} + inline OPTIONAL& geolocation() + {return field_geolocation;} + inline const OPTIONAL& geolocation() const + {return field_geolocation;} + inline OPTIONAL& geolocationRouting() + {return field_geolocationRouting;} + inline const OPTIONAL& geolocationRouting() const + {return field_geolocationRouting;} + inline OPTIONAL& historyInfo() + {return field_historyInfo;} + inline const OPTIONAL& historyInfo() const + {return field_historyInfo;} + inline OPTIONAL& infoPackage() + {return field_infoPackage;} + inline const OPTIONAL& infoPackage() const + {return field_infoPackage;} + inline OPTIONAL& inReplyTo() + {return field_inReplyTo;} + inline const OPTIONAL& inReplyTo() const + {return field_inReplyTo;} + inline OPTIONAL& maxForwards() + {return field_maxForwards;} + inline const OPTIONAL& maxForwards() const + {return field_maxForwards;} + inline OPTIONAL& mimeVersion() + {return field_mimeVersion;} + inline const OPTIONAL& mimeVersion() const + {return field_mimeVersion;} + inline OPTIONAL& minExpires() + {return field_minExpires;} + inline const OPTIONAL& minExpires() const + {return field_minExpires;} + inline OPTIONAL& minSE() + {return field_minSE;} + inline const OPTIONAL& minSE() const + {return field_minSE;} + inline OPTIONAL& organization() + {return field_organization;} + inline const OPTIONAL& organization() const + {return field_organization;} + inline OPTIONAL& pAccessNetworkInfo() + {return field_pAccessNetworkInfo;} + inline const OPTIONAL& pAccessNetworkInfo() const + {return field_pAccessNetworkInfo;} + inline OPTIONAL& pAssertedID() + {return field_pAssertedID;} + inline const OPTIONAL& pAssertedID() const + {return field_pAssertedID;} + inline OPTIONAL& pAssertedService() + {return field_pAssertedService;} + inline const OPTIONAL& pAssertedService() const + {return field_pAssertedService;} + inline OPTIONAL& pAssociatedURI() + {return field_pAssociatedURI;} + inline const OPTIONAL& pAssociatedURI() const + {return field_pAssociatedURI;} + inline OPTIONAL& path() + {return field_path;} + inline const OPTIONAL& path() const + {return field_path;} + inline OPTIONAL& pCalledPartyID() + {return field_pCalledPartyID;} + inline const OPTIONAL& pCalledPartyID() const + {return field_pCalledPartyID;} + inline OPTIONAL& pChargingFunctionAddresses() + {return field_pChargingFunctionAddresses;} + inline const OPTIONAL& pChargingFunctionAddresses() const + {return field_pChargingFunctionAddresses;} + inline OPTIONAL& pChargingVector() + {return field_pChargingVector;} + inline const OPTIONAL& pChargingVector() const + {return field_pChargingVector;} + inline OPTIONAL& pEarlyMedia() + {return field_pEarlyMedia;} + inline const OPTIONAL& pEarlyMedia() const + {return field_pEarlyMedia;} + inline OPTIONAL& pMediaAuthorization() + {return field_pMediaAuthorization;} + inline const OPTIONAL& pMediaAuthorization() const + {return field_pMediaAuthorization;} + inline OPTIONAL& pPreferredID() + {return field_pPreferredID;} + inline const OPTIONAL& pPreferredID() const + {return field_pPreferredID;} + inline OPTIONAL& pPreferredService() + {return field_pPreferredService;} + inline const OPTIONAL& pPreferredService() const + {return field_pPreferredService;} + inline OPTIONAL& priority() + {return field_priority;} + inline const OPTIONAL& priority() const + {return field_priority;} + inline OPTIONAL& privacy() + {return field_privacy;} + inline const OPTIONAL& privacy() const + {return field_privacy;} + inline OPTIONAL& proxyAuthenticate() + {return field_proxyAuthenticate;} + inline const OPTIONAL& proxyAuthenticate() const + {return field_proxyAuthenticate;} + inline OPTIONAL& proxyAuthorization() + {return field_proxyAuthorization;} + inline const OPTIONAL& proxyAuthorization() const + {return field_proxyAuthorization;} + inline OPTIONAL& proxyRequire() + {return field_proxyRequire;} + inline const OPTIONAL& proxyRequire() const + {return field_proxyRequire;} + inline OPTIONAL& pVisitedNetworkID() + {return field_pVisitedNetworkID;} + inline const OPTIONAL& pVisitedNetworkID() const + {return field_pVisitedNetworkID;} + inline OPTIONAL& rAck() + {return field_rAck;} + inline const OPTIONAL& rAck() const + {return field_rAck;} + inline OPTIONAL& rSeq() + {return field_rSeq;} + inline const OPTIONAL& rSeq() const + {return field_rSeq;} + inline OPTIONAL& reason() + {return field_reason;} + inline const OPTIONAL& reason() const + {return field_reason;} + inline OPTIONAL& recordRoute() + {return field_recordRoute;} + inline const OPTIONAL& recordRoute() const + {return field_recordRoute;} + inline OPTIONAL& recvInfo() + {return field_recvInfo;} + inline const OPTIONAL& recvInfo() const + {return field_recvInfo;} + inline OPTIONAL& requestDisposition() + {return field_requestDisposition;} + inline const OPTIONAL& requestDisposition() const + {return field_requestDisposition;} + inline OPTIONAL& referredBy() + {return field_referredBy;} + inline const OPTIONAL& referredBy() const + {return field_referredBy;} + inline OPTIONAL& referTo() + {return field_referTo;} + inline const OPTIONAL& referTo() const + {return field_referTo;} + inline OPTIONAL& referSub() + {return field_referSub;} + inline const OPTIONAL& referSub() const + {return field_referSub;} + inline OPTIONAL& replaces() + {return field_replaces;} + inline const OPTIONAL& replaces() const + {return field_replaces;} + inline OPTIONAL& replyTo() + {return field_replyTo;} + inline const OPTIONAL& replyTo() const + {return field_replyTo;} + inline OPTIONAL& require() + {return field_require;} + inline const OPTIONAL& require() const + {return field_require;} + inline OPTIONAL& retryAfter() + {return field_retryAfter;} + inline const OPTIONAL& retryAfter() const + {return field_retryAfter;} + inline OPTIONAL& route() + {return field_route;} + inline const OPTIONAL& route() const + {return field_route;} + inline OPTIONAL& securityClient() + {return field_securityClient;} + inline const OPTIONAL& securityClient() const + {return field_securityClient;} + inline OPTIONAL& securityServer() + {return field_securityServer;} + inline const OPTIONAL& securityServer() const + {return field_securityServer;} + inline OPTIONAL& securityVerify() + {return field_securityVerify;} + inline const OPTIONAL& securityVerify() const + {return field_securityVerify;} + inline OPTIONAL& server() + {return field_server;} + inline const OPTIONAL& server() const + {return field_server;} + inline OPTIONAL& serviceRoute() + {return field_serviceRoute;} + inline const OPTIONAL& serviceRoute() const + {return field_serviceRoute;} + inline OPTIONAL& sessionExpires() + {return field_sessionExpires;} + inline const OPTIONAL& sessionExpires() const + {return field_sessionExpires;} + inline OPTIONAL& sessionId() + {return field_sessionId;} + inline const OPTIONAL& sessionId() const + {return field_sessionId;} + inline OPTIONAL& sipETag() + {return field_sipETag;} + inline const OPTIONAL& sipETag() const + {return field_sipETag;} + inline OPTIONAL& sipIfMatch() + {return field_sipIfMatch;} + inline const OPTIONAL& sipIfMatch() const + {return field_sipIfMatch;} + inline OPTIONAL& subject() + {return field_subject;} + inline const OPTIONAL& subject() const + {return field_subject;} + inline OPTIONAL& subscriptionState() + {return field_subscriptionState;} + inline const OPTIONAL& subscriptionState() const + {return field_subscriptionState;} + inline OPTIONAL& supported() + {return field_supported;} + inline const OPTIONAL& supported() const + {return field_supported;} + inline OPTIONAL& timestamp() + {return field_timestamp;} + inline const OPTIONAL& timestamp() const + {return field_timestamp;} + inline OPTIONAL& unsupported() + {return field_unsupported;} + inline const OPTIONAL& unsupported() const + {return field_unsupported;} + inline OPTIONAL& userToUser() + {return field_userToUser;} + inline const OPTIONAL& userToUser() const + {return field_userToUser;} + inline OPTIONAL& userAgent() + {return field_userAgent;} + inline const OPTIONAL& userAgent() const + {return field_userAgent;} + inline OPTIONAL& warning() + {return field_warning;} + inline const OPTIONAL& warning() const + {return field_warning;} + inline OPTIONAL& wwwAuthenticate() + {return field_wwwAuthenticate;} + inline const OPTIONAL& wwwAuthenticate() const + {return field_wwwAuthenticate;} + inline OPTIONAL& resourcePriority() + {return field_resourcePriority;} + inline const OPTIONAL& resourcePriority() const + {return field_resourcePriority;} + inline OPTIONAL& answerMode() + {return field_answerMode;} + inline const OPTIONAL& answerMode() const + {return field_answerMode;} + inline OPTIONAL& privAnswerMode() + {return field_privAnswerMode;} + inline const OPTIONAL& privAnswerMode() const + {return field_privAnswerMode;} + inline OPTIONAL& targetDialog() + {return field_targetDialog;} + inline const OPTIONAL& targetDialog() const + {return field_targetDialog;} + inline OPTIONAL& pAnswerState() + {return field_pAnswerState;} + inline const OPTIONAL& pAnswerState() const + {return field_pAnswerState;} + inline OPTIONAL& undefinedHeader__List() + {return field_undefinedHeader__List;} + inline const OPTIONAL& undefinedHeader__List() const + {return field_undefinedHeader__List;} + +***/ diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5f/609bc5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5f/609bc5e1978500181c21d10bc58219ba new file mode 100644 index 0000000..0a31e00 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5f/609bc5e1978500181c21d10bc58219ba @@ -0,0 +1,82 @@ +/*! + * \file http_layer.hh + * \brief Header file for ITS HTTP protocol layer. + * \author ETSI STF549 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include + +#include "t_layer.hh" + +#include "http_codec.hh" + +namespace LibItsHttp__TestSystem { + class HttpPort; +} + +namespace LibItsHttp__TypesAndValues { + class HttpMessage; //! Forward declaration of TITAN class +} + +class OCTETSTRING; //! Forward declaration of TITAN class + +/*! + * \class http_layer + * \brief This class provides a factory class to create an tcp_layer class instance + */ +class http_layer : public t_layer { + params _params; + http_codec _codec; + +public: //! \publicsection + /*! + * \brief Specialised constructor + * Create a new instance of the http_layer class + * \param[in] p_type \todo + * \param[in] p_param \todo + */ + http_layer() : t_layer(), _params() { }; + /*! + * \brief Specialised constructor + * Create a new instance of the http_layer class + * \param[in] p_type \todo + * \param[in] p_param \todo + */ + http_layer(const std::string& p_type, const std::string& p_param); + /*! + * \brief Default destructor + */ + virtual ~http_layer() { }; + + /*! + * \fn void sendMsg(const LibItsHttp__TypesAndValues::HttpMessage& p_http_message, params& p_param); + * \brief Send HTTP message to the lower layers + * \param[in] p_http_message The GeoNetworking message to be sent + * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters + */ + void sendMsg(const LibItsHttp__TypesAndValues::HttpMessage& p_http_message, params& p_param); + + /*! + * \virtual + * \fn void send_data(OCTETSTRING& data, params& params); + * \brief Send bytes formated data to the lower layers + * \param[in] p_data The data to be sent + * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters + */ + virtual void send_data(OCTETSTRING& data, params& params); + /*! + * \virtual + * \fn void receive_data(OCTETSTRING& data, params& params); + * \brief Receive bytes formated data from the lower layers + * \param[in] p_data The bytes formated data received + * \param[in] p_params Some lower layers parameters values when data was received + */ + virtual void receive_data(OCTETSTRING& data, params& info); +}; // End of class http_layer + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/60/003b0e2b9e8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/60/003b0e2b9e8500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..aaf4873 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/60/003b0e2b9e8500181eabf1ba1ea37ea1 @@ -0,0 +1,73 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn + + true + + + + + + src/ttcn/ttcn/TestCodec + + false + true + + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/61/70ebb22fc08500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/61/70ebb22fc08500181dc9eb7ae31560a9 new file mode 100644 index 0000000..173e0e7 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/61/70ebb22fc08500181dc9eb7ae31560a9 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 12:31:34 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall -std=c++11 -pthread -fPIC + +# Flags for the linker: +LDFLAGS = -pthread -fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/62/3058727e9e8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/62/3058727e9e8500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..b39eb80 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/62/3058727e9e8500181eabf1ba1ea37ea1 @@ -0,0 +1,109 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn + + true + + + + + + src/ttcn/ttcn/TestCodec + + false + true + + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/64/40e123c69d8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/64/40e123c69d8500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..b1101e7 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/64/40e123c69d8500181eabf1ba1ea37ea1 @@ -0,0 +1,32 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + + + + bin + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/6b/403f1ddfb985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/6b/403f1ddfb985001814de869e8ad08251 new file mode 100644 index 0000000..53a110f --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/6b/403f1ddfb985001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 11:51:18 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall -std=c++11 -pthread -fPIC + +# Flags for the linker: +LDFLAGS = -pthread -fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/6d/305bd1e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/6d/305bd1e1978500181c21d10bc58219ba new file mode 100644 index 0000000..ce99819 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/6d/305bd1e1978500181c21d10bc58219ba @@ -0,0 +1,2821 @@ +/****************************************************************************** +* Copyright (c) 2000-2018 Ericsson Telecom AB +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +* +* Contributors: +* Zoltan Bibo - initial implementation and initial documentation +* Gergely Futo +* Oliver Ferenc Czerman +* Balasko Jeno +* Zoltan Bibo +* Eduard Czimbalmos +* Kulcsár Endre +* Gabor Szalai +* Jozsef Gyurusi +* Csöndes Tibor +* Zoltan Jasz +******************************************************************************/ +// +// File: Abstract_Socket.cc +// Description: Abstract_Socket implementation file +// Rev: R9B +// Prodnr: CNL 113 384 +// + +#include "Abstract_Socket.hh" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if defined SOLARIS8 +# include +#endif + + +#define AS_TCP_CHUNCK_SIZE 4096 +#define AS_SSL_CHUNCK_SIZE 16384 +// Used for the 'address already in use' bug workaround +#define AS_DEADLOCK_COUNTER 16 +// character buffer length to store temporary SSL informations, 256 is usually enough +#define SSL_CHARBUF_LENGTH 256 +// number of bytes to read from the random devices +#define SSL_PRNG_LENGTH 1024 + +#ifndef NI_MAXHOST +#define NI_MAXHOST 1024 +#endif +#ifndef NI_MAXSERV +#define NI_MAXSERV 32 +#endif + +/******************************** + ** PacketHeaderDescr + ** used for fragmentation and concatenation + ** of fixed format messages + *********************************/ + +unsigned long PacketHeaderDescr::Get_Message_Length(const unsigned char* buff) const +{ + unsigned long m_length = 0; + for (unsigned long i = 0; i < nr_bytes_in_length; i++) { + unsigned long shift_count = + byte_order == Header_MSB ? nr_bytes_in_length - 1 - i : i; + m_length |= buff[length_offset + i] << (8 * shift_count); + } + m_length *= length_multiplier; + if (value_offset < 0 && (long)m_length < -value_offset) return 0; + else return m_length + value_offset; +} + + +//////////////////////////////////////////////////////////////////////// +///// Default log functions +//////////////////////////////////////////////////////////////////////// +void Abstract_Socket::log_debug(const char *fmt, ...) const +{ + if (socket_debugging) { + TTCN_Logger::begin_event(TTCN_DEBUG); + if (test_port_type != NULL && test_port_name != NULL) + TTCN_Logger::log_event("%s test port (%s): ", test_port_type, + test_port_name); + else TTCN_Logger::log_event_str("Abstract socket: "); + va_list args; + va_start(args, fmt); + TTCN_Logger::log_event_va_list(fmt, args); + va_end(args); + TTCN_Logger::end_event(); + } +} + +void Abstract_Socket::log_warning(const char *fmt, ...) const +{ + TTCN_Logger::begin_event(TTCN_WARNING); + if (test_port_type != NULL && test_port_name != NULL) + TTCN_Logger::log_event("%s test port (%s): warning: ", test_port_type, + test_port_name); + else TTCN_Logger::log_event_str("Abstract socket: warning: "); + va_list args; + va_start(args, fmt); + TTCN_Logger::log_event_va_list(fmt, args); + va_end(args); + TTCN_Logger::end_event(); +} + + +void Abstract_Socket::log_error(const char *fmt, ...) const +{ + va_list args; + va_start(args, fmt); + char *error_str = mprintf_va_list(fmt, args); + va_end(args); + try { + if (test_port_type != NULL && test_port_name != NULL) + TTCN_error("%s test port (%s): %s", test_port_type, test_port_name, + error_str); + else TTCN_error("Abstract socket: %s", error_str); + } catch (...) { + Free(error_str); + throw; + } + Free(error_str); +} + +void Abstract_Socket::log_hex(const char *prompt, const unsigned char *msg, + size_t length) const +{ + if (socket_debugging) { + TTCN_Logger::begin_event(TTCN_DEBUG); + if (test_port_type != NULL && test_port_name != NULL) + TTCN_Logger::log_event("%s test port (%s): ", test_port_type, + test_port_name); + else TTCN_Logger::log_event_str("Abstract socket: "); + if (prompt != NULL) TTCN_Logger::log_event_str(prompt); + TTCN_Logger::log_event("Size: %lu, Msg:", (unsigned long)length); + for (size_t i = 0; i < length; i++) TTCN_Logger::log_event(" %02x", msg[i]); + TTCN_Logger::end_event(); + } +} + + +/******************************** + ** Abstract_Socket + ** abstract base type for TCP socket handling + *********************************/ + +Abstract_Socket::Abstract_Socket() { + server_mode=false; + socket_debugging=false; + nagling=false; + use_non_blocking_socket=false; + halt_on_connection_reset=true; + halt_on_connection_reset_set=false; + client_TCP_reconnect=false; + TCP_reconnect_attempts=5; + TCP_reconnect_delay=1; + listen_fd=-1; + memset(&remoteAddr, 0, sizeof(remoteAddr)); + memset(&localAddr, 0, sizeof(localAddr)); + server_backlog=1; + peer_list_length=0; + local_host_name = NULL; + local_port_number = 0; + remote_host_name = NULL; + remote_port_number = 0; + ai_family = AF_UNSPEC; // default: Auto + test_port_type=NULL; + test_port_name=NULL; + ttcn_buffer_usercontrol=false; + use_connection_ASPs=false; + handle_half_close = false; + peer_list_root = NULL; +} + +Abstract_Socket::Abstract_Socket(const char *tp_type, const char *tp_name) { + server_mode=false; + socket_debugging=false; + nagling=false; + use_non_blocking_socket=false; + halt_on_connection_reset=true; + halt_on_connection_reset_set=false; + client_TCP_reconnect=false; + TCP_reconnect_attempts=5; + TCP_reconnect_delay=1; + listen_fd=-1; + memset(&remoteAddr, 0, sizeof(remoteAddr)); + memset(&localAddr, 0, sizeof(localAddr)); + server_backlog=1; + peer_list_length=0; + local_host_name = NULL; + local_port_number = 0; + remote_host_name = NULL; + remote_port_number = 0; + ai_family = AF_UNSPEC; // default: Auto + test_port_type=tp_type; + test_port_name=tp_name; + ttcn_buffer_usercontrol=false; + use_connection_ASPs=false; + handle_half_close = false; + peer_list_root = NULL; +} + +Abstract_Socket::~Abstract_Socket() { + peer_list_reset_peer(); + Free(local_host_name); + Free(remote_host_name); +} + +bool Abstract_Socket::parameter_set(const char *parameter_name, + const char *parameter_value) +{ + log_debug("entering Abstract_Socket::parameter_set(%s, %s)", parameter_name, parameter_value); + + if (strcmp(parameter_name, socket_debugging_name()) == 0) { + if (strcasecmp(parameter_value,"yes")==0) socket_debugging = true; + else if (strcasecmp(parameter_value,"no")==0) socket_debugging = false; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, socket_debugging_name()); + } else if (strcmp(parameter_name, server_mode_name()) == 0) { + if (strcasecmp(parameter_value,"yes")==0) server_mode = true; + else if (strcasecmp(parameter_value,"no")==0) server_mode = false; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, server_mode_name()); + } else if (strcmp(parameter_name, use_connection_ASPs_name()) == 0) { + if (strcasecmp(parameter_value,"yes")==0) use_connection_ASPs = true; + else if (strcasecmp(parameter_value,"no")==0) use_connection_ASPs = false; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, use_connection_ASPs_name()); + } else if (strcmp(parameter_name, halt_on_connection_reset_name()) == 0) { + halt_on_connection_reset_set=true; + if (strcasecmp(parameter_value,"yes")==0) halt_on_connection_reset = true; + else if (strcasecmp(parameter_value,"no")==0) halt_on_connection_reset = false; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, halt_on_connection_reset_name()); + } else if (strcmp(parameter_name, client_TCP_reconnect_name()) == 0) { + if (strcasecmp(parameter_value,"yes")==0) client_TCP_reconnect = true; + else if (strcasecmp(parameter_value,"no")==0) client_TCP_reconnect = false; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, client_TCP_reconnect_name()); + } else if (strcmp(parameter_name, TCP_reconnect_attempts_name()) == 0) { + if (sscanf(parameter_value, "%d", &TCP_reconnect_attempts)!=1) log_error("Invalid input as TCP_reconnect_attempts counter given: %s", parameter_value); + if (TCP_reconnect_attempts<=0) log_error("TCP_reconnect_attempts must be greater than 0, %d is given", TCP_reconnect_attempts); + } else if (strcmp(parameter_name, TCP_reconnect_delay_name()) == 0) { + if (sscanf(parameter_value, "%d", &TCP_reconnect_delay)!=1) log_error("Invalid input as TCP_reconnect_delay given: %s", parameter_value); + if (TCP_reconnect_delay<0) log_error("TCP_reconnect_delay must not be less than 0, %d is given", TCP_reconnect_delay); + } else if(strcmp(parameter_name, remote_address_name()) == 0){ + Free(remote_host_name); + remote_host_name = mcopystr(parameter_value); + } else if(strcmp(parameter_name, local_address_name()) == 0){ // only for backward compatibility + Free(local_host_name); + local_host_name = mcopystr(parameter_value); + } else if(strcmp(parameter_name, remote_port_name()) == 0){ + int a; + if (sscanf(parameter_value, "%d", &a)!=1) log_error("Invalid input as port number given: %s", parameter_value); + if (a>65535 || a<0){ log_error("Port number must be between 0 and 65535, %d is given", remote_port_number);} + else {remote_port_number=a;} + } else if(strcmp(parameter_name, ai_family_name()) == 0){ + if (strcasecmp(parameter_value,"IPv6")==0 || strcasecmp(parameter_value,"AF_INET6")==0) ai_family = AF_INET6; + else if (strcasecmp(parameter_value,"IPv4")==0 || strcasecmp(parameter_value,"AF_INET")==0) ai_family = AF_INET; + else if (strcasecmp(parameter_value,"UNSPEC")==0 || strcasecmp(parameter_value,"AF_UNSPEC")==0) ai_family = AF_UNSPEC; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ai_family_name()); + } else if(strcmp(parameter_name, local_port_name()) == 0){ + int a; + if (sscanf(parameter_value, "%d", &a)!=1) log_error("Invalid input as port number given: %s", parameter_value); + if (a>65535 || a<0) {log_error("Port number must be between 0 and 65535, %d is given", local_port_number);} + else {local_port_number=a;} + } else if (strcmp(parameter_name, nagling_name()) == 0) { + if (strcasecmp(parameter_value,"yes")==0) nagling = true; + else if (strcasecmp(parameter_value,"no")==0) nagling = false; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, nagling_name()); + } else if (strcmp(parameter_name, use_non_blocking_socket_name()) == 0){ + if (strcasecmp(parameter_value, "yes") == 0) use_non_blocking_socket = true; + else if (strcasecmp(parameter_value, "no") == 0) use_non_blocking_socket = false; + } else if (strcmp(parameter_name, server_backlog_name()) == 0) { + if (sscanf(parameter_value, "%d", &server_backlog)!=1) log_error("Invalid input as server backlog given: %s", parameter_value); + } else { + log_debug("leaving Abstract_Socket::parameter_set(%s, %s)", parameter_name, parameter_value); + return false; + } + + log_debug("leaving Abstract_Socket::parameter_set(%s, %s)", parameter_name, parameter_value); + return true; +} + +void Abstract_Socket::Handle_Socket_Event(int fd, boolean is_readable, boolean is_writable, boolean is_error) +{ + log_debug("entering Abstract_Socket::Handle_Socket_Event(): fd: %d%s%s%s", fd, + is_readable ? " readable" : "", is_writable ? " writable" : "", is_error ? " error" : ""); + + if (fd != listen_fd /* on server the connection requests are handled after the user messages */ + && peer_list_root[fd] != NULL && (is_readable || is_writable) + && get_peer(fd)->reading_state != STATE_DONT_RECEIVE) { + log_debug("receiving data"); + int messageLength = receive_message_on_fd(fd); + if (messageLength == 0) { // peer disconnected + as_client_struct * client_data = get_peer(fd); + log_debug("Abstract_Socket::Handle_Socket_Event(). Client %d closed connection.", fd); + switch (client_data->reading_state) { + case STATE_BLOCK_FOR_SENDING: + log_debug("Abstract_Socket::Handle_Socket_Event(): state is STATE_BLOCK_FOR_SENDING, don't close connection."); + Remove_Fd_Read_Handler(fd); + client_data->reading_state = STATE_DONT_CLOSE; + log_debug("Abstract_Socket::Handle_Socket_Event(): setting socket state to STATE_DONT_CLOSE"); + break; + case STATE_DONT_CLOSE: + log_debug("Abstract_Socket::Handle_Socket_Event(): state is STATE_DONT_CLOSE, don't close connection."); + break; + default: + if((client_data->tcp_state == CLOSE_WAIT) || (client_data->tcp_state == FIN_WAIT)) { + remove_client(fd); + peer_disconnected(fd); + } else { + if(shutdown(fd, SHUT_RD) != 0) { + if(errno == ENOTCONN) { + errno = 0; + } else { + log_error("shutdown(SHUT_RD) system call failed"); + } + } + client_data->tcp_state = CLOSE_WAIT; + Remove_Fd_Read_Handler(fd); + peer_half_closed(fd); + } + } // switch (client_data->reading_state) + } else if (messageLength > 0) { + as_client_struct *client_data=get_peer(fd); + if (socket_debugging) { + struct sockaddr_storage clientAddr = client_data->clientAddr; +#ifdef WIN32 + log_debug("Message received from address %s:%d", inet_ntoa(((struct sockaddr_in*)&clientAddr)->sin_addr), ntohs(((struct sockaddr_in *)&clientAddr)->sin_port)); +#else + char hname[NI_MAXHOST]; + char sname[NI_MAXSERV]; +#if defined LINUX || defined FREEBSD || defined SOLARIS8 + socklen_t +#else /* SOLARIS or WIN32 */ + int +#endif + clientAddrlen = client_data->clientAddrlen; + int error = getnameinfo((struct sockaddr *)&clientAddr, clientAddrlen, + hname, sizeof (hname), sname, sizeof (sname), NI_NUMERICHOST|NI_NUMERICSERV); + if (error) log_error("AbstractSocket: getnameinfo 2: %s\n", gai_strerror(error)); + log_debug("Message received from address (addr) %s/%s", hname, sname); +#endif + } + log_hex("Message received, buffer content: ", get_buffer(fd)->get_data(), get_buffer(fd)->get_len()); + handle_message(fd); + } /* else if (messageLength == -2) => + used in case of SSL: means that reading would bloc. + in this case I stop receiving message on the file descriptor */ + } // if ... (not new connection request) + + if (fd == listen_fd && is_readable) { + // new connection request arrived + log_debug("waiting for accept"); + // receiving new connection on the TCP server + struct sockaddr_storage clientAddr; + +#if defined LINUX || defined FREEBSD || defined SOLARIS8 + socklen_t +#else /* SOLARIS or WIN32 */ + int +#endif + clientAddrlen = sizeof(clientAddr); +#if defined LINUX || defined FREEBSD || defined SOLARIS8 + int newclient_fd = accept(listen_fd, (struct sockaddr *) &clientAddr, (socklen_t*)&clientAddrlen); +#else + int newclient_fd = accept(listen_fd, (struct sockaddr *) &clientAddr, (int*)&clientAddrlen); +#endif + if(newclient_fd < 0) log_error("Cannot accept connection at port"); + + as_client_struct *client_data=peer_list_add_peer(newclient_fd); + Add_Fd_Read_Handler(newclient_fd); // Done here - as in case of error: remove_client expects the handler as added + log_debug("Abstract_Socket::Handle_Socket_Event(). Handler set to other fd %d", newclient_fd); + client_data->fd_buff = new TTCN_Buffer; + client_data->clientAddr = clientAddr; + client_data->clientAddrlen = clientAddrlen; + client_data->tcp_state = ESTABLISHED; + client_data->reading_state = STATE_NORMAL; + if (add_user_data(newclient_fd)) { + char hname[NI_MAXHOST]; + int clientPort = 0; +#ifdef WIN32 + clientPort=ntohs(((struct sockaddr_in *)&clientAddr)->sin_port); + char* tmp=inet_ntoa(((struct sockaddr_in*)&clientAddr)->sin_addr); + strcpy(hname,tmp); +#else + int error; + char sname[NI_MAXSERV]; + error = getnameinfo((struct sockaddr *)&clientAddr, clientAddrlen, + hname, sizeof (hname), sname, sizeof (sname), NI_NUMERICHOST|NI_NUMERICSERV); + if (error) { + log_error("AbstractSocket: getnameinfo: %s\n", + gai_strerror(error)); + } + clientPort = atoi(sname); +#endif + log_debug("Client %d connected from address %s/%d", newclient_fd, hname, clientPort); + peer_connected(newclient_fd, hname, clientPort); + peer_connected(newclient_fd, *((struct sockaddr_in *)&clientAddr)); /* calling deprecated function also */ + log_debug("Handle_Socket_Event updated with client %d ", newclient_fd); + + if (set_non_block_mode(newclient_fd, use_non_blocking_socket) < 0) { + log_error("Set blocking mode failed."); + } + + } else { + remove_client(newclient_fd); + peer_disconnected(newclient_fd); + } + } // if (fd == listen_fd && is_readable) + + log_debug("leaving Abstract_Socket::Handle_Socket_Event()"); +} + +int Abstract_Socket::receive_message_on_fd(int client_id) +{ + as_client_struct * client_data = get_peer(client_id); + TTCN_Buffer* recv_tb = client_data->fd_buff; + unsigned char *end_ptr; + size_t end_len=AS_TCP_CHUNCK_SIZE; + recv_tb->get_end(end_ptr, end_len); + int messageLength = recv(client_id, (char *)end_ptr, end_len, 0); + if (messageLength==0) return messageLength; // peer disconnected + else if (messageLength < 0) { + log_warning("Error when reading the received TCP PDU: %s", strerror(errno)); + errno = 0; + return 0; + } + recv_tb->increase_length(messageLength); + return messageLength; +} + +int Abstract_Socket::send_message_on_fd(int client_id, const unsigned char* send_par, int message_length) +{ + get_peer(client_id); + return send(client_id, (const char *)send_par, message_length, 0); +} + + +//Tthe EAGAIN errno value set by the send operation means that +//the sending operation would block. +//First I try to increase the length of the sending buffer (increase_send_buffer()). +//If the outgoing buffer cannot be increased, the block_for_sending function will +//be called. This function will block until the file descriptor given as its argument +//is ready to write. While the block for sending operation calls the Event_Handler, +//states must be used to indicate that the Event_Handler is called when the +//execution is blocking. +//STATE_BLOCK_FOR_SENDING: the block for sending operation has been called +//STATE_DONT_CLOSE: if the other side close the connection before the block_for_sending +// operation returns, in the Event_Handler the connection +// must not be closed and the block_for_sending must return before we can +// close the connection. This state means that the other side closed the connection +// during the block_for_sending operation +//STATE_NORMAL: normal state +int Abstract_Socket::send_message_on_nonblocking_fd(int client_id, + const unsigned char* send_par, + int length){ + + log_debug("entering Abstract_Socket::" + "send_message_on_nonblocking_fd(id: %d)", client_id); + as_client_struct * client_data = get_peer(client_id); + int sent_len = 0; + while(sent_len < length){ + int ret; + log_debug("Abstract_Socket::send_message_on_nonblocking_fd(id: %d): new iteration", client_id); + if (client_data->reading_state == STATE_DONT_CLOSE){ + goto client_closed_connection; + } else ret = send(client_id, send_par + sent_len, length - sent_len, 0); + + if (ret > 0) sent_len+=ret; + else{ + switch(errno){ + case EINTR:{ //signal: do nothing, try again + errno = 0; + break; + } + case EPIPE:{ //client closed connection + goto client_closed_connection; + } + case EAGAIN:{ // the output buffer is full: + //try to increase it if possible + errno = 0; + int old_bufsize, new_bufsize; + + if (increase_send_buffer( + client_id, old_bufsize, new_bufsize)) { + log_warning("Sending data on on file descriptor %d", + client_id); + log_warning("The sending operation would" + "block execution. The size of the " + "outgoing buffer was increased from %d to " + "%d bytes.",old_bufsize, + new_bufsize); + } else { + log_warning("Sending data on file descriptor %d", + client_id); + log_warning("The sending operation would block " + "execution and it is not possible to " + "further increase the size of the " + "outgoing buffer. Trying to process incoming" + "data to avoid deadlock."); + log_debug("Abstract_Socket::" + "send_message_on_nonblocking_fd():" + " setting socket state to " + "STATE_BLOCK_FOR_SENDING"); + client_data->reading_state = STATE_BLOCK_FOR_SENDING; + TTCN_Snapshot::block_for_sending(client_id); + } + break; + } + default:{ + log_debug("Abstract_Socket::" + "send_message_on_nonblocking_fd(): " + "setting socket state to STATE_NORMAL"); + client_data->reading_state = STATE_NORMAL; + log_debug("leaving Abstract_Socket::" + "send_message_on_nonblocking_fd(id: %d)" + " with error", client_id); + return -1; + } + } //end of switch + }//end of else + } //end of while + + log_debug("Abstract_Socket::send_message_on_nonblocking_fd():" + "setting socket state to STATE_NORMAL"); + client_data->reading_state = STATE_NORMAL; + log_debug("leaving Abstract_Socket::" + "send_message_on_nonblocking_fd(id: %d)", client_id); + return sent_len; + +client_closed_connection: + log_debug("Abstract_Socket::send_message_on_nonblocking_fd(): setting socket state to STATE_NORMAL"); + client_data->reading_state = STATE_NORMAL; + log_debug("leaving Abstract_Socket::" + "send_message_on_nonblocking_fd(id: %d)", client_id); + errno = EPIPE; + return -1; +} + +const PacketHeaderDescr* Abstract_Socket::Get_Header_Descriptor() const +{ + return NULL; +} + +void Abstract_Socket::peer_connected(int /*client_id*/, sockaddr_in& /*remote_addr*/) +{ +} + +void Abstract_Socket::handle_message(int client_id) +{ + const PacketHeaderDescr* head_descr = Get_Header_Descriptor(); + as_client_struct * client_data = get_peer(client_id); + TTCN_Buffer *recv_tb = client_data->fd_buff; + + if(!head_descr){ + message_incoming(recv_tb->get_data(), recv_tb->get_len(), client_id); + if (!ttcn_buffer_usercontrol) recv_tb->clear(); + } else { + recv_tb->rewind(); + unsigned long valid_header_length = head_descr->Get_Valid_Header_Length(); + while (recv_tb->get_len() > 0) { + if ((unsigned long)recv_tb->get_len() < valid_header_length) { + // this is a message without a valid header + // recv_tb->handle_fragment(); + return; + } + unsigned long message_length = + head_descr->Get_Message_Length(recv_tb->get_data()); + if (message_length < valid_header_length) { + // this is a message with a malformed length + log_error("Malformed message: invalid length: %lu. The length should " + "be at least %lu.", message_length, valid_header_length); + } + if((unsigned long)recv_tb->get_len() < message_length){ + // this is a fragmented message with a valid header + // recv_tb->handle_fragment(); + return; + } + // this a valid message + message_incoming(recv_tb->get_data(), message_length, client_id); + if (!ttcn_buffer_usercontrol) { + recv_tb->set_pos(message_length); + recv_tb->cut(); + } + } + } + log_debug("leaving Abstract_Socket::handle_message()"); +} + +void Abstract_Socket::map_user() +{ + log_debug("entering Abstract_Socket::map_user()"); +#if defined SOLARIS8 + sigignore(SIGPIPE); +#endif + if(!use_connection_ASPs) + { + // If halt_on_connection_reset is not set explicitly + // set it to the default value: true on clients, false on servers + if (!halt_on_connection_reset_set) { + if (local_port_number != 0) halt_on_connection_reset=false; + else halt_on_connection_reset=true; + } + } + + all_mandatory_configparameters_present(); + + char remotePort[6]; + char localPort[6]; + sprintf(localPort, "%u", local_port_number); + sprintf(remotePort, "%u", remote_port_number); + + if(!use_connection_ASPs) + { + if(server_mode) { + //open_listen_port(localAddr); + open_listen_port(local_host_name,(char*)&localPort); + } else { + //open_client_connection(remoteAddr, localAddr); + open_client_connection(remote_host_name,(char*)&remotePort,local_host_name,(char*)&localPort); + } + } + + log_debug("leaving Abstract_Socket::map_user()"); +} + +int Abstract_Socket::open_listen_port(const struct sockaddr_in & new_local_addr) +{ +#ifndef WIN32 + log_debug("**** DEPRECATED FUNCTION CALLED: Abstract_Socket::open_listen_port(const struct sockaddr_in & new_local_addr)." + " USE Abstract_Socket::open_listen_port(const char* localHostname, const char* localServicename) INSTEAD! ****"); +#endif + log_debug("Local address: %s:%d", inet_ntoa(new_local_addr.sin_addr), ntohs(new_local_addr.sin_port)); + + close_listen_port(); + + listen_fd = socket(AF_INET, SOCK_STREAM, 0); + if(listen_fd<0) { + if(use_connection_ASPs) + { + log_warning("Cannot open socket when trying to open the listen port: %s", strerror(errno)); + listen_port_opened(-1); + errno = 0; + return -1; + } + else log_error("Cannot open socket"); + } + + if(!nagling) { + int on = 1; + setsockopt(listen_fd, IPPROTO_TCP, TCP_NODELAY, (const char*)&on, sizeof(on)); + } + int val = 1; + if(setsockopt(listen_fd, SOL_SOCKET, SO_REUSEADDR, (const char*)&val, sizeof(val)) < 0) { + close(listen_fd); + listen_fd = -1; + if(use_connection_ASPs) + { + log_warning("Setsockopt failed when trying to open the listen port: %s", strerror(errno)); + listen_port_opened(-1); + errno = 0; + return -1; + } + else log_error("Setsockopt failed"); + } + + int rc = 0; + + log_debug("Bind to port..."); + rc = bind(listen_fd, (const struct sockaddr *)&new_local_addr, sizeof(new_local_addr)); + if(rc<0) { + close(listen_fd); + listen_fd = -1; + if(use_connection_ASPs) + { + log_warning("Cannot bind to port when trying to open the listen port: %s", strerror(errno)); + listen_port_opened(-1); + errno = 0; + return -1; + } + else log_error("Cannot bind to port"); + } + log_debug("Bind successful on server."); + + rc = listen(listen_fd, server_backlog); + if(rc<0) { + close(listen_fd); + listen_fd = -1; + if(use_connection_ASPs) + { + log_warning("Cannot listen at port when trying to open the listen port: %s", strerror(errno)); + listen_port_opened(-1); + errno = 0; + return -1; + } + else log_error("Cannot listen at port"); + } + + // to avoid dead-locks and make possible + // handling of multiple clients "accept" is placed in the Event_Handler + +#if defined LINUX || defined FREEBSD || defined SOLARIS8 + socklen_t +#else /* SOLARIS or WIN32 */ + int +#endif + addr_len = sizeof(new_local_addr); + if (getsockname(listen_fd, (struct sockaddr*)&new_local_addr, &addr_len)) { + close(listen_fd); + listen_fd = -1; + if(use_connection_ASPs) + { + log_warning("getsockname() system call failed on the server socket when trying to open the listen port: %s", strerror(errno)); + listen_port_opened(-1); + errno = 0; + return -1; + } + else log_error("getsockname() system call failed on the server socket"); + } + log_debug("Listen successful on server port %d", ntohs(new_local_addr.sin_port)); + + Add_Fd_Read_Handler(listen_fd); // Done here - after all error checks: as closed fd should not be left added + log_debug("Abstract_Socket::open_listen_port(): Handler set to socket fd %d", listen_fd); + + //localAddr = new_local_addr; + + if(use_connection_ASPs) + listen_port_opened(ntohs(new_local_addr.sin_port)); + + return new_local_addr.sin_port; +} + +int Abstract_Socket::open_listen_port(const char* localHostname, const char* localServicename) { + log_debug("Local address: %s/%s", (localHostname!=NULL)?localHostname:"UNSPEC",(localServicename!=NULL)?localServicename:"UNSPEC"); + +#ifdef WIN32 + struct sockaddr_in new_local_addr; + memset(&new_local_addr, 0, sizeof(new_local_addr)); + if(localHostname!=NULL){ + get_host_id(localHostname,&new_local_addr); + } + if(localServicename!=NULL){ + new_local_addr.sin_port=htons(atoi(localServicename)); + } + return open_listen_port(new_local_addr); +#else + close_listen_port(); + + struct addrinfo *aip; + struct addrinfo hints; + int sock_opt; + int error; + + /* Set up a socket to listen for connections. */ + bzero(&hints, sizeof (hints)); + hints.ai_flags = /*AI_ALL|*/AI_ADDRCONFIG|AI_PASSIVE; + hints.ai_socktype = SOCK_STREAM; + hints.ai_family = ai_family; + + error = getaddrinfo(localHostname, localServicename, &hints, &aip); + if (error != 0) { + if(use_connection_ASPs) + { + log_warning("getaddrinfo: %s for host %s service %s", gai_strerror(error), + (localHostname!=NULL)?localHostname:"UNSPEC",(localServicename!=NULL)?localServicename:"UNSPEC"); + listen_port_opened(-1); + return -1; + } + else log_error("getaddrinfo: %s for host %s service %s", gai_strerror(error), + (localHostname!=NULL)?localHostname:"UNSPEC",(localServicename!=NULL)?localServicename:"UNSPEC"); + } + + struct addrinfo *res; + if (socket_debugging) { + /* count the returned addresses: */ + int counter = 0; + for (res = aip; res != NULL; res = res->ai_next,++counter) {}; + log_debug("Number of local addresses: %d\n", counter); + } + + + for (res = aip; res != NULL; res = res->ai_next) { + listen_fd = socket(res->ai_family, res->ai_socktype, res->ai_protocol); + log_debug("Waiting for connection via: %s\n", + ((res->ai_family==AF_INET)?"IPv4": + ((res->ai_family==AF_INET6)?"IPv6":"unknown"))); + if (listen_fd == -1) { + if(use_connection_ASPs) + { + log_warning("Cannot open socket when trying to open the listen port: %s", strerror(errno)); + listen_port_opened(-1); + errno = 0; + freeaddrinfo(aip); + return -1; + } + else log_error("Cannot open socket"); + } + + /* Tell the system to allow local addresses to be reused. */ + sock_opt = 1; + if (setsockopt(listen_fd, SOL_SOCKET, SO_REUSEADDR, (void *)&sock_opt, + sizeof (sock_opt)) == -1) { + + close(listen_fd); + listen_fd = -1; + if(use_connection_ASPs) + { + log_warning("Setsockopt failed when trying to open the listen port: %s", strerror(errno)); + listen_port_opened(-1); + errno = 0; + freeaddrinfo(aip); + return -1; + } + else log_error("Setsockopt failed"); + } + + if(!nagling) { + int on = 1; + setsockopt(listen_fd, IPPROTO_TCP, TCP_NODELAY, (const char*)&on, sizeof(on)); + } + + log_debug("Bind to port..."); + if (bind(listen_fd, res->ai_addr, res->ai_addrlen) == -1) { + error = errno; // save it for the warning message + close(listen_fd); + listen_fd = -1; + log_debug("Cannot bind to port when trying to open the listen port: %s", strerror(errno)); + errno = 0; + continue; + } + log_debug("Bind successful on server."); + break; + } + if (res==NULL) { + if(use_connection_ASPs) + { + log_warning("Cannot bind to port when trying to open the listen port: %s", strerror(error)); + listen_port_opened(-1); + error = 0; + freeaddrinfo(aip); + return -1; + } + else log_error("Cannot bind to port"); + } + + if (listen(listen_fd, server_backlog) == -1) { + close(listen_fd); + listen_fd = -1; + if(use_connection_ASPs) + { + log_warning("Cannot listen at port when trying to open the listen port: %s", strerror(errno)); + listen_port_opened(-1); + errno = 0; + freeaddrinfo(aip); + return -1; + } + else log_error("Cannot listen at port"); + } + + + // to avoid dead-locks and make possible + // handling of multiple clients "accept" is placed in Handle_Socket_Event + + // to determine the local address: + if (getsockname(listen_fd, res->ai_addr, &res->ai_addrlen)) { + close(listen_fd); + listen_fd = -1; + if(use_connection_ASPs) + { + log_warning("getsockname() system call failed on the server socket when trying to open the listen port: %s", strerror(errno)); + listen_port_opened(-1); + errno = 0; + freeaddrinfo(aip); + return -1; + } + else log_error("getsockname() system call failed on the server socket"); + } + char hname[NI_MAXHOST]; + char sname[NI_MAXSERV]; +/* error = getnameinfo(res->ai_addr, res->ai_addrlen, + hname, sizeof (hname), sname, sizeof (sname), NI_NUMERICSERV); + if (error) { + close(listen_fd); + listen_fd = -1; + if(use_connection_ASPs) + { + log_warning("getnameinfo() system call failed on the server socket when trying to open the listen port: %s", gai_strerror(error)); + listen_port_opened(-1); + freeaddrinfo(aip); + return -1; + } + else log_error("getsockname() system call failed on the server socket"); + } else { + log_debug("Listening on (name): %s/%s\n", + hname, sname); + }*/ + error = getnameinfo(res->ai_addr, res->ai_addrlen, + hname, sizeof (hname), sname, sizeof (sname), NI_NUMERICHOST|NI_NUMERICSERV); + if (error) { + close(listen_fd); + listen_fd = -1; + if(use_connection_ASPs) + { + log_warning("getnameinfo() system call failed on the server socket when trying to open the listen port: %s", gai_strerror(error)); + listen_port_opened(-1); + freeaddrinfo(aip); + return -1; + } + else log_error("getsockname() system call failed on the server socket"); + } else { + log_debug("Listening on (addr): %s/%s\n", + hname, sname); + } + + Add_Fd_Read_Handler(listen_fd); // Done here - after all error checks: as closed fd should not be left added + log_debug("Abstract_Socket::open_listen_port(): Handler set to socket fd %d", listen_fd); + + log_debug("new_local_addr Addr family: %s\n", + ((res->ai_addr->sa_family==AF_INET)?"IPv4": + ((res->ai_addr->sa_family==AF_INET6)?"IPv6":"unknown")) + ); + + + int listenPort = atoi(sname); + if(use_connection_ASPs) + listen_port_opened(listenPort); + + freeaddrinfo(aip); + return listenPort; +#endif +} + +void Abstract_Socket::listen_port_opened(int /*port_number*/) +{ + // Intentionally blank +} + +void Abstract_Socket::close_listen_port() +{ + // close current listening port if it is alive + if(listen_fd != -1) + { + Remove_Fd_Read_Handler(listen_fd); + close(listen_fd); + log_debug("Closed listening port of fd: %d", listen_fd); + listen_fd = -1; + } +} + +int Abstract_Socket::get_socket_fd() const{ + if(server_mode) return listen_fd; + if(peer_list_get_nr_of_peers()==0) return -1; + return peer_list_get_first_peer(); +} + +int Abstract_Socket::open_client_connection(const struct sockaddr_in & new_remote_addr, const struct sockaddr_in & new_local_addr) +{ +#ifdef WIN32 + log_debug("**** DEPRECATED FUNCTION CALLED: Abstract_Socket::open_client_connection(const struct sockaddr_in & new_remote_addr, const struct sockaddr_in & new_local_addr)." + " USE open_client_connection(const char* remoteHostname, const char* remoteServicename, const char* localHostname, const char* localServicename) INSTEAD! ****"); +#endif + log_debug("Remote address: %s:%d", inet_ntoa(new_remote_addr.sin_addr), ntohs(new_remote_addr.sin_port)); + + int deadlock_counter = AS_DEADLOCK_COUNTER; + int TCP_reconnect_counter = TCP_reconnect_attempts; + + // workaround for the 'address already used' bug + // used also when TCP reconnect is used + as_start_connecting: + + int socket_fd = socket(AF_INET, SOCK_STREAM, 0); + if(socket_fd<0) { + if(use_connection_ASPs) + { + log_warning("Cannot open socket when trying to open client connection: %s", strerror(errno)); + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("Cannot open socket."); + } + + if(!nagling) { + int on = 1; + setsockopt(socket_fd, IPPROTO_TCP, TCP_NODELAY, (const char*)&on, sizeof(on)); + } + + int rc; + + // when using client mode there is no separate file_desriptor for listening and target + log_debug("Connecting to server from address %s:%d", inet_ntoa(new_local_addr.sin_addr), ntohs(new_local_addr.sin_port)); + if (new_local_addr.sin_port != ntohs(0)) { // specific port to use + int val = 1; + if(setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR, (const char*)&val, sizeof(val)) < 0) { + if(use_connection_ASPs) + { + log_warning("Setsockopt failed when trying to open client connection: %s", strerror(errno)); + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("Setsockopt failed."); + } + rc = bind(socket_fd, (const struct sockaddr *)&new_local_addr, sizeof(new_local_addr)); + if(rc<0) { + if(use_connection_ASPs) + { + log_warning("Cannot bind to port when trying to open client connection: %s", strerror(errno)); + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("Cannot bind to port."); + } + log_debug("Bind successful on client."); + } + rc = connect(socket_fd, (const struct sockaddr *)&new_remote_addr, sizeof(new_remote_addr)); + + if(rc<0){ + if (errno == EADDRINUSE) { + log_warning("connect() returned error code EADDRINUSE. Perhaps this is a kernel bug. Trying to connect again."); + close(socket_fd); + errno = 0; + deadlock_counter--; + if (deadlock_counter<0) { + if(use_connection_ASPs) + { + log_warning("Already tried %d times, giving up when trying to open client connection: %s", AS_DEADLOCK_COUNTER, strerror(errno)); + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("Already tried %d times, giving up", AS_DEADLOCK_COUNTER); + } + goto as_start_connecting; + } else if (client_TCP_reconnect && errno != 0) { + log_warning("connect() returned error code %d, trying to connect again (TCP reconnect mode).", errno); + close(socket_fd); + errno = 0; + TCP_reconnect_counter--; + if (TCP_reconnect_counter<0) { + if(use_connection_ASPs) + { + log_warning("Already tried %d times, giving up when trying to open client connection: %s", TCP_reconnect_attempts, strerror(errno)); + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("Already tried %d times, giving up", TCP_reconnect_attempts); + } + sleep(TCP_reconnect_delay); + goto as_start_connecting; + } + + if(use_connection_ASPs) + { + log_warning("Cannot connect to server when trying to open client connection: %s", strerror(errno)); + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("Cannot connect to server"); + } + + // Non-blocking mode is set before updating bookkeping to handle the error case properly. + if (set_non_block_mode(socket_fd, use_non_blocking_socket) < 0){ + close(socket_fd); + if (use_connection_ASPs){ + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("Set blocking mode failed."); + } + + as_client_struct * client_data=peer_list_add_peer(socket_fd); + Add_Fd_Read_Handler(socket_fd); // Done here - as in case of error: remove_client expects the handler as added + log_debug("Abstract_Socket::open_client_connection(). Handler set to socket fd %d", socket_fd); + client_data->fd_buff = new TTCN_Buffer; +// client_data->clientAddr = *(struct sockaddr_storage*)&new_remote_addr; + memset(&client_data->clientAddr,0,sizeof(client_data->clientAddr)); + memcpy(&client_data->clientAddr,&new_remote_addr,sizeof(new_remote_addr)); + client_data->clientAddrlen = sizeof(new_remote_addr); + client_data->tcp_state = ESTABLISHED; + client_data->reading_state = STATE_NORMAL; + if (!add_user_data(socket_fd)) { + remove_client(socket_fd); + peer_disconnected(socket_fd); + return -1; + } + + +// localAddr = new_local_addr; +// remoteAddr = new_remote_addr; + + client_connection_opened(socket_fd); + + return socket_fd; +} + +int Abstract_Socket::open_client_connection(const char* remoteHostname, const char* remoteServicename, const char* localHostname, const char* localServicename) { + log_debug("Abstract_Socket::open_client_connection(remoteAddr: %s/%s, localAddr: %s/%s) called", + remoteHostname,remoteServicename, + (localHostname!=NULL)?localHostname:"UNSPEC",(localServicename!=NULL)?localServicename:"UNSPEC"); +#ifdef WIN32 + struct sockaddr_in new_local_addr; + struct sockaddr_in new_remote_addr; + memset(&new_local_addr, 0, sizeof(new_local_addr)); + memset(&new_local_addr, 0, sizeof(new_remote_addr)); + if(localHostname!=NULL){ + get_host_id(localHostname,&new_local_addr); + } + if(localServicename!=NULL){ + new_local_addr.sin_port=htons(atoi(localServicename)); + } + if(remoteHostname!=NULL){ + get_host_id(remoteHostname,&new_remote_addr); + } + if(remoteServicename!=NULL){ + new_remote_addr.sin_port=htons(atoi(remoteServicename)); + } + return open_client_connection(new_remote_addr,new_local_addr); +#else + + int deadlock_counter = AS_DEADLOCK_COUNTER; + int TCP_reconnect_counter = TCP_reconnect_attempts; + + + struct addrinfo *res, *aip; + struct addrinfo hints; + int socket_fd = -1; + int error; + + /* Get host address. Any type of address will do. */ + bzero(&hints, sizeof (hints)); + hints.ai_flags = AI_ADDRCONFIG; /* |AI_ALL*/ + if (localHostname!=NULL || localServicename!=NULL) { /* use specific local address */ + hints.ai_flags |= AI_PASSIVE; + } + hints.ai_socktype = SOCK_STREAM; + hints.ai_family = ai_family; + + error = getaddrinfo(remoteHostname, remoteServicename, &hints, &res); + if (error != 0) { + if(use_connection_ASPs) + { + log_warning("getaddrinfo: %s for host %s service %s", + gai_strerror(error), remoteHostname, remoteServicename); + client_connection_opened(-1); + return -1; + } + else { log_error("getaddrinfo: %s for host %s service %s", + gai_strerror(error), remoteHostname, remoteServicename); + } + } + + if (socket_debugging) { + /* count the returned addresses: */ + int counter = 0; + for (aip = res; aip != NULL; aip = aip->ai_next,++counter) {}; + log_debug("Number of remote addresses: %d\n", counter); + } + + // workaround for the 'address already used' bug + // used also when TCP reconnect is used + as_start_connecting: + + /* Try all returned addresses until one works */ + for (aip = res; aip != NULL; aip = aip->ai_next) { + /* + * Open socket. The address type depends on what + * getaddrinfo() gave us. + */ + socket_fd = socket(aip->ai_family, aip->ai_socktype, + aip->ai_protocol); + if (socket_fd == -1) { + if(use_connection_ASPs) + { + log_warning("Cannot open socket when trying to open client connection: %s", strerror(errno)); + client_connection_opened(-1); + freeaddrinfo(res); + return -1; + } + else { + freeaddrinfo(res); + log_error("Cannot open socket."); + } + } + + log_debug("Using address family for socket %d: %s",socket_fd, + ((aip->ai_family==AF_INET)?"IPv4": + ((aip->ai_family==AF_INET6)?"IPv6":"unknown")) + ); + + + if(!nagling) { + int on = 1; + setsockopt(socket_fd, IPPROTO_TCP, TCP_NODELAY, (const char*)&on, sizeof(on)); + } + + // when using client mode there is no separate file_descriptor for listening and target + log_debug("Connecting to server from address %s/%s", + (localHostname!=NULL)?localHostname:"UNSPEC",(localServicename!=NULL)?localServicename:"UNSPEC"); + if (localHostname!=NULL || localServicename!=NULL) { // specific localaddress/port to use + int val = 1; + if(setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR, (const char*)&val, sizeof(val)) < 0) { + if(use_connection_ASPs) + { + log_warning("Setsockopt failed when trying to open client connection: %s", strerror(errno)); + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("Setsockopt failed."); + } + + // determine the local address: + struct addrinfo *localAddrinfo; + /* Get host address. Any type of address will do. */ + bzero(&hints, sizeof (hints)); + hints.ai_flags = AI_PASSIVE; + hints.ai_socktype = SOCK_STREAM; + hints.ai_family = ai_family;//aip->ai_family; // NOTE: On solaris 10 if is set to aip->ai_family, getaddrinfo will crash for IPv4-mapped addresses! + + error = getaddrinfo(localHostname, localServicename, &hints, &localAddrinfo); + if (error != 0) { + if(use_connection_ASPs) + { + log_warning("getaddrinfo: %s for host %s service %s", + gai_strerror(error), (localHostname!=NULL)?localHostname:"UNSPEC",(localServicename!=NULL)?localServicename:"UNSPEC"); + client_connection_opened(-1); + return -1; + } + else { log_error("getaddrinfo: %s for host %s service %s", + gai_strerror(error), (localHostname!=NULL)?localHostname:"UNSPEC",(localServicename!=NULL)?localServicename:"UNSPEC"); + } + } + + if (socket_debugging) { + /* count the returned addresses: */ + int counter = 0; + for (struct addrinfo* aip2 = localAddrinfo; aip2 != NULL; aip2 = aip2->ai_next,++counter) {}; + log_debug("Number of local addresses: %d\n", counter); + } + + /* Try all returned addresses until one works */ + struct addrinfo* aip2; + for (aip2 = localAddrinfo; aip2 != NULL; aip2 = aip2->ai_next) { + log_debug("Using address family for bind: %s", + ((aip2->ai_family==AF_INET)?"IPv4": + ((aip2->ai_family==AF_INET6)?"IPv6":"unknown")) + ); + + if(bind(socket_fd, aip2->ai_addr, aip2->ai_addrlen)<0) { +/* if(use_connection_ASPs) // the if else branches are the same + {*/ + log_debug("Cannot bind to port when trying to open client connection: %s", strerror(errno)); + //client_connection_opened(-1); + //freeaddrinfo(localAddrinfo); + errno = 0; + continue; //aip2 cycle + //return -1; +/* } + else { + //freeaddrinfo(localAddrinfo); + //log_error("Cannot bind to port."); + log_debug("Cannot bind to port when trying to open client connection: %s", strerror(errno)); + errno = 0; + continue; //aip2 cycle + }*/ + } + log_debug("Bind successful on client."); + freeaddrinfo(localAddrinfo); + break; + } + if (aip2==NULL) { + log_debug("Bind failed for all local addresses."); + freeaddrinfo(localAddrinfo); + continue; // aip cycle + } + } + + /* Connect to the host. */ + if (connect(socket_fd, aip->ai_addr, aip->ai_addrlen) == -1) { + if (errno == EADDRINUSE) { + log_warning("connect() returned error code EADDRINUSE. Perhaps this is a kernel bug. Trying to connect again."); + close(socket_fd); + socket_fd = -1; + errno = 0; + deadlock_counter--; + if (deadlock_counter<0) { + if(use_connection_ASPs) + { + log_warning("Already tried %d times, giving up when trying to open client connection: %s", AS_DEADLOCK_COUNTER, strerror(errno)); + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("Already tried %d times, giving up", AS_DEADLOCK_COUNTER); + } + goto as_start_connecting; + } else if (client_TCP_reconnect && errno != 0) { + log_warning("connect() returned error code %d (%s), trying to connect again (TCP reconnect mode).", errno, strerror(errno)); + close(socket_fd); + socket_fd = -1; + errno = 0; + if (aip->ai_next==NULL) { /* Last address is tried and there is still an error */ + TCP_reconnect_counter--; + if (TCP_reconnect_counter<0) { + if(use_connection_ASPs) + { + log_warning("Already tried %d times, giving up when trying to open client connection: %s", TCP_reconnect_attempts, strerror(errno)); + client_connection_opened(-1); + errno = 0; + return -1; + } + else { log_error("Already tried %d times, giving up", TCP_reconnect_attempts); } + } + } + sleep(TCP_reconnect_delay); + goto as_start_connecting; + } else { + log_debug("Cannot connect to server: %s", strerror(errno)); + (void) close(socket_fd); + socket_fd = -1; + } + + if (aip->ai_next==NULL) { + if(use_connection_ASPs) + { + log_warning("Cannot connect to server when trying to open client connection: %s", strerror(errno)); + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("Cannot connect to server"); + } + continue; //aip cycle + } + + // to determine the local address: + if (getsockname(socket_fd, aip->ai_addr, &aip->ai_addrlen)) { + close(socket_fd); + if(use_connection_ASPs) { + log_warning("getsockname() system call failed on the client socket when trying to connect to server: %s", strerror(errno)); + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("getsockname() system call failed on the client socket when trying to connect to server: %s", strerror(errno)); + } + char hname[NI_MAXHOST]; + char sname[NI_MAXSERV]; +/* error = getnameinfo(aip->ai_addr, aip->ai_addrlen, + hname, sizeof (hname), sname, sizeof (sname), NI_NUMERICSERV); + if (error) { + close(socket_fd); + if(use_connection_ASPs) + { + log_warning("getnameinfo() system call failed on the client socket when trying to connect to server: %s", gai_strerror(error)); + client_connection_opened(-1); + return -1; + } + else log_error("getnameinfo() system call failed on the client socket when trying to connect to server: %s", gai_strerror(error)); + } else { + log_debug("Connection established (name): %s/%s -> %s/%s\n", + hname, sname, + remoteHostname, remoteServicename); + }*/ + error = getnameinfo(aip->ai_addr, aip->ai_addrlen, + hname, sizeof (hname), sname, sizeof (sname), NI_NUMERICHOST|NI_NUMERICSERV); + if (error) { +/* close(socket_fd); + if(use_connection_ASPs) + { + log_warning("getnameinfo() system call failed on the client socket when trying to connect to server: %s", gai_strerror(error)); +// client_connection_opened(-1); +// return -1; + } + else*/ + log_warning("getnameinfo() system call failed on the client socket when trying to connect to server: %s", gai_strerror(error)); + } else { + log_debug("Connection established (addr): %s/%s -> %s/%s\n", + hname, sname, + remoteHostname, remoteServicename); + } + + log_debug( + "connected to: host %s service %s via address family %s\n", + remoteHostname, remoteServicename, + ((aip->ai_family==AF_INET)?"IPv4": + ((aip->ai_family==AF_INET6)?"IPv6":"unknown"))); + break; + } + if (aip==NULL) { + if(use_connection_ASPs) + { + log_warning("Cannot connect to server"); + client_connection_opened(-1); + freeaddrinfo(res); + return -1; + } + else log_error("Cannot connect to server"); + } + + // Non-blocking mode is set before updating bookkeping to handle the error case properly. + if (set_non_block_mode(socket_fd, use_non_blocking_socket) < 0) { + freeaddrinfo(res); + close(socket_fd); + if (use_connection_ASPs){ + log_warning("Set blocking mode failed."); + client_connection_opened(-1); + errno = 0; + return -1; + } + else log_error("Set blocking mode failed."); + } + + as_client_struct * client_data=peer_list_add_peer(socket_fd); + Add_Fd_Read_Handler(socket_fd); // Done here - as in case of error: remove_client expects the handler as added + log_debug("Abstract_Socket::open_client_connection(). Handler set to socket fd %d", socket_fd); + client_data->fd_buff = new TTCN_Buffer; +// client_data->clientAddr = *(struct sockaddr_storage*)aip->ai_addr; + memset(&client_data->clientAddr,0,sizeof(client_data->clientAddr)); + memcpy(&client_data->clientAddr,aip->ai_addr,sizeof(*aip->ai_addr)); + client_data->clientAddrlen = aip->ai_addrlen; + client_data->tcp_state = ESTABLISHED; + client_data->reading_state = STATE_NORMAL; + + freeaddrinfo(res); + + if (!add_user_data(socket_fd)) { + remove_client(socket_fd); + peer_disconnected(socket_fd); + return -1; + } + + client_connection_opened(socket_fd); + + return socket_fd; +#endif +} + + +void Abstract_Socket::client_connection_opened(int /*client_id*/) +{ + // Intentionally blank +} + +void Abstract_Socket::unmap_user() +{ + log_debug("entering Abstract_Socket::unmap_user()"); + remove_all_clients(); + close_listen_port(); + Handler_Uninstall(); // For robustness only + log_debug("leaving Abstract_Socket::unmap_user()"); +} + +void Abstract_Socket::peer_disconnected(int /*fd*/) +{ + // virtual peer_disconnected() needs to be overriden in test ports! + if(!use_connection_ASPs) { + if (halt_on_connection_reset) + log_error("Connection was interrupted by the other side."); + if (client_TCP_reconnect){ + log_warning("TCP connection was interrupted by the other side, trying to reconnect again..."); + unmap_user(); + map_user(); + log_warning("TCP reconnect successfuly finished"); + } + } +} + +void Abstract_Socket::peer_half_closed(int fd) +{ + log_debug("Entering Abstract_Socket::peer_half_closed()"); + remove_client(fd); + peer_disconnected(fd); + log_debug("Leaving Abstract_Socket::peer_half_closed()"); +} + +void Abstract_Socket::send_shutdown(int client_id) +{ + log_debug("entering Abstract_Socket::send_shutdown()"); + int dest_fd = client_id; + + if (dest_fd == -1) { + if(peer_list_get_nr_of_peers() > 1) + log_error("Client Id not specified altough not only 1 client exists"); + else if(peer_list_get_nr_of_peers() == 0) + log_error("There is no connection alive, connect before sending anything."); + dest_fd = peer_list_get_first_peer(); + } + as_client_struct * client_data = get_peer(dest_fd); + if(client_data->tcp_state != ESTABLISHED) + log_error("TCP state of client nr %i does not allow to shut down its connection for writing!", dest_fd); + + if(shutdown(dest_fd, SHUT_WR) != 0) + { + if(errno == ENOTCONN) + { + remove_client(dest_fd); + peer_disconnected(dest_fd); + errno = 0; + } + else + log_error("shutdown() system call failed"); + } + else client_data->tcp_state = FIN_WAIT; + + // dest_fd is not removed from readfds, data can be received + + log_debug("leaving Abstract_Socket::send_shutdown()"); +} + +void Abstract_Socket::send_outgoing(const unsigned char* send_par, int length, int client_id) +{ + log_debug("entering Abstract_Socket::send_outgoing()"); + log_hex("Sending data: ", send_par, length); + int dest_fd; + int nrOfBytesSent; + + dest_fd = client_id; + if (dest_fd == -1) { + if(peer_list_get_nr_of_peers() > 1) + log_error("Client Id not specified altough not only 1 client exists"); + else if(peer_list_get_nr_of_peers() == 0) + log_error("There is no connection alive, use a Connect ASP before sending anything."); + dest_fd = peer_list_get_first_peer(); + } + as_client_struct * client_data = get_peer(dest_fd,true); + if(!client_data || ((client_data->tcp_state != ESTABLISHED) && (client_data->tcp_state != CLOSE_WAIT))){ + char *error_text=mprintf("client nr %i has no established connection", dest_fd); + report_error(client_id,length,-2,send_par,error_text); + Free(error_text); + log_debug("leaving Abstract_Socket::send_outgoing()"); + return; + } + + nrOfBytesSent = use_non_blocking_socket ? send_message_on_nonblocking_fd(dest_fd, send_par, length) : + send_message_on_fd(dest_fd, send_par, length); + + if (nrOfBytesSent == -1){ + log_debug("Client %d closed connection. Error: %d %s", client_id, errno, strerror(errno)); + report_unsent(dest_fd,length,nrOfBytesSent,send_par,"Client closed the connection"); + + if(client_data->tcp_state == CLOSE_WAIT){ + log_debug("Client %d waiting for close ASP.", client_id); + } else { + errno = 0; + log_debug("Client %d closed connection", client_id); + client_data->tcp_state = CLOSE_WAIT; + Remove_Fd_Read_Handler(dest_fd); + peer_half_closed(dest_fd); + } + }else if (nrOfBytesSent != length) { + char *error_text=mprintf("Send system call failed: %d bytes were sent instead of %d", nrOfBytesSent, length); + report_error(client_id,length,nrOfBytesSent,send_par,error_text); + Free(error_text); + } else { + log_debug("Nr of bytes sent = %d", nrOfBytesSent); + } + log_debug("leaving Abstract_Socket::send_outgoing()"); +} + +void Abstract_Socket::report_error(int /*client_id*/, int /*msg_length*/, int /*sent_length*/, const unsigned char* /*msg*/, const char* error_text) +{ + log_error("%s",error_text); +} + +void Abstract_Socket::report_unsent(int /*client_id*/, int /*msg_length*/, int /*sent_length*/, const unsigned char* /*msg*/, const char* error_text) +{ + log_debug("%s",error_text); +} + +void Abstract_Socket::all_mandatory_configparameters_present() +{ + if(!use_connection_ASPs) + { + if(server_mode) { + if(local_port_number == 0) { + log_error("%s is not defined in the configuration file", local_port_name()); + } + } + else { // client mode + if (remote_host_name == NULL) { + log_error("%s is not defined in the configuration file", remote_address_name()); + } + if(remote_port_number == 0){ + log_error("%s is not defined in the configuration file", remote_port_name()); + } + } + } + user_all_mandatory_configparameters_present(); +} + + +void Abstract_Socket::get_host_id(const char* hostName, struct sockaddr_in *addr) +{ + log_debug("Abstract_Socket::get_host_id called"); + unsigned int port = addr->sin_port; + memset(addr, 0, sizeof(*addr)); + addr->sin_family = AF_INET; + addr->sin_port = port; + struct hostent *hptr; + if(strcmp("localhost", hostName) != 0) + { + hptr = gethostbyname(hostName); + if (hptr != NULL) memcpy(&addr->sin_addr, hptr->h_addr_list[0], hptr->h_length); + else log_error("The host name %s is not valid in the configuration file.", hostName); + log_debug("The address set to %s[%s]", hptr->h_name, inet_ntoa(addr->sin_addr)); + } + else + { + addr->sin_addr.s_addr = htonl(INADDR_ANY); + log_debug("The address set to [%s]", inet_ntoa(addr->sin_addr)); + } +} + +void Abstract_Socket::remove_client(int fd) +{ + log_debug("entering Abstract_Socket::remove_client(%d)", fd); + if(fd != listen_fd) { + get_peer(fd); // check if client exists, log_error && fail if not + // TODO FIXME: remove the Add_Fd_Read_Handler(fd); if TITAN is fixed + Add_Fd_Read_Handler(fd); + Remove_Fd_All_Handlers(fd); + remove_user_data(fd); + delete get_peer(fd)->fd_buff; + peer_list_remove_peer(fd); + close(fd); + log_debug("Removed client %d.", fd); + } + else log_warning("Abstract_Socket::remove_client: %d is the server listening port, can not be removed!", fd); + log_debug("leaving Abstract_Socket::remove_client(%d)", fd); +} + +void Abstract_Socket::remove_all_clients() +{ + log_debug("entering Abstract_Socket::remove_all_clients"); + for(int i = 0; peer_list_root != NULL && i < peer_list_length; i++) + { + if(i != listen_fd && peer_list_root[i] != NULL) + remove_client(i); + } + // check if no stucked data + while (peer_list_get_nr_of_peers()) { + int client_id = peer_list_get_first_peer(); + if (client_id >= 0) log_warning("Client %d has not been removed, programming error", client_id); + else log_error("Number of clients<>0 but cannot get first client, programming error"); + peer_list_remove_peer(client_id); + } + + log_debug("leaving Abstract_Socket::remove_all_clients"); +} + +int Abstract_Socket::set_non_block_mode(int fd, bool enable_nonblock){ + + int flags = fcntl(fd, F_GETFL); + if (flags < 0) { + log_warning("System call fcntl(F_GETFL) failed on file " + "descriptor %d.", fd); + return -1; + } + + if (enable_nonblock) flags |= O_NONBLOCK; + else flags &= ~O_NONBLOCK; + + if (fcntl(fd, F_SETFL, flags) == -1) { + log_warning("System call fcntl(F_SETFL) failed on file " + "descriptor %d.", fd); + return -1; + } + return 0; + +} + +bool Abstract_Socket::increase_send_buffer(int fd, + int &old_size, int& new_size) +{ + int set_size; +#if defined LINUX || defined FREEBSD || defined SOLARIS8 + socklen_t +#else /* SOLARIS or WIN32 */ + int +#endif + optlen = sizeof(old_size); + // obtaining the current buffer size first + if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, (char*)&old_size, &optlen)) + goto getsockopt_failure; + if (old_size <= 0) { + log_warning("System call getsockopt(SO_SNDBUF) " + "returned invalid buffer size (%d) on file descriptor %d.", + old_size, fd); + return false; + } + // trying to double the buffer size + set_size = 2 * old_size; + if (set_size > old_size) { + if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, (const char*)&set_size, + sizeof(set_size))) { + // the operation failed + switch (errno) { + case ENOMEM: + case ENOBUFS: + errno = 0; + break; + default: + // other error codes indicate a fatal error + goto setsockopt_failure; + } + } else { + // the operation was successful + goto success; + } + } + // trying to perform a binary search to determine the maximum buffer size + set_size = old_size; + for (int size_step = old_size / 2; size_step > 0; size_step /= 2) { + int tried_size = set_size + size_step; + if (tried_size > set_size) { + if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, (const char*)&tried_size, + sizeof(tried_size))) { + // the operation failed + switch (errno) { + case ENOMEM: + case ENOBUFS: + errno = 0; + break; + default: + // other error codes indicate a fatal error + goto setsockopt_failure; + } + } else { + // the operation was successful + set_size = tried_size; + } + } + } + if (set_size <= old_size) return false; +success: + // querying the new effective buffer size (it might be smaller + // than set_size but should not be smaller than old_size) + optlen = sizeof(new_size); + if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, (char*)&new_size, + &optlen)) goto getsockopt_failure; + if (new_size > old_size) return true; + else { + if (new_size < old_size) + log_warning("System call getsockopt(SO_SNDBUF) returned unexpected buffer size " + "(%d, after increasing it from %d to %d) on file descriptor %d.", + new_size, old_size, set_size, fd); + return false; + } +getsockopt_failure: + log_warning("System call getsockopt(SO_SNDBUF) failed on file " + "descriptor %d. (%s)", fd, strerror(errno)); + return false; +setsockopt_failure: + log_warning("System call setsockopt(SO_SNDBUF) failed on file " + "descriptor %d. (%s)", fd, strerror(errno)); + return false; +} + + +const char* Abstract_Socket::local_port_name() { return "serverPort";} +const char* Abstract_Socket::remote_address_name() { return "destIPAddr";} +const char* Abstract_Socket::local_address_name() { return "serverIPAddr";} +const char* Abstract_Socket::remote_port_name() { return "destPort";} +const char* Abstract_Socket::ai_family_name() { return "ai_family";} +const char* Abstract_Socket::use_connection_ASPs_name() { return "use_connection_ASPs";} +const char* Abstract_Socket::halt_on_connection_reset_name(){ return "halt_on_connection_reset";} +const char* Abstract_Socket::client_TCP_reconnect_name() { return "client_TCP_reconnect";} +const char* Abstract_Socket::TCP_reconnect_attempts_name() { return "TCP_reconnect_attempts";} +const char* Abstract_Socket::TCP_reconnect_delay_name() { return "TCP_reconnect_delay";} +const char* Abstract_Socket::server_mode_name() { return "server_mode";} +const char* Abstract_Socket::socket_debugging_name() { return "socket_debugging";} +const char* Abstract_Socket::nagling_name() { return "nagling";} +const char* Abstract_Socket::use_non_blocking_socket_name() { return "use_non_blocking_socket";} +const char* Abstract_Socket::server_backlog_name() { return "server_backlog";} +bool Abstract_Socket::add_user_data(int) {return true;} +bool Abstract_Socket::remove_user_data(int) {return true;} +bool Abstract_Socket::user_all_mandatory_configparameters_present() { return true; } + + + +//////////////////////////////////////////////////////////////////////// +///// Peer handling functions +//////////////////////////////////////////////////////////////////////// + +void Abstract_Socket::peer_list_reset_peer() { + log_debug("Abstract_Socket::peer_list_reset_peer: Resetting peer array"); + for (int i = 0; i < peer_list_length; i++) + if (peer_list_root[i] != NULL) { + delete peer_list_root[i]; + peer_list_root[i] = NULL; + } + + peer_list_resize_list(-1); + log_debug("Abstract_Socket::peer_list_reset_peer: New length is %d", peer_list_length); +} + +void Abstract_Socket::peer_list_resize_list(int client_id) { + int new_length=client_id; + if (new_length<0) new_length = peer_list_get_last_peer(); + new_length++; // index starts from 0 + log_debug("Abstract_Socket::peer_list_resize_list: Resizing to %d", new_length); + peer_list_root = (as_client_struct **)Realloc(peer_list_root, new_length*sizeof(as_client_struct *)); + + // initialize new entries + for (int i = peer_list_length; i < new_length; i++) + peer_list_root[i] = NULL; + + peer_list_length = new_length; + log_debug("Abstract_Socket::peer_list_resize_list: New length is %d", peer_list_length); +} + +int Abstract_Socket::peer_list_get_first_peer() const { + log_debug("Abstract_Socket::peer_list_get_first_peer: Finding first peer of the peer array"); + for (int i = 0; i < peer_list_length; i++) { + if (peer_list_root[i] != NULL) { + log_debug("Abstract_Socket::peer_list_get_first_peer: First peer is %d", i); + return i; + } + } + log_debug("Abstract_Socket::peer_list_get_first_peer: No active peer found"); + return -1; // this indicates an empty list +} + +int Abstract_Socket::peer_list_get_last_peer() const +{ + log_debug("Abstract_Socket::peer_list_get_last_peer: Finding last peer of the peer array"); + if (peer_list_length==0) { + log_debug("Abstract_Socket::peer_list_get_last_peer: No active peer found"); + return -1; + } + for (int i = peer_list_length - 1; i >= 0; i--) { + if (peer_list_root[i] != NULL) { + log_debug("Abstract_Socket::peer_list_get_last_peer: Last peer is %u", i); + return i; + } + } + log_debug("Abstract_Socket::peer_list_get_last_peer: No active peer found"); + return -1; // this indicates an empty list +} + +int Abstract_Socket::peer_list_get_nr_of_peers() const +{ + int nr=0; + for (int i = 0; i < peer_list_length; i++) + if (peer_list_root[i] != NULL) nr++; + log_debug("Abstract_Socket::peer_list_get_nr_of_peers: Number of active peers = %d", nr); + return nr; +} + +Abstract_Socket::as_client_struct *Abstract_Socket::get_peer (int client_id, bool no_error) const +{ + if (client_id >= peer_list_length){ + if(no_error) return NULL; + else log_error ("Index %d exceeds length of peer list.", client_id); + } + if (peer_list_root[client_id]==NULL){ + if(no_error) return NULL; + else log_error("Abstract_Socket::get_peer: Client %d does not exist", client_id); + } + return peer_list_root[client_id]; +} + +Abstract_Socket::as_client_struct * Abstract_Socket::peer_list_add_peer (int client_id) { + log_debug("Abstract_Socket::peer_list_add_peer: Adding client %d to peer list", client_id); + if (client_id<0) log_error("Invalid Client Id is given: %d.", client_id); + if (client_id>peer_list_get_last_peer()) peer_list_resize_list(client_id); + peer_list_root[client_id] = new as_client_struct; + peer_list_root[client_id]->user_data = NULL; + peer_list_root[client_id]->fd_buff = NULL; + peer_list_root[client_id]->tcp_state = CLOSED; + peer_list_root[client_id]->reading_state = STATE_NORMAL; + return peer_list_root[client_id]; +} + +void Abstract_Socket::peer_list_remove_peer (int client_id) { + + log_debug("Abstract_Socket::peer_list_remove_peer: Removing client %d from peer list", client_id); + if (client_id >= peer_list_length || client_id<0) log_error("Invalid Client Id is given: %d.", client_id); + if (peer_list_root[client_id] == NULL) log_error("Peer %d does not exist.", client_id); + + delete peer_list_root[client_id]; + peer_list_root[client_id] = NULL; + + peer_list_resize_list(-1); +} + + + +#ifdef AS_USE_SSL +/* + * Server mode + When the mode is server, first a TCP socket is created. The server starts + to listen on this port. Once a TCP connect request is received, the TCP + connection is setup. After this the SSL handshake begins. + The SSL is mapped to the file descriptor of the TCP socket. The BIO is + automatically created by OpenSSL inheriting the characteristics of the + socket (non-blocking mode). The BIO is completely transparent. + The server always sends its certificate to the client. If configured so, + the server will request the certificate of the client and check if it is + a valid certificate. If not, the SSL connection is refused. + If configured not to verify the certificate, the server will not request + it from the client and the SSL connection is accepted. + If usage of the SSL ssl_session resumption is enabled and + the client refers to a previous ssl_session, the server will accept it, + unless it is not found in the SSL context cache. + Once the connection is negotiated, data can be sent/received. + The SSL connection is shutted down on an unmap() operation. The shutdown + process does not follow the standard. The server simply shuts down and + does not expect any acknowledgement from the client. + Clients connected to the server are distinguished with their file + descriptor numbers. When a message is received, the file descriptor + number is also passed, so the client can be identified. + * Client mode + When the mode is client, first a TCP connection is requested to the + server. Once accepted, the SSL endpoint is created. + If configured so, the client tries to use the ssl_session Id from the + previous connection, if available (e.g. not the first connection). + If no ssl_session Id is available or the server does not accept it, + a full handshake if performed. + If configured so, the certificate of the server is verified. + If the verification fails, the SSL connection is interrupted by the + client. If no verification required, the received certificate is + still verified, however the result does not affect the connection + (might fail). + * ssl_verify_certificates() is a virtual function. It is called after + SSL connection is up. Testports may use it to check other peer's + certificate and do actions. If the return value is 0, then the + SSL connection is closed. In case of a client, the test port + exits with an error (verification_error). The server just removes + client data, but keeps running. + If ssl_verifiycertificate == "yes", then accept connections only + where certificate is valid + Further checks can be done using SSL_Socket::ssl_verify_certificates() + after the SSL connection is established with the following function call + sequence: + + remove_client(dest_fd); + peer_disconnected(dest_fd); + +*/ + + +// ssl_session ID context of the server +static unsigned char ssl_server_context_name[] = "McHalls&EduardWasHere"; +const unsigned char * SSL_Socket::ssl_server_auth_session_id_context = ssl_server_context_name; +// Password pointer +void *SSL_Socket::ssl_current_client = NULL; + + +SSL_Socket::SSL_Socket() +{ + ssl_use_ssl=false; + ssl_initialized=false; + ssl_key_file=NULL; + ssl_certificate_file=NULL; + ssl_trustedCAlist_file=NULL; + ssl_cipher_list=NULL; + ssl_verify_certificate=false; + ssl_use_session_resumption=true; + ssl_session=NULL; + ssl_password=NULL; + test_port_type=NULL; + test_port_name=NULL; + ssl_ctx = NULL; + ssl_current_ssl = NULL; + SSLv2=true; + SSLv3=true; + TLSv1=true; + TLSv1_1=true; + TLSv1_2=true; +} + +SSL_Socket::SSL_Socket(const char *tp_type, const char *tp_name) +{ + ssl_use_ssl=false; + ssl_initialized=false; + ssl_key_file=NULL; + ssl_certificate_file=NULL; + ssl_trustedCAlist_file=NULL; + ssl_cipher_list=NULL; + ssl_verify_certificate=false; + ssl_use_session_resumption=true; + ssl_session=NULL; + ssl_password=NULL; + test_port_type=tp_type; + test_port_name=tp_name; + ssl_ctx = NULL; + ssl_current_ssl = NULL; + SSLv2=true; + SSLv3=true; + TLSv1=true; + TLSv1_1=true; + TLSv1_2=true; +} + +SSL_Socket::~SSL_Socket() +{ + // now SSL context can be removed + if (ssl_use_ssl && ssl_ctx!=NULL) { + SSL_CTX_free(ssl_ctx); + } + delete [] ssl_key_file; + delete [] ssl_certificate_file; + delete [] ssl_trustedCAlist_file; + delete [] ssl_cipher_list; + delete [] ssl_password; +} + + +bool SSL_Socket::parameter_set(const char *parameter_name, + const char *parameter_value) +{ + log_debug("entering SSL_Socket::parameter_set(%s, %s)", parameter_name, parameter_value); + + if(strcmp(parameter_name, ssl_use_ssl_name()) == 0) { + if(strcasecmp(parameter_value, "yes") == 0) ssl_use_ssl = true; + else if(strcasecmp(parameter_value, "no") == 0) ssl_use_ssl = false; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_use_ssl_name()); + } else if(strcmp(parameter_name, ssl_use_session_resumption_name()) == 0) { + if(strcasecmp(parameter_value, "yes") == 0) ssl_use_session_resumption = true; + else if(strcasecmp(parameter_value, "no") == 0) ssl_use_session_resumption = false; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_use_session_resumption_name()); + } else if(strcmp(parameter_name, ssl_private_key_file_name()) == 0) { + delete [] ssl_key_file; + ssl_key_file=new char[strlen(parameter_value)+1]; + strcpy(ssl_key_file, parameter_value); + } else if(strcmp(parameter_name, ssl_trustedCAlist_file_name()) == 0) { + delete [] ssl_trustedCAlist_file; + ssl_trustedCAlist_file=new char[strlen(parameter_value)+1]; + strcpy(ssl_trustedCAlist_file, parameter_value); + } else if(strcmp(parameter_name, ssl_certificate_file_name()) == 0) { + delete [] ssl_certificate_file; + ssl_certificate_file=new char[strlen(parameter_value)+1]; + strcpy(ssl_certificate_file, parameter_value); + } else if(strcmp(parameter_name, ssl_cipher_list_name()) == 0) { + delete [] ssl_cipher_list; + ssl_cipher_list=new char[strlen(parameter_value)+1]; + strcpy(ssl_cipher_list, parameter_value); + } else if(strcmp(parameter_name, ssl_password_name()) == 0) { + ssl_password=new char[strlen(parameter_value)+1]; + strcpy(ssl_password, parameter_value); + } else if(strcmp(parameter_name, ssl_verifycertificate_name()) == 0) { + if(strcasecmp(parameter_value, "yes") == 0) ssl_verify_certificate = true; + else if(strcasecmp(parameter_value, "no") == 0) ssl_verify_certificate = false; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_verifycertificate_name()); + } else if(strcasecmp(parameter_name, ssl_disable_SSLv2()) == 0) { + if(strcasecmp(parameter_value, "yes") == 0) SSLv2= false; + else if(strcasecmp(parameter_value, "no") == 0) SSLv2 = true; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_disable_SSLv2()); + } else if(strcasecmp(parameter_name, ssl_disable_SSLv3()) == 0) { + if(strcasecmp(parameter_value, "yes") == 0) SSLv2 = false; + else if(strcasecmp(parameter_value, "no") == 0) SSLv2 = true; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_disable_SSLv3()); + } else if(strcasecmp(parameter_name, ssl_disable_TLSv1()) == 0) { + if(strcasecmp(parameter_value, "yes") == 0) TLSv1= false; + else if(strcasecmp(parameter_value, "no") == 0) TLSv1 = true; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_disable_TLSv1()); + } else if(strcasecmp(parameter_name, ssl_disable_TLSv1_1()) == 0) { + if(strcasecmp(parameter_value, "yes") == 0) TLSv1_1 = false; + else if(strcasecmp(parameter_value, "no") == 0) TLSv1_1 = true; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_disable_TLSv1_1()); + } else if(strcasecmp(parameter_name, ssl_disable_TLSv1_2()) == 0) { + if(strcasecmp(parameter_value, "yes") == 0) TLSv1_2 = false; + else if(strcasecmp(parameter_value, "no") == 0) TLSv1_2 = true; + else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_disable_TLSv1_2()); + } else { + log_debug("leaving SSL_Socket::parameter_set(%s, %s)", parameter_name, parameter_value); + return Abstract_Socket::parameter_set(parameter_name, parameter_value); + } + log_debug("leaving SSL_Socket::parameter_set(%s, %s)", parameter_name, parameter_value); + return true; +} + + +bool SSL_Socket::add_user_data(int client_id) { + + log_debug("entering SSL_Socket::add_user_data()"); + if (!ssl_use_ssl) { + log_debug("leaving SSL_Socket::add_user_data()"); + return Abstract_Socket::add_user_data(client_id); + } + + ssl_init_SSL(); + + log_debug("Create a new SSL object"); + if (ssl_ctx==NULL) + log_error("No SSL CTX found, SSL not initialized"); + ssl_current_ssl=SSL_new(ssl_ctx); + + if (ssl_current_ssl==NULL) + log_error("Creation of SSL object failed"); +#ifdef SSL_OP_NO_SSLv2 + if(!SSLv2){ + SSL_set_options(ssl_current_ssl,SSL_OP_NO_SSLv2); + } +#endif +#ifdef SSL_OP_NO_SSLv3 + if(!SSLv3){ + SSL_set_options(ssl_current_ssl,SSL_OP_NO_SSLv3); + } +#endif +#ifdef SSL_OP_NO_TLSv1 + if(!TLSv1){ + SSL_set_options(ssl_current_ssl,SSL_OP_NO_TLSv1); + } +#endif +#ifdef SSL_OP_NO_TLSv1_1 + if(!TLSv1_1){ + SSL_set_options(ssl_current_ssl,SSL_OP_NO_TLSv1_1); + } +#endif +#ifdef SSL_OP_NO_TLSv1_2 + if(!TLSv1_2){ + SSL_set_options(ssl_current_ssl,SSL_OP_NO_TLSv1_2); + } +#endif + + set_user_data(client_id, ssl_current_ssl); + log_debug("New client added with key '%d'", client_id); + log_debug("Binding SSL to the socket"); + if (SSL_set_fd(ssl_current_ssl, client_id)!=1) + log_error("Binding of SSL object to socket failed"); + + // Conext change for SSL objects may come here in the + // future. + + if (Abstract_Socket::get_server_mode()) { + log_debug("Accept SSL connection request"); + if (ssl_current_client!=NULL) log_warning("Warning: race condition while setting current client object pointer"); + ssl_current_client=(SSL_Socket *)this; + if (ssl_getresult(SSL_accept(ssl_current_ssl))!=SSL_ERROR_NONE) { + log_warning("Connection from client %d is refused", client_id); + ssl_current_client=NULL; + log_debug("leaving SSL_Socket::add_user_data()"); + return false; + } + ssl_current_client=NULL; + + } else { + if (ssl_use_session_resumption && ssl_session!=NULL) { + log_debug("Try to use ssl_session resumption"); + if (ssl_getresult(SSL_set_session(ssl_current_ssl, ssl_session))!=SSL_ERROR_NONE) + log_error("SSL error occured"); + } + + log_debug("Connect to server"); + if (ssl_current_client!=NULL) log_warning("Warning: race condition while setting current client object pointer"); + ssl_current_client=(SSL_Socket *)this; + // + + while(true) + { + int res = ssl_getresult(SSL_connect(ssl_current_ssl)); + switch (res) { + case SSL_ERROR_NONE: break; + case SSL_ERROR_WANT_WRITE: + ssl_current_client = NULL; + TTCN_Snapshot::block_for_sending(client_id); + continue; + case SSL_ERROR_WANT_READ: + for(;;) { + pollfd pollClientFd = { client_id, POLLIN, 0 }; + int nEvents = poll(&pollClientFd, 1, 0); + if (nEvents == 1 && (pollClientFd.revents & (POLLIN | POLLHUP)) != 0) + break; + if(nEvents < 0 && errno != EINTR) + log_error("System call poll() failed on file descriptor %d", client_id); + } + continue; + default: + log_warning("Connection to server is refused"); + ssl_current_client=NULL; + log_debug("leaving SSL_Socket::add_user_data()"); + return false; + } + break; + } //while + + + ssl_current_client=NULL; + if (ssl_use_session_resumption) { + log_debug("Connected, get new ssl_session"); + ssl_session=SSL_get1_session(ssl_current_ssl); + if (ssl_session==NULL) + log_warning("Server did not send a session ID"); + } + } + + if (ssl_use_session_resumption) { + if (SSL_session_reused(ssl_current_ssl)) log_debug("Session was reused"); + else log_debug("Session was not reused"); + } + + if (!ssl_verify_certificates()) { // remove client + log_warning("Verification failed"); + log_debug("leaving SSL_Socket::add_user_data()"); + return false; + + } + log_debug("leaving SSL_Socket::add_user_data()"); + return true; +} + + +bool SSL_Socket::remove_user_data(int client_id) { + + log_debug("entering SSL_Socket::remove_user_data()"); + if (!ssl_use_ssl) { + log_debug("leaving SSL_Socket::remove_user_data()"); + return Abstract_Socket::remove_user_data(client_id); + } + ssl_current_ssl = (SSL*)get_user_data(client_id); + if (ssl_current_ssl!=NULL) { + SSL_shutdown(ssl_current_ssl); + SSL_free(ssl_current_ssl); + } else + log_warning("SSL object not found for client %d", client_id); + log_debug("leaving SSL_Socket::remove_user_data()"); + return true; +} + + + +bool SSL_Socket::user_all_mandatory_configparameters_present() { + if (!ssl_use_ssl) { return true; } + if (Abstract_Socket::get_server_mode()) { + if (ssl_certificate_file==NULL) + log_error("%s is not defined in the configuration file", ssl_certificate_file_name()); + if (ssl_trustedCAlist_file==NULL) + log_error("%s is not defined in the configuration file", ssl_trustedCAlist_file_name()); + if (ssl_key_file==NULL) + log_error("%s is not defined in the configuration file", ssl_private_key_file_name()); + } else { + if (ssl_verify_certificate && ssl_trustedCAlist_file==NULL) + log_error("%s is not defined in the configuration file altough %s=yes", ssl_trustedCAlist_file_name(), ssl_verifycertificate_name()); + } + return true; +} + + + +//STATE_WAIT_FOR_RECEIVE_CALLBACK: if the SSL_read operation would +// block because the socket is not ready for writing, +// I set the socket state to this state and add the file +// descriptor to the Event_Handler. The Event_Handler will +// wake up and call the receive_message_on_fd operation +// if the socket is ready to write. +//If the SSL_read operation would block because the socket is not ready for +//reading, I do nothing +int SSL_Socket::receive_message_on_fd(int client_id) +{ + log_debug("entering SSL_Socket::receive_message_on_fd()"); + if (!ssl_use_ssl) { + log_debug("leaving SSL_Socket::receive_message_on_fd()"); + return Abstract_Socket::receive_message_on_fd(client_id); + } + + if (ssl_current_client!=NULL) log_warning("Warning: race condition while setting current client object pointer"); + ssl_current_client=(SSL_Socket *)this; + + as_client_struct* peer = get_peer(client_id); // check if client exists + if (peer->reading_state == STATE_WAIT_FOR_RECEIVE_CALLBACK){ + Remove_Fd_Write_Handler(client_id); + log_debug("SSL_Socket::receive_message_on_fd: setting socket state to STATE_NORMAL"); + peer->reading_state = STATE_NORMAL; + } + TTCN_Buffer* recv_tb = get_buffer(client_id); + ssl_current_ssl=(SSL*)get_user_data(client_id); + int messageLength=0; + size_t end_len=AS_SSL_CHUNCK_SIZE; + unsigned char *end_ptr; + while (messageLength<=0) { + log_debug(" one read cycle started"); + recv_tb->get_end(end_ptr, end_len); + messageLength = SSL_read(ssl_current_ssl, end_ptr, end_len); + if (messageLength <= 0) { + int res=ssl_getresult(messageLength); + switch (res) { + case SSL_ERROR_ZERO_RETURN: + log_debug("SSL_Socket::receive_message_on_fd: SSL connection was interrupted by the other side"); + SSL_set_quiet_shutdown(ssl_current_ssl, 1); + log_debug("SSL_ERROR_ZERO_RETURN is received, setting SSL SHUTDOWN mode to QUIET"); + ssl_current_client=NULL; + log_debug("leaving SSL_Socket::receive_message_on_fd() with SSL_ERROR_ZERO_RETURN"); + return 0; + case SSL_ERROR_WANT_WRITE://writing would block + if (get_use_non_blocking_socket()){ + Add_Fd_Write_Handler(client_id); + log_debug("SSL_Socket::receive_message_on_fd: setting socket state to STATE_WAIT_FOR_RECEIVE_CALLBACK"); + peer->reading_state = STATE_WAIT_FOR_RECEIVE_CALLBACK; + ssl_current_client=NULL; + log_debug("leaving SSL_Socket::receive_message_on_fd()"); + return -2; + } + case SSL_ERROR_WANT_READ: //reading would block, continue processing data + if (get_use_non_blocking_socket()){ + log_debug("SSL_Socket::receive_message_on_fd: reading would block, leaving SSL_Socket::receive_message_on_fd()"); + ssl_current_client = NULL; + log_debug("leaving SSL_Socket::receive_message_on_fd()"); + return -2; + } + log_debug("repeat the read operation to finish the pending SSL handshake"); + break; + default: + log_error("SSL error occured"); + } + } else { + recv_tb->increase_length(messageLength); + } + } + ssl_current_client=NULL; + log_debug("leaving SSL_Socket::receive_message_on_fd() with number of bytes read: %d", messageLength); + return messageLength; +} + + +int SSL_Socket::send_message_on_fd(int client_id, const unsigned char* send_par, int message_length) +{ + log_debug("entering SSL_Socket::send_message_on_fd()"); + + if (!ssl_use_ssl) { + log_debug("leaving SSL_Socket::send_message_on_fd()"); + return Abstract_Socket::send_message_on_fd(client_id, send_par, message_length); + } + + if (ssl_current_client!=NULL) log_warning("Warning: race condition while setting current client object pointer"); + ssl_current_client=(SSL_Socket *)this; + + get_peer(client_id); // check if client exists + ssl_current_ssl=(SSL*)get_user_data(client_id); + if (ssl_current_ssl==NULL) { log_error("No SSL data available for client %d", client_id); } + log_debug("Client ID = %d", client_id); + while (true) { + log_debug(" one write cycle started"); + + int res = ssl_getresult(SSL_write(ssl_current_ssl, send_par, message_length)); + switch (res) { + case SSL_ERROR_NONE: + ssl_current_client=NULL; + log_debug("leaving SSL_Socket::send_message_on_fd()"); + return message_length; + case SSL_ERROR_WANT_WRITE: + case SSL_ERROR_WANT_READ: + log_debug("repeat the write operation to finish the pending SSL handshake"); + break; + case SSL_ERROR_ZERO_RETURN: + log_warning("SSL_Socket::send_message_on_fd: SSL connection was interrupted by the other side"); + SSL_set_quiet_shutdown(ssl_current_ssl, 1); + log_debug("SSL_ERROR_ZERO_RETURN is received, setting SSL SHUTDOWN mode to QUIET"); + ssl_current_client=NULL; + log_debug("leaving SSL_Socket::send_message_on_fd()"); + return -1; + default: + log_debug("SSL error occured"); + return -1; + } + } + // avoid compiler warnings + return 0; +} + +//If the socket is not ready for writing, the same mechanism is used +//as described at the Abstract_Socket class +//If the socket is not ready for reading, I block the execution using +//the take_new operation while the socket is not ready for reading. +//While this operation will call the Event_Handler, +//I indicate with the STATE_DONT_RECEIVE state that from the Event_Handler the receive_message_on_fd +//operation must not be called for this socket. +int SSL_Socket::send_message_on_nonblocking_fd(int client_id, const unsigned char* send_par, int message_length){ + log_debug("entering SSL_Socket::send_message_on_nonblocking_fd()"); + + if (!ssl_use_ssl) { + log_debug("leaving SSL_Socket::send_message_on_nonblocking_fd()"); + return Abstract_Socket::send_message_on_nonblocking_fd(client_id, send_par, message_length); + } + + as_client_struct* peer; + if (ssl_current_client!=NULL) log_warning("Warning: race condition while setting current client object pointer"); + ssl_current_client=(SSL_Socket *)this; + + get_peer(client_id); + ssl_current_ssl=(SSL*)get_user_data(client_id); + if (ssl_current_ssl==NULL) { log_error("No SSL data available for client %d", client_id); } + log_debug("Client ID = %d", client_id); + while (true) { + int res; + peer = get_peer(client_id); // check if client exists + log_debug(" one write cycle started"); + ssl_current_ssl = (SSL*)get_user_data(client_id); + if (peer -> reading_state == STATE_DONT_CLOSE){ + goto client_closed_connection; + }else res = ssl_getresult(SSL_write(ssl_current_ssl, send_par, message_length)); + + switch (res) { + case SSL_ERROR_NONE: + ssl_current_client=NULL; + log_debug("leaving SSL_Socket::send_message_on_nonblocking_fd()"); + log_debug("SSL_Socket::send_message_on_nonblocking_fd: setting socket state to STATE_NORMAL"); + peer -> reading_state = STATE_NORMAL; + return message_length; + case SSL_ERROR_WANT_WRITE: + if (peer == NULL){ + log_error("SSL_Socket::send_message_on_nonblocking_fd, Client ID %d does not exist.", client_id); + } + int old_bufsize, new_bufsize; + if (increase_send_buffer(client_id, old_bufsize, new_bufsize)) { + log_debug("Sending data on on file descriptor %d",client_id); + log_debug("The sending operation would block execution. The " + "size of the outgoing buffer was increased from %d to " + "%d bytes.",old_bufsize, + new_bufsize); + } else { + log_warning("Sending data on file descriptor %d", client_id); + log_warning("The sending operation would block execution and it " + "is not possible to further increase the size of the " + "outgoing buffer. Trying to process incoming data to " + "avoid deadlock."); + ssl_current_client=NULL; + log_debug("SSL_Socket::send_message_on_nonblocking_fd: setting socket state to STATE_BLOCK_FOR_SENDING"); + peer->reading_state = STATE_BLOCK_FOR_SENDING; + TTCN_Snapshot::block_for_sending(client_id); + } + peer = get_peer(client_id); // check if client exists + if (peer == NULL){ + log_error("SSL_Socket::send_message_on_nonblocking_fd, Client ID %d does not exist.", client_id); + } + break; + case SSL_ERROR_WANT_READ: + //receiving buffer is probably empty thus reading would block execution + log_debug("SSL_write cannot read data from socket %d. Trying to process data to avoid deadlock.", client_id); + log_debug("SSL_Socket::send_message_on_nonblocking_fd: setting socket state to STATE_DONT_RECEIVE"); + peer -> reading_state = STATE_DONT_RECEIVE; //don't call receive_message_on_fd() to this socket + for (;;) { + TTCN_Snapshot::take_new(TRUE); + pollfd pollClientFd = { client_id, POLLIN, 0 }; + int nEvents = poll(&pollClientFd, 1, 0); + if (nEvents == 1 && (pollClientFd.revents & (POLLIN | POLLHUP)) != 0) + break; + if (nEvents < 0 && errno != EINTR) + log_error("System call poll() failed on file descriptor %d", client_id); + } + log_debug("Deadlock resolved"); + break; + case SSL_ERROR_ZERO_RETURN: + goto client_closed_connection; + default: + log_warning("SSL error occured"); + return -1; + } + } + +client_closed_connection: + log_warning("SSL_Socket::send_message_on_nonblocking_fd: SSL connection was interrupted by the other side"); + SSL_set_quiet_shutdown(ssl_current_ssl, 1); + log_debug("Setting SSL SHUTDOWN mode to QUIET"); + ssl_current_client=NULL; + log_debug("leaving SSL_Socket::send_message_on_nonblocking_fd()"); + log_debug("SSL_Socket::send_message_on_nonblocking_fd: setting socket state to STATE_NORMAL"); + peer -> reading_state = STATE_NORMAL; + errno = EPIPE; + return -1; + +} + +bool SSL_Socket::ssl_verify_certificates() +{ + char str[SSL_CHARBUF_LENGTH]; + + log_debug("entering SSL_Socket::ssl_verify_certificates()"); + + ssl_log_SSL_info(); + + // Get the other side's certificate + log_debug("Check certificate of the other party"); + X509 *cert = SSL_get_peer_certificate (ssl_current_ssl); + if (cert != NULL) { + + { + log_debug("Certificate information:"); + X509_NAME_oneline (X509_get_subject_name (cert), str, SSL_CHARBUF_LENGTH); + log_debug(" subject: %s", str); + } + + // We could do all sorts of certificate verification stuff here before + // deallocating the certificate. + + // Just a basic check that the certificate is valid + // Other checks (e.g. Name in certificate vs. hostname) shall be + // done on application level + if (ssl_verify_certificate) + log_debug("Verification state is: %s", X509_verify_cert_error_string(SSL_get_verify_result(ssl_current_ssl))); + X509_free (cert); + + } else + log_warning("Other side does not have certificate."); + + log_debug("leaving SSL_Socket::ssl_verify_certificates()"); + return true; +} + + + +// Data set/get functions +char * SSL_Socket::get_ssl_password() const {return ssl_password;} +void SSL_Socket::set_ssl_use_ssl(bool par) {ssl_use_ssl=par;} +void SSL_Socket::set_ssl_verifycertificate(bool par) {ssl_verify_certificate=par;} +void SSL_Socket::set_ssl_use_session_resumption(bool par) {ssl_use_session_resumption=par;} +void SSL_Socket::set_ssl_key_file(char * par) { + delete [] ssl_key_file; + ssl_key_file=par; +} +void SSL_Socket::set_ssl_certificate_file(char * par) { + delete [] ssl_certificate_file; + ssl_certificate_file=par; +} +void SSL_Socket::set_ssl_trustedCAlist_file(char * par) { + delete [] ssl_trustedCAlist_file; + ssl_trustedCAlist_file=par; +} +void SSL_Socket::set_ssl_cipher_list(char * par) { + delete [] ssl_cipher_list; + ssl_cipher_list=par; +} +void SSL_Socket::set_ssl_server_auth_session_id_context(const unsigned char * par) { + ssl_server_auth_session_id_context=par; +} + +// Default parameter names +const char* SSL_Socket::ssl_use_ssl_name() { return "ssl_use_ssl";} +const char* SSL_Socket::ssl_use_session_resumption_name() { return "ssl_use_session_resumption";} +const char* SSL_Socket::ssl_private_key_file_name() { return "ssl_private_key_file";} +const char* SSL_Socket::ssl_trustedCAlist_file_name() { return "ssl_trustedCAlist_file";} +const char* SSL_Socket::ssl_certificate_file_name() { return "ssl_certificate_chain_file";} +const char* SSL_Socket::ssl_password_name() { return "ssl_private_key_password";} +const char* SSL_Socket::ssl_cipher_list_name() { return "ssl_allowed_ciphers_list";} +const char* SSL_Socket::ssl_verifycertificate_name() { return "ssl_verify_certificate";} +const char* SSL_Socket::ssl_disable_SSLv2() { return "ssl_disable_SSLv2";} +const char* SSL_Socket::ssl_disable_SSLv3() { return "ssl_disable_SSLv3";} +const char* SSL_Socket::ssl_disable_TLSv1() { return "ssl_disable_TLSv1";} +const char* SSL_Socket::ssl_disable_TLSv1_1() { return "ssl_disable_TLSv1_1";} +const char* SSL_Socket::ssl_disable_TLSv1_2() { return "ssl_disable_TLSv1_2";} + + +void SSL_Socket::ssl_actions_to_seed_PRNG() { + struct stat randstat; + + if(RAND_status()) { + log_debug("PRNG already initialized, no action needed"); + return; + } + log_debug("Seeding PRND"); + // OpenSSL tries to use random devives automatically + // these would not be necessary + if (!stat("/dev/urandom", &randstat)) { + log_debug("Using installed random device /dev/urandom for seeding the PRNG with %d bytes.", SSL_PRNG_LENGTH); + if (RAND_load_file("/dev/urandom", SSL_PRNG_LENGTH)!=SSL_PRNG_LENGTH) + log_error("Could not read from /dev/urandom"); + } else if (!stat("/dev/random", &randstat)) { + log_debug("Using installed random device /dev/random for seeding the PRNG with %d bytes.", SSL_PRNG_LENGTH); + if (RAND_load_file("/dev/random", SSL_PRNG_LENGTH)!=SSL_PRNG_LENGTH) + log_error("Could not read from /dev/random"); + } else { + /* Neither /dev/random nor /dev/urandom are present, so add + entropy to the SSL PRNG a hard way. */ + log_warning("Solaris patches to provide random generation devices are not installed.\nSee http://www.openssl.org/support/faq.html \"Why do I get a \"PRNG not seeded\" error message?\"\nA workaround will be used."); + for (int i = 0; i < 10000 && !RAND_status(); ++i) { + char buf[4]; + struct timeval tv; + gettimeofday(&tv, 0); + buf[0] = tv.tv_usec & 0xF; + buf[2] = (tv.tv_usec & 0xF0) >> 4; + buf[3] = (tv.tv_usec & 0xF00) >> 8; + buf[1] = (tv.tv_usec & 0xF000) >> 12; + RAND_add(buf, sizeof buf, 0.1); + } + return; + } + + if(!RAND_status()) { + log_error("Could not seed the Pseudo Random Number Generator with enough data."); + } else { + log_debug("PRNG successfully initialized."); + } +} + + +void SSL_Socket::ssl_init_SSL() +{ + if (ssl_initialized) { + log_debug("SSL already initialized, no action needed"); + return; + } + + { + log_debug("Init SSL started"); + log_debug("Using %s (%lx)", SSLeay_version(SSLEAY_VERSION), OPENSSL_VERSION_NUMBER); + } + + SSL_library_init(); // initialize library + SSL_load_error_strings(); // readable error messages + + // Create SSL method: both server and client understanding SSLv2, SSLv3, TLSv1 +// ssl_method = SSLv23_method(); +// if (ssl_method==NULL) +// log_error("SSL method creation failed."); + // Create context + ssl_ctx = SSL_CTX_new (SSLv23_method()); + if (ssl_ctx==NULL) + log_error("SSL context creation failed."); + + // valid for all SSL objects created from this context afterwards + if(ssl_certificate_file!=NULL) { + log_debug("Loading certificate file"); + if(SSL_CTX_use_certificate_chain_file(ssl_ctx, ssl_certificate_file)!=1) + log_error("Can't read certificate file "); + } + + // valid for all SSL objects created from this context afterwards + if(ssl_key_file!=NULL) { + log_debug("Loading key file"); + if (ssl_current_client!=NULL) log_warning("Warning: race condition while setting current client object pointer"); + ssl_current_client=(SSL_Socket *)this; + if(ssl_password!=NULL) + SSL_CTX_set_default_passwd_cb(ssl_ctx, ssl_password_cb); + if(SSL_CTX_use_PrivateKey_file(ssl_ctx, ssl_key_file, SSL_FILETYPE_PEM)!=1) + log_error("Can't read key file "); + ssl_current_client=NULL; + } + + if (ssl_trustedCAlist_file!=NULL) { + log_debug("Loading trusted CA list file"); + if (SSL_CTX_load_verify_locations(ssl_ctx, ssl_trustedCAlist_file, NULL)!=1) + log_error("Can't read trustedCAlist file "); + } + + if (ssl_certificate_file!=NULL && ssl_key_file!=NULL) { + log_debug("Check for consistency between private and public keys"); + if (SSL_CTX_check_private_key(ssl_ctx)!=1) + log_warning("Private key does not match the certificate public key"); + } + + // check the other side's certificates + if (ssl_verify_certificate) { + log_debug("Setting verification behaviour: verification required and do not allow to continue on failure.."); + SSL_CTX_set_verify(ssl_ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, ssl_verify_callback); + } else { + log_debug("Setting verification behaviour: verification not required and do allow to continue on failure.."); + SSL_CTX_set_verify(ssl_ctx, SSL_VERIFY_NONE, ssl_verify_callback); + } + + if (ssl_cipher_list!=NULL) { + log_debug("Setting ssl_cipher list restrictions"); + if (SSL_CTX_set_cipher_list(ssl_ctx, ssl_cipher_list)!=1) + log_error("Cipher list restriction failed for %s", ssl_cipher_list); + } + + ssl_actions_to_seed_PRNG(); + + if (Abstract_Socket::get_server_mode() && ssl_use_session_resumption) { + log_debug("Prepare server for ssl_session resumption"); + + log_debug("Context is: %s; length = %lu", ssl_server_auth_session_id_context, (unsigned long)strlen((const char*)ssl_server_auth_session_id_context)); + if (SSL_CTX_set_session_id_context(ssl_ctx, ssl_server_auth_session_id_context, strlen((const char*)ssl_server_auth_session_id_context))!=1) + log_error("Activation of SSL ssl_session resumption failed on server"); + } + + ssl_initialized=true; + + log_debug("Init SSL successfully finished"); +} + + +void SSL_Socket::ssl_log_SSL_info() +{ + char str[SSL_CHARBUF_LENGTH]; + + log_debug("Check SSL description"); + const SSL_CIPHER *ssl_cipher=SSL_get_current_cipher(ssl_current_ssl); + if (ssl_cipher!=NULL) { + SSL_CIPHER_description(SSL_get_current_cipher(ssl_current_ssl), str, SSL_CHARBUF_LENGTH); + { + log_debug("SSL description:"); + log_debug("%s", str); + } + } +} + + + +// Log the SSL error and flush the error queue +// Can be used after the followings: +// SSL_connect(), SSL_accept(), SSL_do_handshake(), +// SSL_read(), SSL_peek(), or SSL_write() +int SSL_Socket::ssl_getresult(int res) +{ + int err = SSL_get_error(ssl_current_ssl, res); + + log_debug("SSL operation result:"); + + switch(err) { + case SSL_ERROR_NONE: + log_debug("SSL_ERROR_NONE"); + break; + case SSL_ERROR_ZERO_RETURN: + log_debug("SSL_ERROR_ZERO_RETURN"); + break; + case SSL_ERROR_WANT_READ: + log_debug("SSL_ERROR_WANT_READ"); + break; + case SSL_ERROR_WANT_WRITE: + log_debug("SSL_ERROR_WANT_WRITE"); + break; + case SSL_ERROR_WANT_CONNECT: + log_debug("SSL_ERROR_WANT_CONNECT"); + break; + case SSL_ERROR_WANT_ACCEPT: + log_debug("SSL_ERROR_WANT_ACCEPT"); + break; + case SSL_ERROR_WANT_X509_LOOKUP: + log_debug("SSL_ERROR_WANT_X509_LOOKUP"); + break; + case SSL_ERROR_SYSCALL: + log_debug("SSL_ERROR_SYSCALL"); + log_debug("EOF was observed that violates the protocol, peer disconnected; treated as a normal disconnect"); + return SSL_ERROR_ZERO_RETURN; + break; + case SSL_ERROR_SSL: + log_debug("SSL_ERROR_SSL"); + break; + default: + log_error("Unknown SSL error code: %d", err); + } + // get the copy of the error string in readable format + unsigned long e=ERR_get_error(); + while (e) { + log_debug("SSL error queue content:"); + log_debug(" Library: %s", ERR_lib_error_string(e)); + log_debug(" Function: %s", ERR_func_error_string(e)); + log_debug(" Reason: %s", ERR_reason_error_string(e)); + e=ERR_get_error(); + } + //It does the same but more simple: + // ERR_print_errors_fp(stderr); + return err; +} + +int SSL_Socket::ssl_verify_certificates_at_handshake(int /*preverify_ok*/, X509_STORE_CTX */*ssl_ctx*/) { + // don't care by default + return -1; +} + +// Callback function used by OpenSSL. +// Called when a password is needed to decrypt the private key file. +// NOTE: not thread safe +int SSL_Socket::ssl_password_cb(char *buf, int num, int /*rwflag*/,void */*userdata*/) { + + if (ssl_current_client!=NULL) { + char *ssl_client_password; + ssl_client_password=((SSL_Socket *)ssl_current_client)->get_ssl_password(); + if(ssl_client_password==NULL) return 0; + const char* pass = (const char*) ssl_client_password; + int pass_len = strlen(pass) + 1; + if (num < pass_len) return 0; + + strcpy(buf, pass); + return(strlen(pass)); + } else { // go on with no password set + fprintf(stderr, "Warning: no current SSL object found but ssl_password_cb is called, programming error\n"); + return 0; + } +} + +// Callback function used by OpenSSL. +// Called during SSL handshake with a pre-verification status. +int SSL_Socket::ssl_verify_callback(int preverify_ok, X509_STORE_CTX *ssl_ctx) +{ + SSL *ssl_pointer; + SSL_CTX *ctx_pointer; + int user_result; + + ssl_pointer = (SSL *)X509_STORE_CTX_get_ex_data(ssl_ctx, SSL_get_ex_data_X509_STORE_CTX_idx()); + ctx_pointer = SSL_get_SSL_CTX(ssl_pointer); + + if (ssl_current_client!=NULL) { + // if ssl_verifiycertificate == "no", then always accept connections + if(((SSL_Socket *)ssl_current_client)->ssl_verify_certificate) { + user_result=((SSL_Socket *)ssl_current_client)->ssl_verify_certificates_at_handshake(preverify_ok, ssl_ctx); + if (user_result>=0) return user_result; + } else { + return 1; + } + } else { // go on with default authentication + fprintf(stderr, "Warning: no current SSL object found but ssl_verify_callback is called, programming error\n"); + } + + // if ssl_verifiycertificate == "no", then always accept connections + if (SSL_CTX_get_verify_mode(ctx_pointer) == SSL_VERIFY_NONE) + return 1; + // if ssl_verifiycertificate == "yes", then accept connections only if the + // certificate is valid + else if (SSL_CTX_get_verify_mode(ctx_pointer) & SSL_VERIFY_PEER) { + return preverify_ok; + } + // something went wrong + else + return 0; +} + +#endif diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/6d/90a3c3d3978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/6d/90a3c3d3978500181c21d10bc58219ba new file mode 100644 index 0000000000000000000000000000000000000000..5751e97d77ed24423b9ef6b9c3a138cd7b9dcbdc GIT binary patch literal 375992 zcmd?S2Y6M*_CCDlBqZk$fk+n+BF#t%9YPN^A%sBaMF)Bb+E3bFN z7|;J_ye?i)^0l7#;{|10AxoqzZ@;%sxLr{0ij8(z*t%J{2lAd)?uER!m9vrOSh)}K zTr2lQo@eEL$n&k-ANc?)7a$*qZ4kD>RyPFsP%95ZKHSP9Y(5hCC~Rli@@V8^uoc?! zSmfiZJl^I-HlKjJ*vb=;PqOl4XZ1<-Jr>eZ z(duQNty^$x^|H@Qg>&gC=c3L?y<<#PEj#wdAD&m?Ty{^+MQx}HuYOY+$9R&4A4#=pq_hLisnePm=b)Bh9aj+;@uXx7|m&F0N5 zYBqh=q)Ekd=VcUe9pS%blV{B+ZnkjTq`Bi}&Tr<(^P0_{GJo7mO*4vS%`I-$XXd>5 z&epM_{7n9}*hi|02hnl-a%!Q8pUGmDCq zTS}ecci#Nzg|o*^p~u20>;YJKJ%{w`H=?lnklwv}4fN&~Pb@_2-jqo*(M_I

W*X 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%0DXg`_b|{ZqH-n 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ßi#>9RHrd zmHvkYZ*cmYhYYUtj~RUZCb{1G27lyW!72YCy|h2OKP2P1tHG6iAA|qrA^H70gDd?( z2LIR{(tf|eU$|KCl?MOV(So08@bj+}{9J=)+_`*$oZXM1!BPkI*eNxY8eC@Y&bPeVuA>rT?nIS2=#*dV?$dtp@+yPSXAh23Pu5 z4E{5xNdAO7$L#%n%HX~GN&E8*uI(RW@ELc=_?%#Hr9au=SDz;BUt@5kzro;JkntI> zzZhKUUo`lPKTG>tZy~?4_q&6^KkgLavkbno<8S91e4l?x`-29bxk9dYg27*XLhvgL zzWG-LzuMr>O%nWf2EYFgg8$jzhrA*9e+~Z3w*+5jOL^CE`1Vri|ECQ8zO$!%+Tblt zPTSw$6;1&^%i!&AOZ!I{e49(8AFT%8`pbfU*5H?2C+&Q};M=Gv}D zq)ny$1qN68CWHUe=+JKrR9a}BQabp~Jm4WS=2xYD0s@Q&XJ{kILS^xrf1 zHf$x&WPWY%T^v8~fWg1%`tz#6mHusm@9yjoJ8lylAEn>b;Fo+=#%->_mA=m4dw*8i zJ=Wl@)q*cK_$~EwWrHjI>jwYKsY1WYw(_p? zN9p%6_?bU&<7058uQT}OPYC^>!Il05gFih^=&v;RY3`i-DB`} zH{YHx_@YnBbzd;}r|JcN!{8IHl=eR`c-<7i*Kv*)I-XZJK4G%KfB2Bl&osDRcY(q6 zx`!D2PX|apk23h?|0nH#)!-BE7W(rIe&Uye{(A=3{#`mkmC5vEb*X;1?MDtsl#MU2E_Me=F_WX7J0L9q0Ec_@52_;{DS8s|N48 zT-txz;9qlo7bV-v_xij(yN|T9slhjD5PUm>EB#IefBhb5cbdT`Hc2}N82pXB1#d9; z%?qWSLkzyc`K2s1_|ES9J=WllUM%gLYH;oUnFc?=@o$$JTz>F+l9 zW>*XS(*{@izZpDpfsD@w2G@DJjrKddV^iul2o-OU?41UJ~!RH(N z>+XKr46bs=F$RCZ=@U;j_!drH{ffcAwz*vQQiJD@kbYlb@TE@*{-DA8CJO$r!9N%f z{O<;T)9KS*GkEJ+LjNCw->{zabNx@r_d1@6Z({JJ2MYbC4L2h~aHT)h;Kw=r$t4EA)}3FM z8~mrc$bDTgUfy*)@B4=QeO(HElfm!0NBa3YgO7V(+IiC8NBv6Z|7P&R+`03b!5=?a z+WD`+b$zY9lYFoJKgi9)9S#2UM7i$X2A{jO;L{9#;~~=SJcA#6ui%FpT=lvw20yTW zE&jpr2H)*I!Ou7N-<{q3#|BqE@J54g_zh|2PX<@JmB5&6L?i#t2)mkhqeMM8hR z!MAnm{St%!#_6N3Gx+BlrJb7%zK^pzKW6a4?`0hRYVa$a-sWY4|EfmlSA04;&L=tk z=M;mh|LQjku6*WY23LRGs|~LHt2Z0`9JgQGZE*G1{e!{x`i=DaQG+`(e&#iUEB!kL zf6)1XY`trA94>lG#(xKcZ}%<1CmUSt?E4%1;{OPJy}=K2{#pkc{P|Oa{uqNFu(jZW z23L7%mBF`IYaHLu7Y)Ai1Jce{41V}kf`8rM>Q{WJ!H;tL`Hu{)&+8_GpL~vt@2?E5 z{>cv-yvfbmhYh}iJ1_oiaHW6G;MdKT``UE3=<`*-i>(ZP^SVO6kHOUsr`+Hx=1IE; z8T<+N+?N}?*6A6(Wbko!N;^L@_~Snm{5J;woRd2qF!&ix&+;dOe|l|c=UIdQVLSe!tTLth2kcr~7k@_^OWyKFi>*enI+EZ}7AKF8C1!zh$Mg(`xW%zbo{|8(is6GWf37 z3jKu!S3dAEgKzq<(Er@vO8+Z^|K)E&|E$54{sn^<+rToC=2G{dt2ZQVR zzKg+s^P03f-QY@JW$@=6Uv#v=l^SIANZ2N*IQ5ebH2fqAGpNe?>j$< z>kO{^!0iTCe&8O1U;m_B_aTGtdWzsr8(i1j%LdnV_qM_R{YPo1WN&%j0BjQ)T$;ta4ck;K6v&!k)82q5uWE}Q3xYCyye5bk6 zpZNw?x&9!7ue@C7I}Lv4O>*7k1|KX4{pSsSyu-g@@Vgz~c#grZcJlt^25-1o+W(Qk z$A3%kCk=iW4Io~x8vKO!1plwWcXZcX+sXYp{#ED5{cdM)rQgZmPc4)7ryBfDr_Y^Z z@YmgaH5z<#r?1Z&{EQ}Pzun+pbNbKa23PtM4gQ78q@AxDT2Egp zTXzZl9}NEW+hjbSHTWN@g#HzS-}5EGH``a<^|>s5K>q%O!MiG?{k;sX^koKL^=oNo zzQL8g!Qi*PBkdn!aHT)i;7gtT?@WU?y)4%~+u%1l{^u%#>$u%$@Rsq?pL+~`_~C*- zY;fiO|7vjM+g~$yms?*S82ryyO8+-1m3MtEwa?4npE9`W6G{!P@v!?FT={`{23LOL z2!pFUTQIoFp~xW5FYTws!=7Ytjh{Ws;CJ07zyF58|LXLCR~uaEuQ&MB|CQ%*zroet z=8p!S=k}9-82r&XY3B`t-}rs$=SJD+{qE`f6Sgq;j!q8T+u%1ieRa9PJIbWp8iRlD zXVRZWgWq$4(03aAU^h?t4gT<7h5j^yEB)C9-_+S1t}=K_i}dGOgKyg+?f=H$O8+~9 zcRG9b^9KLX&!wGz8T@J2{(5elbiOJ5CI&y@bJEXU4c_kj2KO=ezBO{)oWYg8#^CoX z75X-Vzki?LOATJ`{K`%;xYB>c;47S;_N4}I?vwVfH29Wo{@-fw$DCc`mj-|ODrx6o zgSWW({FK4pclhfDSNeAi{^J$W{wC$}uFq@d3G(+=2EXlT!S^t@(w7?ibjRn-GPsV< ze1kvyg0!DExQ|6qfcv*QEUoCd>CaK1#p2 z!N0Vf(C=$-rJro@=k^o&I)f|yB7=X->AialuJnTjfA0 z7K3*{x7^l`hU5h|J9aq-Cr4e($#`LX>g6t{j0&Z zbM~zF4X*TSyLF@eslG+p-`?OFpS!ccA0H6<&lp_kXBvFMbwYob!8N|J+2A++OU7q~ z!PSnl%Ha2WR_M<&xa#G;ZSd^3r9U?qT=hA(8NBOmY5&g#fAU~y=ShR_?f8T@4X*U> z8+_JcY3Gw}o#}JY_??{${=s|FpBV;M`kcY*onF1g;7VUG_=zqq;1q)^{TT*tTwnTs zwZWDCdV}}wDgA%Q;2NL%n8DvVUg-a2aP=#A)8IX43;h=R$-9oH(tpz658fbjQw;vd zD#2$MeD`PMeh)YJhFb}Ji@~?KK=98QTzdU9W{8GNE!kDGo*`laKk^jjNz_OU`&Zt%Nb6?{L7|3&ZygX?~NsKwnm zF=%kLbDd!D2VA_s`36_|OANmJ73t4y2EXTE!S6Eo4~~~{d)DAe|AN6k`FCk&-RbhK z<9YfH^7p0&S3Ti227k@TM>`q(k$KY2o(5NY!8C*4ca-#hw!u{|)L`(x{!8fd2G{&% zOAW4epW_TZy-xahs>Pk-&Q}e-($QaP@ac~JN`oJNjP&ykgTJ+>T=&-of6(boo-+7p zPH*`)gD>7n+JE2RKeiUy2_#uB1`Xdak z^sNSe!}-~M&fwSlP5OO`!6%+B_@xHF?+1ckY4BSgl>R(q@L&8{=$|pT&bNOUT<6=n z2G{wv?hI*9$64pw#|^Ifz?}`Q^RU9;H#)t|XAFMA8FIZ^gDd?)gTHvB(03VJ=?4t{ z_A(i_(+z&f&4Pc;;Qzf>+P})+I?t~)_}`u1#jg#n^ZWsWPdQiG|C_;e-u}bj-+fy8 zxwf2p!~4GsQDN57lFb>2=icy1%gU%vP{v80*Q!qm{niFoz5Q+mKg;?5mm6I5^RoeY3&UF3@Fg z)#tA;xa#vyGx#Ob<$k|s@!w?lb&tXS{*K@;8vMpTNIM%;%J({+@>eEPZtxA>l5ZLe zzRsJ14;uV)E>7fpi?3RXfABMdzv}eiKR5VsuL}Jm23Nl8X@kG+V7+mcjwFZBE9O(uJorHe9*~v-#7T1 z^Q4`74F1x-f2CjQH+au+(*6ks*SuRN8+_?+rTq&Hu6egEGkC*Fp}*PSns@6?gP-B_ zb&ncc^$gD#{L0Iu|L+)F^$eL=a(#U+HE#ZIV{p|o>}c@A_LTOg7+mu{%`o^>$KM=o zaHVfC_uJo@MJo`&&f8(6I>$oZX zmIi-2EA8)NaHX#>c%|br7a3gXk2Lr>4@>)>Gq~y{PBC~%yY%}qgDd@220!q1p}*VU zN`Jq>CmtvCFBx3vUo-f7UlaN*oxW4YQ}tBa8NA!sH!BRTdX>)@e4^89*BM;(qKgdv zmeZ?u8+8vKz}f$MwP={pVHxtp~AWrM38 z<}8D+cv#y1p~02@I)gv&_}Ei!Ed=%=ub5G2UDc| zuNYk0xx(PepI>Kim1plT_<1Kt`*$1srn96!j~iU+pEdX?gVN4>20!*0X=kl!dDnGu z&09jht-+OkM}t3ksr-J5!7rL8`2Gf0zmSCnSNg*ZeumS(oM!NEA1&=)Wbmgh5d1QO zAN6s$uj>u2^tTv%&po7_hYYUtj~cveFQI?k;7b3F!FTwd=I-*@Y!*5FFtWbn1ir9X=ezJb#lYkbTGxZEN5ce|JZzKZv(v1{VM%t z27l*hq2I&cN?&U5b5{ucT!X9JRA=ysXAAvOgDZWX!8dkt)0qap>hIFdxdxwGC-{#H zuFw5;gI75|^Y;ed^8jh*34?#_48dP8xX$x`8T`uQW!%TrM8{w0*Eje**Gl{24X*UN z8ob4=ivtX<^f`kU#*O2S9A$8&Z!`EIRnni&8(in}mkfU5+j5`h8(irxHhA9`gkJ6E zIzRP!-DT)?ojzpnE3T4u{$cRt&YtqV!L>gn3*>it-R%#OzqdBH(r<6@f4F^SUxPn* zv9vSE;7{ZQpKEZXuQm8ttwP^ya9xj!4StH#!>ly8(yuc3I(tj|7a3gXFEjW*Zx{Mo z46gKd8houQg#J;3>w162;Me?9=-)TE(yv`B-|O>w^JDV&c!TTyu$#f(__ECB0}Zb8 zt-;{BKP)l$b54Fa-r!%~U)n#(;ODK9eqLm7rT>n>&-#PV-)3+fhr0}Z(GP|GS%WM6 z3kJV*q4aZIXQ$HfRC#S)k%NkHPQSOXwR7uH#uS_>-R$`ay#$|9O(Z z_t;YC&oa2uf6w5b*i7#C#|BqE_BMknAA66%vvR2%$2r)O(1xXzP;!B2Zi+CRnMN`HpIk8<<> zDuW019fN=G5E-A}7+mc;zcYAGsr2Vx20zc~E7o)Sw~prn7YY3)25)oM-PPbqzmLJ! z`HQqO+u)i{W`V(fd8W{}8~kOr|8yGsMz@chZ18_vF72FV@FQ;){5uBM_4|E;7o7g> zE`#g5y4T>(^viSko5A(D|HI&4_?FOb;N)f<|NEVuWHW>B_JH(%p1~&^Ecn3&*LB@y z@ZQhMb&oZ;(w}JXyC(?!X$DvN^9+90E^eF+{(zIqt~R*t8#ftT?Z0;!dED%-~Aj zZ187ZmiA9D_&@$B?VN7#&%7e^-!!<6!<`1dd>x^Gz~E}vd)naoyk0iA#`(T&aJAp9 z-6Yr1@z=QB4Gq4_BXVCm8(iu4H28kM6#6*^*Eru=gWq|e&@VQ)>iN43e!we2|9OLJ zobRayU-GWp=LH7ewM5#v)Zn}ADD*!!xa!${WAN&K3;iDruIuY*gX{Bp$>6%a-ZZ$b zugt>e^Lotr1+8Q73!jzy+Q{I4I8A=Pm%&vYsWA9w-Trof!C&c>cIFv8-zNA$2LHk~ z(w|;~Dg)W z90VjP2nYyB21yE%GbmAs5+q0v2?C;|Z`RyTxr_hS^X_xbd)|G%xh@&!x1RM>b#-@j zRdvrA+b=8OuKr)bUH!j>yZWDk@93-gUw~&yD}N4m^-tSKue2M!QF8<7Vdsea5_A}8P#VNe9>y{$JKBb zzXATx?wcQh$F%$YC*XJ5tK2*Akh&`OA^f(T7s>7V?Dm(7PYYjFTKS8^UB6cre$&R! zZ^K=`7Xr^+T=|EJb5tX6s!8;BVJa{B-!BUGmxR9Er5QHo@at z{vGhIZ2kNKd~R>${|UYd7J8pM{(D(HQ^V^AD=s_SokxY??mQ|Fcjr+p zxI2%U!rgh%3O>8F>JtHX@dMzeZ9Q}{+?_`=;5jQQ{}*s~9(@JxmqYD*6zK47`(l4p;uE~B@2)-Fd6XPJ&F+)tg}d{p zDBPV#mEb8ORNhRv%eB4B;g7Aq`wH&Hdxzj|ymt!Tq^sLy+n-^q(yZL)g`0yU8XBoJQuLwVLGbrk-8QjhHTfxIKM}-IVgS+|rd+=@X zRiBw~7e5#N&Jo3LfxG$sF8Hli6#o<4&G&D?2PIZ~{MJEHU#|V#d_O6?ZGOe)hP!pk z0`O1cDsL-zTe}a^74ANVtv`IpoM=&r2En@*QU1wr7ymIlMF+*NhKG-qZ-8Ge5H0G3 zLvR=W9ehS?<@p)jDE@5^Jf)pyta?(Z_Bg=e?>iP_+%?77*(@crhm!=JWRd3E4x@5-maL)UA& z&cSQEruaMX@XU(;4L;R=|MUsGf<1o~*VfBjJB+p8|H=ZtVCx?F;BNk03cmcg>RAO| z)7C5M!c*J2&D-#Cd9__#;N=%6|2y!JTje9+d3(qw!)M-7{yFfQ8x{XGe8Cg>UU;Et z%5xIFagO3I!E4$6y$vt;f$}_tkJv4b6RLb}e@$B}PY!?gs^T)iTiE;}FZ}FT#g~A0 z+ApsRpFc-l7d|t({B8ITmZvj3?JtV&3qNW7z%Y0{JN`d}@7SSsm<^w4&y6gFZ?fb6 zOZZY7=kJCWw(IOMc!_2z_X50TN%<{!GFylI1O8?f#m8x<_Hg@mnQd^u z&m+aP@r&E8#`Zj4Hh7(q%2Ntn)ABcif4y1t>EfA z0sq>@MX&yiSB5{Fpz><`jkkf{9HJ{6zJ+08eD=MK|H@ z@6tVlPdcu8M(g%sd%kS<-xI)VrBZxq_?XLje^&S`yB_6(*Uzr_lJM3Cl)n;usI_Np z_}A7iHHG)G>vsrzYHF3+9UfxONA`zjwDH3*cpsa;Pk=W_ulmn{zqCT-E`f)K%h$tW zFPHCt7qNcnJ9wYfD)$aNvmFnQ;otwP{ITu+tvipB%u=4D@Q&9Np8?+Iu;O#VKOCs| z!tkRuKdK48X!FOq@c#XjzcIYmDCKVnACO(~ZQ)@yKIsUbX4jGK@EETuPcQfsyWcqg zK4P!p$HT`=Rz0V{uiAZt8St-cyFP`V$fZ1M;TyWC+>P+mL*(1w74|649{9?%icewV zGIu;=wEdn5{z?|*$pg>TS$T@V@7lPo0=!{Q<*5nJ@xHtfys?d!TEkbzR=Hi^rDDnZ zz&B=)4}n*;{W}hR#?}d^!!yTGo_X-vb{;Kgvbp!75#IXL=?U!0{RiC8r z_cF@U!Cjsr@V&EDpV#0y5-Lv!yk$DY4}rJaBp>xRJ`;Z2@~ncNGT#lam0$VKz`xrs z&urIW*FHIIep(!!sjuSe!VkN3V|depYKO7#i*}t|3a@4Bz~91aTb>K>wzhutGyLK> z)$QS)-}A8RO23;2Ln<>By3S>zwWo7?qq8GOY?wa;Go2s{3N zfakUKiYM@=N0cXhZNx^l>{rE4g2%h4_}TC_Hr`$WU+}K-+<;HAcDoHPZ~fR~_)vS!CQcvabL}~AxayM} zo+_UFW%vZUj=Rq#a(PP6RD3DKzgk6J89v?C)82v~{zmcb;MEGN-aX(~?7A}$e#*|1 z5%4}Om47z8f~`}nfnT%rz5VbBHgCNEKT$&YAHaLvRQ=;yf8*LM)d%ud;Rh_f7JS|e z#kYfRT`eC2kM%&l7{0-dll}0SHr~4lZ(34$qV>~vSO2UP^>b=?$Y6Ok_;8Ca1+P<0 z?N$>$$Hob*;AeI#zCZlU1uAzee9tlYJop7$57`S}VC#Oz;CFke+-vanjw*kQ{`&6P zr{W3yoCu!M@}GyNw*7SjKG(*9F$cVuf3ltDnc$mjeW^6OOcuTWE%;Si59tKY^1b5U zgD?0+z7l>ev3!$xptTZ+qW;~5`0tkK#Up>?C*WVauK3^Jv1}bUhOJKo%8jYesDBff zyZurxu3k(7e`@2X?C`uX6kiZNKcl=XeCZT9&4TQjD=UNBwquMXU})- zhIbmQ{0HGbcaa~3A8DifC*hw~l%IoFS|q;=k6v2&Z^FN+F8>Wa!S1ufuyK~#?*rm1 zJ~9008I_wJp3}zjIpGKG{$mmN?`@U83VepGU)6yZwDxQcFS1X0+QFm!AnySWu}*Oy z{Fsf?M!=KL(e{1_zq(iXKY?eeDPIIH`@Z}O_|pl>zZss;)?xO+>vvS1{ zwsoN!@Vqu|e*m9t_m6_C|8U2{cx$)#@cDLrrGh70rFv$8zij=_tMK`o)D9)!+iV{C zI{dvI%Ks+({2=9N0N8n^Hkm859TRPZ+Oc$ zr?dImLU>UjoU_A~i4cw(EcJ%F!0tagY#NZ(z# zHLd?i4A1tX;xfRe*}OG3ywM-3PeFK%7@7cAf63QGEQt z`tJ6li%$lB$@@WXapD-5q`^T(QS_xUaL;J3D`9^K(CzBfFE^*@u~F8*V9$-o9i zeyxYQ&->jB-#JzBN8uSyM~iyl6x_Ojpu6x>jTHX~UUaTJ$q<#}+P`xud209sJAMkl z`#sb9i^C&k%4@^jJh37C$WoQt5q>|d@`S-B*?4axJlYqE9}lnlihL3LOmUUF0{%^N z#qWh*v3b@Zc;;fta|<5J_Tzo{k=)9k@O^!E?LR1$eog`JXXC(p@DD7$D7>Jp)7FE3 zS5Nh93Lm^h<%YvI;DVGU3@9{^tYA28N6vcc{lhH8xQq@uNbTN zQSiK%ZPsOJ2o)4{wxQ zej8rV_TxkN&*>GPe7L^5_Wad8zcd|u+jhkjh7YiEOTm||QT^+|C$^I}g?EV|?+Py* zPvu6yf3)LcEd0A(ik}28V%PVj@XR(2`~seIzUp%Zej%g$NBGmmD)%vbhxKpKZC%i{ z^O8c!lMa6Wj64gx%nIc%55H~Kg*V_Qb12Uk`1nudGvI|9$}hsx-jd&f-`lDB{0>jv zR`Ib$>UFoh)l$fl!cV@XxNPuFcAd=+?_>2W0*|>(`76PP*u1_me6X#vwSni_rTTP( ze`nXb;c%CKEPS>-7c>X%;upY2wp9JMz+L<<_@{Os{2biHUxvrD`aFfZ_!#!O+h5(X zs2wuEN7hn3v%+Uom6w5^v*!;g!cz`bd{cNYyPgKaM=eu)ANa*m@^|3TZ^);>kM_}a z&45?1=McVtx67mWFX7X_Q2y`XE3Yd4Ec{U;`S0*>>(8IV>n~LP45Rfvw_n`f9m@)z zXV>5I@Zpxf3jEk>%HIawAco5803TCPJ`6tfvV07@_&WI_xND!~@QXzie*o^b_Xs>) zM#cXEciVd(-mSj2H|ZF?@1@9ZO(Oqu?VlR{i|xmvaJRjs;RBZ|Z)3P?&zA6Zsa2o; za5ujj1b@&#@t?q5{5*JRyY6g-yU&Z*4bNxoc?sUNhPLZEe3;cg_E^2{+A~vE)iVM7 zs(Ehs5?kjl053mHd8@*s+c^16_^sqBcMQCojq_*1w`5WLTzEtCMesy6k5~@x5~e(B z;8pFq{1rUMD8+AuyWjiW4d3@j?Qjr2c2Rj|!CN(zuYw=`Ouio8vZwNY3vc^W@yFo@Y#s9^yuOY9@4_eA zcsT9{D#z`w;EVb>5j?Z4$L4`|vH4>`_}bdaQwi>ltLpF)aTVVh?)ta(@Q9d-e;@Ah zkAki5KM3F4TKnY+e4E{`zX@Mt^SgL<{JQqv`IGV|hR+_R z{5j$4lF9SIquaQv3jBFv#n*)QSs)LGyZKdL_@M@>=LC4k9?CNn9^OpxE8uf~ldpxx z?kYb4Pd!KZe}GRItoX<9AM83F&F)9JcAgxpJk{al?0$Vi^FUPKP^+NyLD?qie_S5- zdlLoVNuDaM3_O$FPj3Kse{ZH0{1sd042PGs=cD?u<|5!*eE3p2G0NA1b~i{90OhdHDLl z%2OBq`z(25_zJrZ^)~!lJHNu<*KA(j8-CaBYrg}36kGKi4-f04`b>fUu}wY`{?z)- zq!pCk=o^$XGc3r*< z580vk8}Qh-!Vp=fmMU zb18l-{F?R8AHo-YqV|~%uW94PS@1YEj+zh8ab0;9!%v2*J}codZC<(#J}H*sH^Cb} zQU2}l<+hHw7ha&f;=hI0nWy~6;gbp|{xtjtyY63r53=jRRrn>FfBg)PeO3AI!ROlb z>k+)p5*XpyX0x$ZS8r{Z17GtzReF$vrqLY1#j_=@>hnhUa$DK;O_6V zHG{ux?Gp;$qclNb@HDnQGXUNow%#xt9&%dsoCyEej-P4pb~YYZ2;bFPd6vPuT05_Y z4~(w(ui+Q!$-jXYwCmR~_(L17{s2$1Qh6@HhuFOPS9raXYMzY~1ILtJ3Y1 zKOVfZtsf?bm%69;wD8w$Je(Vz-Ja_x0ACbc^(h8VkW=}~z$gDMuLUn?^OSn%u zQ@O?Ao2n?j9DK)C#aD&rZld_w@V)~S|2Dj7EX9Yyf3x{WcX;c$iti2IG+jO%zUz0D zI}YBhv-}fy-edCl@YHkV8{pO6RJmK=JJ%}y82s1*`Dyr&-SW%u*ftKo3GZ*?y_g^A zeeQU;nMgm!hxfI5=7ukQuKE{*Psk;&0blo~^4Enw8K?M8@Pq5*J>VtQE6-^7I2$KV zgztP^@r&WjODO*;c)|SgUGQ1@06+Ic<^BYJkYD~7et3{P`p5e2_DhYk z`Z)o7P+xg+c-^M*jPT*sp=5_=w*Ipyd`voRR~dNce#&1HzR!-&dhq2H6yF5C#m?(s zc*zDTHx&N$Q+XHog$K$%5FYOf`TOv@w(c<-{zo3=UklF=A>RbwkWsz^{&{_syC43R z9p`7@i+)p{AK@R`b@MlPZOi`*o~5YDO*2E^-SP8vPW_w-9&@L>D7?6hm&(A?PgXrE z!fV)dxf(qCHRZ1j@AI>~A^d@@cLl?LY@~AA!N-=7cY#+ssr)_R2kd$=6rR?u*JI$_ zmnqK-_-gAX=fZcLR{VPSw0WxMX86WZ@}2OJkCo>DJdTYYj=<+_SNutMra|&s@C0G< z`|xNzRG*kL^}0KL)~46b@!`|DDLxatgw?f<~~+n3-=4=Fwqyuv}fKL>okO?h#6*ly)1 z2fy~Y;`_t*x%PzT9IW`M@Rg6`pTOO7A*P-PiaHK0jP} zp20Jxk!Q5?z_r^TTYtz7f4`XGE5Uz#Pwh|x{!J>yhrmm1Mp96od zg7SO?&uI1E247&;i@oskjg>!moy$w9=Rn@;I ze5$P<_JhBiO!4o*o1Rg*li|hJ$UlLS zmgj@Vx+gCJ|0${JUkbk8`nU4%nO`bT75D*rexoM5(|YBv3y)^~WMg>8Ny^_6UeV_D zZQ*fjKX!y4IvkSZg0Ie^_W1}t z+OF@j;n!~||7Y;(*3T?~_e-t(tKm=W`M~Y)nYP|_2)@hq?^*a^yY63yueRr`9>RBi zr24q$6Ww`~B!{*uiPg*bkG2kw5&naHzDgc=Ydeoh!28(Wd#Vh7&F0s2;om+{J>Q0Z zuvR`5KBlzlKNnsgNbzgnv!^NkEBNJIir)&)kxlV?;MqS^{4sc&obvPVvUdL7guBm` z`VIbTZ{>+$>#T0ST-~kuB!LhE;qA_9y9U7Dw0>g*e3h-|OoAV>@ycxYlWxkt1b%6$d_BBHFV%Ag zJilG{55XT?QT!SB*@^O>;Gwpj`73;`mHQk%$JUeMFI0Wqe#tjO`BTHA7n5g$H!P+1 z7l5DIC@%wVIz(O--m8`J*M|q&dR;I))Q-0hc!JW(69%7T{mDT185_S1hR1c_ny>+Nw`uc!qn5ZwWuRT0RI~y@>J*hflV3kLB=3U6p4I z{735#kHTMSsQ8ocUe-T6guiFkwI}cbn^n)0i}l^L{}~$}q=#P{rMLp{EOAwzV(_ij z@706H9;Q4^;OA1xd%@p4Cm#SW`MP{MJfqEvXTkT|?_+F)=dpff8+^qqb zo}igL{t|tEDe_yB$p0oj*Uw4e-z}HthflG2O;PwCmDJ94;r;CA#_)~R6yF&>H$vt1 zfKRjjWE8yYbmbWj?_lGxdGI`T{Co~?cvR(XgCBcK`S-y0*?9gk{Ing1H{gjXC{Iee zZoBrsW!LvC@N>3Ko)2CtkLp-ywt6$LVc-sQM^@Zwl z0RCMzKOBP(t)lqz@CMdz+=M5z{q-AsdS&HFV)yIZes6Er z>s0VH*3V>s5Bf^ml@)$us5}>Z%eV6U@YL;9pQ7-WK2>~ac!Brj72vZ|$lri(Su3vx zZ))pEz2W)n{Q3a?U7(>NzZSsVy2@(!>va^r6W-#ew)Zf6={Cimg*R-X`0MbGtp9ZP zUEO}{AFe#fSL(a-^sDr9CV1zT%AXhhmF=$*aQFF9mEgy1eEt^vUKN$w9NyLDmF?l@ zZ9di$?mnODJ-GXPsxk0e9aQc#cse`p=E1M0Rs0HgS{u)7gg+~$cH09lvRQr%Uc%P3 z&ciR*?@!%?AI_or#I^nA_G9!n}6u%YT#_nStgg@w__>=GkwtjU7-sl~b zn`^b+=i2}3clx;~ysV8sE5Pe~sywye6@rzg2|V*Wc?i7ER(TlwKnLX?2v2J3KO^DS zb|`)_e3q@-&w)Q#sraSv&Q(>P4e&GeoXt*new%k3hIf2TdCtOH+Ie~nemzX}xevc= z`Gagc<@Q(V+lo&BFKOe$H1O`|WD@Fdse&EU;#yV}8z z9aFjC@KNpL@4^e%cz85C+50MYDtuWP`CRxCn|CjVKdz(ruiz1D<-6fi?y8>W;2+q2 zxdAU~?eh@+?J?zf0*~8V<)*OvnQp(Qza)2`YwoK!>8FiZZ&-SdBtylXS8|K_wbLdsNA#gX?B0-K75Y# z^MAlUOr|`^Y@FrVxs$EWq=8qm`{sqvAoF1*B3c}MuJJZhir z@V7fDek|O@e+Ylo`tvpL42zZLd-xQ4-s4wz`f7^*9e!}9>Y3Eq!?mZ2PYvIo@Spu2Nv(Z$ zz}@Gl?}OK~`xJ@Rt36zM_C2QjY2m|WD=s^{wcR&&zaQiBq_J^weZ*I?b@J};Y<7Qk z3_S4&l^e9-#d^MD5%}%=+TO?Tw{4v>was5${WsXS zy$F2F?fSS8c02OW@D$D}FD0@oxDQczv5kN86;=U3=EAr2HA-S8N@l6nxwfy}uE>WpU-{ z34i6Zd;+}JQRP_;k6v5x$KeSdDE=Wlu^n$2zkYGMs@K=grQzS$eWk|m31?MqKlr9p z$}5kuSC3f}9iybFAit&{eHKeu(x z_u%bqoH+~L?7r&xIlO|6)7HS7O;UZfz~5e^Jp1A2Y`yn8_)|NNF2ILhSN@xDH_mtn zAJI+aM%$wIx#Qu+Iz7zbW^$$bf!|XoMNO+z1 zm1jQOwa;SsbgSofxSK!jg~$9hDC+An+~vOk?{Y--c?Q2wAt>rA<~DtI=X!djywc~< zqTa9+?*5L_YWU&Yir)|4nM!^b{#F;&=Q`ZQ--d5or1-eo_1*24VYc3q2p<1O#pQrM ztE~FG3ZHD_kSg%7_{vigp4qPBZQ);EQ~r+dz4m(qBj9b%EB`onCtKHB0?#%~@vGqN zY<_(RKF_Y#-@$9`Ql4MnDZiKBhnG$+Pq0JZUHe~nRoj~k{>5;4UUh;I->v{J*i-Q};rr*v8^N%TUX2oKQK%2dEg0c{9gjT zXpQ14!?S&$densvv-#cI@K|LO-x+?)`jfu!{-YH?5N6eQ*N)Fc@VVA+Z-DQp zr~G^2t89JmB>bgc6n`Dw$?`vde=uG3jJ8MbbNlN^V*Q*DesZZiEqwX=@>k%8Y@M(W zJcg}{mV=iGR-PL0?0Mvk;A!H@+rT?i)OK})cej4HKRju1#eWFDT}M6(p3i<>3=e;< z`mBSGtFJuU;Vo>tzJ-r?raY(Nu09vwzcy8TjJ^8q_Tz8kRc<`^{i2G?3h!;}w7KAA z?fPB;KG@b1-hdxf`k=P(tYcK4j_@S54*UUp*Fz=x7``q@c^1IO+dB0I__-2_-w7{l z>qv*;_iY{T68!h&%5xhY97FZ|1D@2@Ph#!U>u$fCv+HSY_&wY2Md6*kQn}^f3;WA! zz-!KvH-u-mexntqg6Fk)*%5dOo1gpu&#+GQzYZU}TK)ij-^St5_Um=m4(|8t62jf@ z*`R?DJhq!WX`*denrw{Z$tpGD`6s;clIzJG_jw^BB0xKN0?! z(g!VuyZDvx4~A)bzlFQ_1^7=^|EutC3h9Ms@cmbmC#IcGuARI0mS=%K*&)vfZ_-KmYrr$v z`TjQjxZ*?L*Y7KTC-|T#iVuUg{88Q?o}#aO5d5BvPsYIW^;G;sc*0C3Dt$3xX~AH0UmACJSo zu=@pP;8m_G|7CbVo3Gu3SGDoSeR%3Ls?TG1p$f|H*1z3;yf;H0-`2&Q*NUY)Dd1Df z%hSV8Jyo9U@ULy%FE4!Te#IAsAKjq*W#A1K$ScFkTe&siOKpEOfX_OiJk8;2f0T#7 zui5d|8UCyFw-NBz_WZyAc!ZsgL*cEgea66h{h<0xh99acp8TEP;cYt08_;bY(Hy?CqVk8p_;a}NtvIIW6mg=(x9@ExsHo_a*b#NzqLP^!<0K9KuaeBQ4rcPRYkVC5MDzvYg9c!v0jp8?NzUOpc_V2;XN0`FN;z6PG7 zl6)h4YFg#r2|t=degGcvn(`cnCrzaIGw^!J&S1ylde<#`|xYi<&WXj-;>8Y zrhM-BuXs})AO5pACkP^>AHKDj@+^V3{X_9<;5V$l+6eEvNO^X`-#o882jF9VSNw5!4I8(d zfp6ZX_{;FAHgCNN|HkIG_u=`QD$is1z*VYeOq+kWI|P9rg9_Ti6<)00Qj`}@}ck#Y+Ypxe5|cMPlm6EraUv?X(y>Z^Wm@Cy804$)ohAi z1AjhGz7hU)WtF=VzC1$l2jCTK-RU@d^%KRPfzP*b)MfZ%dp_wVJi4tz-iIf&Jdfd_ z162Q*Hs5u}e`r0`CqBH^C-M~VZEpMnKe$Qxv%}YYFV73FXzM&h;X@KCz6`vcjUOt* zOWQhUP59{fs(%A`tVi*m&W%!wk@|*DepQt|f;a3_e{xN*z2a1pRytV{+<~v$B!3Kdzb7C2q+WOJbKrB8n-o5}kvs!@!CAdOC%kYEd0}{cn`f1S ze{S;~_jjUPee&73t3KkJzoz_e!-v|utRs9_0o6YOexjQ4Ooo?9BcB7mkWao8ekD}- z*TXwxm+ydgwd4N~{LCZeKLc-S_Z@zMFO9GKzr)WLlE*rwe6Bs+=U*j-yK*zaUAej8 zuG}*4pL(jis_??LUQ{2R?nBix6h0`r^7Meuzoqz5aQC?)Q{e7%MLvbQ&lOn+uR2=! zx4_-!itK_{wt4P3xQo9GKeR^qpTgbeio`hm;{MvvL_cSMyXT# zgFC8EF}V9&kuvZWwblL&;O=upn!)!~S9~|P`&^L-c-<7L&ldRUKFV_f?)s%maMv&0 zhP!_00sOShmlN9hnQJ%K&m@QcVDt1>;V!-~JV!olS53I<2g1dex44%!d zkK^F3Uz!AuYtL6KfxCWb6}(wY)&CIO^-JHuLocZQx8SZ{`V~IY=I`;(>3y#KUB8qR zUZ|$(lLzklrGoH-=@efX?)s$~@M#Mb-v;jbnGWz*epmc3xQibHpV2|vxeUJGvHTGH z)64Ro;jW*#2amXC?P%-$u036R5_pdciq8di{Y-xNXUny{Z@^uAEqJl{${zxE{Zc3R z;~vWYKHT+7qu^oj6h9a4`lUtiZnkc)3GVu(?eG#4RsVz+^xd`RzB4NK6}an{3c+2! zR1WU?rAqLN2bI4$-1Rf9;qR>piu&pgckzSZWg9C0M{w6K&4%9@6cqKf0q**x&G0We zDgF%H^-CAwudP&leuuk$={fwu7R6`07!>v8_KWM6vcX&0{m?RS*DqCsUwcz|o5Eec z6b!%DK=FOyu3vf=e&Hv@e+YN|(scOPdeNfZuoCY2nRW0Ow*GJo?&43u_a=)LmH#ok zk*z;x{89CF?fm0T#g~S=ex?F^lil}h0(bFm!?!L|{@!rc&kTgeT&?)Ya2NkEyvJO{ zuZFvRX#;$2wCGU{a0Kr9r4#TS50(E8-1SQj;eY-;=1VWOv+I|Vz;~}!Tyyw@Y4Y~) zcdyHP!mHT2(0lMVcdPzm;6)$Fr@;rGmCu8JdsXGGfG0k!_>J&Y*W`QP2kiJi22T`M z`Om|r+5F`u{Ok_p{|&xlz4FAc>#aM^t4xCUnsQ9lCKmLNs-3nj1 zKz<6I{#*HZcdUS{P8LB+J;G;qnKMtP2#`%-r?)L+iz`wQogR9_UK2d)6dp53pnknQ$B_|?nu&hXiDm8S>1eQd>#hv&2VUsK@miYd=(c6AYn{AD{%^1@5nx?&;tP8%1!1y5iSQB-nFFS@4-{#ls|>foFY$jP2XL6<{zVariZsEEiVXv z*^aj|@YHsH;Z3+(Pi_jYW%Jokc*V7@$mN96+Z)Bq=bASJcg}n zt%1AxZ-w`@e(Webwas_V!&m>L_Phz7XYKzKe&-w2^CcVaxc%kYCl!2{!h^EHUAg(; zueQ(|D!|9SrFy;zcjY#PyK+O}u@5VMIDGz8`FrrNqbhd{+|_eByx=P3Sq%SXzI-M8 z*Wcvp;O_4ze+^&JSM@mqcgMq1xSJ2gyP(39s zkK9!KPr!d&D8B?R|EcPE8~)o6`D1wX?(#TR&P$PLn?(M%qoDF9hhNBAGuFn z7(Qy9>e&Fk`ZL8hhreal$8PY_c75pu|LKJCkA$CUDIX8Na!bAteo`E?9G<bVAN;V5Z;Qf{eyR9c@HRD+ zzdpR~F~x_$hg-Y#f#0$D>}0yFlgxl0&ZGQaz*pIP>MM9v>$gw9uWnTR&%r-WAb$++ zYWp#|J%8%jx&KDhCnbDkGI<7gPFn{k3O``?Q_8^Kd{y;n4L@!3z7FsehZH{)KG~k* z8UsHZNAa`ZX>7j#8NA3G#czOrV&}^i_%EH+4oBf`+?q`yQnyLp3s|04;c-7xp33mL+2u9i1ta8b;qG(7JHe}2yN!Ymw}ImXc!cej#c=m`lUKn< zo>zVL!$;+lAAwIuqISFiKl8QxF1%@Aa1{CVk{w5`{U?1VPYTate=j2s{Ies9F9fgq zRNe;e;yc32jnQ_^hHtd_&I0(Y`-<@uvH%8SABQK&nJH)1GREZoIUf)ALX?b-#8c|m>*Wn83%X!{bP9h&dRe8e!+gPa1Hz| zdp>F#e6*d{-@;uxdfV=C+Ie5%+s?Tq5cU^b}FW6D}Q$N&q*PgE5 zei=Tar{YS$-FfjE{D#dFo5S6@VjFmq*~;G=9@pCK9eAr_ik|}Cvraw}etDbPXARt) zryJn~J1hPaJVsLGzW^_pTJgWbe|x0(AX^V}?R>-5pEJWhvGtjfaQA#jWw?7jqz>FY zAJPc^Lk`ua8{9qb5dlA7*Q0T87e5Jp$nMK5g}diNR>NPnb)*Au_k73^c!`fy|6ky4 zJ@7t!wym!wu>IiL-#s6a4E}RW?Z<*}_k2ikc!Pq9uMKz4hctjc?x6a2fxG8J!r{N| zR{R*adp=|${If3={~6ppAF>4At*+vCz}@p6`{3<2DE=zk#s3V?Y~!3nzw3Rj{d?Gc zDhPjI`QL=Q=RNAfS6lmZhP(J4@S^**zed5`^B&{j*X=sB5bola!FN|u{#|hQe8>U# zX1mXI8Sb7BxdC6*P3;)tj~Cn1Js%Pe{>C`PWrVxuL$bls+VdOz;9cKSo{4bRFMR@c z{nF=f*DtMrM>JCYJ#g30d;?Ex^X{u~7ymQ-lP%gWvFv$CcO1HYDLy=VU)3i&-1SR& z;LD3CzAD`HOK-xb+PFOw?)s(9@F8}+9tC&((s=lcY}($1aMv#_gMWC&j$63vmkz*_ z+Pd&%xa*g0!0)wC{%3I4FU5SK_H+AX>1D-dfV+MsD?CRhy}vx%#aDqhDXsYS@Bwxo zVHDhbKK=r@>t~k2TiO2I33u`P;a|L~`uqrY{meCZm40fUAe*ndc60Hu;aLVM{$;r9 zm$Jhz#8-XF!Ck*p2|jkB;#KH2ir}?U(v+*Dp1NPaLcK;c(Y4^@Z;o zr~Fgku3wq~k9e;5FW|0U`VxM-z2Z;6UBC1Le03q!{{h_fOON5Zt$mW)I;CrW*Ds}o ze`E8Y!f@9wm4vU^s`}T0yMC!2ys(XLT=}j(uAd1*d>vay8V7grli*{|sD0MLYufp8 z0{-deioXwc{mdWmcQb2ylLhI!tG|m+18==b`3u5bKT{mucdg=U!(Ds>_=aO`P;%>KhqH&YpUuu1n%NT!e^&b{!ihqUs?!XR73Gw;jUlW4ga8? z;xEBnzjPfwA+O@2MSroKUB46uK6awwUV*!QDKGq!{ZRQN_@4Bt&l0%n zuhzp|f3*Yd`m25LLz9&MBHZ;qKf$e=4GM~-`nv6P@v-46t}A~gxa+T8fj8Q$_}AdB zzp4yB)mHJX;jX`G55KcV@$U0tUHx5uH4O1ncPV}z-1S$V!(&WP{5H7julB%a+BoVw z-1S#i;L!#s|1-GjuVUKs%Wk`dHCKEZxa+T8hTm?a{aPIE`k%7!gv*t`Dcr>e!w1J# z{=x7)$>sCl;a8M@E8O)zyWx%2DBk^DHP;R<{xafI+qmcn-1R@vXT3g4M1DoxOSc=tuha~yuo*6Ys0 zqwQ1tUHI#^juDhdue<$tt%u4@2wxngxHRxe&PS!wC5>FV7n;N#yqxo>%ewjOUd-Pn=l!T)Q>0=SVZc zzqEe%74yKmY{@JtTV2mz_wsi^9+!W*7hlnf-}E=}*Z#)u!q?kz{~TU(pbCkTMB5wq zw}Mx00nf{O-o)Is&sgiXTf+y~ef<7j9_tFDvMoovYlltntbv0l@@uD;r<^G2--n2I zd15BjcDZ_%Po*~{Fb}+1*2`1M^D>?{KpvMr)Qh)MH0oW;J-4Z5lt1*mq?bQwvKQ;= z^5-%SyjsGGuZ#FfKkCJPUVL#celFtO{#pWe`|Bj!)#oaF^EuV~7xTbRb}J~V^mI1f z40utmKE=%4esTG0c=3h3_|U(JALYf{r7`MV^ZzD(uNPmy%YW%_;{WjC^Lz2xQfRwf z{ayRFhr8|S1wZkrlD%Ud$Yw*ds24VRZjVGq`S-}<^5690ZK)_KK6c6%>*?ZimUy5r^Ff~H@_feMknI&Oe}B)jdp-quTs;?i@!7oiU4IjQ5%I1~li71L?znRK)5BeVo*SOe#&ddecxZPYN&3I>fs?JK+m^>rDr}JjuO0(KDz$xV`b=ZhOgoO-f-5)ER^{pFm9roNGCtvW~A8+6B+#jF2 zgFEoDKQBmP2YtZ(`9)^W3wre_=(#`Nso=RkZ>r$ekIYjpumrQKk51q=b;vt z*^Br4Pj`+4;sbu!;@q(paKB%5$AI&G7GJ@>2i)&(tHIsRbv*a`;U;i*j-;VyoH=YBsw9UdBJkjSq&QU3--?JvLoUj%P!KdR-_FtX_OcxQnmgc{VS;8r+7f zL3KR$uY)#>i>iOXYgw*VUc7&O>;QMiPnhTab+a!#ujL=)xqm$!33u@mJkRBA?{xV4 z_SziJ{p;@{xZB>9p8MD34R9B~)pJ+JK+${Q?sz-wxjV)K@h9Q#+I+!t|N4Fn?sDDn z+`sNWg8x}p>+}OJyD|gyi3@k}NjxtY2(+&>@H*z1J@>~Cx!_eTzM$v+xS}N7)u)2z z{&=Gryrku?r z)8TF`GRJd&{Idw|>a)^we_XTy?vA&up8Mmay>NHF9QNEFN1cSb_PpS^+onK!UW2>% zJDyhv1lrdlxU0WEPOIpGBfrOup&tV0MZn#$?vLMIS4h;qX}tJ=yJOcM*H!Z3b9wOr zk8iK}<2`>|SJI0QxZ7X;IM5&ORrBHl?%Ky6ANu3KCSH8NUH%zyRIxxi_~X5`p1ZmS zB2RhlkKgWi?vK-A$Nfise>|4KbAQ}b)N_A)Rm*dK92MfZKVBN>d1_T5>fcG8r}2ET z=l(cnyXP;AXFT`EEw?=P$0xDk{i7ZHaY!c5Gkf)^=y?{;n|Pkp^RAv}^L&iw{&--X z=l*qnqv!th{g~%Dz5F*l&*gaq^p8t7HM|yA1{p;oj zp6B=SFYw&I4sPGj_jWM{c1kXGg<1uw`!he z_Pm4VSv()wduf{_qWwN_xszro)_}U?c%xL z5BKuCh!;P>bH9IH>ABxOANJhupYM3?_s>aU{bPIm{<)y%e*av@bH9HM^W5*BCwT7n z&nrFm`{%=+`~CAB&;9;6N$h{rzk=6p1wF6mc^%JR_dLw=N}f;fyt3yjJ+I>VVb9<2 z{Ep{=W6OP|uyJO<0{@+~7mC8|*Jpwn!1G(b6O_MazpfFj+eChk2-o)x?*GC=yR^<9 z5!yE*D1S)nh}J>*+w|-ils~+?e)#j%{K3s?*N-SvEVy2q;E3?h(BKZCtwTb?D;2KN zJ2Kkk_?xJb!EXkKhxQDO2n0uTjA-2r?6Ika2H{!wWoD~q%xUD?$m zYf>UOxNYCQg$fla+@^KUj%|Y@H>YE__SM@)*0E6A4z0r@E7`hZM9=DNtJH5D`A?N9 z^&^UgweA>Ry=MJl!CfMMDpWAIerT7_wh@JTMpUm~GB^;>CA4SH>XEMp-V>lIg^IW` zgFAK&>r%abrQlj^3RS7{mz({+sD73IYPb9w>i3uJRHSR`u>aC7?8062!Y=)rz4AX+ z+F!JBi7wsSw+{{P`4^k*UiuH-Rk`3lpG%R)VT5-OcIzGz8Yy-p|5r|fE|I6gUsNw} z!2jPbNE;jIT+}fXF8Jr^)H$?YaNF)(!&-+&ZBW#i_g~qbzuuaNf5Wk^jcwnyZE$Gc zwxMAW!I2$pmr!l^zpXmxLJJk_)vaTXUZKHZ5#iO{AsM;ji-v@@Yu&3$L~uxCmlzSb zM+!!Eew7MWuU|O0cawyb;Xn5|I?X@N7gH{*uSdPf9CWoRH%KZJ7NDhSi^O_dC;9~|DXeTRssBk9iy1P88k!I49|(EklbQi;e)b_s3wzq*cv z3P&DRA>rM_qMGhsJ}>`o4=zeY)}nXoE`NP|7mMf>)+MxhjXLf~{ELG$>e3T+?I{#o zzlet0JXPvP6p1|ctJmsUu*$!Xt6pH@QY5PA;K<8c*U)Ye)tfX34ESArDu*=)T=1$C zjp!E^TBTm((Ep!~y8nEK5jnw#+#yld(|GI@{?F6% zzchURbKLr$nt}c6bwP5c#LM;NFNR9eMgCo0-LXq9ai+#qQeN>_UxjxE`LH{kiN#Vf36KKiWflKwD zBX0K9fzG%1pRc-Qng5yjW|b1wyH&4WDsqSPu2=u{;5rTdqBH-0R-r-#Lqcui0~eOa z>eR0o+%<9$%;v=Zqi0iz$Q{%=B;>EIJ}(}~wYo+gq(5gi)14fP0 zUOba(wJG>FGjo>wFI~a|TM}4sjBLW9*qxEp<{4cmu)N19?VsCHqe_+k;A}4P*JpF& zQT*Rpboq;ko44!#=jW{dI58>)PKwZiUST^Ybv>)3=zDsY)U$9`o zQl*Ulk?REx3H|>{J0IA(sydEe<~9l|tP0`~FfS&U25~$QlEn~xk!2JtID)WdoAk9^ z|BQ9*qwAJ}+cLr;g-k6{mPV(k=vc)8RjSM=q=7;jFtEg_%NEU?TUN&s`JYY%{QmCw z{a#Oh{!ZRK;Uwq&Irn_e=lA=abN{?|?|rX%V|(M;uC{L6S4fwenwxuClZfkHnpr{eQQT!TTjz^wA|j)y|E2egJwktk`87Nz|2vSg z`v1D2UmKxM_&%y1zdIuI)vWjZUl*b0pBqSgeP@K8Ut3Ik`~MuFuQmKX5TU=y(65is z7YzO32z|Yw|67EI5 zKVtA-jIe*q(9=(wX626?_E$ydCk;M5$E*1{l%d&#ALql8O9xml*8x&ab^S!o3{#s0 zzYxpY9&rz(mbje>l+kmSGM*N3{m)@eZMxcAh}jY`bfzd>()`O&N^NR=f%X4T`kY#) zXIZIDHnY4{^uJOYa^)Isfu89k{d`sLO%5o1X7Q7%mc}HFpW5*H&z(nk7E}C)rQ^2- zWfs4IpQ}8^dYLIqBA;msYC~?f;}=;-`~tG(??9OuKd$IMbBwAe8YzGkFMQbCI?E+t_|Te%GR&w*U7iv-ne7u@2k)r1`(aMvFhne9=?<=($?WUj?|u z&!6R}G`{_$`L{uA@u!(D`x)`CL)QHF0{qn(`R@k!HIKUScl$wWs+50e+GB{{DZ9!5odqFDRs1J>*F_aN&l zjla{-6GNYWs`v#SzyIm`Yi<8hTqlrC+Wwa_+W#ZgYy0=J{$<};;;8kV&|CKB*!}^o zKY@7>S=)awz~6O_6IL2Ox8OR(8vi31^?wTJ$5_9~nNgl<|6hUL@_&^5FS3&SUxTdu z??ZuQ|7GVoVLj_*ruiG7xA--`z<~wHA3tqa*Zebap0N0vnBS7NGBeTqInZ1DTIScW zl>F~N*8H0T{6ozD{0ur>(){`WzhwAN-(PF~j|2Sq3mv!;e<;B3H~5_f|73uFCG+of zW|XJe|KkDvF!TNMSC_%R{%>Ob4ZgEj*70wG-ts?r%iFLu;MX&Mxih0Y)%@)N{s8mqSUG|DR%FfpB961Vr@8LLQ*?%IV{nuigkzU(>iuINH z|0~d2_E*t`J(9owZO6K{e_w#V=o6_tS>k5psgB=M0e+78c~(;VzJsj!bKs}t|8nMQ z|EaE@-VgAX8~*o0sQH}%{J9hUcuLjL~qgFk5S?+NfnnO|xD+Z^B@G59+T z{(%7ha7O;C0sgeXA2Rq~#*dg-{XZY=QmWMdS3__0f6d_oPwZ`n3ONr0LR>(f^NOi|EAu92RIyYJQ&iCDpEu=S2a2 z^0;epg!L4^y~vt>b$~z2{BgCzSH=F>m}F|5GaQ@K zMDcqTS@cr=F7vhh`FmFh`Dvq=X#M{H*m4P6 literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/7/0022c7e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/7/0022c7e1978500181c21d10bc58219ba new file mode 100644 index 0000000..af797a3 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/7/0022c7e1978500181c21d10bc58219ba @@ -0,0 +1,67 @@ +/*! + * \file layer_stack_builder.hh + * \brief Header file for ITS protocol stack builder. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "layer_factory.hh" + +/*! + * \class layer_stack_builder + * \brief This class provides a factory class to create Layer class instances + */ +class layer_stack_builder { +private: //! \privatesection + typedef std::map LayerFactoryMap; + + static layer_stack_builder * _instance; //! Smart pointer to the unique instance of the logger framework + std::map _layer_factories; //! The list of the registered \see t_layer factories + + /*! + * \brief Default constructor + * Create a new instance of the layer_stack_builder class + * \private + */ + layer_stack_builder(); // can not be created manually +public: //! \publicsection + /*! + * \fn layer_stack_builder* get_instance(); + * \brief Accessor for the unique instance of the logger framework + * \static + */ + static layer_stack_builder* get_instance(); + + /*! + * \fn void register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory); + * \brief Add a new layer factory + * \param[in] p_type The layer identifier (e.g. GN for the GeoNetworking layer...) + * \param[in] p_layer_factory A reference to the \see layer_factory + * \static + */ + static void register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory); + +private: //! \privatesection + /*! + * \fn void _register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory); + * \brief Add a new layer factory + * \param[in] p_type The layer identifier (e.g. GN for the GeoNetworking layer...) + * \param[in] p_layer_factory A reference to the \see layer_factory + */ + void _register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory); + +public: //! \publicsection + /*! + * \fn layer* create_layer_stack(const char* p_layer_stack_description); + * \brief Add a new layer factory + * \param[in] p_layer_stack_description A textual description of the layer to create + * \return The created layer object on success, nullptr otherwise + */ + layer* create_layer_stack(const char* p_layer_stack_description); +}; // End of class layer_stack_builder + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/70/d0485336b685001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/70/d0485336b685001814de869e8ad08251 new file mode 100644 index 0000000..836983c --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/70/d0485336b685001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 11:30:22 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall-std=c++11-pthread-fPIC + +# Flags for the linker: +LDFLAGS = -pthread-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/71/10e63a61a88500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/71/10e63a61a88500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..ede66de --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/71/10e63a61a88500181eabf1ba1ea37ea1 @@ -0,0 +1,127 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn + + true + + + + + + src/ttcn/ttcn/TestCodec + + false + true + + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/72/c072b5d3978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/72/c072b5d3978500181c21d10bc58219ba new file mode 100644 index 0000000000000000000000000000000000000000..bcdfff1ea4a405e245ebe4510878dcbc48f9dbb1 GIT binary patch literal 340448 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 M+V41Z14QfpA7h3NxBvhE literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/73/f0fcb796c28500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/73/f0fcb796c28500181dc9eb7ae31560a9 new file mode 100644 index 0000000..0324abb --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/73/f0fcb796c28500181dc9eb7ae31560a9 @@ -0,0 +1,132 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + None + -std=c++11-pthread-fPIC + + pcap + ssl + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + -pthread-fPIC + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn + + true + + + + + + src/ttcn/ttcn/TestCodec + + false + true + + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/74/d011241cb985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/74/d011241cb985001814de869e8ad08251 new file mode 100644 index 0000000..e34b889 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/74/d011241cb985001814de869e8ad08251 @@ -0,0 +1,257 @@ +11:31:00.784752 hc EXECUTOR - TTCN-3 Host Controller started on vagrant. Version: CRL 113 200/6 R4A. +11:31:00.784785 hc EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error +11:31:00.784790 hc EXECUTOR - Maximum number of open file descriptors: 1048576, FD_SETSIZE = 1024 +11:31:00.784904 hc WARNING - Warning: The address of MC was set to a local IP address. This may cause incorrect behavior if a HC from a remote host also connects to MC. +11:31:00.784912 hc EXECUTOR - The address of MC was set to 127.0.0.1:0. +11:31:00.791043 hc EXECUTOR - Connected to MC. +11:31:00.791150 hc EXECUTOR - This host supports UNIX domain sockets for local communication. +11:31:00.794161 hc EXECUTOR - Processing configuration data received from MC. +11:31:00.795044 hc EXECUTOR - Module LibCommon_Sync has the following parameters: { PX_TSYNC_TIME_LIMIT := 120.000000, PX_TSHUT_DOWN_TIME_LIMIT := 120.000000 } +11:31:00.795100 hc EXECUTOR - Module LibCommon_Time has the following parameters: { PX_TDONE := 120.000000, PX_TAC := 30.000000, PX_TNOAC := 10.000000, PX_TWAIT := 120.000000, PX_LOOP := 1.000000 } +11:31:00.795158 hc EXECUTOR - Module LibItsHttp_Pics has the following parameters: { PICS_HEADER_HOST := "ptsv2.com", PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8" } +11:31:00.795210 hc EXECUTOR - Module LibNg112_Pics has the following parameters: { PICS_LIS_IUT := true, PICS_ECRF_IUT := false, PICS_HTTP_POST_REQUEST := true, PICS_LOCATION_HELD := true, PICS_SERVICE_LOST := true, PICS_LIS_REQUEST_URIs := { "/t/9rk8l-1531130342/post", "/t/r143f-1528105031/post", "/t/6ouem-1531201238/post" }, PICS_ECRF_URI := "/service" } +11:31:00.795273 hc EXECUTOR - Module LibNg112_Pixits has the following parameters: { PX_DOUBLE_CMP_EPSILON := 1.000000e-05, PX_DEVICE_URI_SIP := "sip:user@example.net;gr=kjh29x97us97d", PX_DEVICE_URI_TEL := "+436501234567", PX_UNKNOWN_DEVICE_URI := "sip:no_one@example.net;gr=kjh29x97us97d", PX_DEVICE_POSITION := { -34.407000, 150.883000, 24.800000 }, PX_CIRCLE_POS := { 48.215388, 16.290300 }, PX_CIRCLE_UOM := "urn:ogc:def:uom:EPSG::9001", PX_CIRCLE_BASE := 23.600000, PX_SRS_NAME := "urn:ogc:def:crs:EPSG::4326" } +11:31:00.795375 hc EXECUTOR - Module LibSip_PIXITS has the following parameters: { PX_SIP_SDP_USER_NAME := "voicesession", PX_SIP_SDP_SESSION_ID := "30000", PX_SIP_SDP_DYN := "0", PX_SIP_SDP_B_MODIFIER := "AS", PX_SIP_SDP_B_BANDWIDTH := 64, PX_SIP_SDP_ENCODING := "PCMU", PX_SIP_SDP_CLOCKRATE := "8000", PX_MB_LENGTH_FROM_ENCVAL := true, PX_USE_FX_FOR_XML_LENGTH := false, PX_SIP_TRANSPORT := "UDP", PX_SIP_REGISTRATION := false, PX_AUTH_ALGORITHM := "AKAv1-MD5", PX_SIP_REGISTER_AUTHENTICATION_ENABLED := true, PX_SIP_INVITE_AUTHENTICATION_ENABLED := false, PX_SIP_TWAIT := 30.000000, PX_SIP_TACK := 8.000000, PX_SIP_TRESP := 15.000000, PX_SIP_TNOACT := 1.000000, PX_SIP_MIME_BOUNDARY := "boundary1" } +11:31:00.795494 hc EXECUTOR - Initializing module AtsNg112_TestCases. +11:31:00.795542 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibItsHttp_Functions. +11:31:00.795594 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_TypesAndValues. +11:31:00.795645 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0 Initializing module LibItsHttp_MessageBodyTypes. +11:31:00.795698 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XmlMessageBodyTypes. +11:31:00.795757 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XMLTypes. +11:31:00.795831 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held. +11:31:00.795900 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initializing module http_www_w3_org_XML_1998_namespace. +11:31:00.796014 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initializing module XSD. +11:31:00.796090 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn:0 Initializing module UsefulTtcn3Types. +11:31:00.796174 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn:0 Initialization of module UsefulTtcn3Types finished. +11:31:00.796252 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initialization of module XSD finished. +11:31:00.796324 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initialization of module http_www_w3_org_XML_1998_namespace finished. +11:31:00.796394 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held finished. +11:31:00.796550 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held_id. +11:31:00.796620 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held_id finished. +11:31:00.796686 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10. +11:31:00.796750 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy. +11:31:00.796820 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy finished. +11:31:00.796891 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10 finished. +11:31:00.803032 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc. +11:31:00.803181 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc finished. +11:31:00.803259 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf. +11:31:00.806217 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf finished. +11:31:00.806349 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XMLTypes finished. +11:31:00.806418 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XmlMessageBodyTypes finished. +11:31:00.806570 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_BinaryMessageBodyTypes. +11:31:00.806644 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_BinaryMessageBodyTypes finished. +11:31:00.806705 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0 Initialization of module LibItsHttp_MessageBodyTypes finished. +11:31:00.806762 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_TypesAndValues finished. +11:31:00.806813 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_Pics. +11:31:00.806864 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_Pics finished. +11:31:00.806915 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibItsHttp_Functions finished. +11:31:00.807032 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Templates. +11:31:00.807076 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Templates finished. +11:31:00.807096 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Functions. +11:31:00.807117 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_Templates. +11:31:00.807138 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_Templates finished. +11:31:00.807158 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_XmlTemplates. +11:31:00.807178 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape. +11:31:00.807200 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0 Initializing module http_www_opengis_net_pidflo_1_0. +11:31:00.807237 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn:0 Initializing module http_www_opengis_net_gml. +11:31:00.807262 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn:0 Initialization of module http_www_opengis_net_gml finished. +11:31:00.807286 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0 Initialization of module http_www_opengis_net_pidflo_1_0 finished. +11:31:00.807309 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape finished. +11:31:00.807334 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_XmlTemplates finished. +11:31:00.807354 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TypesAndValues. +11:31:00.807374 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TypesAndValues finished. +11:31:00.807393 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TestSystem. +11:31:00.807414 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibItsHttp_TestSystem. +11:31:00.807436 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Sync. +11:31:00.810148 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initializing module LibCommon_AbstractData. +11:31:00.810253 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0->../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initializing module LibCommon_BasicTypesAndValues. +11:31:00.810326 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0->../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initialization of module LibCommon_BasicTypesAndValues finished. +11:31:00.810409 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_AbstractData finished. +11:31:00.810531 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initializing module LibCommon_VerdictControl. +11:31:00.810599 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_VerdictControl finished. +11:31:00.810667 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Sync finished. +11:31:00.810728 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Time. +11:31:00.810790 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Time finished. +11:31:00.810850 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibItsHttp_TestSystem finished. +11:31:00.810906 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibSip_Interface. +11:31:00.811072 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_SIPTypesAndValues. +11:31:00.811157 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0 Initializing module LibSip_MessageBodyTypes. +11:31:00.811229 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SDPTypes. +11:31:00.811301 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn:0 Initializing module LibSip_Common. +11:31:00.811385 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn:0 Initialization of module LibSip_Common finished. +11:31:00.811508 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SDPTypes finished. +11:31:00.811582 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SimpleMsgSummaryTypes. +11:31:00.811654 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SimpleMsgSummaryTypes finished. +11:31:00.811726 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_XMLTypes. +11:31:00.811799 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_resource_lists. +11:31:00.811875 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_resource_lists finished. +11:31:00.811967 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_xcap. +11:31:00.812051 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_ietf_params_xml_ns_common_policy. +11:31:00.812142 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_ietf_params_xml_ns_common_policy finished. +11:31:00.812221 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_oma_xml_xdm_common_policy. +11:31:00.812311 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_oma_xml_xdm_common_policy finished. +11:31:00.812534 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_xcap finished. +11:31:00.815136 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_mcid. +11:31:00.815275 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_mcid finished. +11:31:00.815355 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module NoTargetNamespace. +11:31:00.815433 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module NoTargetNamespace finished. +11:31:00.815573 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_3gpp_ns_cw_1_0. +11:31:00.815649 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_3gpp_ns_cw_1_0 finished. +11:31:00.815725 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_conference_info. +11:31:00.815798 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_conference_info finished. +11:31:00.815868 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_pstn. +11:31:00.815950 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_pstn finished. +11:31:00.824022 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_comm_div_info. +11:31:00.824161 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_comm_div_info finished. +11:31:00.824246 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_reginfo. +11:31:00.824319 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_reginfo finished. +11:31:00.824389 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_XMLTypes finished. +11:31:00.824502 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0 Initialization of module LibSip_MessageBodyTypes finished. +11:31:00.824570 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_SIPTypesAndValues finished. +11:31:00.824631 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_PIXITS. +11:31:00.824691 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initializing module LibCommon_DataStrings. +11:31:00.824754 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initialization of module LibCommon_DataStrings finished. +11:31:00.824818 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_PIXITS finished. +11:31:00.824879 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibSip_Interface finished. +11:31:00.824935 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TestSystem finished. +11:31:00.825037 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Functions finished. +11:31:00.825081 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pics. +11:31:00.825125 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pics finished. +11:31:00.825169 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pixits. +11:31:00.825212 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pixits finished. +11:31:00.825773 hc EXECUTOR - Initialization of module AtsNg112_TestCases finished. +11:31:00.825829 hc EXECUTOR - Initializing module AtsNg112_TestControl. +11:31:00.825872 hc EXECUTOR - Initialization of module AtsNg112_TestControl finished. +11:31:00.825915 hc EXECUTOR - Initializing module LibCommon_TextStrings. +11:31:00.826000 hc EXECUTOR - Initialization of module LibCommon_TextStrings finished. +11:31:00.826046 hc EXECUTOR - Initializing module LibItsHttp_BinaryTemplates. +11:31:00.826088 hc EXECUTOR - Initialization of module LibItsHttp_BinaryTemplates finished. +11:31:00.826130 hc EXECUTOR - Initializing module LibItsHttp_BinaryTypes. +11:31:00.826171 hc EXECUTOR - Initialization of module LibItsHttp_BinaryTypes finished. +11:31:00.826213 hc EXECUTOR - Initializing module LibItsHttp_EncdecDeclarations. +11:31:00.826255 hc EXECUTOR - Initialization of module LibItsHttp_EncdecDeclarations finished. +11:31:00.826297 hc EXECUTOR - Initializing module LibNg112_EncdecDeclarations. +11:31:00.826339 hc EXECUTOR - Initialization of module LibNg112_EncdecDeclarations finished. +11:31:00.826381 hc EXECUTOR - Initializing module LibSip_EncdecDeclarations. +11:31:00.826426 hc EXECUTOR ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn:0 Initializing module LibSip_SMSTypesAndValues. +11:31:00.827039 hc EXECUTOR ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn:0 Initialization of module LibSip_SMSTypesAndValues finished. +11:31:00.827122 hc EXECUTOR - Initialization of module LibSip_EncdecDeclarations finished. +11:31:00.829723 hc EXECUTOR - Initializing module LibSip_Library. +11:31:00.829826 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_SMSTemplates. +11:31:00.829888 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn:0 Initializing module LibSip_SMSFunctions. +11:31:00.829984 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn:0 Initialization of module LibSip_SMSFunctions finished. +11:31:00.832419 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_SMSTemplates finished. +11:31:00.839154 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_Steps. +11:31:00.839218 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn:0 Initializing module LibSip_Templates. +11:31:00.853331 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn:0 Initialization of module LibSip_Templates finished. +11:31:00.853598 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_Steps finished. +11:31:00.853699 hc EXECUTOR - Initialization of module LibSip_Library finished. +11:31:00.853789 hc EXECUTOR - Initializing module PreGenRecordOf. +11:31:00.853877 hc EXECUTOR - Initialization of module PreGenRecordOf finished. +11:31:00.853966 hc EXECUTOR - Initializing module TitanLoggerApi. +11:31:00.854055 hc EXECUTOR - Initialization of module TitanLoggerApi finished. +11:31:00.854141 hc EXECUTOR - Initializing module urn_ietf_params_xml_ns_geopriv_conf. +11:31:00.854231 hc EXECUTOR - Initialization of module urn_ietf_params_xml_ns_geopriv_conf finished. +11:31:00.854377 hc EXECUTOR - Configuration data was processed successfully. +11:31:00.854729 hc EXECUTOR - MTC was created. Process id: 21691. +11:31:00.861820 mtc EXECUTOR - TTCN-3 Main Test Component started on vagrant. Version: CRL 113 200/6 R4A. +11:31:00.861932 mtc EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error +11:31:00.862105 mtc EXECUTOR - Connected to MC. +11:31:00.862183 mtc EXECUTOR - Executing test case TC_LIS_HTTP_POST_BV_01 in module AtsNg112_TestCases. +11:31:00.862289 mtc TESTCASE ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Test case TC_LIS_HTTP_POST_BV_01 started. +11:31:00.862347 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Initializing variables, timers and ports of component type LibItsHttp_TestSystem.HttpComponent inside testcase TC_LIS_HTTP_POST_BV_01. +11:31:00.862456 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port syncPort was started. +11:31:00.862547 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port syncSendPort was started. +11:31:00.862601 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) >>> HttpPort::user_start +11:31:00.862651 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port httpPort was started. +11:31:00.862699 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Component type LibItsHttp_TestSystem.HttpComponent was initialized. +11:31:00.862779 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Mapping port mtc:httpPort to system:httpPort. +11:31:00.866560 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) HttpPort::set_parameter: params=HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) +11:31:00.866682 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> HttpPort::user_map: httpPort +11:31:00.866749 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) HttpPort::user_map: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) +11:31:00.866814 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) +11:31:00.867930 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1, - codecs - held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1 - , +11:31:00.868067 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - server=ptsv2.com, - server - ptsv2.com - , +11:31:00.868143 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - port=80, - port - 80 - , +11:31:00.868219 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - use_ssl=0) - use_ssl - 0) - +11:31:00.868299 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert +11:31:00.868353 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> layer_stack_builder::create_layer_stack: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) +11:31:00.869245 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: 5 - HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/ - HTTP - (codecs=held:held_codec;html:html_codec;json:json_codec) - codecs=held:held_codec;html:html_codec;json:json_codec +11:31:00.877679 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Create layer HTTP, codecs=held:held_codec;html:html_codec;json:json_codec +11:31:00.877814 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> sip_layer::sip_layer: HTTP, codecs=held:held_codec;html:html_codec;json:json_codec +11:31:00.877874 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: codecs=held:held_codec;html:html_codec;json:json_codec +11:31:00.878777 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - codecs=held:held_codec;html:html_codec;json:json_codec - codecs - held:held_codec;html:html_codec;json:json_codec - +11:31:00.883125 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert +11:31:00.883244 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Setup layers for HTTP +11:31:00.883357 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: 5 - TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) - TCP - (debug=1,server=ptsv2.com,port=80,use_ssl=0) - debug=1,server=ptsv2.com,port=80,use_ssl=0 +11:31:00.883419 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Create layer TCP, debug=1,server=ptsv2.com,port=80,use_ssl=0 +11:31:00.883527 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::tcp_layer: TCP, debug=1,server=ptsv2.com,port=80,use_ssl=0 +11:31:00.883601 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: debug=1,server=ptsv2.com,port=80,use_ssl=0 +11:31:00.884476 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - debug=1, - debug - 1 - , +11:31:00.884587 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - server=ptsv2.com, - server - ptsv2.com - , +11:31:00.884667 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - port=80, - port - 80 - , +11:31:00.884748 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - use_ssl=0 - use_ssl - 0 - +11:31:00.884820 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert +11:31:00.884876 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::log +11:31:00.884940 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (debug, 1) +11:31:00.885037 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (port, 80) +11:31:00.885091 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (server, ptsv2.com) +11:31:00.885144 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (use_ssl, 0) +11:31:00.885199 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(server, ptsv2.com) +11:31:00.885254 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(server, ptsv2.com) +11:31:00.885308 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(server, ptsv2.com) +11:31:00.885362 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(server, ptsv2.com) +11:31:00.885418 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(port, 80) +11:31:00.885513 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(port, 80) +11:31:00.885571 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(port, 80) +11:31:00.885634 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(port, 80) +11:31:00.885696 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(use_connection_ASPs, yes) +11:31:00.885752 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(use_connection_ASPs, yes) +11:31:00.885805 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(use_connection_ASPs, yes) +11:31:00.885860 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(use_connection_ASPs, yes) +11:31:00.885913 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(server_backlog, 1024) +11:31:00.886009 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(server_backlog, 1024) +11:31:00.886065 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(server_backlog, 1024) +11:31:00.886121 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(server_backlog, 1024) +11:31:00.886175 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::map_user() +11:31:00.886228 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::map_user() +11:31:00.886283 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::open_client_connection(remoteAddr: ptsv2.com/80, localAddr: UNSPEC/UNSPEC) called +11:31:00.888097 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Number of remote addresses: 8 + +11:31:00.891050 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Using address family for socket 6: IPv4 +11:31:00.891178 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Connecting to server from address UNSPEC/UNSPEC +11:31:00.917758 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Connection established (addr): 10.0.2.15/43142 -> ptsv2.com/80 + +11:31:00.917855 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: connected to: host ptsv2.com service 80 via address family IPv4 + +11:31:00.917896 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_add_peer: Adding client 6 to peer list +11:31:00.917932 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_get_last_peer: Finding last peer of the peer array +11:31:00.918055 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_get_last_peer: No active peer found +11:31:00.918093 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_resize_list: Resizing to 7 +11:31:00.918128 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_resize_list: New length is 7 +11:31:00.918172 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::open_client_connection(). Handler set to socket fd 6 +11:31:00.918210 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::add_user_data: 6 +11:31:00.918249 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) tcp_layer::add_user_data: Non secured mode +11:31:00.918285 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::client_connection_opened: 6 +11:31:00.918321 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Setup layers for TCP +11:31:00.918381 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Port httpPort was mapped to system:httpPort. +11:31:00.918603 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Map operation of mtc:httpPort to system:httpPort finished. +11:31:00.918680 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Connecting ports mtc:syncSendPort and mtc:syncPort. +11:31:00.918771 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Port syncPort has established the connection with local port syncSendPort. +11:31:00.918831 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Port syncSendPort has established the connection with local port syncPort. +11:31:00.918919 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Connect operation on mtc:syncSendPort and mtc:syncPort finished. +11:31:00.919041 mtc DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:28(function:f_cf_01_http_up) Altstep a_cf_01_http_down was activated as default, id 1 +11:31:00.919082 mtc DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:29(function:f_cf_01_http_up) Altstep a_default_requests was activated as default, id 2 +11:31:00.919119 mtc DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:30(function:f_cf_01_http_up) Altstep a_default_responses was activated as default, id 3 +11:31:00.919387 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) Warning: No UTF-8 Byte Order Mark(BOM) detected. It may result decoding errors +11:31:00.919998 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) Sent on httpPort to system @LibItsHttp_TypesAndValues.HttpMessage : { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } +11:31:00.920062 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> HttpPort::outgoing_send: payload={ request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } +11:31:00.920207 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_layer::sendMsg: { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } +11:31:00.920333 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode: { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } +11:31:00.920484 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode_request: { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } +11:31:00.920627 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_request: body: { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } +11:31:00.920692 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode_body: { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } +11:31:00.920757 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_body: # of codecs=0 +11:31:01.998763 hc EXECUTOR - Exit was requested from MC. Terminating HC. +11:31:01.999234 hc EXECUTOR - Disconnected from MC. +11:31:01.999278 hc EXECUTOR - TTCN-3 Host Controller finished. diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/74/f033d3d3978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/74/f033d3d3978500181c21d10bc58219ba new file mode 100644 index 0000000000000000000000000000000000000000..db5a22c3259afa85f881fc5adcada3cd711fbe2c GIT binary patch literal 663120 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

>|0({%<@dI55GpyF^WlIwyGV0?6$ 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%0AD5Ml16hTAY@7&2FJ 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 z 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
E}fn zr}4Z`^z$;&zZ}o2MEfs_d3b|p|GNTzv%udk`u}&0)BD|oGtRu1{}Sy#DB3^fRQ2FA z_Im{W1c84@;7`?fYyX3y{f9;Si&ghb|DP$wUl;g=0^cd{Nr7J}@NELWP~h@>Y&h_@ zIPfny@Fxj;yST3}@Ero56!=8~m;LN=;5!}o9tVE0z@H-SJ1g)(jh~C33j*IK+RJ&{ z>}a2Lw7){&bE1FwypkV~^LCkNZ|050DbMja(Z4(wsv1WZ>Kxa9zf1q5ey$Y#|CPpR zoy+I_vA_e-{v^R4O5E_()X!C-{duB&LEsk(d{N+effofH2z*K4H#l&~KbJ)NkBIgX z|G2>AdGTq1%kx6Mcgcs;#JowI=AAw?KUa(Kj54bDYWaR;|5ed`S+@to@Au34@6U*S z}S;IjRiz=`KKboCB_Un}r$2)r)vA3N}q(1t!Ve#vh? zTHx|Mp69^jzH5s6y7t{RzH9uwT&!^#k9;qNZqw~g#s3f1&+|jkUe4Qn0>4g-XF|+_ zY(FXR=ZN-~3jBJ3KTqJ#75EzkF4yPh9r%Ac@Uzh;eP|wT5dCi^5Fc9aHws*?XZc+6 zz1$?)OZq0yyH{}U>b~;al>NN0PyM`D^dr|vx98feq8~ZVmpJg3Iq+Y1;I9(+d3t_m z{z=w0`%$i2IsXU6eBLbD8@&p>-xmq|cSU>oUcM%9+5c%`{YdeZQn}S|@K4_)kT9xjr8) z)|=#Ko~m(lq4+EP_mF6Rx9ESHz<)>JvjUgr+O+~-676plxNQGnfy?$%A1L{mKNIaG zKeLq{2p`(-Qjc^#qY8hg7|*o8-zD$`fy;d%_njQil4vi-bEd}WeZ5=sf3|4<9)S-E z{Cxu7D)9FU{MiDR=in_4{IvrAfavG>8mDne{_PIYUh?Pf)Hu4}_47aaef)=LFUS9M z@xDGN?mH~-`}24t9rz0|eu;nCf&Y~Q|Ej>p#Jqh?;8OzMEpU0?uRHL+6Zjs{k6b5* z9QaEG{teO3s|Ef|fg8F<`|eu;-!0mITi}ZV{|A9fx&AK&F3)kf?`{gBZ^T^w-e_Z(An|}Ng zFW&cO;rL6>{qy8sp8NfIqUV13uRQ;soDcu;%JI*KuRZs-`^Izs`@NCp+OI(V{p)T2 zdc$u=|2+BDE5|QCf;UdNW_}{9J?jr*E^y_oP%Y)w^{Qe(!My>Yp`$J04 zbGdTZF8+S`?NZ;xt6l22e!JGIkDrI|t~VZe@qT^$`}DvZ57pnl{`9ZgYkKAQdFbG| ze|p3`%`p1C|P>y_{4zoc{a&l+C5|9#iZx%y{E*FXK^H@COl z>s~qj{bqFU`^E1k89dM9l~d7kKi>Zy{J@L%pQq&Ye7;wXpNAEmf9S>g<3I0v{;L=7 zZ}+9=e))+52@CxM(&gVjrt&}{O$Vv$In}! zUj{ybycO{3St(4-{doU=$B+Nty59-!cn{D0^H@Qz{-wS87xLUM$M5I=7y19l+irOI z_s=Iqz4&ro{r!6S<2k-B4JY0&KQOmY-$%Nh3AB3&&;5Ls^jz^gkNMvV{`YKaS0A0n z{;TVsQeOFfyZHSryzeiK+ps=v?$hP2qWX`3cYcb}a90x3srk6+HL*NyTuyvghg#fjm_8+~01saJ;(b{&s74 zu5m@SZ$q#Cet+xZT>VY=Bgeh?nqK*LJomqMVtei7-%n-q+`lg?hB*Hf%Xf00{x_}S5BcYHLvG+8PDr` z?q5Iq@g=+X3uFW&Em|J~~x|M>0cmG5u2m*ra{<4<4fNtGdGY>v zqk-pse0crYum2#ge82vKJ@@NB#B;x&4D~#`{qp07d-48uM|keX`}y~Mq!;h+SC7z6 zr|b57UVeP{<41et{3rDvZwz zWPSYo?d7>&&;RcJ&JSn1f%$v-_}i`Tx&C{gpDYM1NBimLVPQDs`}z4#%2^anIetI+ zPs&*wPC0)5{c@IsvtLWSa{iO}W&h3iZ^McIE}Z%-_u~Eb`rh;Zq@L@-i4QdUcQI6g z{TXQYn1TNp#s04LmuGaI#{P4Nyn^%G@J`N4z{fbR0pH-fIsA(AuJGJZ9e5tNmb&8p z?&mGAUp-xX8u#B-f9F2b63uG&jaP_bH?*P`G=H$xXOR%d7%8R zDkyM}hkgS8IZ%$amlS?V`G>3g67cQr7|?fz%GdkS%@MD1hQQOfa=wCJRX*V=XFL3g z`}-OAZRHKFazfnpRsSLG?@8eglpnatDFN612gck2AC>>imD3!qa5U%@T`e4LAN@b;e2VXGJ{3qvu?fS>{HpDmFVQ>(B$PIAnd5Y@uO(g5c zza#!tJo7){H`)bi5E2r{{`j{Y2b42N4$o1iZMWDl3)DPMd7Nq%Ul!$z`qJQI zcr)i3&sRCo-2cEm+%?z=f6q{SDE2g23i4uXLf%1nFd>YU@nU9_uL7)5d8as7GE4b{I2CE@T}G^ zC(l^(D)2Q|El%H?+TT(O%v&Ko-|tpVU~D|_QGDDwmWKiGM{~>rV|0G}&A?>j&`)4& zC-6}@k5X8C;GWUo30;NX$AI&Up+2B=sSbp-sQ}i(? z0nh7Rba1DGf9rFeVOW(DVh7q4#pzX*K#NP~*- zdPS{2)P=uy(aLWLUtPt@?+X8_g!w@DZ!N8yaqv>_T0Xykk8{VxB6#e*mWSo=1g?W` zh1bYy+uZ|izuWu_{MA2J{$+Tj4CasFRhL-a{(^67Yw_>88v`9j>OV>0?-jQC@E5f#|9Rp0A6niD!;{pr{jCN6JGJGl z0X(0(!R-bQ3B24H`soW#cEjpD8D61=#m|6Wb^UV{ym(-8LFnfvc>BQO3Zb6^@R$?B zI7I84DQ`z2TYl~!KE8{82;ZN?wj09@e5;%!rERY;5WeOsi|+wf{Ach=b*w&9;EJCKuk9w_Y=+;@XZ1e{ubRjFG<;rP%ky1$+-X*y zNAP&=d;Hx%!a_gF+f$7Lz-zkxlLP*6fgN8T!!yUTavQ;;xbOGj@QZFj(>Qp=CRYDt zaGg(9!M`YP?R5yQ8;Fj z!{53Aj{@+F`K^6xz>6=na_YfHx*OS^@JfrVe*NJuKCt{ufe&*7&okkrqu6%W!rM2u zdTxR@&t!fC-XxW6_gDD2b(ZJ*@YTPXKZW;LWFFg%-zfhzmYOGo|7Fb^QUqSuU9gvi z4?b-5Yz+UQnt4n3uqU?N{_snINdcjsVep6*tX<~8Z@K%prSQx}EdCF8Qa54nANW^+ zMFK)UrDEH^Q+_I(vwBv84@hZo4dHp+bwV5Xz+u+D-Qj<^1>Q!$n~b&i&*A4c*mkGF zPam{;E`rB$52iN2qj$4%cERtDwfrB2U)XEq--4_B`|xH%ET0kL1m{!n(cr_}fK3{> z;xoaQPq1=}!xdi^-oXuMHH9m_75p>zeK8Q8!5w$Q;YZxS$!vILcLTHlUh}yfV4L70 zUs#^E!{gnxb~yuY=?0cA!Hc*9_&NL=H$eUm{MR_P-Gp(2+p9rG`+G9@%fQJy^iu%7 zDXP`8DEz(~$ZrTw*U8Fn4!@k;`p-c4(T(QA;r|3C`G$Vx!SlQFm%yJbvik3WSBhcf z?1xWyVSW?-QzY|0;Mc2IK4ZA=bDd9=pSbWoSFAoc;M(60;Ljdde08|?w+_7L63cUU zxboi@ekF^=PlIcJXTf81v-8ykxbnFbezvBSe;%&;yQ}c|{VdOK;EIpz#ub$3s~=i^ z(!wvh^Gs%VHg`W$2EMtkZMPCUs#}1wEqp~R%R?vl?ps!$aq#Ev#r?_fRp~5#89ZVx z>;Eg^dvaJlZ^OI02O4kTd)@P_nC`)(@|N4hCx#~FhNtXmz7HP9<^L4Cy*s{c!pBFj z{e1$Db;kPDTX-ZljuAhBwWr!8Spths3E$?v2Xn$donY-!7=GlDm0J!T($c&Z{Ed6Q z))YRjw#B!H=Wvr8d&BESxB3i&Z+4U5Cc-Diw!BS&SI=nMT@KISuIqk)H;-%WxF4?a zkHY)7=MgvIKkT&p{{g>I-#k)6tC!kK@iE|A+(2v^c=}!T?=!)RUAH_GgJ;fX`&9;B z$-Q9R7~by_>;Em_#~xZa{owW6y5kGJ+D)FF2XEfq>c0e@f1kDcM)<%@wqM)e5dxE- zLqEU4R}8iCFT&6ExBCAL9}~mMkC4dzo!X^QDyvT__$l{bIV1ejxmJD=xZ+F0H&n3l z8^YVV?~za7Ka6w71^ie}^Re)T?!n`7_>s>nehvJA`#w4e-&@P_d=5U=y%_Wyz9XuY z{~G?ed#;q&O=MA?JLj?TQ^N1uvU2jn*SO=ND7ZI25k2b?jqNMhx@~QX~@K4;tkTP(^SBBqo6HhwB72gZK z;-&S6DR9Nlgx79u_5K;I_}%c)Q!V}?T=Cc8rEge$BEI)u=O+fdRZfe`3|IL%;fdXN zP8E2^qSkL~!@If%+8yD#FX#cE_k-1cGFW^^6Z-&o}XZ`aGT=AFT`^VV# z%Rg|%M{*MZ)en=o`_MG-q;u>%kQsg@v*oQgT=C`LefnB{TEly+vUVH+pZK?JcQ$-> zBa2@M&-AC2zZtIho$!c*S259;Oi@y*M&zeY5Ua#el+lsR_Lb}eCC%{?*Z_-tF8R0@I~KS`Lp0>+yvyc z@Ko)r{7vxdWv%=Z@YxwH{w%zL8_$0PpYE-WhH z!1pz=esUbXv4ri{1GwU!!JEXl{3Lbb*~)+YHdfD%;5Xg*us*z)dtTEFexiWYvkzSH zgW&7-SpBENBeb>tF$Z2fjrlsb;(k7kFDI=@K>%MH-u}xRA=}V_x!6D{F1w#pAA?1 zLiqaTR-aRF#h-`YbaK#sa|5iI2Sr* zfxmYnQds%>;fg;7-(11!^8&8;H}Ev>1&eGM{_FhYfp6>+DJ-xFT;;cdzn>^_So~zT z;%C5f#bGR>SHr(>eFNY4*2;;JDL4-`XGRHw zl<*o0Ej|PM?l7x=5qNnw(YrMK!%r=rjo_&=*mhgMkGk{cSh(UR!+&^b^;`p2{6=_R zH_!7tT=Cc7i_=)XB4-ZHTg8mFU+=)jxc8pkhb#U=xO+Sr(g?2j7VtK)tR5raiXRVe z>t57Y0pI85zx@aw(kOD+22R5je-XZ9f#o5xd;YBNWyQY(Kke?*--j#yL-<}dAFnPv z`XSqH6ZkhR%m>32KMEdirsZ=5T=74`+l;XOb{ekui||<~?Ra?$-{PJ#M$H=BuL=~h z{AYnHJ{SDh#};1~uJ|VKlxZz~FkJDY;Mdk${g%OpYMwtAFI|ww;)ve*~uTDE=LIXBVFZuJ~N=8-c~ELO*rkif;nnuqZ4% zWGuYHH@07&!#lhCm)Y<&?){5R@Dx#Of49TOj<)g-!&S~bc$;<>{|KJaz0mmvu5wbi zc^S%cWj9|d9ei^eD?b-p^Yg00&os9@*M`?|FETcVtDHgbB$sWwBjE3kw!D1-S2?TT zYOi(hHhrvpcfwW9dAQo^Dtxtj4)Fl4a-zL&+fkm?Ua{dHrnmh{23I+G;cwhxMTOys z`&<4iz-NrN^4q{yx$C_y@O<5@-hJUW_nD7|KdNNqk9N;hw7mf z!o#hc{_w8u{jX8*`fgF23Ghqq1+t&v*;ZOT4#2hDU*X#B6?i;%J$4hG$bBy)$sN4E z$3M3IoDRP3pvC2at3HL{s!v(?FK#@lGQ6Xk|26`C@FUyq1b9egtLMycd_MfQvDV+# z!5@sb>ys_;%rotK`B%8MdjbCNzSZ*?T+gBYfoJJx@rm=;pX!G>-8`K1;doZ~>uQ#V z67W9P%&WqSyBFn~hvRMFAG!JVL*YZOS-r=?vu!q?4R7b}>sP@CXSMwAg0FjR<*d#d zoSy>C?e9OsPr2jh2z8eI9j1K)k! z;-luX?WmvcD`J0-4NrN%;?uy_yBC5p!>6sa_`>jw3GDbS36EaK;y-~Wbqj=bfJeV) z<#dNPIA-lW46b!cCc;nLv+d4=tKTk%tKV*cE6=;&aojxEOYlDKz5dtm>}hPj66FtW z7xmi|@L_i>t`J=PwgkMyKkBWSHE2VpX8qVY=bMG zd*M-=T6_HtSHHarkC)8O53k|sw~-43=lRRs)_;<~)o)Y5_g%GrUkv_DV3E|&PX)O8 zZFTstrxu^Spp~cNvHN5DdrtUpcRUt`_jcou<>8923h(Hy>srI_q_cMK06((b@-ql- zSq=#q0l!tt>OTX%=Dw9b2cF9ZJ1^#*>bj@2`A;ov+!9ctwyfH!mVmQ%q8FSqzC z@Kzt0=L^R_f^YlN@=z1r<%oGb_?dWCeslOUH&3Pm{D51xsyF<}dv+esd{vzX>PNBi zKSzAzJ64~CaK(QMf8gHR+6k{)%Z}@P@Jeo8&`bExTh>ld+@~8yY3|`VL*z+8&wYIfhg4(5l`+?KgMQ#7&vpZS4Cxkb8Wcf)0 z|IO`h4tU0c7GD4!!_DU@4Il2t=c~idyK$99@RDx5nl|vu?s;@a`0wt$mBDbukA$bW zY&~n2$?pA&D)66AS^XQs?_RU|wS(7j@7MH(FY9aH zJHz0|(pY^a!Os*jp9#M|&+0QD9&wAc%O<$ucfe<#wECZe>w4@e{Ht+RpEq#DM=2iM zUdKML`lN*`J_~%7n@3#+uIsnT@Q>W}e1CX>XO`zNaJ9=cc->1@?*(whuY%8U^I*4x z<2&IWyZMA?;l*Ouc5lItPP6*|34apB+Wi&0)@t);C4%#>JjaHQ>}Ktf1-`DFd470d zH=bM;p2|J9tqo6F(aLECALHH^YYiWs)cRFt_yM=5|8V%1Zrpn;Jb7L#XA)fHY=wXB z##ax*bzOG>uIsnka9yW8h3k7iq-03gN8ew%?urIKG|JjBHC*wT;2-{J@ulIqPOAjJ z<(_Z0gzGx3Jv>!H`<@*L*LB(m_<&W`?la)JPFo1qb=nGe;U1Q+_3&o%%y+?c{yYlT z`SU#d+pbp5O}NgJ_u)ks+kQnYW&cj?sQB3MR81m;1!jWlczhooJ+sAEf-Alz{Hj~$ zwi8_OJ>iQJT0fZ#*LigYeBQ?vzY1QWrsZKRJZsyCVf*_#yu=~P*K@e;*ZzU;4E$(J z=qFxj`*+H-;uFI&{%Cp21=syuK6o2<-%$g8)Gg@P7@j6?q_B##hG%l#8D7AR&-8^) zs$u1fhtJ$+dHWLHz>TBsgx_<|34VoFIAwXb1~2W_7rhPty1pIPZ{doMQYJY6m#f&{ zQ@~9_LbAgbp0WQ@0Di{Zr<8_&;MO0m2;Z8~^3xcu_!jV0t8BZU!4*FQ9%YTie+^gs zH}K3Atv>7FN!<7NUU-GZmgiIO=%pfsZTKntzMFUV3cl7omyBE1>Z{{I@rmKzB#j&v zm{O~VsTe;QXimwBou+ZYW!>4>=`RNVsb<^S}!Iif;@HszNe_jbc;l|~*z;z$D zAFlha)9~GQEkD1*kGuDh9>TwkZtWGZob8A5uW_D)aIMdf7Ov}ooN!%llz?lTp(pApWjHE_-U+z21<<{KY}uUc$*J_E0? z$NVAuj}Yr8FW}q1u=>XZDRbN8VI;9EbkeqIAU!Og?32OsR_ zL3M#EzBl|(Dyz>V_^fGB!ggpH{IxruuYfE5M|jMrmX|~DdG1G+PQrh4^P=v-75^B1 z+RYP=>7MuMc+vgvyYSmXtbMb>6`vb^IjXf|1^B_wteoobnqzH$+rky!8D8*5D`yn^ zbVSSlMEH;c)*t4>r@pavTn3-B*6P0ne#ebt?1KL>#p?eXT=AFS@s3*jWBBpZR?olS zJ2qQAV^_3)r}k2OLip-;Ej|le`N;)u>gLImhATgn;Q8FRK~uQK!CJ#VU1Rm>2Uq+M z`2DHYj#J?p2b%>S<`#xu1y}q}@GS2A-vjXbJuSb-;h&5%e*hoi)-!wtzdX_6<5vo9 zubhLdU%dza&7B`Vg7?2_{h<`R{5tbi@S(5lxaa`S`jzGX3wR^iuVT>Ue`3ki#_@yl+0+-^}n%ZX7lzJc2vE%E9%#rYgM2 zKr6pBT=5;@naWvvjfcl{KTz`>e9jdsew z3*Z&9T6=AV_a5ik1wO{jJ30qf{8f0Pl~&FhxZWp?Qa!j`iqEt5O$S$eR`>(AZe%&Q z;;X{{boFQtS9~{kC%3Nk6u9DN!pr?+_1^&3dJ)^;X){}XPQo=0?HoL$wUz$@uJ||b zt?vApyhd=IpS$^K>ENHcd3eR)8;aR^z8rkmRI7hWxZ>NxZ%?t~aWuT)ORL``c#~vS z{&KkD*T9dsd6h@uTiyD2r{QJXb?+0n;{S%HIc<4JQZqQ81Km24so>kbwEE|V>wI1m z{-+zSYY5l#%1_|$#kP73f-8O`{QMQm{{pzqv){rWowNS77q0lj@RsiPw(i2ew_-w` zz^(S7zdsM}(BA$_6gO{9--9QcSpMU{^}HY@{A@ZaCmUSjLiyp5hFg4TxYpaO4%c&^ zM)1qatelSUQto+Q4|w7PmY`8^#ZQD^Y-QyyhPUi!{yqG`_tp=0!E>B7KL9_F+WN^= zc*;{2e;Z!-gtg0CxZ)CWf4c-%f4d7;e|rwscwn@TgY&F@m=vyY z&J6JE1+D(s;a{J(d=`T%zAQY+2+L0sxZ+#E(>JjA0q`0(tv?Kh|Lw+GX2R9~=fkhK z_1ibV)&IA_kNjo(dm66(d=Wk}vDNb_T=B2q%M)3A5;u=b$A$WHD){tr7M~BU_#*K0 zWi7rwT>ZZp{MKgcH~r!2|HI&~-S_DVcm%f|-5U6kd6v)h@N;gy!WQ_cY}Oxkz+bhu z>(#^XKJGs147^5p+wOI^#_gZM;{0IugF#o+so+kVxB>wdfm{Nu(J-wUqz0r1_^tlqQWty|i0 zw+Wsp#L7Pb*Zufe_|~+xzmMRGe+iH4=8eQ_5S&llk0*gAaO-#Ff-62hyy$f+w;EjQ zL)L+hT5Iv0;94KDCw#p70oVy}tq(Z`zM!ZbN6X<_A94+R%;#3018|K$9EaB$W#!+2 zYy9CMyiOg9kKQmi{~CXY3qSnQ;xogwK4DJyvs>05D#I0D3!cHfN7)OW^dGC=SMWq* zto(Iwt*^BOeq)1`a~7_6{VuxBW6K&_`LDx?kL>2vD*l#xuPP;6a@k*fopu`A^eK_U8mShg7dHVgzyyZIxP=e<1+=}Z>w8>s{>bj zV|d$zc0bY&uJM^6@aArvpE+>FFM@AbX65gIYrNtlT;mTH;2M9p2TzyX%6|dZ^d}H{+ns(fEh3k8yH+;uj+s{dG zU58ACkL+Q2TLV8l){d_;@N7M;{ukl*2U$6H;krJ51=n?cv}VEWqWkUyaLw;c4Oe?* zhiks>2k;?o9kWVs#n*(-bMKFIhHHLrFZlhembXc8eUDFrr*zi=%ix;dy9z$wk>zVA zT=RR6z;(Qwfsg#a`qe$S=6ODXr~1v>JxcT7_EP*i@c!<-o(yo!3(W@q>o@B^W#PLD zhJ<};!UtrsJhz0O?q&7t0^fTnB<#~4{z)?P(QuVN5ngJM#m|E)ehIwgNQ>VJSNv{x z>Z7(_7vPKC`^(qh$=p2TSMVes+WG%2e5w1L--Mrpgne|qq~k6%Je&Ldrd)8%1N;cC zGvMdk{DC>}m~Ni`M)*&^Sl+h5lelrG3-G<}e*YSLnp?*& za?9X+>O7eMel&N)u)vCNeSbBC>o{ry*En-`xaO%2g6q0v99-8M)8QI-S^(EL)k?U& zH#fm`{2qkI_{iG#1pG@kFZw22@%P~i+NC` z4F5c`?N=|j;s?M7xc4%q!4*FnzR|s3zX`7R9q_sLEiaehioXee^r!7_%gUu?xZ?kYk11s3zt_h8)c5I?o>opl_^rg|HQ*YTs|PO< z$@*s(xZ-=myI!>ZFbS@4xoPl;2Ot!46nP? z>L0Uha6UDT_bz;A$tYogS>YPT%MJggmz7%quKTI#@K4uUd|SA#=R3nwHnn_?g6nr! zCc?Asv+|d~6~6*rsiXCWgYY85Y`Z7mv)%LMn{fSZ%YFEhPpp4N`PAyA{;YA%Sn!wa ztUejw`kj|-@P%$ZZE3j1AuGWz&$aT~!WG{c-omZlG9Lbwd*A#^`1Tmqe|~@u{m%N~ zDfq6}=8xd|9hR5yICri7@!WY!`BZ!oc%k>K9dp6;J1qI(FV|Ros=*as2cAB%mEQ@j zb;WzapStI06X1%U0$+IB_IEj4zZz;$2w6Ir3|BQoQcI$L~ z4X^3O=jX!nzhnL6JNV86cK%!k*KxNUuH)_?T*uvMxaxTY-eQ*J?GL!>^8&8=MC=-T zyr}$G@a%uv{-%Ss&S%@r25;(~r{{-jyCvbuLlwC4P!FzpegeM~!|KxsuI=`PYrDhY z+U_K{w)+)4#{$dGBKXS^R-d2XabsKFx4|P-xBj^gp31GiaRUD2eJlSGT>EVtS6U)ILC%5{Hb$%AZH`lf8ZiOp;5Bx_r-g^nI@yQ$T;iE185qku;m*Qi< zo4b5wgeyJ=e8*C&e+9VizpBF%#Iye27Or)HI>4*fvEy_WykmUZua$5;&;1cz{wLe+ zKDgqKz~6E2AKilM`R{%Br$1O8qW28WbM&%S&*X5ex03~~^>cEJgHeVEWaCrt_0Ix}hEiRN2BDFoL#GZo-kXQlyM&zIZ6^?pZBxYn5&3fKD=li*rs zW)@uY)mOmvyl)#^&+iVw^*wSHuJ5UPa6RvP3D@(!D7}M^3*CRkhwC|DYPi;o$plZ- z(T=ZTaK)E}-*fZvn!xq^y%oGwJ1c(xTE@Jhw){P_y5bz>s-32v8<2ix(R46gXJ@HZuGe+$92ZcGXI>N&Q(`f$ZJ zgRjkR$73J3){Pkiulk48e>z<8bKrA}S$)>QwQkH7_y?a`eNMp@e;&T%lI7L0&vaJwk}J@~aLcK*x**E%W%;jKQk{!j(3byRA@ue$YS+rqVOOlNqL2DZP$ z;EEp$&ywEa=fJgY%p&-$*jE1yaK&$fcWY+lpM)zv=in18?I91~%Fi?S_14xOV)P4c zFRdFB5B}nUwQmNv;x+=p*J4JCH{~B<`*MkqgZsiYzYh9EP@Q#NppC@P?(V{wv|SA6y6j;ewTa0u2X zh})cTH^jTMVxFvhcR4tUfK_dfwe0{?jJw&x7E4&uApPZ+@%K0=VM8h0k#F zyY|BMUeaOs=~GtzUAW#edIZ0G*W%+0u|Jhh#V3N7s$}i{0bK7H6@tHX;fh}jkLB{S6Rve;_QQXCZvE{lT<7!K@XljG!ah-k+Mmj& z){Th;-{|J~XN4<1H@saot4~$9o_Bu?f9}=^>;_kSUwE7YR_|%>?<1Jcg`0+iEQM>G znbmN;=d}^8aprySO>b-qhv7rx*>QRT-s-XWZ}7W`?YwjW-sFnKUxg?B+~RM-8+5kg z{V`nYB)o=eorD;}Y(LZ=H13oPu5}W!!!;gN1g>=wD!?`F)Bvt^5}Lv_9@QSM@u=Q# zjdu-$Yn*BlT;o*p;9V|92usXn_$N0kUzg$8?pS-hg)hi$$3^Pl!FkSb%e(@7%1tY$ zExi5!tIv4&KVMq8tKdavL=5{6hv8Z$;S_vL#+Od;Tqp-3C~j1;`_sOJvj{i`yH$IOt|9b!xv4r{BMVs`qRp}46mQW z`~_UslW*WvyG9E82Z=}8zti!k_>}M>MJ+BLT-TFD;NQ9Dq#wf--w2-Ssg>UYuKCrU z!GAbz`S}vA`PE;;Bh|G1{Q<7|)f?a+p0N5HgKK{EZ}9Vbtv-Lkb^ZJtUa5!mpEzzF zpYpHk=S1*{ZLR$G;kthQ5dL!>tA7=^=AYDtm#k&+UEzxF1OIG})qf`ZlaiL_pW$~e zn4g1d{^wPA(%MnND)a`f_$coFTX{+XZI=JGq!Xvuz(o%56SA^FpVEO3)SA2K) z(KA+`sc>Cy&w|%KWcl0xSNt~kMfX1A1-RmWhi`G?4k7NkOnFm$H2A#!R-deJ-GAkV zM~G_eTM@4Ng&OehXIMU4!F9ji0Uk54_5a~;t&=bg-Z+uPFM$7he*xe9hqc#UxZ)4P z=M1&{+=c6Y*omLg7c~C=Xmg7Z2fze*v$!-O5imKDb>puQfURn^hK{7p{4&h2itlS$!J7KbUOC zS2uW-W9EI~Ro7VFCc_m!13qrCZFeE1HS93<#`cY_i^jsx*yyD*YSH8uK90g;ku8z0oQ!CKj5tnT02Ib7~Ibl{|-F; zGTW~#aLs?q1t0yr#aDpqdapWsT~y0w3%KULwS!M`@23xdYyR69xX!Cz!Y5aeCRe_~!6bM54LeTP!L^>o zMtJuemd7J-9d~EpT2JE+T=Sit!F9Yx`8>G2v_8f=@LDS^Kk49#&jMfn!p^J3;kw^1 z3m;p}^3xcu^&(op_nf!-^nxqCKm64x>km`livJqk&8?gL16=Xz;Un`~`KREDKL@|M z)%wq4xZ+>J+qvtUc$0(MOYw=}1v^uL0Z zUq0oI7r55bm<>-*-r~2yb)Gy7Pjb@wL!>W)^P}&tgm4{4Y2cacm?4a&nyGi zcxDZ_#wQ!YHJ_djc)y6J6!R-=vz)g2^n@$EKRn;Bmd~%@ zik}DnaFf+%D_rYo?1BH3$LezluIt0=@YksOOI=YW4S-}bj6 zT(d@uNouPlBNT;sRX;3t2z_!V%){|KMf-0FW4KDd*W^BDe#TTdqD z)Zlz-{PtaVb+>MOR=DDG!(%PA?N)$m{I)v0Xfx~oZQ+XV4FBbh9gm~n8t>-jA3 zVeWmv5^$}LQ64@wgY}>0aK*QUpX+G#9tqca8WZ5@E?GY3!L^>oQux+E7QYRy@$kLy z6xA&L5?t$PT!%OK!TQf@xW=m^PY-UFk?y`SEnM+g;7ht$eagbMo<|F9pL$j zSUHp6*}t{=Er)A;j5YAJZXM$TaK#^o&)Q)5xdYew7!ToJ*S7jZcjL19zEgZ$__o#- zpBb+8F>=DQZnXYc4zBpB@K4-&8m-}4AEP6DrCSeVBwX|^04t+ zYv1jN*ZBWl_|?*u|J!iI{|O)Xo#p4|=Tqxx zq<~+TX>s}BT2JF6__>%?p9XNPr_mf9f3fwS;c%^|F%Evcs^xznT%4u+oi_VAZ{%!?aRK&u5r;k@Vr~C+%j;Di`IaveH+4CG_visg1_l! z``Z<+_kst&^Sm@|92+5_;l+hYvGFD1i${V^}~~J-G7~f4|TtT@B*&* zH}J@5tp3U7*q=I|C_XKG^C-((QMkTe%D`j4v~qjG^*el{;TnIQ2%i?gwmToL_@(gD z-&nhEhiklgFZ_CMtLIht(GRV?p2GG1Z-lwQdDHv6(csgLS~;oUiq8N)pVrF#2yPk@ zQVE{Dz3p#(xZeNm3)lO$gW)5tSv{w~6+aVxp}XtPaK&$eHz{N7cml5Yv+&1Lt^DV3 zz0Vuvo8bKGecr@yjc;dw>wVrlaJ|o446gTiE5r3ZZ+*DtRknv~ym0_r-%LHT;q-F;2Lk-3D>ydQMkq-FTnMF?(gu`6|En>f-64ayx{h#J;~ye!8QJ$7JmAc z#TSC>eclrAKiuzp)u+30n`ZDDZk@EgaJ|nv7=EOj)#od?-sk-W-Y|vr=M8YZpSuly zIa^5B=Qp_GFToeTvG0rLaJ`@V8s28S)j!evkg$)=|B6omzn{pC-w)w>KldYecK17O zwc(0y2>*PA)uTIH@8|Y|ALtt)>>qpqSNvD-scr1~Z8co)=dOpBK5zLv3RnDTc(J&a zp9gTgulfw$OHayNg->$pF{;x!K|U*4X|Qhbz7uJmkF9qaj@H z=Y9fj9VKGeKj;Nl`~Z0Lk1aow;mXepc-KglpXG4nXAQhc1k2A}xZck_3?IAP@^clg z_}lQMIV}DkxZcl=v@p0G^Sb${N#Kf41>cY-Vpstm!1X?FA$alvme0Cyz0cbOzHznH z|1-GW=N$@v`qJvN5U%%mzk{#s6)CL#hv0gj_auC;`(3}k;Ci1oWKnQFw|#5nr-kc% z-YoFKC2W7o!1X?FWq9q#b8 zbF;w*F1P%bf-Alv{B{njPaC+#w>!bBCAa*KgDd_E_}k{TpDW>tUk87*-Rge=uK2U? zI|(fQ6622^-m46Vf_!IDTUt2!^glj(hb9k-|*1ie83+~T~PX-^8(aJ9X z*L?V5@PeONxsBk8ZvjvFhn)`x!}UJzD0r>17C#rR^Z8f**FzBM!nhx%a0|z}HT)e*OS{bfe|r89e=WR-ZI(JVW^( zaMt?I`*8KQLU8rBa&YyxT5$EZrf`i1c7dxO4uNMcX#H?BJZDMU-*onqT05v+)X$T{*G9JTKY**>7J|=@ zY5k-IT=DhbFWm3H^nk11eg?1C#p?eBT=8GQcNDey{0LV+-wglyk(K`&T>bnK{CISW zkFhE^p9x!;$ARyxZJq#LzpCXqDSTdfD>o&)dVkxmtZ=P+@F869mz98Pe7+`J>mIa# zYuvsETdfrX>|JeSXA6}@jl~Wg<@k8^$@E3ntIdkE^yY23T=W^rQH{svSwev${H=jbswbng& z2cC7h#b<=;x+@2KO?2y@mEel63GZ6Q%I^YKd~bOBqV|0;1+M2HGvOtkSl-sab>F=a zo_nIz|2SOnXW(g{S$n;Jf0f+INxUYwKWyA?@j2nT@6HF$bIOSh zclUswbJr*1;fntfertu5{~cWOV1J;0Ztb-nu6eM>;Ah^k^VMy*=E436?;c`#jw%rDB#W#n) zDq`)`53cwj@K+yMeHOqK|1G?1PV1is;To4X0sqn+?|;G-{~UhYz4wt|U2y+Yd@^|I zcvhbRaK#scN2y`^+Z?WOs z_=#|h!%T$_|Ht;{2e{%lz;{%!@_&VE9OeT2U_^`m3$FN(^}+c}5YOUM!Zj|D3$Ag7 zf^dy9l!v$a-L_W+KEr)4*M!$UX7y+=vdo~QG(?q_4e=dQE*B!G9RZuQ9mSA0(R zmW6g4m50CY?$fKnpSs_NZ4Fm^2ly{;KI(9Ibhm!OSorQ=Y`^Bi6~7cd-Hq4%2G26w z%DDsITi^EgPx!R@)?N`e1|JuSj}CwQiN&RXD?Sr^PAiKq4p)3xc+3md|C_=U-wNKR zy_G){ey^qFVKls!n>RiauK0QIcca_&##;DgH$Qw2yk;A#&nfu4Csv=^aBcTb_?cMN zUJ*B0c{(l>9|IoK{oYCnc%^){-SqIY@vYqaaK#seZ~eo{sRLJhWB87T7T*i5_yO>p zDXl(J;ks{{1@GXlGuOivzZD+WeZQWA|2@^Vdlml7%^&_7u6B>LIk;U0_qP2_3BNqV z;gR7r^1V8wtm0u06_>bYsV%c^(!WG{gUj1E*9}idj7x0|r?R@(kT=A>n zQ|?;%hvDkaC*euX+5X;yEB+67EO&l>3s-x+yT!Jz<4DJ88hDL$cH9+$Klsh+QxUHE zRENLso=3NUEB;e>d^g{?KYXsc{u~N_Uc}BzQ{jrA32*4yYXw}#<63x|{g$s^;EF#C z-~F-0--RpwAw1zwJI}{($FbT)@p0k%)?0jLxQ_Rn@S*N^dn>^eUlU%dsrBbhaGf7| z!k3)0{hbI`fBOcm^TRrLzRI>=`{8ktT7NqR@14i|E?n`C;Gb5r_;sPtpiq8)(_{z$!4cGlzL-?=mywn4({EUS!+-&7fhwFNBA^g1|R{zy-#qWi`>*l4L zfa|*S5?t4%ci~!>>=j(=J4M(Qod5G~-b-q@;xob{x%n`q;fk*a&vwwZ*8;9}$=bn} zxOLTr!PV|#;pg1%lr4cPeg%Awd%ku6uIDw!;rSBT@puQW=QR)ED~4J>iMu^G&z;>o znapslGnNzHIJTYt%fS_26@J3a6K(_7x@4W;son3|jD%}lvI+2lr!5bQ;98e#IlPH` zZnYb(}YwUgl3d2`LGA|9!*UkQYRrvNNR-d|XmD3Eaa@xVux%Do( z!&OdyxXKv`A6(VyISHe0VN*eY+MuFmi;j4QzpLdmAy#e}Vsz+u{$y^ZjFa zI}MM&#QXxh^zRYF%D(}h>wdTW9{e-+JHk)lOWg0CzlA4u&vT>fvi#{dt>^A%6R!Aw;8ET0vq#@;?XUi$yd{7uZ>iwQTUNO8mKR>ViuJ?daE*VK zg|B^S`_%xh@y}-PPVRRuM#1B{am6WcGkY**$A)M&&oLn*SN%Sc*1p7&ULur@4_Frbvz>O4bHRTqr>~Sb(Ye?6`vXY zzFYUN1YGgu;L*lee`^WXI72)5F1HT$0J!3Z!RKtUcAN&+eeP1Y##MfT|8~Ukd;qTP z9)~wrZ27$oSNuKrRrg%)4P4_1QQZ7foyXF<`Nm1%icbxnu*d3O0Iv9A@K5$zd_B10 zo5H)g@zvgNT~`l;Z#!-6@-X3r+Wt&{EB;IP zA8tHn6Tnvz#2R@z3mV)h7?U zdM@k#W#Edh1h1UN_O}UKv)_7pPMgASOb3xSNtk? zl}1*dLvY2PfFE%4Iq$(0{|J6Cnf13A2ZE0y9q;kr(_UG9a=;az7oItewO4hx&JT6r zzy56b>;hMR8w%I?VFoB4`{XYa({7HCIH~;EBTzPm3uj77K;$1g> z7Bh5nf%)@_PYNI9>XQ$y@s=X+@0ZyA)`2TO9pIzixA?wrT~CgLUukUZ@+DmH%i!zN zS^4YWir)!e)!&ZOqj1GvfFBuQ<==rT{yBWsF6)Pp4h8pf#pi(cPGIo`;W_Tuzb^?d zP{xky%J9z`+I}^K>pr42e6ag|912(b82Hp~mWM^~Bi39YYvHX1TK%`dwO{+-+OHGv zO)0FL8*tV05BP-379ahv{i*)1__*-oJuLs(;o7gl@Hqo5|K;JDFI^w5`=C~Et(Vmm zu6fY|;9CD`IQ-YKwx6@$ieCUP9K-f^8(iyU?S)@+?@3*TYyRX-`11u;pTFQ*FDv9o zaJz*3VSi5m-}}fqRx)_VG4ld&&0i`Bue;uki)wJSS2MWUs{>r^)d#Nj8V*fafz`VWVz z{*&NWGg^O}2Jc+T+T};M>VE`YXPMRW6#VWDEB`7y#y0c6;pLW?ha3;i=Y2Qc5*w~^ zGQrnmvvP94-`QdNRR}&~ytQvtc-*8`PHlLy!Pf50;VlnXd>44i1Ge2>@V~3rc89^W zU$fu^-MH&~`0~kC{z|y^YbX5kcdefL;78r>1pNxveqDz*Ic(+Jg@4z@+V2Hi^?Bz+ zaQoiOVCB3EzgN>d6qE4qnmyUPBdl;rv!k9k}Y#4xaRk)u#*m+v&ESec>u+ zCVW{6>xc8<*$PA=-C-8D^p2=VE37xE-iB1K#W15N9 zjw#@&-MX?_;YIFQIUm43oNW7B8Q$oDc@6l0$yQEXc$1n|pBC`FZe6?O@CEU$oZaxB zFWYt>!qZ%_{r?B9>%Hi|2IoiDjS1l)EiEn$T+fwqz_pHILHP6HR?lMa58S#^wcv`c z4{!dFmD3IW#tw^+KJZeREN_$HW%Am7O^3IrWbLvRuK11c!jG&!pN8vt_yYW`EB_5# z*Ta!d2e-?;-d27(xUPq@z_+>Q#ns_sT;3YNhq&i`ZQyl3wC#3-_i*cs4S)}wV(l^- z-lv+C^96i|d+%=pT<`hrgR6g@gsXpEf~%k3fvev>g{$Abg^#FW9V^Oj!R^xZr0rKy zc*!Idp9-$^aXx_me%s;;!pFPy4NAh(=e6yYhre!SUIV_ezqLzU_~H6?Tr`7Ueq-^i z;W>8N{&$9_bB2#?>*+CBE! z;QU`cW%W!5KkuH~=7D$WX#c(-e6)KnuMRxzSu4LWy!cl0e(*l7{2}lk*V^$o2fk>! z)n^fWcxx+v3tZP-d*Dk(TK_x+ALZWnxeC{D^e0^NdH#Xx_=@4?W$V5}$5&#wj<57^ z9WUA7Pu5x@r-(%T4&>C070$xZ>|^2@<>d{u?dbOX@s;X1y$ z!PkCd{eKc%$JaD?{}|Sv*T8jrZG`veX62uT>-f3|Z`jH5^$f1#>kVATSL_SHd4BEQ zZ+#D*+>Kjifb04y7d-D`E4MIwz8fzp3)gj5b@*U+{niMs`m}+oKHcD|&j7gUGa9b? zd;wqI!rE~TT=iK7SAEvPRiCYJ)n`9k^*ISY@xc1YWw@@B@4|JR{0y#ohFlEp54ui% z2d?@gg163Z^(g|^b!jR1-|l*~4qVrzjo_7b*>T+kuItiX^ceQNGYGEh(h>0Y2HN%B zM7XX?r@;5Fu>GA4*LCRvcpoOTPrVne>(cXZU6-J6-N5?c6S(fX|AN;_ZTp+VJ&)D* zrtZ5_!q?QW_OU*t>L(lF>LX5)0m+) zd<$1USqInoVKcnIJj=sTxZ;0>C$3`c{s6A?$y4}Nw=PiZt07?@9gjLcB!CZh^X+oO z6`vnozO0RcNg0JegoI}WHG$$ev3Z@U$nyd!&$iQ*KWae zU-lHPc8_o^IG^f2ap1boN(3J@)7m{NT=BW#sb540+h9ew?#pVxr!})YdZVwfe;VJ-A(TUzQO5 zc&o+bf$P4kAUr}Qi?0LMeOY7pp=$2@1J`}o5crlBR{k8g?#mXz8xObgcffUDwh#Vd zp!J_CaNU>Pf$P5PCH%XZk-{n(<+{~Z=Mx=A3E(=8(!g~by${!MR2Z(~q9nXP`^aGx zsRLJhWB9@;mWN(&9Y+J;*_zn?PKE0@ngw5VI&xTj*1~mMY=VznYV|n*SNvIcK^OlV zuH)i0e9LJoKhcfg_ELNb_>x~Oz7Sl;Q3?3qEmm$5xQ?S%@EdQe{Go6iM`PgA-F?|& zxQ?Um;ni|S46D$7xQ?S^@DW2JhsEEA>o|G}FJC=MSbVITw%_XiI*t;-bsS}Y58h|} zDj)pNUaS8{@Lh$io+aV$4Y7JugCBj*yeWLdA=~aqy36x;_?zq&KNqg+*hTQ}ZLR(r z;JS|83Xc%g_Ujk8u450wOWn8ra~iJe*bDGX6Di-n3>)5~H@lRR( zBi*v?s6Q-n*XMEJx{l2N*L7@8cvbhlZDF{sW6QyH{;UPpb!=0(&cp5Dx{mD)*LCRt z`1yj?E|cMkpAKK+#uHY-bsf77UbCRJ%MrM)OHaY`jI-nP5nS;v;PHA{`3Y|ax1+9O zlfk>kv$!H~UB{M!k9o)P(;Tkr*f#KtZa(}VcAkbw2qXuJg%H z@B)LZ|Llb8d~yV?{%{Vi^T|!P`pILs`pFx(&JU6A1|N4j;@bWug)2T4JX1r~YM%wo3!gYRV48Kv>>eCOd_`&d>`r7xxY`D%R3*h6sTKT)-I-eYXkEmtwx8XXU zJb;gN>)9r{7o6vniL9RK;JTjA4gY`Wy363KlC}-k!6CTY5Hv{8;O_43?gSZJGPrAS zhv4oGK?4K^h6Hz)po4oDV87qK?%q{7tM>ev;-Kkux2#^)-H*GUF9mn)ULEfGPZPMi zKW_~WzN>ip!d?0y@PS=a53}IzetseRZd;8HJK*kqen0%eCH1QdaCd)x9sV_y(!Yhf z^k3k8Eqzj358?U0=J~&MTkifm4g6^}<)0t!(iej_ud4Ko;qHFE6}(18)xSU7-OrDL z7w@b51L5v|ehqv}6{SB8clYyW;3sXJ-BY-`pMMSiY4cG%Uq|le?tVTo{6#ihA9KLn z{d|77yPq!ypEynBstj*mTXFP+yX#{=`21?B|M75leVhvS->vk^;qLml7G5ch`u{e# zyFTuLFPW(PkHFpa@g)4wM4gYJaCd#Y3=j0P`xCgkK0bnP{9Ez7f_Ez?{|a~4$9Qid z_Xl@2KJasy? z`+T^&J}!lCnWOZ3;qH2O2tK^E(%*!;^!MRe_Nt!$gS+cv)VGn_YwA;_&jNSXM;~~2 zAEmDfch|?-@bTg5hXdf({guxsxcja>74E)k&xgD3+AHDiyY?2i`>wqY9#Km1oPfJ{ z!r(5Rn{XG;6S#}#E!@TP9UeAS?G)o(Y}oU$~2>1bq8IjXzc4 zRj;UjHiBPUDsKTl(MkFI33urSz|-5hq-pSsDV6_h_^1N%jc}KKJ3RhFr9TaK``CoS zGiFfwCvcbkCA`#X_5VcgBe!FsjLIh++|{QK+|^G$`0;Yery|^?uMYRDq&V8cUHx>0 zpY+r9cLdy}9|wO?T=_47yZTuPPy18n-2u2ue-s`NQ}Kkuk1fz~Kfqmm{)W5yiSZ$F zyM%04eWr%H^y%TRZCy+exT~L1@Zf(Ge?z!S-yD8xuIi@`+||z@_%xe05&(DU=fJbZ zQ2z{qhYnFa1jD*%<@;0r3No#KCt++L|{KZj)S z0*#eVM!1X92kzo54fnNm(-q;~bv2IFgS$A}!nY?-J$Hux^IG-U5AO0A4G*2C^poI; zZC|N*a97@Ca97@4@KGyNZ$a>6J#^gDaF_oDxXV8r{=mK?{|gW7s^fl!yZnE_UH(Zw zMeYwvY@Tx#c5&zpQ`XmwhwJ>_ywC^ z(GXrPK>epVyj=yw*%m$`MD5iXp8SryCwyF1`4D)Q#5(Rc_(I#qX(qf$RHa`EzhU`o zfVcUej-wj^Bq?`?}vA+A^!*N`qf2vjshz03%J`?=Pmq5Hsv4pi~gN^pX2gR3=gw;2tII^ zJ|BGWQ`Jvxcpck!v?2Vx?f=#j9#~&-_JcnSkk5n{wf&;!!yk=MJlo)jf>i!J@Rs)b zo1ySPn;&u+9xc1_iGbI%b)X(!BiD1#V)c_$@Ta!^%M1Rvo8m75Z#Z80l!9-u_t$OU z$?QJA6TF=5!#oDQF0bOA1TSmvF|NaXmMNac=Kt49|98ffRW=@PkbY_^osZw(7wYLB z#Q3KFyZ-sLtgbJf@TyzYACklK4^sY_;3YOGeJ=Qrc}iadKC`FlzY6^GBzb*!gJG(N zR`5V;_pb2ecD?8a9~@Qr42K`hA)f@_SXuQm2R?F?d>K4}y+7FqpZb3nD}Z2l%5$I_@vHkFB%t{2sZV47KkRDd3-N-b*HU zg)hoKFFaZ-)musUlR(8;4gSOS-)Ic4VEv&3d}$sXw>P|_t=}95pJDG^C&P2aQ9qmy zuTep9u7+3Wuk<_MEr-gFz*E@!%75T3ZQpVs=mzzN3-J7nRNlMr2ia8b&*3XCD*sRLW469H{*TD* zmC(k?)bQh0pWg7@!xg75eCY(`TMFK_lQWY`4`^He&;mm&&ciNY4d;L z!w05Ne@+F@m|g9j9bU`cCl`Q+S^lNrx9z=LHTe9$tR3M8N-3VU@HO^+sRw+H&Hot* zUu?fiG8rDcSM9hT{wb>Z|26o#OGGQ%X+I`3X zc=b<;X9~Rbef77s@FctC!SHIM6yFPYUYoc15k9es>L=;%$mKdRSAQ-9?^QzStHO_u zQ~NfA|84gVo#9Cqs6I!+`2tb|0G$e$U>gm4`1os(h-#ci4Ulwc+dEDegw_cX^ag z7kHg>O5YQ{%J#?T2fx`u>HXoW)~TMS!hbAMyUc=@Pp*6x!gr@sKAYekuatfVe3E@f z*blF7?;p;>KMqj)UVt~fq58QFUlU*PzkvVsRp;GXc)y3r=L>wrEaekBn#$qEflAX= z-URTwo#n~kE&J=ZY2Zay%QL|Lye`iQKfO@#SCzpm-y`_4t z2w!C5V|Do0%}QSvzRmWDY7C#bNA=SZ-X@W}J-qW6mA5PWp*>&sg2y?o^7e;sw)LU@ z@N9#1+>!8ec3(6e9?jlQPKEbdrh1qKk8b-eE`VpZeLMo;Kdk?(hWpw2_l@v?HtLt# z;XwhahrRI5SyZ2g;NF{+{y01|hWg>(@OwFxPZ<2`8|8Ba-Y%)~xdqQ|>xdt~W6V_k zPw93a_%D2MY32U`zH5rwNnyDW8t;i+5F)<< z&t&tEAHXlhSN#9NcXv_z-{I%Ss6OMyP(8WxrHp-#_yfLZp4uxrJnK;X`-1T2W94Px z2aCyT!du$)t0}y`J&$*Uf46x-z2P2SD%Svb_z?L>_|gd~*A#dOdoG&?uW8>~SHKSr zR{opeZx^av_Q9)kSNk4^U$O6cq4Za3#~bi`_FexmJg?nnzJXVprTYH_AJs40%ao{EGd`JyHc0%bhz}wsXo)5f+y;t{z zFShTACE!i$zOFpHmwjKW51+nY@ic>^;>ac;6MuX9hf5YSrT! z_&-UMelz@{y{8R^xA)e0@i%;i?Pnea|7i1huEIZ0)%p7pKFQvjy@wxqqohr#poRy*?7AK?r+aWo8g1p z^A7xD7R7l29=KZ`3O{4(`mew{cq`5)@HYol-dAwXrON*Yyt=&~h-$xMP)nU(MdAKM6lZyOorEe^HTbly>Obw_K7$lzH+Zoo@(FNnFL?lb zXDQ{s9=@`f;@<}E)j{$94S#0y_|L=J*uEvt;htS|+_&(k_I^9Ir|QGCi)UB$|Ag?$ zHV-5-Jhk;(ANW%Hj#e5zxSGmU2|n89<2HluKdSU?;XN0rTz+sbne#+MS{{_Dn zs{BX8yS`Mt%z|IJqvI}whlZ#fH^9r-ccSg^tM>k6FZ`Q*?>`KGXzh3c-Y%=+ISVi6 zE58K~v31rD;Z0g7{-5v^ZPcHW#*N%hb{$pvH1LA9jw~a5lf6I54lnmXaTbGLw0&~Q z!Z-I)9F5@3t|*_D@bRIFe<1upKIJnE-nG5@|15Z_nJVu>cp}?(dKo;1y|-KouVwRL zHp6`zsvquxhbPo=55u#>k)MS7+Vl8X_$OP>ei8oBe&68{Jes{vcmWUTr+WJiA6iZR z|1N_4UubSTX<_d@lE>5EJMXbg?ezydkImo91n*E->2tsnv{d`%g-7|J`Ya6J9YgI~ z13ssUygt0U%@=A9zi+><+6`WRl-gw&e92DvSoqKi@;Pvqelh%Hpz2{eyxvUJ?>_j1 zQu5RAIE&T@Z4|3JmF1)jW#d^bF2pw5>Y@H646pZoCrxpdsO@D&5(U*J!(tGqev zy{2p5XN^_feDHyRinAss><6S{oqA9aA$a+J&*ha?>0s0N5kzj^_UNzWbdB?;fWKf zT)W_pQ_F+k6KtN(S@^}KYOjm%TZdHMr|@2O{=SC$Wzlhe!tb=uc@aHPenSf!`dYe9FN6S}EVk@ViwMPbavajmtgYHJYm)X23_SFZ^e0`C<4l z`(E}C?z>p=KZh@TDE|gOZ0iSq!?(Uyzsj6Aay>s|AG%%rTj<3$6QeQ74T%CL;D`>1z&CR1GB*YwR!12@F59Qu6*#k_PwSsys{m)B>a_qe=HAA>aX~# z!u@)w9%{q=%PD`L&o#BNdtiQp>*n8%_@Mm`w=U{lM{yOe( zc)~mKvG7TsmCs~&GkZ@v1AfT%QJM$8UP0}(1b%CR`r%4=iM2|<9zM<1zifraJgzu* z!@p)$K0)v)KUCgh@G$ESr{FgRD*tov`@NOVC3vZ9D%TBo&gk-c@U-?G@(Fx_&F^{% zztUahdIw*&ME(U{)Jwjl`sSmGb<4GI%*7Zu?1Kz{-4;=y@npo{S9)7N`d^Y^9 zyn!!FC-7Yxl>QyOgS}7t z5B|u0mov6K|GEB<(pUBD*2OyClvSPq>3eNexpKkh*?3hHo_VkGsR;kW_ARXozh=*^ zE#cqnyJ1&&QF|ZTA6|Hs`rAnOEz4&ry!sTyxd6U=rhGNL&Puh*cKD|ZYL`Rs7CYpB z!>8E&VJJMz_WijD@3C9;9}fTLn&Np0-(~C3zQDiQy1A$}uDEtTX5(QjcpZBmn-res zPt{L)c!N#yoNzZT`NG$AQvB86ZvB28_)NQQb%(qB`@nxsQao?qF8wEX{ORgH8SOj2 zs~?x%egAj9XOQBrgY>l@$Q!};wpBd6;4jiDeSi2@yS`6_N44)1Dg1@pCH!t8HZQjmXcpRIbkTQ+pa`kp-rRq5yeA8_8^Ahklwtqr7 zct*R9w1MAyuKYW}TfS8O!{O(1%g4eO*?af}@PhUoGZ6l3wd(C4{QEoQ9}KVdUg___ z?}W*pz^{0yTv5_SuFs!$lz%MvdYk8&1-`+aAAR7BO6odQ1s*q%;;99H(ptyu58v2a zTgfre~(l=@8GFye&c`e+ACE5 zQPV|kmxlH}*$W;#PU*A27adakW#QxPeMn_^YP&D$0w2^warA^w`cvha3$IgE^{^iP z_XfqY6@IO@@(+Xm7^nVl3tpnG{3$%UW8vPus-GF~X7;?W1fIx4>DR+++4t1l@P@e*=P~%D2-W8~ zctLxQbOWB;-UB~@r?{#1dk3$xUHSh9e`xa?V`qrm?mf~eeKPnPKY0dtRohP^7yM8f zr7sGP-bD3Q5q@)}`gvXWp&?4&65ie3J9UL8_)GQNAKvMt;u#5VX!CWa!q=Qp`UUWF zJCy%w_@^0)b344Ut*1T5)a{bM^Dc#t$j1wTc=~%EOD>dhputFuM;Q3ZL6u^*IrK(B8kzfj5h;@-Bye z`>l93!{g0Uf7=h=Iz;tw628Iq6}bS9(@)2}1Aov=`9FuJ+oX6t!TZ?v8V_5S;M%La z-CxCn`!`TNso+m+JxdmN<`Bh`4}LVS%3Bh?$>v2@g^yaOd>X<#+dh45;cg%B9`M%F z)h`Fb{cRrdSa>p1b<-9kEh^`>^?BU*IRL-J{y~2iNXHZT?IG_(^*%O#@FISLaK9cz7w*Luq(j`(98TKGXVT zUHJ1;%BL%Qy?yWQ1z%#n-!uX4(ocgQweLi0;oD2Azioz>`9tSj2;99t{|Elq@_!Cr zy;=R|4ZN`(H)giTN0X4cmaEk$Oj+tNcmQUw|^zC4S!_cTRX#pbEsW< zz<1ks+i~!cqm_ON{2!Y)vJBqfzT#N}@6%3x818<*=>$A~Y4y(saF_lm{AV@a`c>Uj<&eqr4Wpx}W0d1b6AX!^hkE1n?h3d|zYe}9 zs>*p3KD~(ge+c|-L-{>;wL8k^34C2@#q$&XBfa8}mLqaK4}YwFk`g}K=I5k?-wx5g zZx5eo?}2;3o7p_cf$(GY{$vz9md(SQ3Xg5~{mbBkZ63lwcmcOg8UESU)qaFOU7&Jx z^@&_Rv+U1f;Ysbfwj937-q+oLN4NLG-{JLaAH2djBOkYweV42cZx~PQxCs6|t=fGr zJl7<(?^o)$c!R~tcLe-$Q{}%H{$`8f zya8`oPvh_>_|5@JpD1_a`0szxpL4LG1j{kHpJ%`C_6WY+erGLu zzQ}QIvFG;;@J?4$Z>8X=>^o5vc)v`FrvbdVJ=eE^FI=wjc85o|``$6|CHCHL0sK~a z9d|4Ik08Z=62AJV%6}97+}20Dg>Q+e^oeYKjceas)zmKe;8DxzxYgl3aw)z0Jqnl4 z%PWdM0O>1L)^WGO>)G?*dH5Imo)QkP9IE5~2hV8V2V>`t+#h1*Q~X|ZKPxZ%zS8e03pSC3ab2jCs1Dt#FIwB47!g(tN4ejWuP*Tc_Y zia#;D&{KIzcuZR-l@9*dzW-*1kLjj*&H*oO-(~W_+gSURfImv2xU0Z7ZId^EC%5mF zZQ%{as$8AniR}H@IQUwdXEFocF}K=fG5l*8waZ#~`PZt49q?Y;<%i%!hbf=a@F=%* z+)MB-wr|^A_@4un|8w{*d++fPKK!YU`wM<;f7$!h8t{Of%D*wZQzymQ4t~|f+aB-%qgBs?;2%?|T%+L~?Rqy2 zUf$+cFMzinseD$!tM`>}g)i-{etQ6(->wTM;lW3h{yaRsjc>Q$e#Ld%aQGkbmCt+l zuS=@WpYT=oJG^lUMeZl=caf6A-R~%6guCa~-0=Iwly3oe*_w*82K;VgwPQVa*3U}c z4W7Tc%JnDwdL12i3f$GtO!&qtO1}Z_-fwJ!*SC4d|G-`T7vc54DgSWz4Ew#6SMVL* zbzVd-tbgaO%UA6CvM0P}BJ~F^xVx@pfp@g~#-i}T?{wVK@E`jXM`O6>G__Ytc=MI= z{_sBbzR@4vz}CgjhDX?Y?}hMf*VP|(zz+p0&VBHEwm;_uxJ!Qx-p$rIzJ=Ghq5Am@ zuVsIZUnFvSWwGCdNeVB%UGe9F#|~5e`QbaVsy?g3L+rV}E_}W{-}ZuE9cS$V-&|7X z(JXk}|KtncCGGc^_QH?be1=2tueJ{HDtyH##d8}z)y{{H@ZN!{x9{-m_FR*sXyp1Y zyF>Y>f}gbasJ`&?HgB^Cyh&l@Qv*J&g6gLpe8(%r`6oQ*CdD@ZUS*i_34oWd-&L6d z&$L?UH^bZRQk*;Cc^au-J%z`!-%a=cck3g5!52PM{&8(wcjMBJ$?_ENXs>nLZ16Dq zPF)e+w2kVm4tzld<=+;b%}e#r8Gbsp()WN*wCB5i@Zcm$KNz0nvV07DnZ4hb245JV z_6>x41gjo4!nco6dH2CPOjNlJ!xz}R$`kM{Hoxc$JY5{+e;$6=Tjjb6pPNh9k=yWH zc3<%jUeNp*{I0zxk6t|T`B>BT!OH>JN+Ix%=w4 zYvD(0tKE0N8;p`4g0Haho`%1gtK(jRkFfcuci~@4DW2!>BeovuBiuKR>iHKuFj#TM zDG|B<#I}7ZQotWSQa+jC)gLSVeDE~34!smS)-D~dIy`i=%GCs3@wDRX2;UT}c>2I! zR#f^?@CC<|ekOc;2_1I@{GiQ?+X271TIqw~=j?iP5k4fo%KHdD;H2v94Lo5v_0I^n zZxWR&X35CyRlA+?Ndj+sNO5|>a2L-_ zcq>~+_8)xhH`PznQYweLzE`p9R9bkZoY@|PbM!pQbyr$yW0som+`5%UNNUeTy1|D);`QL#@v-z~o;n$}s z{YQ9kOvUpH9-2v>$>zJc@=n~N`p*r2ZQmJ-!XI0^SAb8k-vy`*zfoRsHiL)QK6oAB zwQV1#KjB@yb-w=vk8AHg$HPCVSROOsBka5O68JP*x4RBrEtcAGCw#EY!#M&E^;G(^ z@O`)C*Wl{{)E^$fhuHY=27a-L+A#v|)-}g0qxyF3>((_Vf!}YdY@m8b1iw2&`Q(5Pt)P7J!rR+=uBvdCzBc?xMa9tt z{+HOJC%o8o{lzG_OFsc#t)}|JK^LBW(Rbes~}IepDBp*VZdFf&cfP;_MFJ zVEeW9g+H#M`kVm&VfT{(@XmIhyc7PPJ*OXm|6N1zguu_llwW|CvHeo6!{^vMlLzn< zuT=lf;3I5)^*i{B2}=JJzQE>3c~sEfyLLSJkNQb0cwlAKTOxSbbZXy}@Dld?n*rXa zhVsb<_D4pTl4;7jd3;Tb%My{~=;e|1&)e1)g7 z=K>GA4!i!J^MmRk7W}dOUQ8l*`wq%KCA_A+kIewzY5O#0gHN*SY(98s3&m3ezO|l? zTNb{~=H*m@PY+T)b>X9`sU4fZr*>8Pw(w~w)gQXR%e1ln4_~%VaSnn{O{VlC;h#I| ze4hZ%cTVxlfIqeOHuK?k!j;c*_#vCGybiwBelKP_{DFN(*a!Etd5Op1Qy%HKr{P0v zKH&xUcv}y39lplaeLR4tY^D64!B^NmOYh*peXak)``J25k4pM`*Z&WkRQ|ExkJs4v z53e{!|2`%BvAwU(0H3>F`DcSyXsP`3!F$^MNfG!wdtNRJZ)5K(s=$Y}w*C(=;3Gb%Kb(et*`@q1z#CtdUx(ka^_vgif3{ct z&)~o9KI$F(kRA6cJi_KJd)PcU*Z&{yRe58<^Vsu6B6yaa>Q^b@gKNn%z|VeB{@LI; zi>lr8!Bf_k7lD^gqIxR}|I6k>R)NR2^~iPMK|>W!6Zpop%D*i!kJ?1dnC+VNF9NTgSLw^bySJBD zfxqxnJayr|FI3(paKCO!-xl7@o`bs3?LMbB{C9xz9|Uh?^V3Gcf7epGPk=AXqjJrF z-`}kMFdtswmwY+=$205y@U#!C|HJpklkbCfwRzpg;D5YV`qS`Q3lz@eHjD+S&F08}an#SnxXkm*9W@C4xV(d6g;Q zt8E;}0KZ`KtFyt&+w)gGc)w|izX<%_PpY4?@G-{}e--$w@hWd!`0Kw_t|ss$*>v2t z@Ei@4e;4@JV0mx&r+SKW5WLnK9d{)BT6v9=6X4SiE1ntfLoZdX`SAJn-hMf}h^^yZ z2S1QX$K4LkGF|1`2ltq);~s-2wD%RK;g4;8{snl!VAaEQcsu)!{s4Y@u#Wo-KFYpN zy@UU%rTo9bM|V_xdQ?;ST>qc8Pw8X9KiPFE5xiu$(x-$MwSJoc9zVDGLpJygn^%wz zUgWIxfB2UTin}a4yRB!b0>8Jw`ae9lzw&Pae`xy-wT17q`S4xfo9%g_H@xmT9d{7? z(<%8#_?KGN|KaKFd2I%K#v-Mk507o@@t4Ds9#FllgP*o}W!vF7jw;T5@Y8kF?#JMB z7syY;AJ}~R3-E!Z75{a3{XRDS!_V0K(r54iHc$8+eCHX(^A&!etjgt4J#zm~X1|*j z3m!L%(j|ibYyBZ5{E>Y}$N>M9Smn(I&vI7z=Y!|A{dS7L%m1r>TNb{$yUJSye({35 zF5ENR`ak@c%};0xj~7+#(ghxKlH%_TZ!pKkfA|A?Z#)t{D3;PsfPb}hLo?t>+bjP0 z@VRy!Uk*>7LHVzPPr0Fdw!^=rlkbDi8LRRhgGaaZ2&dsEt)4Hy>)7v)T!-(qd4><* zv9BrqXYjBTisv2t-h1o+@cy zeSJ1~j9J$I;gvfm{vz<)iR5MBzt*UJs=#Z!QT}z|6Kr3dCh#@3k3?Je-0!M~F7R6S zb==nneQ)N&-M%-g;BMcW4e+Tp zUo;r*_OUq)zi9U@58y8SQ+Q9C|MMH}_PvQ=_k*szh7DHzc){I#rz~(k8<)z#-M%+f z;ENWhAGU$JeQ!F!C))lGW8iMzn@R9|)*n{D+rLt|*1_ksQTrZ+yM1p$;D@VgT)hW( z``$c(A8W4TeuKO9gTLSfeye^`)YZRp?c(;a`2$`ri_#Z^yYyw?pX_(R+QEz2`>`?b zT?=$wSPpml*tm5wF3u139sJ1uPx_PaH1$=Vci?Uxn@8}B3sv3-xJ&P0-+Ns=^_r=D zQ^DQ7H(v0hi&XDL;BMcWQt;fJG;TD8yM1q3!e>2D{=MOD-ft8b zjZ5KhH!i)0yK(6&Jn9JLpRj)9e(1)TJ{o;YsW}OTtEx>$B4( zwR<+W8d!Y|prtZU#clj%I#0WWF9g|AmX{&xzr#o>Rj6jZ!{2;Tvtej4!;` zEahJv?$%}0g?kKAy>*1Ubs2u}@>SIzhQotx-uqbily-_|DZE;8T`yL_3m;Sdhu~Lj zJ@0XN`b|oI8=fnZ@_z`w-a+*l0ry;`cJ#34PIsTvw5IAOHT+9KrB4r^YVWm*!fV{u zaZAIO+WP4F@LskKt|@%yN|m<{eE2r`Aox%7>F^Hry=*T0Mk1AK3%p}n<-ZHw-hQw4 z96XNsCHOv@hxQ77VvXwOJ$(5A^`96m^ncebJ!~JdxbU|*)$ZxxZa*Avc(%tXZ!vfS zTbEJ>zWS%qSA+j3B(DQMnqKwR6W;ZPydV6wy-%A7e`WoDK0G{|>SZ@P*BiwX1dnUq z>F>Z#-cdY{;0I1y{kM!<|66=@Uc`mZSS`;DKl_io06f7A6ZpBSa)0;* zn=dpH9)FhVVHNyj0v&e)yw-O4VR-e~%I5@p@h_$S1Rvc+{u}-=vFbTdEB(Fe&!4g> z|8($Kca=Ur-0j<63ZD6e($|H%_sK2cr^f1h=?c$k?`QhM6We{uNO-b+ihmZ|Yro1F z2p`))?YI%%&GvuW2Y2zGfZwwBs8`{QXQ>_@!DrgMzBlj|?NkpQts}Qfi^Iw%KHSw$ zYWSfnDwj9h9oHA0%AQXuz#GI>eb$A$>d%5Sqc<{fJ%)=Lc-JV-Z z!XH0UJGO-H`7ZATZ*BLh{o(gIs{Z}q`-iA~N5bc3QThq+@;1+8HoV1RwbwFum-5Pg z6MU$>|J(QA7}G;f5R8PQa&+lU8bw&S$6-E8os-X(r18=wEc&R!rvFw zc~k}-f1JwO2_8K}_0t31)2!B^n@l1z*&a30Dgb%m%O&j3TY@dWf@F06HbOP>a z`vY8qyZhd|@MCe+58uOc*uLN2;J-#H{=^;Co~~U&ZN7IZctX4X$pxQb^NR|=J?(vF zUHE?c4&4MEFidguhqrB`_WBFH()L4`1OK%_?X?)5!{+(#hQG+G^atV9N9(xf;e~A- z+%${{MZ_m>nc3f1oh`P z@G|F={xf{QLDh4D&iZ>-|DXEm&&lBlZ2!YN@SZbNu0rtDd)0qB!(IBG@XPCU+*R=3 zOXVBkA8Z}j33#2fs)w`i1>NM&;45uj>l=8;0Hu#>&*iRuV%dFK68NEys?VHopH-@d z{O}@H&yC>q2dca+;a5}3d&Bp)R-A+2f%e{YI()Z1zt4kTxAlFS;A0x8eRsms2P>Y~ zUG;xgKgVr5I-Ve8eyZ+V@-Xo{-nF)947r;l` z{lHmxcn{@s5q=?;`ojyjyZ*j|-?DfTxN-4+%^L52RlB9R#?|ETjd@h>mEfQ4_igLL zm)gFmZQv31eyj)F%{LkX&uRB989$n{pm)`O>myKy@Ue7n65 zECqMxMMe0w{Hp(UaQ9xZD?GLB2Qn1i)%Nio13xlV`7ee)U1{wCZ+llB1b63YF#ORY z)#rWqO>g;A_|I;N=Qq5%?Gql;=G(gd>}UJ@WQ8B^W;D+|3V} z4_`G>`EP=|`5`;tBW&H%8MvG8aUPy6RPFUI+@=2jkC>=-V)8THu$6R<1+h1i1+@;?I-}y}O`~!FMLoULTMN|E} zguD46@8EH#sNUlI8M!{){E&q3ToV;fX1JRlk^^4I=BbW=FV3iZ=EL2%v531ec_KsX{Zd^(XZ*0E{-~)H#QaU|`fV*+28vMAuCu$FO<5E|6s;4UNP`DeHM#GPMRy?8bH6c2$!{KgRdJlKw(oeV> zm!kDky}J4w>ZfrjE!>SW8R6Nyl)gCJr7sIVY3pa3!QHsj2ENw5M+}C$acMZ+NAJ}=;n~(I z{-SU^^=x+>J|9;dAYG#FoR|xU?3Y-o9TPfxB_$B;3P3Fh7L5^v~c|?RVkh431p?S!{l6 zPWaO&s?Vx$H_p_C2Ypt5>kN14d%(w>RvcsDZk(A6Ph45)SHfNT_3(F@6#p@}8<$SO zXW2ZH`*1fdg~RinPRv-y(?;Z@UUoZkU= zEpp?O;S2!aZ#t_=<2h zUR8&O9kTNs?#8R0@KD3jaQ-Y+O`fT9PY-e zSMb)h4`g(EPIA{ZH(q(dTiJU>FSr}8vcR|QQT!$0Zu}_^Pg+{ni#BkVz7yQDx$1KQ zeC#r-XZWACf7dCv8-LEhdyP{3Pv9>7OL&@wia+Ym$o<)kKe6ExY`shdxJ#cE9`l#- zFAaC&RYiDpn|Id=?#8PQ@IhgUdnnwESEJ!gZC~Gca5r8pf%kl%^Xogjj_vyw-R4=i ze)#uut4H_}8%L7Dmo8Mhr-m1)seCfQ{~fCO%nn~^`;7U*?-x-1Mc}vW_x{SlOaIbw zE5nc5e9=1ajngzfH-d-MR-CQj^_nXGj_{2I3&`_*vxX`9dX3Vy_X5Bd{)rF~D2fS0!UoY97>{@nReb&leX z1Alp1o&?@tx!N}sym(8c&j?>%R>#W*k80~~^1*x9e6zyvjv1AI8Th(m%D)o4&o_B( z_|wwzhVY}~K%C!~#@ulM52Y;AKei$BpTz(3k;->n~Ie2T^=jtka z%S@H)HvEmvQ+)!DK2qg<2~Ta`DL%p<+5U&$;Ssivdejj*zB^xLL{Yh7!xP%?bSH)v z8m;oCgg5=Idd>j`q={ia!Kj;!e0zj`yPU?t*LxM;PY+1#6R%#|JNb^_umzGz&q9d zEqKSZ^2czWe#++s{DbX}`T@S#u3z8a{R%4oC?g}EFL@`cys_ZkHm@}ie0FaA`xNkc z_FW)7yxc+M?+xF7K=I^(*R**@1>x()s2)nePaILZRDd_P`2aQHM>8n?`tY3g9M=Ng z%GUq3gV#Eyc>Lf`Ua7pj;YsXzF$Dg=_DLH7PgY*#nh4*wRPhJEy=@)Je0Y_Ny8m1X z?`->Dt%dLM*Ks$)&m2~{_P{;gD*ZwDA-nHA3BQ_7@t=jquzh|m!@Jve@SE_BwomCJ zcuw0F_c?rrm*RX6f80pr`U-zrQ0?n6O7XhuONd?XV!~s0Q~n9zHVxP#IXq)NjpYq{a8z9_x|@bb1FW=Z%-AH`W7K5nMG2E3rntFH&IpG5IDhkM$-D{bLr z?e~nj!E4xj{y*VQ4=bL*@K<(UHyqwBvFc$0{6IYQ|7q}^d6a%0JpG>7W~HwJzii(_>%zUxD}59A$0drVE!^$j+XY_VzRL`QU$b#( zEPR~pi!}}2W|Qi34*a)$Ph1M`J68Q_HN5i(#lHoTh#|?+~&n7-J&$=SK1L=LB#sdq0pI z-YL4$d%@?n*Kxh!^K74%Jn;QCZ?+Kp=2+!l8ou0~A1lGr&(d*g!>0^Vy)}ZLZ!T{Q zUou4X(+M7Xy!uZsxWA1X1K@*KE1%);U@w(x96YC;UjgtNF?HOz@U6v^e;~a066L=J zo<6S1yA^(;n9}cor+qI!0$){K@r1ym?^OQ}gAdH2^jG1xZN1e!c%jj1$8h)`X_WsP z_)J@`^cg-ds`Y=kx6Rv$Vg1XE=PT@bodEvQ#--%&)b{<+3!cd4n|i~y`YQfB@Q~iB zpF;2`whvfoc)LN$rxLtT3wdpL--c?(M)1Q&)PGvTOJr3%o#1DR$a}%B=TW~J0556d z^KkeHTW2&5eyOUe z!XfYqixqzueDY)Ee-*yl`qe$SeTMP~hi6--a=n4iKCgQC3=f>H^8SLCD5p4M*n3CU z|C`lOJ_+E9ddQQ*H+59Gyx_}cDNb+r%$f2$@N9N}RS4e6?k7vbS6V-;1kdKL^45mm zvgf`=@N+gHqc!}U&12~V4@|A`q!&C}a@EfO_>%dmpW*O1rxfQnxVOE}41oV@`!>vl zH}X|Hf$&^ql>Zud5?c?u6&`=K^?&%CGx8(wkv5)(z|ZAXJYn#3UFBEdv+eqO4_?9E zCxpXuPEtL;fyez<{u#c_)_wefFJGX!4sTP`quC`$>p8kWo?~H zFL)hWZ#V#6;<5VSaQL^Oif0^rz3r1308jZ$>F2_W*mt5p_;y=2w+0@&klJM{{F=>! z+5>O2O6iZlH`#lt5ctFVHvYr++P(@`;WO<$)jfDxTNfM-k9$My@&-P}-V1$(cUiA` z`vuQ$@1tT&P=2oeKR%)ICV&TzRX)k#Q*Hi_7ksh3PxglU+WfgZ@Uxede<65Ldw*CO z{(g<(tOWntzGu~jw|S*@X#{Wm-TFV=FQ3M%PH=DAAFmhuWG=-s03M@&@*fU=V%LRn z@cS8cz68Ld)lvL&;RA0geIPvQ0L8NgKHc8$ZG}g*-v`+PUo~6xa0EWVTjdIY*Rk;@ z48E^{(qDz=50T%4ulh^n3Wv`hrFwV+&vRP+=QI3iT;=l%-Z@b96Jw%|@B07qoXS4| zJhMGNB!@qLsq|j(qW0a~8{WwFnaKk`W#@Y#_zPPvTpC{cll6c2Si3)|4G&7DayEhw zzohzU4c}wG!`=zL_N?;h1@BZ|J^=nTMC~#hzQM-xarEpeR{;Ep&3l{+pYvGt9|-Rp zOXXSve~?-EZ-qx`r195k8>A3gc>&q#9I6S#M z-@Sp4?5a3F!<&DS|ANmxB9CG76J7r=bYJz80KR&P;zE;fLE zU-1lw53@gygMX>0@iqV+YTt3@!h1hcoPqFKwvXHzxR1@x+zKCT^Dy_oXZ}*X9fAAX zI>!)rwU3G?3|`RY6#XwLgGbcUal_$RH>*D1z-!!7fBOvYV88SG3tq$OA;x6I z>-ztxMam}u{KpHmdvf?F+Xur7-rV||H@s49<(~(>-sW`_g3qw~z0&Y!u~iS1;9D%t z+VBnaRnA86-S6bB;Xd~MtrL9vSnL0A-z6&70Qi`;*8kzP+9>@v_?)Hk0C=qeI__L} z9(!LG2;b$c^lRWjFBH#K`0VSdhduC+lZxjEypip{6apWANXHF>KTEItufo0UIqM#L zYE2zC9G>`$@_7UQv`6Vb!+#xB`d{#8_WTlKivHg9|AF>iA_4qzaivQRPjp4+sTaJT zt%vf4x3~GvdEf(V-bEpJ5}VIc8ea9Aj#~--vYhInHr#W+;%@{`zEa*AzSrg}c7hjd zuKv>t?tU+10DOC6^@ri`J$7F`4(_>8`3JzyTvB=G!mCYJ{DJTk5lX)XKG2?bw!-I4 z({cB}b6Y+~;Bjs${}A|;QL6tic!ACGtMC*zvX5Zbs;M1$9KE2`HcI&u#;7e@Z_(E{ME$Tm| z;X4BrcO`fQFU4OQer2k>5xkS9@@WnKYV+1Q!7u+|{U2W0zDEpzPr0f5hr|C}ARhI@rYv3{L{o7V}AKNc<4?H+n`5b|V*}A_F_^&OhpD_5O z<%<6*e9mUI?>+d6#;S*K_!GNNdjr2~&xxPm=WV~QU+})6iYLZ29q0e+|G9NPmH>X% z=A|cxN9(To@q+*1r*e72KlD`n3wbbrm@KagTzE|OOj>zx9|7j}^hu3SW z{NKQ<+V5g~hWi{-eg1-brL+DYpyRmyU(TKv62J?2E1%@>wow(27yOF7NA-pu3DfcN zz|RLM|3dKbe<}ac@QAF+rxJXL{oY4yc>4QF-w3`so4hrAhy8AQC-^G6Pv`~zF<13D z0A9zgU&G;@Ug)^v;1#N>9s=Nn8>`>Wh3B;AsX%zUol3t3p69*t-wMAyO6U6?c&Rpu z^9VfOMdcp?ubfi#5C-pGRry?n``P>9d+@n=m47&VPYUJp2AGE zU&XNdN7w(?KT-W8fM2omA~`(K55?&P|6ubrz2QDKUp)`Jp}n^(1aE5V$4kTAys}F0 z%=R9y4!qVmwM%pOR{Q?m5xywB>cJ20W#7m9!6(}M&mr)5-E`d1@BuHB|3vteuJW1i zE%tqXK75m{J6jHK@=)!&7GB1Fk7gVE{S~$29(bY}ivI}w(gyXzlklb%e<(a%JDp#b z;r$9K&O7jc1Iqsqylhj|&nx%=+pp$5{Ols-9|13WK<+U^$8r6?r+p`i19$x`Av|EL z>L)$i&-P>VfxC9}g&&EdIEuqvJC=iomr^}chmRy-_O!4@`=h%JJD0onO#W@-N!S)rO34ioh`7eS`9IiN5z{lBq&W-S&HVr2tLy0cddYDv+q_L;dgER=MH!q+ovuFKHh$xC>TD+?w8KO zqh(aPUxfckt@^nI-(t^+58+pvDg8_M7<-TR9=^ur_eQ|8+5Kb`ThHhEf4@_zPfz$2 zd(V~_?q~DB)4&&mSpSE|%%FDnf$z5Ki!Z!|{hnrV__%rM59Q#a?0&L3yr!q>zaD&Z zX4PkN_}art-wqzOS?T@Y;n7syKJYB|zQ`Yb&((#)ROvUuQ#RCivIAcAgggkoE=ctd3_on^IL^YuZQaL3cuDJ@x8TL*E6#`TbKO+W zFX2t?cVpkf%XU@#5%58|{Cj@S;=X)!`rP&-LKB?76r(yn?;oXa^6r^yj}hfi9i{3GE1_EtVo=0xuQ zoo)W1C%liXD@+V8YtJKT;7vwb|A)WtqWbiK7wjnag&#OCFAg7N^FqtPlML2ztHUG0 zVtAo%Qj%0C$X*HWcF3$LGB^?wmwZ-CO@f54^1HAL0uS&Z0Pr!!z1C*>dn1Gu3~p!|U7n)_U+Z^Oe3ieB)sqw;jB_-7opU zquKSS5B!L|SNDf+u=V?+;6oCqekQ|94^TWa;aT>oKP-Z`vv~_E;L~k?iH-14_Wo@L zytm~a1m9%OS;6otR<5(~x!2UMF2dv4`;c4k$`PuEhwv8meg7rAWqzf94=)i{9s$2; zzgrh&p8nq5|D3V&(G&inuFliM@Wypjt~BuV_FW?*JcG^G@_~Of_l4ier2bhPzQX1Y zl!Je^_pa69b6P9TdhklURj%gnFHhv{;C*|mzWm^4pDX`9@X3{w-XFd`Og;*J@}Yb( ze3Q+mnhC#W->(+I?nq_~ypSryl%VkjmQ}Uedk;wuA3Gpg8^DQ*9roKJYmM zbw2vT7wuL&qu|+Xf5^%3uXZ0h6CN~N@hpN*u=(~Y;CF0Yz(#oUWonll@H_96e-M1Y zLU}Me^GNwwc=fxg=Zo<6$E^Rub5_v#{t!OL_C05K>a!L+j_vc) z7(Vj2@^1yd5KH-YhHrnP^gZF1>MQ<%@bvclI1E15=An&;$Fkpbng%an_oegTCv3c3 z3cqXDwYBgob5uWD;IT{SeB2Aq5g(4{OxP-<2HZzE_`!4)&Em? z6MIkf8vbWgwaXWH+3ISSpYZN4Rj!ze^zU3huV(LQdrcDXZUn`U(^#` zb)Swq5We+>>R}jsuDy3251(f5U8liQzEM2$;F+fCxJ%*rFQ~k0;l1-(|A%+B@5p=M zdF=bpVfY?f&vFW$&*oi(!jIHe{MXYr+>mz+*A6Pw(pS}|F0KTJ;aAMovY)f zfTuX9_Du)RQ&H)&!av)6QEqr2D{o%H3D2EKJ`f%ftaygO6Af1S@$iy%K2C!_+obZ&gMYU7;Y;D^nyI{N z;TL+zx4>_FmG6bOv3=JM!!O-ZJg49@C#YPZ@Yy!c?Hat$JoUr7@C`P9^(j1XiQ;?> zzhV1CeSt5t{T6=0OH8)@Z|k~T|Ns84$`v1;?!Ati0zTe;w<{gIrL9lN3ZH53C33_2 zoz!_$82;}>#aRkI*uLXbhS#mA`mY7AWcx=oh7YuPo~_`WZQe^~cp-oF=brH72~}?c z;hF3`@G$taFDln~c-`d6e;T}1Ri&Q?PyAi&vJ}27mV7O|s{MZVmj8#YJAun7eg6mE zSQ}f}vlcVRTJ|tx8Od747KXy0VN6-4v1P1T%h+O2_862s28BTw$~s{v4Aa{w~@*LO!}J`uP<3ydLO> z^W-Ds^W!!01qsN1i~OX_uXsT2l7jwuLOxcm1HK~v@D1|6BezM%cq<^EC(QVNSs7lG zyyYS+ZyEA+ay(Xve8~{xsZL(d26^g|KbG@pO~|``jQE!1A$_o19^~(4qTR0KiEX6Y4V_X*p4odZ*ju;G-Ge$Bke956_0^2rdoKE|E%_+9FS{dob-6F>GxDvEP=8Kp&tHAX2RB0eVDhYU$p0mIfzs&DG30@A9`#%D zBNb%)lb?4+{<-9ZJEI@ICy$o-#w*G5wnY4T@~e}v{ca_1ohaj<{O$|*LGo>OsQ)%}k0V`abpo_wwBfAX)-IsV6cq5fjzi}Ryh^PCT}z1Yd| zTV;yRFUL#O$k)pA*6NX0dxrdt$=6*+eXYn7$6&p*CwGgzwd7yz!g6gQ z&yeHZo#gjiu-^BP53)tS9VPcN&n+bXd$^0ZLoSw!A^GWu;9c};n4_bPXQ16`|$b7t^(o5+8X=O{*#A1;eLhsZy@isd>+en956o+V!|=RGcx z=evM@xIrG)4&(0*d92KLdPqK_Ci476{(C{x|AxFvLyW@@WPfbN`Ty=uCa*5ztvLB0 z>4);<1I)ZN@|(xdZY}Z;ids{^sOWyJ352Lw>j~;yaN~+JgS+P97xJ{rizS z$$9%hOy^0FP#?jiDa(O8ei$S=!$iL>M>?x^!3`KnXMe}jDd-|#!+UFx9D zhvX;Zde&d$j(?-hH{|(b{?!MYQI{G2^JE@NA@YH8U86X;eLdtaPaZGl6RMC;7=Y!f zMgC(6u7M;7$&1Nx>38Hc6M@&tUf{~{k;2>IWT zznX}C_(0|boAF;?=2sLVcYcrlEKYv43-XjFAF>8sh5W02$Wx1a;Yk_)EQe7`(L;t=_CdG5h6@&Z3# zoS!9MkVnQpd5K@q&o{{P$$9KM zXQ4&bFrF` zyF?;SOY+qdP`3wp6)*HpSMoV>e{OH`3Ox}&fPBVP)H#g&oE-O#BA+ilfqbTHk5kCg z+M@p1VFP?Kd3BjDx`VvMMa1tXuO*+mkC68siS=@d zJb4Q8oF^}v2mO4F+`kX{;THL6IX-zno+$G`o{)bf^NL@QpZ^f;z9avqHR>$zW6tqk z+#Oz&yp+s`EJI#6AO5})`F#2Qtm@?3{19K4ysz9h+Jro@G3sea-r_X+--G<}U3gdW zpo{2--sCZB5kG*u#BKO6@~U!OdlY%~-w;26e7@{ArjRdKj`2L3d`TGUTu6S^7WtQx zmyq+fYshcNeSe$D2gv#G9pqz+pr7}Xx0LaDgxvoT*5fJiIQg7@o;=T3EbldPpK|b9 z$&A@`8y{>>);)f@e}klgPC@+>FsE6+1oLmn*W_coIk`xE`V zgFHd*huTlxGywf}g!}`!@9z|OBRS81p8Uuk$a9VSksOcRA}=fFy&sVODbH1VLSDZk z#>p#km!s&ncjTpP;RSZ!r#b#Pwi0=Yk`IyRN0lL;(jWaN!Gw z%?bHWk;e^%pC`YPi1mAod}}HAE%M*`q1^}MV@shQo{+cNgLYq$PkD)W3s#*!Sp%J>>o5`p{wW@k7u*$H~8v@pF#6y*y{;BKh}iQ0EQu zu`*9MmHa|O)cGg*FK;o<)5%B6e7sEZF!|i^o;-0s@)wNGIsUt@M*gDYJr*Ip47u|O z#8)KGFW2d+kzbPcuiE4_WxH-feng(j)SP_wZ>Xmoc{@2D+mXD690z_z{-HeI!-xE| zJTGDp`RLkMkHg8^PsjEcNZ$A$`ey=pi@L}YOx|}d;%AYkj>0%xL~gc=rR4c!gIr7A zz`b z1IQzuqJM(Oo#nomspOsCqkra*|1=NvEF|}q>y^vN?PdPkYVx@?F-|s-&peCe`jPy8 z6yo=ie^&_mfkWi+-y!}4c}Ka=@eKL4l~}Gz{ zV7Z@eHo42kxqB0=#~tKhmr?(I^3WMr-XrAOWxGB_ z9x3bVJo$vBSgvd2pMHUQZjn!Xh`=Psl&7hdi&yJIVR3cjS|1W4kV}8~tR) zf3YE0-lF7wGC!vb`9Br$_m#-^ZG=}RKP=CutxNu0OVrbZe5u@L(UN?)%vmApcgbdp#i^Ru$vt6?usm)bozKplt62R~OY+I_i1#4BvJvaCEBVOl@ZRJ-rC$b+FOl=N z!^mfSg>f~C+`$g(cLI4M*6* zPnNMiKzbp`CEA|$`kSq z=aJ_XdGkE*cjOVTQD*^}e{IJ9#^*Br$s1foo-*WLKZ92ykJ%2dPCi+#Kh`DhGzalb z$h}fgPfPMi@?1&}a;Fp-|Ktwq(4W1@z2th+0PKi4I{E6;grLhkSmd0LWhlKT-n$cvXj zd{^?B)8W0zpUd^E0px=kW4#O`e^?&NJBmE+Ta1SZF^>4=ir#;c1Mae^DeoGm0d->c~ ziTt%(uc=P%DffldCEp?Q>za_Sl6ko;$&XdR`1Bw@E7u*mlJ6aX_}=8#zr%VNK)&Ns z_%L#F{$UjP?!m~vg}lQM_#yI%@_FYZx!pAEf3A}6Uyt?jh&-(s)^EWB_-WQ-kLLKj z2Kl{4$lsQ{Qx)VNKwe1ZO$CuJk@Gf7$$L6sd1J`)`l8*_J@|sUj$9eJ=@?6t2@?AmL|JWYP zS^s6Zuh5x%U1=JBbl)RVo>Vlb3G;k0l=_ z_hJ1^9x)W-B#Hc{d_MY(e0DzMPa}UW^YdSj50H771%ArepUr>9@>U?PR}kZ>Ir-{Z z@V?}yWV;I@U(g5bZ6Kd5^URNsUu}nexJ~|YIL6g$^0(p+hjT7hUVp^9kfkN!MKzOOCDVG{Z0ay{!NdC+q#*8}p=GB4sU@~Bs6_bvGg`8-%K4*5(!Z)u2e zRf7Cl2P|(T@|ztoZk@>&%5!WQlE*JYJ*~*YWxjex^1znJ-;;dqIk+$R){f}U5#&|6 zq5f~kJIeEHr;@kYhkm$2UP0zPJ|Ukf-$V48yw43RZ~pk4{XDKDyf}HE!|+PvW#s;@ zn&kenKWa?=X)D>EkVh>;9bL&=r=oxQlGl~%(L>3%6+r&c^x5yI;q1`{pXUX~Am*i*v zMxGDkJ`b~fjgs%BDn@=%=H=ET-!=((I+3rC^WMG4F9loYT zi|KRhPiBcB)SPT_UapLX&b)Y9Y)6UsJ{okAXsl0!EP97xRQ?`hF*@x)2RpgarKfIZI_#2Gd-Q*@u zEO`r=?|qK^N(r=kk^H1Q2k$X?1DU6nNp9-QcP8h0aXE+aV^41Klp$Z#41Zsf+|=np zKIt#SkCXX6X1smW9?KO>K7S4R&CCxn@%3f@GmqjsR!99y$lJ(%Y9+aCI_gazDjs z^1Cw5FOx^ec9cqf&jtPPfc)hX_#5(=zF1#2zvQf^+bI0*NWMaz^HYudT9d2Kt?vz^@J-%Wle z9{Ep_$CgArzmSi=2ER}KK)#p!5&2b_@9|+`&i-r?hVf=c-Z&EVlp}vD&(CxupSK+G zEy+!MJMvC%Q2!uu6F;21-XExQ9{F2&K2I2Vn?YFbd&ytTgI^%8C-=vh`#;Qhu$AwB zc}DThbFh9h$$$O|b(ToV+0Th?_}ziLqnw9tLf%Z~M}0z`PtND`CV&1I{W*YqvRqI6 zhJ0`}tgor${!>wZIC-CZs6T?d&Kb1(>SE62trChnA6&}m>+9n8669TF-f|uCESWFo zLB9A6^7JPkvm5L88*wYjl1P+evy$Q$KSiF6+C$@_v=jK`+Tq{Db=6lV|Qj zKjgcN*Uk2_(FtCZ{CF+Il_Xy$=M5{8x2uMFs*=0P@nmiCX?3t%^~v{ti}li+{7g;M z*_zx#=HYZCcW8h-UgUc{(EmQI5SeDXqa{$wfnBe_pu75TGAsAmKD!g;7?EBWk7SgzgVLj#c~mi+7>)On12 zlRW3`GPGG@^Jn^yk8{9!89;tR?pqv2-s=O@^A&kVx&Awzy!m1blu6`6YoXnl z>9GzUu(STPyOEgUHi? zy!18H*_HeY>CfKeBjh^J=j1onA^%YFI&z=INb<$fpX12a%K7Ap@iF8@e?k0y@=`KiH;%kjU(|Dwe6jTB z1@eMzv3{?RkCp3~x5#IVK>mB=`Q>{h9+MaEjOBVpp7IU+AM$^uVZD5C4X>N+#a;Td z5c#%$&_DL%=Kh&-@+zCKJf7qog5h4| z`DFf#54qDy^p7ujqI~}HCl8VD#S0)`E%T#-$RAcle+HA!mgfwFklUZd@`jTCwHJB9 z$xq09;0SVWxgRi!e4X4s7){>eH}qR9`S4KG6GvX46t?RG@>g=)m`HxJKjM?gKTkos zDdeN&{=qczBeK5I$(N_1e=^BO=E3^SBH!2-?b`l|pJuzb{vN;Ek*`^X`W?vkI?DJb zFDLicIFrABjd&OGK|dqE8+p-Z*e=}3*Y|>ZlK(go{oqBO)&uSOkUx-l2)^XCW!{26 zc}=M&fP6@K^m7pT^&05UVDi{Ds6T`}Q|b>T@6rN!!pVP;?^lf=Use?T8AV=c4EiCO zyz2wxk0pPP#j=Sb|G^pcCy>{Y^8ktDGvxDlGP$GNrTp-w(a$t;G5f;<7_b~4W@h`hL5w+$w*+DZ2RMan0$oX2Ny!#cqqn6DEU^ouQ{B2*=8(P1o{O+G-*qsEeN z*@N{MM}AJeUnzlnj?9ltBroHF{z)b;CHEVqkcUi0Kctb*k>iSV^0$Q%pGjUZFP1lp z{Kwj||G$}Y{I8MYNjvf%U�A1=pHj^te~pn3;EVt=pQ%oTjyl_ledxc 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 EAB&()w*UYD literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/10919f5bbc85001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/10919f5bbc85001814de869e8ad08251 new file mode 100644 index 0000000..4a1aca2 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/10919f5bbc85001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 12:14:26 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC + +# Flags for the linker: +LDFLAGS = -pthread,-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/306f093f9e8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/306f093f9e8500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..3b5916b --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/306f093f9e8500181eabf1ba1ea37ea1 @@ -0,0 +1,85 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn + + true + + + + + + src/ttcn/ttcn/TestCodec + + false + true + + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/d0c4ab04b985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/d0c4ab04b985001814de869e8ad08251 new file mode 100644 index 0000000..88bfb54 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/d0c4ab04b985001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 11:44:06 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall-std=c++11-pthread-fPIC + +# Flags for the linker: +LDFLAGS = -pthread-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c4/e0b5cbe1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c4/e0b5cbe1978500181c21d10bc58219ba new file mode 100644 index 0000000..47a1613 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c4/e0b5cbe1978500181c21d10bc58219ba @@ -0,0 +1,44 @@ +/*! + * \file tcp_layer_factory.hh + * \brief Header file for ITS TCP socket based protocol layer factory. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "layer_stack_builder.hh" + +#include "tcp_layer.hh" + +/*! + * \class tcp_layer_factory + * \brief This class provides a factory class to create an tcp_layer class instance + */ +class tcp_layer_factory : public layer_factory { + static tcp_layer_factory _f; //! Reference to the unique instance of this class +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the tcp_layer class + * \remark The TCP socket based layer identifier is TCP + */ + tcp_layer_factory() { + // Register factory + layer_stack_builder::register_layer_factory("TCP", this); + }; + /*! + * \fn layer* create_layer(const std::string & type, const std::string & param); + * \brief Create the layers stack based on the provided layers stack description + * \param[in] p_type The provided layers stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + */ + inline virtual layer* create_layer(const std::string& p_type, const std::string& p_param){ + return new tcp_layer(p_type, p_param); + }; +}; // End of class tcp_layer_factory + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c6/f0cc7e57b685001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c6/f0cc7e57b685001814de869e8ad08251 new file mode 100644 index 0000000..3638cc6 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c6/f0cc7e57b685001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 11:30:29 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall-std=c++11-pthread-fPIC + +# Flags for the linker: +LDFLAGS = -pthread-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c7/f1fac6e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c7/f1fac6e1978500181c21d10bc58219ba new file mode 100644 index 0000000..c66fdc3 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c7/f1fac6e1978500181c21d10bc58219ba @@ -0,0 +1,114 @@ +/*! + * \file layer_factory.hh + * \brief Header file for ITS abstract protocol layer definition. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include +#include +#include +#include + +#include "layer.hh" + +/*! + * \class layer_factory + * \brief This class provides a factory class to create layer class instances + * \abstract + */ +class layer_factory { +public: //! \publicsection + /*! + * \fn codec(); + * \brief Default constructor + */ + layer_factory() {}; + /*! + * \fn layer* create_layer(const std::string & type, const std::string & param); + * \brief Create the layers stack based on the provided layers stack description (cf. remark) + * \param[in] p_type The provided layers stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + * \remark The description below introduces layers stack in case of ITS project: + * CAM layer + * next_header : btpA|btpB (overwrite BTP.type) + * header_type : tsb|gbc + * header_sub_type : sh (single hop) + * DENM layer + * next_header : btpA|btpB (overwrite BTP.type) + * header_type : tsb|gbc + * BTP layer + * type : btpA|btpB + * destination port: dst_port + * source port : src_port + * device_mode : Set to 1 if the layer shall encapsulate upper layer PDU + * GN layer + * its_aid : ITS AID as defined by ETSI TS 102 965 V1.2.1. Default: 141 + * ll_address : GeoNetworking address of the Test System + * latitude : latitude of the Test System + * longitude : longitude of the Test System + * beaconing : Set to 1 if GnLayer shall start beaconing + * Beaconing timer expiry : expiry (ms) + * device_mode : Set to 1 if the layer shall encapsulate upper layer PDU + * secured_mode : Set to 1 if message exchanges shall be signed + * encrypted_mode : Set to 1 if message exchanges shall be encrypted + * NOTE: For signed & encrypted message exchanges, both secured_mode and encrypted_mode shall be set to 1 + * certificate : Certificate identifier the Test Adapter shall use + * secure_db_path : Path to the certificates and keys storage location + * hash : Hash algorithm to be used when secured mode is set + * Authorized values are SHA-256 or SHA-384 + * Default: SHA-256 + * signature : Signature algorithm to be used when secured mode is set + * Authorized values are NISTP-256, BP-256 and BP-384 + * Default: NISTP-256 + * cypher : Cyphering algorithm to be used when secured mode is set + * Ethernet layer + * mac_src :Source MAC address + * mac_bc :Broadcast address + * eth_type : Ethernet type + * Commsignia layer + * mac_src : Device MAC address, used to discard packets + * To indicate no filering, use the value 000000000000 + * mac_bc : Broadcast address + * eth_type : Ethernet type, used to discard packets + * target_host : Device address + * target_port : Device port + * source_port : Test System port + * interface_id: Interface id, used to discard packets + * tx_power : TX power (dB) + * UDP layer (IP/UDP based on Pcap) + * dst_ip : destination IPv4 address (aa.bb.cc.dd) + * dst_port: destination port + * src_ip : source IPv4 address (aa.bb.cc.dd) + * src_port: source port + * Pcap layer + * mac_src : Source MAC address, used to exclude from capture the acket sent by the Test System + * filter : Pcap filter (compliant with tcpdump syntax) + * E.g. filter=and ether src 04e548000001 + * Online mode: + * nic: Local NIC + * If set, online mode is used + * Offline mode (nic is present but not set): + * file : File to read + * frame_offset: Frame offset, used to skip packets with frame number < frame_offset + * time_offset : Time offset, used to skip packets with time offset < time_offset + * save_mode : 1 to save sent packet, 0 otherwise + * Here are some examples: + * GeoNetworking multiple component case: + * NodeB.geoNetworkingPort.params := "GN(ll_address=04e548000001,latitude=43551050,longitude=10298730,beaconing=0,expiry=1000,its_aid=141)/COMMSIGNIA(mac_src=04e548000001,mac_bc=FFFFFFFFFFFF,eth_type=8947,target_host=10.200.1.101,target_port=7942,source_port=7943,its_aid=141,interface_id=2,tx_power=-32)/UDP(dst_ip=192.168.56.1,dst_port=12346,src_ip=192.168.156.4,src_port=12345)/ETH(mac_src=04e548000001,mac_dst=0A0027000011,eth_type=0800)/PCAP(mac_src=04e548000001,file=/home/vagrant/TriesAndDelete/etsi_its/testdata/TC_AUTO_IOT_DENM_RWW_BV_01_short.pcap,filter=and (udp port 30000 or udp port 7943))" +NodeC.geoNetworkingPort.params := "GN(ll_address=70b3d5791b48,latitude=43551050,longitude=10298730,beaconing=0,expiry=1000,its_aid=141)/COMMSIGNIA(mac_src=70b3d5791b48,mac_bc=FFFFFFFFFFFF,eth_type=8947,target_host=10.200.1.101,target_port=7942,source_port=7943,its_aid=141,interface_id=2,tx_power=-32)/UDP(dst_ip=192.168.56.1,dst_port=12346,src_ip=192.168.156.4,src_port=12345)/ETH(mac_src=70b3d5791b48,mac_dst=0A0027000011,eth_type=0800)/PCAP(mac_src=70b3d5791b48,file=/home/vagrant/TriesAndDelete/etsi_its/testdata/TC_AUTO_IOT_DENM_RWW_BV_01_short.pcap,filter=and (udp port 30000 or udp port 7943))" + * NodeB.geoNetworkingPort.params := "GN(ll_address=04e548000001,latitude=43551050,longitude=10298730,beaconing=0,expiry=1000,its_aid=141)/ETH(mac_src=04e548000001,mac_dst=0A0027000011,eth_type=0800)/PCAP(mac_src=04e548000001,file=/home/vagrant/TriesAndDelete/etsi_its/testdata/TC_AUTO_IOT_DENM_RWW_BV_01.pcap,filter=and ether src 04e548000001)" +#NodeC.geoNetworkingPort.params := "GN(ll_address=70b3d5791b48,latitude=43551050,longitude=10298730,beaconing=0,expiry=1000,its_aid=141)/ETH(mac_src=70b3d5791b48,mac_dst=0A0027000011,eth_type=0800)/PCAP(mac_src=70b3d5791b48,file=/home/vagrant/TriesAndDelete/etsi_its/testdata/TC_AUTO_IOT_DENM_RWW_BV_01.pcap,filter=and ether src 70b3d5791b48)" + * UpperTester port based on UDP + * system.utPort.params := "UT_GN/UDP(dst_ip=192.168.1.1,dst_port=12346,src_ip=192.168.156.4,src_port=12345)/ETH(mac_src=026f8338c1e5,mac_dst=0A0027000011,eth_type=0800)/PCAP(mac_src=0800275c4959,nic=enp0s8,filter=and udp port 12346)" + * \pure + */ + virtual layer* create_layer(const std::string & p_type, const std::string & p_params) = 0; +}; // End of class layer_factory + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/cf/c0b9dd8f9e8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/cf/c0b9dd8f9e8500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..a9c2b61 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/cf/c0b9dd8f9e8500181eabf1ba1ea37ea1 @@ -0,0 +1,121 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn + + true + + + + + + src/ttcn/ttcn/TestCodec + + false + true + + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d2/00bcaed3978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d2/00bcaed3978500181c21d10bc58219ba new file mode 100644 index 0000000000000000000000000000000000000000..3d33cd169bc898dbeff0ab89d2d178b736619ec0 GIT binary patch literal 531144 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 $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d4/b0edd64c978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d4/b0edd64c978500181c21d10bc58219ba new file mode 100644 index 0000000..d42b6c7 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d4/b0edd64c978500181c21d10bc58219ba @@ -0,0 +1,12 @@ + + Default + + + bin/STF549_Ng112 + + + + bin + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d5/60df62189e8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d5/60df62189e8500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..3e66c2d --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d5/60df62189e8500181eabf1ba1ea37ea1 @@ -0,0 +1,67 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + true + + + + + + src/ttcn/ttcn/TestCodec + + false + true + + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d8/d0adcde29d8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d8/d0adcde29d8500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..7479a0b --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d8/d0adcde29d8500181eabf1ba1ea37ea1 @@ -0,0 +1,40 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/dd/607dcae1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/dd/607dcae1978500181c21d10bc58219ba new file mode 100644 index 0000000..8e355a9 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/dd/607dcae1978500181c21d10bc58219ba @@ -0,0 +1,72 @@ +/*! + * \file t_layer.hh + * \brief Header file for ITS abstract protocol layer definition. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "layer.hh" + +/*! + * \class t_layer + * \brief This class provides basic description of an ITS port protocol layer. + * A port protocol layer is the final layer which provides the access to the physical communication channel + * A port protocol layer derives from both a layer class and a template port class + */ +template class t_layer : public layer { + typedef std::vector TPortList; + typedef typename std::vector::iterator TPortListIterator; + + TPortList upperPorts; //! The list of the upper ports + +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the t_layer class + * \todo Remove logs + */ + explicit t_layer() : layer(), upperPorts() { }; + + /*! + * \brief Specialized constructor + * Create a new instance of the layer class with its type description + * \param[in] p_type The port type name (e.g. TCP for the TCP sockect based layer) + * \remark This constructor is called by the layer factory + * \see layer_factory + */ + explicit t_layer(const std::string& p_type) : layer(p_type), upperPorts() { }; + /*! + * \inline + * \fn void add_upper_port(TPort * p_port); + * \brief Add a new upper port layer + * \todo To be done + */ + inline void add_upper_port(TPort * p_port) { upperPorts.push_back(p_port); }; + /*! + * \fn void remove_upper_port(TPort*); + * \brief Remove the specified upper layer port protocol from the list of the upper layers + * \param[in] p_layer The layer protocol to be removed + */ + void remove_upper_port(TPort*); + +protected: //! \protectedsection + /*! + * \inline + * \fn void to_all_upper_ports(const TMessage& m, const params& param); + * \brief Forward the message to all available upper port layers + * \param[in] p_message The message to be forwarded + * \param[in] p_params Some lower layers parameters values when data was received + */ + template + inline void to_all_upper_ports(const TMessage& p_message, const params& p_params) { + for(TPortListIterator it=upperPorts.begin(); itreceiveMsg(p_message, p_params); + } + } +}; // End of class t_layer + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/de/00f495bbbd85001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/de/00f495bbbd85001814de869e8ad08251 new file mode 100644 index 0000000..7d9a07e --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/de/00f495bbbd85001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 12:24:17 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC + +# Flags for the linker: +LDFLAGS = -pthread,-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/de/d0dd7033c08500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/de/d0dd7033c08500181dc9eb7ae31560a9 new file mode 100644 index 0000000..4584bae --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/de/d0dd7033c08500181dc9eb7ae31560a9 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 12:41:51 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC + +# Flags for the linker: +LDFLAGS = -pthread,-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/df/108b860cbc85001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/df/108b860cbc85001814de869e8ad08251 new file mode 100644 index 0000000..33f24fe --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/df/108b860cbc85001814de869e8ad08251 @@ -0,0 +1,71 @@ +#include +#include + +#include "layer_stack_builder.hh" + +#include "loggers.hh" + +layer_stack_builder* layer_stack_builder::_instance = NULL; + +// static functions +layer_stack_builder * layer_stack_builder::get_instance() +{ + return _instance ? _instance : _instance = new layer_stack_builder(); +} + +void layer_stack_builder::register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory) +{ + layer_stack_builder::get_instance()->_register_layer_factory(p_type, p_layer_factory); +} + +// member functions +layer_stack_builder::layer_stack_builder() +{ +} + +void layer_stack_builder::_register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory) +{ + _layer_factories[p_type] = p_layer_factory; +} + +layer* layer_stack_builder::create_layer_stack(const char* p_layer_stack_description) +{ + loggers::get_instance().log(">>> layer_stack_builder::create_layer_stack: %s", p_layer_stack_description); + + layer* entry = NULL; // Initial layer (the first declared) + layer* up = NULL; // Upper layer + // Parse the layer description + try { + std::regex rgx ("(\\w+)(\\((.*?)\\))?(\\/|$)"); + std::string str = p_layer_stack_description; + std::sregex_iterator begin(str.cbegin(), str.cend(), rgx); + std::sregex_iterator end = std::sregex_iterator(); + for (std::sregex_iterator it = begin; it != end; ++it) { + std::smatch m = *it; + loggers::get_instance().log("layer_stack_builder::create_layer_stack: %d - %s - %s - %s - %s", m.size(), m[0].str().c_str(), m[1].str().c_str(), m[2].str().c_str(), m[3].str().c_str()); + LayerFactoryMap::iterator i = _layer_factories.find(m[1].str()); + if (i == _layer_factories.end()) { + loggers::get_instance().error("layer_stack_builder::create_layer_stack: %s: Unknown layer type", m[1].str().c_str()); + } + loggers::get_instance().log("layer_stack_builder::create_layer_stack: Create layer %s, %s", m[1].str().c_str(), m[3].str().c_str()); + layer* l = i->second->create_layer(m[1].str(), m[3].str()); + if (NULL == l) { + loggers::get_instance().error("layer_stack_builder::create_layer_stack: %s: Layer creation error", m[1].str().c_str()); + } + + loggers::get_instance().log("layer_stack_builder::create_layer_stack: Setup layers for %s", l->to_string().c_str()); + l->add_upper_layer(up); + if (entry == NULL) { // Set the first declared layer + entry = l; + } + up = l; // Build the linked list of layers + } // End of 'for' statement + } + catch(const std::logic_error& e){ + if(up){ // FIXME To be reviewed + up->delete_layer(); + up = NULL; + } + } + return entry; +} diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e1/00485b1fb985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e1/00485b1fb985001814de869e8ad08251 new file mode 100644 index 0000000..3f01614 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e1/00485b1fb985001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 11:51:17 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC + +# Flags for the linker: +LDFLAGS = -pthread,-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e1/5056cae1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e1/5056cae1978500181c21d10bc58219ba new file mode 100644 index 0000000..1adf44c --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e1/5056cae1978500181c21d10bc58219ba @@ -0,0 +1,73 @@ +/*! + * \file sip_layer.hh + * \brief Header file for ITS HTTP protocol layer. + * \author ETSI STF549 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include + +#include "t_layer.hh" + +#include "sip_codec_register_request.hh" + +namespace LibSip__Interface { + class SipPort; //! Forward declaration of TITAN class +} + +namespace LibSip__SIPTypesAndValues { + class REGISTER__Request; //! Forward declaration of TITAN class +} + +class OCTETSTRING; //! Forward declaration of TITAN class + +/*! + * \class sip_layer + * \brief This class provides a factory class to create an sip_layer class instance + */ +class sip_layer : public t_layer { + params _params; + +public: //! \publicsection + /*! + * \brief Specialised constructor + * Create a new instance of the sip_layer class + * \param[in] p_type \todo + * \param[in] p_param \todo + */ + sip_layer() : t_layer(), _params() {}; + /*! + * \brief Specialised constructor + * Create a new instance of the sip_layer class + * \param[in] p_type \todo + * \param[in] p_param \todo + */ + sip_layer(const std::string& p_type, const std::string& p_param); + /*! + * \brief Default destructor + */ + virtual ~sip_layer() { }; + + /*! + * \virtual + * \fn void send_data(OCTETSTRING& data, params& p_params); + * \brief Send bytes formated data to the lower layers + * \param[in] p_data The data to be sent + * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters + */ + virtual void send_data(OCTETSTRING& data, params& p_params); + /*! + * \virtual + * \fn void receive_data(OCTETSTRING& data, params& p_params); + * \brief Receive bytes formated data from the lower layers + * \param[in] p_data The bytes formated data received + * \param[in] p_params Some lower layers parameters values when data was received + */ + virtual void receive_data(OCTETSTRING& data, params& info); +}; // End of class sip_layer + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e2/f0fac6e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e2/f0fac6e1978500181c21d10bc58219ba new file mode 100644 index 0000000..abd4eae --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e2/f0fac6e1978500181c21d10bc58219ba @@ -0,0 +1,144 @@ +/*! + * \file layer.hh + * \brief Header file for ITS abstract protocol layer definition. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include +#include +#include +#include + +#include "params.hh" + +class OCTETSTRING; //! Forward declaration of TITAN class +class BITSTRING; //! Forward declaration of TITAN class +class CHARSTRING; //! Forward declaration of TITAN class +class INTEGER; //! Forward declaration of TITAN class + +/*! + * \class layer + * \brief This class provides basic description of an ITS protocol layer + */ +class layer { + std::vector upperLayers; //! List of the upper protocol layers + std::vector lowerLayers; //! List of the lower protocol layers + +protected: + std::string type; //! Type description, it indicates the protocol type (e.g. CAM, DENM, GN, ETH, PCAP...) + +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the layer class + */ + explicit layer() : upperLayers(), lowerLayers(), type(std::string("")) { }; + + /*! + * \brief Specialized constructor + * Create a new instance of the layer class with its type description + * \param[in] p_type The port type name (e.g. GN for the GeoNetworking layer) + * \remark This constructor is called by the layer factory + * \see layer_factory + */ + explicit layer(const std::string& p_type) : upperLayers(), lowerLayers(), type(std::string(p_type.begin(), p_type.end())) { }; + + /*! + * \brief Default destructor + * \todo Remove logs + */ + virtual ~layer() { + // Double linked list, only remove layers in lowerLayers from the lowest one + std::for_each(lowerLayers.rbegin(), lowerLayers.rend(), [](layer* it) { delete it; } ); + lowerLayers.clear(); + upperLayers.clear(); + }; + + /*! + * \fn void delete_layer(); + * \brief Delete this layer + * \todo To be implemented + */ + void delete_layer() { }; + +public: //! \publicsection + /*! + * \inline + * \fn void add_upper_layer(layer* p_layer); + * \brief Add a new layer in the list of the upper layer + * \param[in] p_layer The layer protocol to be removed + */ + inline void add_upper_layer(layer* p_layer) { + if (p_layer != NULL) { + upperLayers.push_back(p_layer); + p_layer->lowerLayers.push_back(this); + }; + }; + + /*! + * \fn void remove_upper_layer(layer* p_layer); + * \brief Remove the specified upper layer protocol from the list of the upper layer + * \param[in] p_layer The layer protocol to be removed + * \todo To be implemented + */ + void remove_upper_layer(layer* p_layer) { }; + + /*! + * \virtual + * \fn void send_data(OCTETSTRING& data, params& params); + * \brief Send bytes formated data to the lower layers + * \param[in] p_data The data to be sent + * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters + * \todo Remove the logs + * \virtual + */ + virtual void send_data(OCTETSTRING& p_data, params& p_params) { }; + + /*! + * \virtual + * \fn void receive_data(OCTETSTRING& data, params& params); + * \brief Receive bytes formated data from the lower layers + * \param[in] p_data The bytes formated data received + * \param[in] p_params Some lower layers parameters values when data was received + * \todo Remove the logs + * \virtual + */ + virtual void receive_data(OCTETSTRING& p_data, params& p_params) { } + + /*! + * \inline + * \fn const std::string& to_string(); + * \brief Remove the specified upper layer protocol from the list of the upper layer + * \param[in] The layer protocol to be removed + */ + inline const std::string& to_string() const { return type; }; + +protected: //! \protectedsection + inline void to_all_layers(std::vector&layers, OCTETSTRING& data, params& params) { + for (std::vector::const_iterator it = layers.cbegin(); it != layers.cend(); ++it) { + layer* p = *it; + p->receive_data(data, params); // FIXME BUG I + } // End of 'for' statement + }; + + inline void receive_to_all_layers(OCTETSTRING& data, params& params) { + for (std::vector::const_iterator it = upperLayers.cbegin(); it != upperLayers.cend(); ++it) { + layer* p = *it; + p->receive_data(data, params); + } // End of 'for' statement + }; + + inline void send_to_all_layers(OCTETSTRING& data, params& params) { + for (std::vector::const_iterator it = lowerLayers.cbegin(); it != lowerLayers.cend(); ++it) { + layer* p = *it; + p->send_data(data, params); + } // End of 'for' statement + }; +}; // End of class layer + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e3/62d0d1e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e3/62d0d1e1978500181c21d10bc58219ba new file mode 100644 index 0000000..482e9dc --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e3/62d0d1e1978500181c21d10bc58219ba @@ -0,0 +1,57 @@ +#include "LibItsHttp_TypesAndValues.hh" + +#include "http_layer_factory.hh" +#include "codec_stack_builder.hh" + +#include "loggers.hh" + +#include "converter.hh" + +using namespace std; // Required for isnan() +#include "LibItsHttp_TypesAndValues.hh" +#include "LibItsHttp_TestSystem.hh" + +http_layer::http_layer(const std::string & p_type, const std::string & param) : t_layer(p_type), _params()//, _device_mode{false} +{ + loggers::get_instance().log(">>> http_layer::http_layer: %s, %s", to_string().c_str(), param.c_str()); + // Setup parameters + params::convert(_params, param); + + params::const_iterator it = _params.find(params::codecs); + if (it != _params.cend()) { + _codec.set_payload_codecs(it->second); + } +} + +void http_layer::sendMsg(const LibItsHttp__TypesAndValues::HttpMessage& p_http_message, params& p_param) { + loggers::get_instance().log_msg(">>> http_layer::sendMsg: ", p_http_message); + + // Encode HttpMessage + OCTETSTRING data; + _codec.encode(p_http_message, data); + send_data(data, _params); +} + +void http_layer::send_data(OCTETSTRING& data, params& params) { + loggers::get_instance().log_msg(">>> http_layer::send_data: ", data); + + send_to_all_layers(data, params); +} + +void http_layer::receive_data(OCTETSTRING& data, params& params) +{ + loggers::get_instance().log_msg(">>> http_layer::receive_data: ", data); + + // Decode HTTP message + LibItsHttp__TypesAndValues::HttpMessage http_message; + if (_codec.decode(data, http_message) == -1) { + loggers::get_instance().warning("http_layer::receive_data: Failed to decode data"); + return; + } + + // Pass it to the ports + to_all_upper_ports(http_message, params); +} + +http_layer_factory http_layer_factory::_f; + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e5/f0352becc08500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e5/f0352becc08500181dc9eb7ae31560a9 new file mode 100644 index 0000000..31ae9ac --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e5/f0352becc08500181dc9eb7ae31560a9 @@ -0,0 +1,132 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + None + -Wall -std=c++11 -pthread -fPIC + + pcap + ssl + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + -pthread -fPIC + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn + + true + + + + + + src/ttcn/ttcn/TestCodec + + false + true + + + + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e6/20b7df769e8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e6/20b7df769e8500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..ac4d24b --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e6/20b7df769e8500181eabf1ba1ea37ea1 @@ -0,0 +1,103 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn + + true + + + + + + src/ttcn/ttcn/TestCodec + + false + true + + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ea/3019ff6bc28500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ea/3019ff6bc28500181dc9eb7ae31560a9 new file mode 100644 index 0000000..f348652 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ea/3019ff6bc28500181dc9eb7ae31560a9 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 12:57:47 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -std=c++11-pthread-fPIC + +# Flags for the linker: +LDFLAGS = -pthread-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ea/e0dffc35c08500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ea/e0dffc35c08500181dc9eb7ae31560a9 new file mode 100644 index 0000000..adf32e0 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ea/e0dffc35c08500181dc9eb7ae31560a9 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 12:41:58 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall -std=c++11 -pthread -fPIC + +# Flags for the linker: +LDFLAGS = -pthread -fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ed/20ffc4e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ed/20ffc4e1978500181c21d10bc58219ba new file mode 100644 index 0000000..1a4d430 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ed/20ffc4e1978500181c21d10bc58219ba @@ -0,0 +1,74 @@ +/*! + * \file codec_stack_builder.hh + * \brief Header file for ITS protocol stack builder. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "codec_factory.hh" + +class Record_Type; //! TITAN forward declaration + +/*! + * \class codec_stack_builder + * \brief This class provides a factory class to create Codec class instances + */ +class codec_stack_builder { +private: //! \privatesection + static codec_stack_builder* _instance; //! Smart pointer to the unique instance of the logger framework + std::map _codecs; //! The list of the registered \see t_codec factories + + /*! + * \brief Default constructor + * Create a new instance of the codec_stack_builder class + * \private + */ + codec_stack_builder() { }; // can not be created manually +public: //! \publicsection + /*! + * \fn codec_stack_builder* get_instance(); + * \brief Accessor for the unique instance of the logger framework + * \static + */ + static codec_stack_builder* get_instance() { return _instance ? _instance : _instance = new codec_stack_builder(); }; + + /*! + * \fn void register_codec_factory(const std::string & p_type, codec_factory* p_codec_factory); + * \brief Add a new codec factory + * \param[in] p_type The codec identifier (e.g. GN for the GeoNetworking codec...) + * \param[in] p_codec_factory A reference to the \see codec_factory + * \static + */ + static void register_codec_factory(const std::string & p_type, codec_factory* p_codec_factory) { codec_stack_builder::get_instance()->_register_codec_factory(p_type, p_codec_factory); }; + +private: //! \privatesection + /*! + * \fn void _register_codec_factory(const std::string & p_type, codec_factory* p_codec_factory); + * \brief Add a new codec factory + * \param[in] p_type The codec identifier (e.g. GN for the GeoNetworking codec...) + * \param[in] p_codec_factory A reference to the \see codec_factory + */ + void _register_codec_factory(const std::string & p_type, codec_factory* p_codec_factory) { _codecs[p_type] = p_codec_factory; }; + +public: //! \publicsection + /*! + * \fn codec* get_codec(const char* p_codec_name); + * \brief Retrieve the specified codec name from the list of the registered codecs + * \param[in] p_codec_name The codec indentifier + * \return The pointer to the codec object on success, nullptr otherwise + */ + inline codec* get_codec(const char* p_codec_name) { // NOTE A virtual method cannot not be a template ==> polymorphism required here + typename std::map::const_iterator it = _codecs.find(p_codec_name); + if (it != _codecs.cend()) { + return it->second->create_codec(); + } + + return nullptr; + } +}; // End of class codec_stack_builder + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ed/90c20963bc85001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ed/90c20963bc85001814de869e8ad08251 new file mode 100644 index 0000000..edfcb37 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ed/90c20963bc85001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 12:14:27 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC + +# Flags for the linker: +LDFLAGS = -pthread,-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ee/6087e5dfb08500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ee/6087e5dfb08500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..c4500d7 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ee/6087e5dfb08500181eabf1ba1ea37ea1 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 08:51:35 UTC 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -std=c++11-pthread-gPIC + +# Flags for the linker: +LDFLAGS = -pthread-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ef/9064abdfb08500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ef/9064abdfb08500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..e82745c --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ef/9064abdfb08500181eabf1ba1ea37ea1 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 08:51:36 UTC 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -std=c++11-pthread-gPIC + +# Flags for the linker: +LDFLAGS = -pthread-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ef/d087d51db885001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ef/d087d51db885001814de869e8ad08251 new file mode 100644 index 0000000..55a4a35 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ef/d087d51db885001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 11:31:24 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall-std=c++11-pthread-fPIC + +# Flags for the linker: +LDFLAGS = -pthread-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f2/61d0d1e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f2/61d0d1e1978500181c21d10bc58219ba new file mode 100644 index 0000000..25d8278 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f2/61d0d1e1978500181c21d10bc58219ba @@ -0,0 +1,516 @@ +#include +#include +#include + +#include "codec_stack_builder.hh" + +#include "http_codec.hh" + +#include "loggers.hh" + +#include "LibItsHttp_TypesAndValues.hh" +#include "LibItsHttp_MessageBodyTypes.hh" +#include "LibItsHttp_XmlMessageBodyTypes.hh" + +int http_codec::encode (const LibItsHttp__TypesAndValues::HttpMessage& msg, OCTETSTRING& data) +{ + loggers::get_instance().log_msg(">>> http_codec::encode: ", (const Base_Type&)msg); + + TTCN_EncDec::clear_error(); + TTCN_Buffer encoding_buffer; + + _ec.reset(); + + int result; + if (msg.ischosen(LibItsHttp__TypesAndValues::HttpMessage::ALT_request)) { + result = encode_request(msg.request(), encoding_buffer); + } else if (msg.ischosen(LibItsHttp__TypesAndValues::HttpMessage::ALT_response)) { + result = encode_response(msg.response(), encoding_buffer); + } else { + loggers::get_instance().warning("http_codec::encode: Unbound HttpMessage"); + return -1; + } + + data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()); + + loggers::get_instance().log_msg("<<< http_codec::encode: data=", data); + return result; +} + +int http_codec::decode (const OCTETSTRING& data, LibItsHttp__TypesAndValues::HttpMessage& msg, params* params) +{ + loggers::get_instance().log_msg(">>> http_codec::decode: data=", data); + + TTCN_EncDec::clear_error(); + TTCN_Buffer decoding_buffer(data); + loggers::get_instance().log_to_hexa("http_codec::decode: decoding_buffer=", decoding_buffer); + + _dc.reset(); + + _params = params; + + // Get the first line (e.g. HTTP/1.1 302 Found or POST / HTTP/1.1) + CHARSTRING message_id; + if (get_line(decoding_buffer, message_id) == -1) { + return -1; + } + loggers::get_instance().log_msg("http_codec::decode: message_id: ", message_id); + // Extract parameters + try { + std::string str(static_cast(message_id)); + std::regex rgx ("\\s*(\\w+)/"); + std::sregex_iterator begin(str.cbegin(), str.cend(), rgx); + std::smatch m = *begin; + loggers::get_instance().log("http_codec::decode: %d - %s", m.size(), m[0].str().c_str()); + if (m[0].str().compare("HTTP/") == 0) { // HTTP response + LibItsHttp__TypesAndValues::Response response; + std::regex rgx ("\\s*HTTP/(\\d+)\\.(\\d+)\\s+(\\d+)\\s+([\\w\\s\\t\\v\\f]+)*"); + std::sregex_iterator begin(str.cbegin(), str.cend(), rgx); + std::smatch m = *begin; + loggers::get_instance().log("http_codec::decode: Process response: %d", m.size()); + if (m.size() != 5) { + loggers::get_instance().error("http_codec::decode: Unsupported tag"); + return -1; + } + response.version__major() = std::stoi(m[1].str().c_str()); + response.version__minor() = std::stoi(m[2].str().c_str()); + response.statuscode() = std::stoi(m[3].str().c_str()); + response.statustext() = CHARSTRING(m[4].str().c_str()); + LibItsHttp__TypesAndValues::HeaderLines headers; + decode_headers(decoding_buffer, headers); + response.header() = headers; + loggers::get_instance().log_to_hexa("Before decoding Body: ", decoding_buffer); + LibItsHttp__MessageBodyTypes::HttpMessageBody body; + if (decode_body(decoding_buffer, body) == -1) { + response.body().set_to_omit(); + } else { + response.body() = OPTIONAL(body); + } + msg.response() = response; + } else { // HTTP request + LibItsHttp__TypesAndValues::Request request; + std::regex rgx ("\\s*(\\w+)\\s+(.+)\\s+HTTP/(\\d)\\.(\\d)"); + std::sregex_iterator begin(str.cbegin(), str.cend(), rgx); + std::smatch m = *begin; + if (m.size() != 5) { + loggers::get_instance().error("http_codec::decode: Unsupported tag"); + return -1; + } + request.method() = CHARSTRING(m[1].str().c_str()); + request.uri() = CHARSTRING(m[2].str().c_str()); + request.version__major() = std::stoi(m[3].str().c_str()); + request.version__minor() = std::stoi(m[4].str().c_str()); + LibItsHttp__TypesAndValues::HeaderLines headers; + decode_headers(decoding_buffer, headers); + request.header() = headers; + OPTIONAL body; + body.set_to_omit(); + if (decode_body(decoding_buffer, body) == -1) { + request.body().set_to_omit(); + } else { + request.body() = body; + } + msg.request() = request; + } + + loggers::get_instance().log_msg("<<< http_codec::decode: ", (const Base_Type&)msg); + return 0; + } + catch(const std::logic_error& e) { + return -1; + } +} + +int http_codec::encode_request(const LibItsHttp__TypesAndValues::Request& p_request, TTCN_Buffer& p_encoding_buffer) +{ + loggers::get_instance().log_msg(">>> http_codec::encode_request: ", (const Base_Type&)p_request); + + const OPTIONAL& v = p_request.body(); + OCTETSTRING os; + if (v.ispresent()) { + const LibItsHttp__MessageBodyTypes::HttpMessageBody& body = static_cast(*v.get_opt_value()); + loggers::get_instance().log_msg("http_codec::encode_request: body: ", body); + if (encode_body(body, os) == -1) { + _ec.length = 0; + } + } + + // Encode generic part + p_encoding_buffer.put_cs(p_request.method()); + p_encoding_buffer.put_c(' '); + p_encoding_buffer.put_cs(p_request.uri()); + p_encoding_buffer.put_cs(" HTTP/"); + p_encoding_buffer.put_cs(int2str(p_request.version__major())); + p_encoding_buffer.put_c('.'); + p_encoding_buffer.put_cs(int2str(p_request.version__minor())); + p_encoding_buffer.put_cs("\r\n"); + // Encode headers + const LibItsHttp__TypesAndValues::HeaderLines& headers = p_request.header(); + for (int i = 0; i < headers.size_of(); i++) { + const LibItsHttp__TypesAndValues::HeaderLine& header = headers[i]; + loggers::get_instance().log_msg("http_codec::encode_request: Processing header ", header.header__name()); + p_encoding_buffer.put_cs(header.header__name()); + p_encoding_buffer.put_cs(": "); + if (std::string(static_cast(header.header__name())).compare("Content-Length") == 0) { + if (_ec.length != 0) { + p_encoding_buffer.put_cs(int2str(_ec.length + 2/*Stand for the last CRLF*/)); + } else { + p_encoding_buffer.put_cs("0"); + } + _ec.is_content_length_present = 0x01; + } else { + const OPTIONAL& o = header.header__value(); + if (o.ispresent()) { + const LibItsHttp__TypesAndValues::charstring__list& v = dynamic_cast &>(o); + if (v.size_of() > 0) { + loggers::get_instance().log_msg("http_codec::encode_request: Processing value ", v[0]); + p_encoding_buffer.put_cs(v[0]); + int j = 1; + while (j < v.size_of()) { + p_encoding_buffer.put_cs(", "); + loggers::get_instance().log_msg("http_codec::encode_request: Processing value ", v[j]); + p_encoding_buffer.put_cs(v[j]); + j += 1; + } // End of 'while' statement + } + } // else, do not include it + } + p_encoding_buffer.put_cs("\r\n"); + } // End of 'for' statement + + p_encoding_buffer.put_cs("\r\n"); + if (_ec.length != 0) { + p_encoding_buffer.put_os(os); + p_encoding_buffer.put_cs("\r\n"); + } + + return 0; +} + +int http_codec::encode_response (const LibItsHttp__TypesAndValues::Response& p_response, TTCN_Buffer& p_encoding_buffer) { + loggers::get_instance().log_msg(">>> http_codec::encode_response: ", (const Base_Type&)p_response); + + const OPTIONAL& v = p_response.body(); + OCTETSTRING os; + if (v.ispresent()) { + const LibItsHttp__MessageBodyTypes::HttpMessageBody& body = static_cast(*v.get_opt_value()); + loggers::get_instance().log_msg("http_codec::encode_response: body: ", body); + if (encode_body(body, os) == -1) { + _ec.length = 0; + } + } + + // Encode generic part + p_encoding_buffer.put_cs("HTTP/"); + p_encoding_buffer.put_cs(int2str(p_response.version__major())); + p_encoding_buffer.put_c('.'); + p_encoding_buffer.put_cs(int2str(p_response.version__minor())); + p_encoding_buffer.put_cs(" "); + p_encoding_buffer.put_cs(int2str(p_response.statuscode())); + p_encoding_buffer.put_cs(" "); + if (p_response.statustext().lengthof() != 0) { + p_encoding_buffer.put_cs(p_response.statustext()); + } + p_encoding_buffer.put_cs("\r\n"); + // Encode headers + const LibItsHttp__TypesAndValues::HeaderLines& headers = p_response.header(); + for (int i = 0; i < headers.size_of(); i++) { + const LibItsHttp__TypesAndValues::HeaderLine& header = headers[i]; + loggers::get_instance().log_msg("http_codec::encode_response: Processing header ", header.header__name()); + p_encoding_buffer.put_cs(header.header__name()); + p_encoding_buffer.put_cs(": "); + if (std::string(static_cast(header.header__name())).compare("Content-Length") == 0) { + if (_ec.length != 0) { + p_encoding_buffer.put_cs(int2str(_ec.length + 2/*Stand for the last CRLF*/)); + } else { + p_encoding_buffer.put_cs("0"); + } + _ec.is_content_length_present = 0x01; + } else { + const OPTIONAL& o = header.header__value(); + if (o.ispresent()) { + const LibItsHttp__TypesAndValues::charstring__list& v = dynamic_cast &>(o); + if (v.size_of() > 0) { + loggers::get_instance().log_msg("http_codec::encode_response: Processing value ", v[0]); + p_encoding_buffer.put_cs(v[0]); + int j = 1; + while (j < v.size_of()) { + p_encoding_buffer.put_cs(", "); + loggers::get_instance().log_msg("http_codec::encode_response: Processing value ", v[j]); + p_encoding_buffer.put_cs(v[j]); + j += 1; + } // End of 'while' statement + } + } // else, do not include it + } + p_encoding_buffer.put_cs("\r\n"); + } // End of 'for' statement + + p_encoding_buffer.put_cs("\r\n"); + if (_ec.length != 0) { + p_encoding_buffer.put_os(os); + p_encoding_buffer.put_cs("\r\n"); + } + + return 0; +} + +int http_codec::decode_headers(TTCN_Buffer& decoding_buffer, LibItsHttp__TypesAndValues::HeaderLines& headers) { + loggers::get_instance().log(">>> http_codec::decode_headers"); + loggers::get_instance().log_to_hexa("http_codec::decode_headers", decoding_buffer); + + CHARSTRING cstr; + int i = 0; + while (true) { + switch(get_line(decoding_buffer, cstr, true)) { + case 0: { + loggers::get_instance().log_msg("http_codec::decode_headers: ", cstr); + LibItsHttp__TypesAndValues::HeaderLine header; + if (decode_header(cstr, header) == -1) { + loggers::get_instance().warning("http_codec::decode_headers: Failed to decode header %s", static_cast(cstr)); + return -1; + } + headers[i++] = header; + } + break; + case 1: + loggers::get_instance().log_msg("<<< http_codec::decode_headers: ", headers); + return 0; + case -1: + loggers::get_instance().warning("http_codec::decode_headers: Failed to decode headers"); + return -1; + } // End of 'switch' statement + } // End of 'while' statement +} + +int http_codec::decode_header(CHARSTRING& header_line, LibItsHttp__TypesAndValues::HeaderLine& header) { + loggers::get_instance().log_msg(">>> http_codec::decode_header", header_line); + + try { + std::string str(static_cast(header_line)); + std::regex rgx ("([0-9a-zA-Z-]+)\\:\\s+(.+)(,(.+))*"); + std::sregex_iterator begin(str.cbegin(), str.cend(), rgx); + std::smatch m = *begin; + if (m.size() < 5) { + loggers::get_instance().warning("http_codec::decode_header: Failed to decode header %s", str.c_str()); + return -1; + } + loggers::get_instance().log("http_codec::decode_header: %d", m.size()); + header.header__name() = CHARSTRING(m[1].str().c_str()); + LibItsHttp__TypesAndValues::charstring__list v; + for (unsigned int j = 0; j < m.size(); j++) { + if (m[j + 2].str().length() == 0) { + break; + } + v[j] = CHARSTRING(m[j + 2].str().c_str()); + } // End of 'for' statement + header.header__value() = OPTIONAL(v); + + if (m[1].str().compare("Content-Length") == 0) { + // Save the the body length + loggers::get_instance().log("http_codec::decode_header: decoded Content-Length %s", m[2].str().c_str()); + _dc.length = std::stoi(m[2].str()); + } + return 0; + } + catch(const std::logic_error& e) { + return -1; + } +} + +int http_codec::encode_body(const LibItsHttp__MessageBodyTypes::HttpMessageBody& p_message_body, OCTETSTRING& p_encoding_buffer) { + loggers::get_instance().log_msg(">>> http_codec::encode_body: ", (const Base_Type&)p_message_body); + loggers::get_instance().log("http_codec::encode_body: # of codecs=%d", _codecs.size()); + + if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_binary__body)) { + p_encoding_buffer = p_message_body.binary__body().raw(); + } else if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_html__body)) { + p_encoding_buffer = OCTETSTRING(p_message_body.html__body().lengthof(), (unsigned char*)static_cast(p_message_body.html__body())); + } else if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_text__body)) { + p_encoding_buffer = OCTETSTRING(p_message_body.text__body().lengthof(), (unsigned char*)static_cast(p_message_body.text__body())); + } else if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_xml__body)) { + const LibItsHttp__XmlMessageBodyTypes::XmlBody& xml_body = p_message_body.xml__body(); + if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_raw)) { + p_encoding_buffer = OCTETSTRING(xml_body.raw().lengthof(), (unsigned char*)static_cast(xml_body.raw())); + } else { + std::map > >::const_iterator it = _codecs.find("held"); + if (it != _codecs.cend()) { + loggers::get_instance().log("http_codec::encode_body: Call 'held_codec'"); + _codecs["held"]->encode((Record_Type&)xml_body, p_encoding_buffer); + } else { + loggers::get_instance().warning("http_codec::encode_body: Unsupported HTTP codec, use raw field as default"); + p_encoding_buffer = OCTETSTRING(xml_body.raw().lengthof(), (unsigned char*)static_cast(xml_body.raw())); + // TODO Add new HTTP message codec here + } + } + } else { + loggers::get_instance().warning("http_codec::encode_body: Failed to encode HTTP message body"); + return -1; + } + loggers::get_instance().log_msg("http_codec::encode_body: HTTP message ", p_encoding_buffer); + _ec.length = p_encoding_buffer.lengthof(); + loggers::get_instance().log("http_codec::encode_body: HTTP message length: %d", _ec.length); + + return 0; +} + +int http_codec::decode_body(TTCN_Buffer& decoding_buffer, LibItsHttp__MessageBodyTypes::HttpMessageBody& message_body) { + loggers::get_instance().log(">>> http_codec::decode_body"); + loggers::get_instance().log_to_hexa("http_codec::decode_body", decoding_buffer); + loggers::get_instance().log("http_codec::decode_body: # of codecs=%d", _codecs.size()); + + // Sanity check + if (decoding_buffer.get_len() - decoding_buffer.get_pos() <= 0) { + return -1; + } + + OCTETSTRING s(decoding_buffer.get_len() - decoding_buffer.get_pos(), decoding_buffer.get_data() + decoding_buffer.get_pos()); + loggers::get_instance().log_msg("http_codec::decode_body: raw body=", s); + // Align the payload length with the specified Content-lenght value + loggers::get_instance().log("http_codec::decode_body: _dc.length=%d - body length=%d", _dc.length, s.lengthof()); + OCTETSTRING body; + if (_dc.length != 0) { + const unsigned char* p = static_cast(s); + if ((unsigned int)s.lengthof() <= _dc.length) { + body = OCTETSTRING(s.lengthof(), p); + } else { + body = OCTETSTRING(_dc.length, p); + } + } else { + loggers::get_instance().warning("http_codec::decode_body: No Conten-Length header, process all remaining bytes"); + body = s; + } + loggers::get_instance().log_msg("http_codec::decode_body: Aligned body=", body); + // Remove CRLF if any + int counter = 0; + if ((body[body.lengthof() - 1].get_octet() == 0x0d) || (body[body.lengthof() - 1].get_octet() == 0x0a)) { + counter += 1; + if ((body[body.lengthof() - 2].get_octet() == 0x0d) || (body[body.lengthof() - 2].get_octet() == 0x0a)) { + counter += 1; + } + } + loggers::get_instance().log("http_codec::decode_body: Counter=%d", counter); + body = OCTETSTRING(body.lengthof() - counter, static_cast(body)); + loggers::get_instance().log_msg("http_codec::decode_body: Finalised body=", body); + // Check if HTTP message body contains binary characters + for (int i = 0; i < body.lengthof(); i++) { + unsigned char c = body[i].get_octet(); + if (!std::isprint(c) && !std::isspace(c) && !std::ispunct(c)) { + loggers::get_instance().log("http_codec::decode_body: Byte #%d is not printable: 0x%02x", i, body[i].get_octet()); + _dc.is_binary = 0x01; + break; + } + } // End of 'for' statement + loggers::get_instance().log("http_codec::decode_body: Binary mode: %x", _dc.is_binary); + LibItsHttp__MessageBodyTypes::HttpMessageBody v; + if (_dc.is_binary == 0x01) { + LibItsHttp__BinaryMessageBodyTypes::BinaryBody bb; + bb.raw() = body; + message_body.binary__body() = bb; + } else { + // Convert into string + params p; + p["decode_str"] = std::string(static_cast(body), body.lengthof() + static_cast(body)); + // Try to identify xml + if (p["decode_str"].find("" + if (p["decode_str"].find("xmlns=\"urn:ietf:params:xml:ns:geopriv:held\">") != std::string::npos) { + loggers::get_instance().log("http_codec::decode_body: Find 'urn:ietf:params:xml:ns:geopriv:held'"); + if (_codecs["held"].get() != nullptr) { + loggers::get_instance().log("http_codec::decode_body: Call 'held_codec'"); + if (_codecs["held"]->decode(body, (Record_Type&)xml_body, &p) == -1) { + loggers::get_instance().warning("http_codec::decode_body: Failed to decode HELD message"); + xml_body.raw() = CHARSTRING(body.lengthof(), (char*)static_cast(body)); + } else { + loggers::get_instance().log_msg("http_codec::decode_body: Decoded message:", xml_body); + message_body.xml__body() = xml_body; + } + } else { + loggers::get_instance().warning("http_codec::decode_body: No codec for HELD"); + xml_body.raw() = CHARSTRING(body.lengthof(), (char*)static_cast(body)); + } + message_body.xml__body() = xml_body; + } + } else if (p["decode_str"].find("") != std::string::npos) { // Try to identify HTML + loggers::get_instance().log("http_codec::decode_body: Find html message"); + LibItsHttp__MessageBodyTypes::TextBody txt_body; + loggers::get_instance().error("http_codec::decode_body: Not supported"); + } else { + loggers::get_instance().log("http_codec::decode_body: Use textBdy as default"); + LibItsHttp__MessageBodyTypes::TextBody text_body; + message_body.text__body() = CHARSTRING(body.lengthof(), (char*)static_cast(body)); + } + } + + return 0; +} + +int http_codec::get_line(TTCN_Buffer& buffer, CHARSTRING& to, const bool concatenate_header_lines) { + unsigned int i = 0; + const unsigned char *cc_to = buffer.get_read_data(); + + // Sanity checks + if(buffer.get_read_len() == 0) { + return -1; + } + + while (true) { + // Skip spaces, and empty lines + for( ; i < buffer.get_read_len() && cc_to[i] != '\0' && cc_to[i] != '\r' && cc_to[i] != '\n'; i++); + if(i >= buffer.get_read_len()) { // No more characters to process + to = CHARSTRING(""); + return -1; + } else if(cc_to[i] == '\n') { // New line found, we don't care is '\r' is missing + if ((i > 0) && ((i + 1) < buffer.get_read_len()) && concatenate_header_lines && ((cc_to[i + 1] == ' ') || (cc_to[i + 1] == '\t'))) { + i += 1; // Skip it + } else { + to = CHARSTRING(i, (const char*)cc_to); + buffer.set_pos(buffer.get_pos() + i + 1); + return i == 0 ? 1 : 0; + } + } else { + if ((i + 1) < buffer.get_read_len() && cc_to[i + 1] != '\n') { + return -1; + } else if(i > 0 && (i + 2) < buffer.get_read_len() && concatenate_header_lines && (cc_to[i+2] == ' ' || cc_to[i+2] == '\t')) { + i += 2; + } else { + to = CHARSTRING(i, (const char*)cc_to); + buffer.set_pos(buffer.get_pos() + i + 2); + return i == 0 ? 1 : 0; + } + } + } // End of 'while' statement +} + +void http_codec::set_payload_codecs(const std::string& p_codecs) { + loggers::get_instance().log(">>> http_codec::set_payload_codecs: %s", p_codecs.c_str()); + + // Sanity check + if (p_codecs.length() == 0) { + return; + } + + // Extract codecs + try { + std::regex rgx("(\\w+)(:(\\w+))*(;((\\w+)(:(\\w+))*))*"); + std::sregex_iterator begin(p_codecs.cbegin(), p_codecs.cend(), rgx); + std::sregex_iterator end = std::sregex_iterator(); + // E.g. 9 - xml - :held_codec - held_codec - ;html:html_codec - html:html_codec - html - :html_codec - html_codec + for (std::sregex_iterator it = begin; it != end; ++it) { + std::smatch m = *it; + loggers::get_instance().log("http_codec::set_payload_codecs: %d - %s - %s - %s - %s - %s - %s - %s - %s", m.size(), m[1].str().c_str(), m[2].str().c_str(), m[3].str().c_str(), m[4].str().c_str(), m[5].str().c_str(), m[6].str().c_str(), m[7].str().c_str(), m[8].str().c_str()); + for (unsigned int j = 1; j < m.size() - 1; j += 5) { // Exclude m[0] + loggers::get_instance().log("http_codec::set_payload_codecs: insert (%s, %s), j = %d", m[j].str().c_str(), m[j + 2].str().c_str(), j); + std::string key(m[j].str()); + _codecs.insert(std::make_pair(key, std::unique_ptr >(codec_stack_builder::get_instance()->get_codec(m[j + 2].str().c_str())))); + } // End of 'for' statement + } // End of 'for' statement + //loggers::get_instance().log("http_codec::set_payload_codecs: _codecs length=%d", _codecs.size()); + } + catch(const std::logic_error& e){ + loggers::get_instance().warning("http_codec::set_payload_codecs: std::logic_error: %s", e.what()); + _codecs.clear(); + } +} diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f6/b0a5281cb985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f6/b0a5281cb985001814de869e8ad08251 new file mode 100644 index 0000000..318f839 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f6/b0a5281cb985001814de869e8ad08251 @@ -0,0 +1,159 @@ +11:31:00.784752 EXECUTOR - TTCN-3 Host Controller started on vagrant. Version: CRL 113 200/6 R4A. +11:31:00.784785 EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error +11:31:00.784790 EXECUTOR - Maximum number of open file descriptors: 1048576, FD_SETSIZE = 1024 +11:31:00.784904 WARNING - Warning: The address of MC was set to a local IP address. This may cause incorrect behavior if a HC from a remote host also connects to MC. +11:31:00.784912 EXECUTOR - The address of MC was set to 127.0.0.1:0. +11:31:00.791043 EXECUTOR - Connected to MC. +11:31:00.791150 EXECUTOR - This host supports UNIX domain sockets for local communication. +11:31:00.794161 EXECUTOR - Processing configuration data received from MC. +11:31:00.795044 EXECUTOR - Module LibCommon_Sync has the following parameters: { PX_TSYNC_TIME_LIMIT := 120.000000, PX_TSHUT_DOWN_TIME_LIMIT := 120.000000 } +11:31:00.795100 EXECUTOR - Module LibCommon_Time has the following parameters: { PX_TDONE := 120.000000, PX_TAC := 30.000000, PX_TNOAC := 10.000000, PX_TWAIT := 120.000000, PX_LOOP := 1.000000 } +11:31:00.795158 EXECUTOR - Module LibItsHttp_Pics has the following parameters: { PICS_HEADER_HOST := "ptsv2.com", PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8" } +11:31:00.795210 EXECUTOR - Module LibNg112_Pics has the following parameters: { PICS_LIS_IUT := true, PICS_ECRF_IUT := false, PICS_HTTP_POST_REQUEST := true, PICS_LOCATION_HELD := true, PICS_SERVICE_LOST := true, PICS_LIS_REQUEST_URIs := { "/t/9rk8l-1531130342/post", "/t/r143f-1528105031/post", "/t/6ouem-1531201238/post" }, PICS_ECRF_URI := "/service" } +11:31:00.795273 EXECUTOR - Module LibNg112_Pixits has the following parameters: { PX_DOUBLE_CMP_EPSILON := 1.000000e-05, PX_DEVICE_URI_SIP := "sip:user@example.net;gr=kjh29x97us97d", PX_DEVICE_URI_TEL := "+436501234567", PX_UNKNOWN_DEVICE_URI := "sip:no_one@example.net;gr=kjh29x97us97d", PX_DEVICE_POSITION := { -34.407000, 150.883000, 24.800000 }, PX_CIRCLE_POS := { 48.215388, 16.290300 }, PX_CIRCLE_UOM := "urn:ogc:def:uom:EPSG::9001", PX_CIRCLE_BASE := 23.600000, PX_SRS_NAME := "urn:ogc:def:crs:EPSG::4326" } +11:31:00.795375 EXECUTOR - Module LibSip_PIXITS has the following parameters: { PX_SIP_SDP_USER_NAME := "voicesession", PX_SIP_SDP_SESSION_ID := "30000", PX_SIP_SDP_DYN := "0", PX_SIP_SDP_B_MODIFIER := "AS", PX_SIP_SDP_B_BANDWIDTH := 64, PX_SIP_SDP_ENCODING := "PCMU", PX_SIP_SDP_CLOCKRATE := "8000", PX_MB_LENGTH_FROM_ENCVAL := true, PX_USE_FX_FOR_XML_LENGTH := false, PX_SIP_TRANSPORT := "UDP", PX_SIP_REGISTRATION := false, PX_AUTH_ALGORITHM := "AKAv1-MD5", PX_SIP_REGISTER_AUTHENTICATION_ENABLED := true, PX_SIP_INVITE_AUTHENTICATION_ENABLED := false, PX_SIP_TWAIT := 30.000000, PX_SIP_TACK := 8.000000, PX_SIP_TRESP := 15.000000, PX_SIP_TNOACT := 1.000000, PX_SIP_MIME_BOUNDARY := "boundary1" } +11:31:00.795494 EXECUTOR - Initializing module AtsNg112_TestCases. +11:31:00.795542 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibItsHttp_Functions. +11:31:00.795594 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_TypesAndValues. +11:31:00.795645 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0 Initializing module LibItsHttp_MessageBodyTypes. +11:31:00.795698 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XmlMessageBodyTypes. +11:31:00.795757 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XMLTypes. +11:31:00.795831 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held. +11:31:00.795900 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initializing module http_www_w3_org_XML_1998_namespace. +11:31:00.796014 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initializing module XSD. +11:31:00.796090 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn:0 Initializing module UsefulTtcn3Types. +11:31:00.796174 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn:0 Initialization of module UsefulTtcn3Types finished. +11:31:00.796252 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initialization of module XSD finished. +11:31:00.796324 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initialization of module http_www_w3_org_XML_1998_namespace finished. +11:31:00.796394 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held finished. +11:31:00.796550 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held_id. +11:31:00.796620 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held_id finished. +11:31:00.796686 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10. +11:31:00.796750 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy. +11:31:00.796820 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy finished. +11:31:00.796891 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10 finished. +11:31:00.803032 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc. +11:31:00.803181 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc finished. +11:31:00.803259 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf. +11:31:00.806217 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf finished. +11:31:00.806349 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XMLTypes finished. +11:31:00.806418 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XmlMessageBodyTypes finished. +11:31:00.806570 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_BinaryMessageBodyTypes. +11:31:00.806644 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_BinaryMessageBodyTypes finished. +11:31:00.806705 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0 Initialization of module LibItsHttp_MessageBodyTypes finished. +11:31:00.806762 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_TypesAndValues finished. +11:31:00.806813 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_Pics. +11:31:00.806864 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_Pics finished. +11:31:00.806915 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibItsHttp_Functions finished. +11:31:00.807032 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Templates. +11:31:00.807076 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Templates finished. +11:31:00.807096 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Functions. +11:31:00.807117 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_Templates. +11:31:00.807138 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_Templates finished. +11:31:00.807158 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_XmlTemplates. +11:31:00.807178 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape. +11:31:00.807200 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0 Initializing module http_www_opengis_net_pidflo_1_0. +11:31:00.807237 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn:0 Initializing module http_www_opengis_net_gml. +11:31:00.807262 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn:0 Initialization of module http_www_opengis_net_gml finished. +11:31:00.807286 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0 Initialization of module http_www_opengis_net_pidflo_1_0 finished. +11:31:00.807309 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape finished. +11:31:00.807334 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_XmlTemplates finished. +11:31:00.807354 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TypesAndValues. +11:31:00.807374 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TypesAndValues finished. +11:31:00.807393 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TestSystem. +11:31:00.807414 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibItsHttp_TestSystem. +11:31:00.807436 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Sync. +11:31:00.810148 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initializing module LibCommon_AbstractData. +11:31:00.810253 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0->../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initializing module LibCommon_BasicTypesAndValues. +11:31:00.810326 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0->../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initialization of module LibCommon_BasicTypesAndValues finished. +11:31:00.810409 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_AbstractData finished. +11:31:00.810531 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initializing module LibCommon_VerdictControl. +11:31:00.810599 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_VerdictControl finished. +11:31:00.810667 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Sync finished. +11:31:00.810728 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Time. +11:31:00.810790 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Time finished. +11:31:00.810850 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibItsHttp_TestSystem finished. +11:31:00.810906 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibSip_Interface. +11:31:00.811072 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_SIPTypesAndValues. +11:31:00.811157 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0 Initializing module LibSip_MessageBodyTypes. +11:31:00.811229 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SDPTypes. +11:31:00.811301 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn:0 Initializing module LibSip_Common. +11:31:00.811385 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn:0 Initialization of module LibSip_Common finished. +11:31:00.811508 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SDPTypes finished. +11:31:00.811582 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SimpleMsgSummaryTypes. +11:31:00.811654 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SimpleMsgSummaryTypes finished. +11:31:00.811726 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_XMLTypes. +11:31:00.811799 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_resource_lists. +11:31:00.811875 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_resource_lists finished. +11:31:00.811967 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_xcap. +11:31:00.812051 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_ietf_params_xml_ns_common_policy. +11:31:00.812142 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_ietf_params_xml_ns_common_policy finished. +11:31:00.812221 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_oma_xml_xdm_common_policy. +11:31:00.812311 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_oma_xml_xdm_common_policy finished. +11:31:00.812534 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_xcap finished. +11:31:00.815136 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_mcid. +11:31:00.815275 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_mcid finished. +11:31:00.815355 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module NoTargetNamespace. +11:31:00.815433 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module NoTargetNamespace finished. +11:31:00.815573 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_3gpp_ns_cw_1_0. +11:31:00.815649 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_3gpp_ns_cw_1_0 finished. +11:31:00.815725 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_conference_info. +11:31:00.815798 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_conference_info finished. +11:31:00.815868 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_pstn. +11:31:00.815950 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_pstn finished. +11:31:00.824022 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_comm_div_info. +11:31:00.824161 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_comm_div_info finished. +11:31:00.824246 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_reginfo. +11:31:00.824319 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_reginfo finished. +11:31:00.824389 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_XMLTypes finished. +11:31:00.824502 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0 Initialization of module LibSip_MessageBodyTypes finished. +11:31:00.824570 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_SIPTypesAndValues finished. +11:31:00.824631 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_PIXITS. +11:31:00.824691 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initializing module LibCommon_DataStrings. +11:31:00.824754 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initialization of module LibCommon_DataStrings finished. +11:31:00.824818 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_PIXITS finished. +11:31:00.824879 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibSip_Interface finished. +11:31:00.824935 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TestSystem finished. +11:31:00.825037 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Functions finished. +11:31:00.825081 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pics. +11:31:00.825125 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pics finished. +11:31:00.825169 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pixits. +11:31:00.825212 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pixits finished. +11:31:00.825773 EXECUTOR - Initialization of module AtsNg112_TestCases finished. +11:31:00.825829 EXECUTOR - Initializing module AtsNg112_TestControl. +11:31:00.825872 EXECUTOR - Initialization of module AtsNg112_TestControl finished. +11:31:00.825915 EXECUTOR - Initializing module LibCommon_TextStrings. +11:31:00.826000 EXECUTOR - Initialization of module LibCommon_TextStrings finished. +11:31:00.826046 EXECUTOR - Initializing module LibItsHttp_BinaryTemplates. +11:31:00.826088 EXECUTOR - Initialization of module LibItsHttp_BinaryTemplates finished. +11:31:00.826130 EXECUTOR - Initializing module LibItsHttp_BinaryTypes. +11:31:00.826171 EXECUTOR - Initialization of module LibItsHttp_BinaryTypes finished. +11:31:00.826213 EXECUTOR - Initializing module LibItsHttp_EncdecDeclarations. +11:31:00.826255 EXECUTOR - Initialization of module LibItsHttp_EncdecDeclarations finished. +11:31:00.826297 EXECUTOR - Initializing module LibNg112_EncdecDeclarations. +11:31:00.826339 EXECUTOR - Initialization of module LibNg112_EncdecDeclarations finished. +11:31:00.826381 EXECUTOR - Initializing module LibSip_EncdecDeclarations. +11:31:00.826426 EXECUTOR ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn:0 Initializing module LibSip_SMSTypesAndValues. +11:31:00.827039 EXECUTOR ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn:0 Initialization of module LibSip_SMSTypesAndValues finished. +11:31:00.827122 EXECUTOR - Initialization of module LibSip_EncdecDeclarations finished. +11:31:00.829723 EXECUTOR - Initializing module LibSip_Library. +11:31:00.829826 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_SMSTemplates. +11:31:00.829888 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn:0 Initializing module LibSip_SMSFunctions. +11:31:00.829984 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn:0 Initialization of module LibSip_SMSFunctions finished. +11:31:00.832419 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_SMSTemplates finished. +11:31:00.839154 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_Steps. +11:31:00.839218 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn:0 Initializing module LibSip_Templates. +11:31:00.853331 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn:0 Initialization of module LibSip_Templates finished. +11:31:00.853598 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_Steps finished. +11:31:00.853699 EXECUTOR - Initialization of module LibSip_Library finished. +11:31:00.853789 EXECUTOR - Initializing module PreGenRecordOf. +11:31:00.853877 EXECUTOR - Initialization of module PreGenRecordOf finished. +11:31:00.853966 EXECUTOR - Initializing module TitanLoggerApi. +11:31:00.854055 EXECUTOR - Initialization of module TitanLoggerApi finished. +11:31:00.854141 EXECUTOR - Initializing module urn_ietf_params_xml_ns_geopriv_conf. +11:31:00.854231 EXECUTOR - Initialization of module urn_ietf_params_xml_ns_geopriv_conf finished. +11:31:00.854377 EXECUTOR - Configuration data was processed successfully. +11:31:00.854729 EXECUTOR - MTC was created. Process id: 21691. +11:31:01.998763 EXECUTOR - Exit was requested from MC. Terminating HC. +11:31:01.999234 EXECUTOR - Disconnected from MC. +11:31:01.999278 EXECUTOR - TTCN-3 Host Controller finished. diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f8/20784e69c28500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f8/20784e69c28500181dc9eb7ae31560a9 new file mode 100644 index 0000000..9b788a8 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f8/20784e69c28500181dc9eb7ae31560a9 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 12:47:13 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall-std=c++11-pthread-fPIC + +# Flags for the linker: +LDFLAGS = -pthread-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/fa/5174c5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/fa/5174c5e1978500181c21d10bc58219ba new file mode 100644 index 0000000..703fa8f --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/fa/5174c5e1978500181c21d10bc58219ba @@ -0,0 +1,46 @@ +/*! + * \file held_codec_factory.hh + * \brief Header file for ITS HELD/IP protocol codec factory. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "codec_stack_builder.hh" + +#include "held_codec.hh" + +class Record_Type; //! TITAN forward declaration + +/*! + * \class held_codec_factory + * \brief This class provides a factory class to create an held_codec class instance + */ +class held_codec_factory: public codec_factory { + static held_codec_factory _f; //! Reference to the unique instance of this class +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the held_codec_factory class + * \remark The HELD/IP codec identifier is HELD + */ + held_codec_factory() { + // register factory + codec_stack_builder::register_codec_factory("held_codec", this); + }; + /*! + * \fn codec* create_codec(const std::string & type, const std::string & param); + * \brief Create the codecs stack based on the provided codecs stack description + * \param[in] p_type The provided codecs stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + * \inline + */ + inline virtual codec* create_codec() { + return (codec*)new held_codec(); + }; +}; // End of class held_codec_factory diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/7/history.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/7/history.index new file mode 100644 index 0000000000000000000000000000000000000000..faf422f3f573e63e760a61f090fcd9df7fa08aaa GIT binary patch literal 1222 zcmZwEZAep59LMovu3V|GAZevr7p2#mTj{8%MFbipS9>vGzL@6h4l7o#DoRFCMvyE* zSd_U63LC;*4?a}pMG`RrFIn4AY6rv>EcEsONf~A5Z}2~G-+uV=JLlfBf)J8J3T;h+ zW3~g0t^St45kGOr3CE3*3&d<0&z_zs^7Z%(n>(6w2oZNCuVWWy%9uw_y*aAqzI!J) zk0hbDZ}`)S`-L%Z;bct!yQ^#?+t=#5H3i*ADh3w}UGvy!9=JF^`Wbt;p@{9!^x{_R z+J10Sn!g3Ru^L=`A9P}ml!FJe4{g{#b(+||Obe73OZQy&;o_~!>bY7`Sjk+xlX^CU zTq*%4-#c|(y&2{__#>C?gy@b#&(Tg~-{O^j?-Cwa&G|qvxan%Q7x(J=Wq(}GIUW1S zcF1;5dJyfWCbG=kyDXfWo_u63?7hDU_r^>HcB;I(uJq(_E+wE>TKY=xj^JN**V%mR zu10Ws|I`{ik6xSLJW>mN=**B2_wEXCVfv9l&()VP&VzN7eHWcOZXH1X=TZ&0+WyXh zT^fDMdU>aj2Mf@`naJlKuXlW^{Np%S}m5?rl1Sb<$01}D|qoO-UV z`sUE{(4McHlgfT}uJ-FeDvs`Nc7jJ=Ws}&Yt~l$(@wr)fskg?yJhk3!yY2ohGdE=p eb8emjCk-Bo`~U81pG{-8C!h~E$2eDZgZ~8*H2jhP literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/af/history.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/af/history.index new file mode 100644 index 0000000000000000000000000000000000000000..15792df0aa277576fe5d6ed70b9250dd36dbd35e GIT binary patch literal 292 zcmZQ#U|?Wo(9qAxPcPOF4skOzv5faiH#9WTD@#l-O3W+K%}9>VO)W}KP0<6YVPLu- zs3Nnol|e$}UfaB`3r&FntFH8>FfuSCtckz25lQ?4=W4JxgCbtD!GvfPqns24t?nyL^2F?GW6JQPz;Y=@W% E0NcB2hX4Qo literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/22/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/22/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..55082adc591737c8a1581deb9c30cb0afca162b1 GIT binary patch literal 1883 zcmbuAK}!QM5QV397yp7s&jq)LD2k%iV!hO|(BMIllBUxV$R;64i~f7FE}Pa`7gG0@ zg?zku^JdZlfEFBgtzlh<)=l)%Xl2pK( zwAnz3ng27Q1(%Dyk}H&sD{0}r;XX<_68eZT7K6JAcI;Nw|%uY9-Tg` z*-{`JWSxp~8BY<;I@FL-JEZmKS!a@yD);-UB3Nia9YWjH;lGKtsnS$MwM}Zy zMLfr-rG~?|-pT8GO=;RsyCX1EY{Tt@i5eAe_BX1kD<#9wwLLX$%wN#t^ZMudZ78os zh4v+@(7*Vhsg~$^Xxc?>S$q}<>5tB~w{raC5&vp2Y7tVm-Y)0SW|2?5@i@fyO_W&* ICYLkv1%f<|NdN!< literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/22/e4/history.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/22/e4/history.index new file mode 100644 index 0000000000000000000000000000000000000000..d45805b5e99136ae07ff0e002910ea5745883d51 GIT binary patch literal 74 zcmZQ#U|?Wm(9|z3O4d(K29a(>iMgre`9;}av7E%p)S~#b#N?9vqDsBwWClio?lzu1 Ytqc+(_uA%lU1$oN@!q*3g^_^)0ABhTO#lD@ literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/22/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/22/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..697186d538e2c6ee581e3b0b7ac14ab49499e1e1 GIT binary patch literal 3689 zcmeHK(MlsR6uq`H_zQjT3ko|Tvf{GhT8s5XOTplSi%6PYOE8m!B(3`Q&X}FF=s1w^ zZJC#O2;^|?x#!-K*#Uqa4EC*I`;3*}iJ>_@EAv#I!Jr4H$}BTvf@_PJ@Fj^j~;vko<+)IL-w=g}x*m1`vnQ3`ErA)llG!^?(1vJP;gXlfTP4vnND6q@3u()MtZm1L!(AjQYPuE|{Wo|q_;Q!%5Z z%?qB8Y7x+WMb{cgB^yrh&Ab$9zO5Hq21@a!_h7SP93ahx4>RI@-|QmYlZc zFK{aS`sMm-^imMHoDtZoO;awJSS=6+ejJ;6(4}JAl@&s^OU19AZ1p>%OU2KR+j^z` WMOl}M?>_+b8g;1{pF{t7D!u`=c>SCJ literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/bb/a8/history.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/bb/a8/history.index new file mode 100644 index 0000000000000000000000000000000000000000..9b5a56f1eed52e04513a73d899a0817efc222335 GIT binary patch literal 72 zcmZQ#U|?WmP}eUmO4d(K29W_p`6cV!Z literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/bb/ba/history.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/bb/ba/history.index new file mode 100644 index 0000000000000000000000000000000000000000..37cc6b537a28760114a4efdecc41345b0b1efab6 GIT binary patch literal 78 zcmZQ#U|?Wm(A6(4O4d(K29W_p`6cU3BENj|_E*PTiVPh0kxeW%{GLll(e?K{jl`qAe zGAM=Jmp+90aCLO=Jvvu9B7~ffXML@BpY!H#uB4G%3f<2+tI6px`5@IS11^eMLuLxY zs%#3nm{p)M``C|0?;?;R z8zv#|I)D_^Qkm^f2b1xOuW~vUK#sFBhw>&KMHp?MCMna`Ez0L;l%XtZSy@snH`r&A#c|C;xivoe9}9x+?E4Lv$N}* zy1YL$Dhg#Sm;ur=ZSud5rpd+RQng20oY(Op+{WJu)++XM~ts=)0zk7Do^)m i&7QHTF=!IeBrc!T;@I?o@|sHVH*em|nU?5QG~M&HRROZ)+j%cQ6{R?N_tVeHr9*iAY&2kTX#6Z zOEi#?i1i=TZm8i^Lm=BlxN$PI%X^1LQV|QyabIb7xan51%2ANxU1Zm0u4Ye6l_{xM zP(w@fJR#R2qFp4{8cAh)PU+3O5^8m*7u!Ti>81~03qKB!7bmw15`5p46~R&q>JWym zHvgAonF6O^)gh^I&eCy=+G=?BXZ+#!-x{TDKQ&umrr3en851>By4a6Up{|_FV%Iuy zI+(x6$@}%y_1jWj4Hes$?PCAZhbAo1{m=}{TC#L65Hgv6e7=>_Cy$_Yj9P@;?YGOP zWUZ!28BD{pFmG(=dx|4d^4W>%NK!+ehMS_geG9=p*svW!tRO WQ;zkK_;~#{Yt%<#dI-JoNPGamEc;IY literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/f2/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/f2/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..52dd290ac1e8fc6328c123214aee46db6886d007 GIT binary patch literal 3684 zcmeHJ!D<^Z5S`e&TOf%@F_$;KRroHe#&$E|hV0G~=r!*Kjg`Yh^YCGQqXQ!f{7su|~@` z5>2r%N~3WcZ8241?f=Ya$>nCE}n7!;=g<#RfUaMq!QoZ5#PCLn}q4L^W>`0@>EXO`}6Q`(aT_D*Qon>`po!ZoZMMQ558O#T1{+bD^&Le6h6;DPHsrtSMi}i<7G*ak?KH6~VF+)FMo5 zEB@EfG`X0ZR41gxc^;3W)uw`bU#5>ge{E5Q`cqf}7mD@R&X{PS;>q4YxpU>@!e?z{ zOuhQ^G1YoK*nS6&*FyR9Wm})W_@Z%5v@4oP*-{p-1wv+vr~6$wzVZkf%cw!fZP#6% zMUzE-Ry}iw&zoqp;tl7g}+V6-n;y~lm^4SHAA@Dv~#AP!O~!O zyOs&_l?KCZaTR7L4TiC^W*Q825!TWl2E%!?fBLTUx8#P&4c$ICtx5g6Lb#-yf%$7v gp4OxXde3=UllEV!!fM)?eOi<5Kk0?Z`uA(nU#j5Nod5s; literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/94/94/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/94/94/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..d96f55f0634af6b74c8dca0de8674f22f7dba2df GIT binary patch literal 3680 zcmeHJ(Q4Z;6unJs`UNfhhQeIZva+$UEelOw+7PJN!^SA8a%%*#BqSxYe_y+*l{9e; za^H#{{9@4I+;h*p=k5W(01i&9VJGPPH+FWGk4C3(G=Lw<F(0lu{W8Pv+S z?Wg0L+2~p=mI7gr9eb27@hHMshZ<69Z)=p_(I^vDXeCQgN^NW@qJxA5xS!qO2rtk; zLIT!1sQsaaR}Fz=72w9v)Gi(z8c9VcG{tqL-QlK7$tp)diuZwCo4J}jF;%9ZVonV$ zu;dA;76I*Rbgh9@vgQ=u%uAu}HuYk8pcHR<4>m8y0n+UFc22zSyRsr!Xh9vq(ADPu z9xapS|Qj+{2; zFK{aT`sVs=DX)eK?MqgnfAK@(m*{$EhD9w|ycY5Z^aZc`1lo%?KR6iqeYbL@kiPksri1_4_>Rx~xLH_Idc$vDUmT`aIk{YnzpN V39&v8pHKg0jru%{PoNK;hfga0_|5i$r5COYm15Fj>=?#mS+-8k{YGaIF2?MDX}QN zOlZz!HdJzr(s3m%JT}y$q;r8)=~N@*OU`~13RUHE+W<1Cm2vx}gX!e_RV`Km;V9`< zlT6o$`aIaoewAB*RQc~rD0mw6lL+Q<2v{&u>F}HOh}KTKoBh zFHLnsw@cH_Ys`2q8> Bg>3); literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/a8/history.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/a8/history.index new file mode 100644 index 0000000000000000000000000000000000000000..2e4609c13d4012a2b6d5a60497c1ce524c54e80c GIT binary patch literal 1606 zcma)+y-or_5XTo|N23KQ1{E-&umDO+No*`MqKWOX?5*5|lRNkJOh}|LTKEJOz66bp zjhcuWjfHO@Z=kJ>;vTtU!cM{i{C4*LF*8L7$&lreFIdTLF()v2iA#%%7MF%Y+guba zizGI-d;O~mvXIGrBztG++x6nhrI{G8c|clHdLd;TQYKx|Ry4gv=*4lGxh7|d+LH(c zXL^k4W@f!-{f{*>W1ThZr#bLb$#f$>Z{GAHA?({axO(uahgZPlO5K-YV6Cz5vL=_x zsBZEOpk!zIT!oVYXzXlx^Bw?EnoHvV2(o+npa-GCz|<-9Qtx^gCKBhV#LaFYInIN> zj+V97L9B$o{LevoVhDa5a6dFNkM$-E<}tT*!i5~JN4bDhbrnFWXNE5+YZ~>ycFZA8 z@`y$_Gb)ZUW)~|AG{$io4K93zBqo~^wOc_Ha}#O{ogCMe{e7Gyb&ES@m_{fL+kNOr zR5S(kvHgPwBOV31UByPir3f<|y>8z>PkM!GApFs~HEe%S9niZR*1H0D1>R;Lpn~1# YIq-r<1w9J;FoW$DJRI?P{6eJu0XNh(&;S4c literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/e4/history.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/e4/history.index new file mode 100644 index 0000000000000000000000000000000000000000..f0329b1dc084a12503b1aaceea76c00780fc5cd7 GIT binary patch literal 1242 zcmaizy-Ncz7{*g^b18n&`dJqdgjx{6MW~~TA2>Q(uen%D&)%6!g${xg9h`L2QE+k* zK|~RSLJ{0l{C3h+m-ZhJFS%=Skp_o@8}j6Np5ObX2>=iQ9U~5g>?;_yX6i+R;}C+- z$Jfi}?k0%z4BWR|m!cQr@tZ9phcL(5{!?SePJV+8^|~d^SXC)RMrh?%5q7QOZpJb`l``&)y?Gf01ks5a z+*SUCAgH+p)zJsZU_b0b=;jqB(+Fw`WPf zha&__gwz#ou;kB`6zqKM-D}>;gV{RPmmM~V@~~nO;(EcAa+*Dq3-CN${QAGW-B952 zND39H`Qs2OM3xZFBNFI7r}FCMUcp5Z`<0kbKok4Lps^KY9P~RyEkVt+G8u#&x?MX5 z6}is0&$x{TtDmOKj++&b196aPcrS*O@kri-bchafTDp)m4ezOZ z%$!JN!bAQhN4fIPY$$>JnIwu$`2+3eqDFQ!X|kk1E&SN}Ym4sNv2c+AS>Jwa_zZpl DtG>79 literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/74/54/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/74/54/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..20c83d4c157ada786bcb64b4e5827ffd6268ef6f GIT binary patch literal 3710 zcmeHK(Q4Z;6unJs_6z-h?xiq?Y;1IFY|BEkmn;M-_RunlqTCvRED1>o-QQ2HW+k+) zhrGAp7h?=MoO|xM_sAyzFoLs*HEiM>li{)Co6Cx+YT{p3<#hUba&NbAI)YEilm#-u zwZ+15M`f`^%S(x-SR19$IF7bhD6#clRoGZCU>9~>>zI2>NNjCz+(JPIN-*NU7 z0Zu$)fDau&2DLKo@zL4UYWiJmcLHHloClPPbQIyNLk&5#w++hIWR$t8w31#FuZ{I0 zI>=ar``jOn@CprNBx3yowI9^*x*?G5Bit;R+U31NBdLgm=6I;IKipy`S?wsu@h-CK zGFQ7N7Rppqtf`?DdY+JL5z*c!*BVJ>2TtkD{3g`qST9yaO6jH#U~4}PkQe8-YZ83l zmleTE3+fQYt}*||WSIh|VAU~caNeck7`4;z;%4^h`e%dEwV&E8uvF|w?Tm>ADqZXc zs8Cl61s$ zIz}x*?hf1KZL(P8mp%%I^uCGOOHt%{M&RXNleJD=I1O{z)r=t?`|hrownIEVcXw-F f9z#4nz2&wm^(WJYczpO1XxC_n$Mit@&*Sko-6I2( literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/74/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/74/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..f80468390f342d8e1c0de14d77007fab3dc4ebaa GIT binary patch literal 1883 zcmbuAT}vY|6o!v>2LHld?sdT_RaRCMwHE75Ed_%YyDTM5k3%3|Bx%uqZ^kfb@nay} zxfq5(9^Uhw_nbKZfCKnBaFz|cXDYs?e0e9CmV@vytB1oA_;CnV+SU~^!HvVpb5B*Z zLdR=`wwhaQ(0Y!pnrN{KCo?L!s>fPwPQ1^ zGTWx8DMqzNTFzNM$Lh6#qrao$KmS@v*M9ms0#nU)+%A}CQTb-SqhehpnWnDoscC2a zlBST?Z`W@}c`Yinuh^vi9^bESGHN? S)$IHn^7|&5EG3hh8F>TDevCl? literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/8d/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/8d/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..197e7cb076b99fbe27f35cde1223328991155483 GIT binary patch literal 300 zcma)$u?oUK5JWfX2lyQpcZHp0ilC5yMG8BKcS~5f%N@HLFn{j_!A?jsGsW;`DgfBS z*$O+W>ZY%>^t!5MTl}W7#^)o39%BxJqL{S_)ecUHM}sa<7BosaOvaJ0^iBfedjJvN+TJyY;-P@WO&hV8EHm;BqU%4hh?yKLaa(4ojMVx9c58T|obOJw5! literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/b0/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/b0/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..c25544a33d6815a07e69274dbcafff1c91e01cb4 GIT binary patch literal 122 zcmX}iK?(vf3_#IT<^Y~UB)!83vvMJLfI-tR1lnXsQ_$Os2yQ-a@e=?fIOpz^BS?R_ z%JX8andZON`&$XW3#0>_%r|7JvUkRicqkU`vMD>>+;;X5?zl*0IP#0?D7?6}c}OiV Hg%AD!X`3lm literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/cb/eb/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/cb/eb/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..7a11fa40ea1101cc50d3a114ea4218c528732c4f GIT binary patch literal 890 zcmb7@O-lnY5Qb-^Cr|zkv00&lJ@jIg1;K?vidRXKVHwC5`2hRxUELN`a1$>fhvAv` zoq4ALfJ<1nF~~M0X{YCf4xIe={~Pc5{^&72SoJD&#>hU)p}Bx-7Y2q>laI&}C1IJu zNQ1?|cENcJiN^AdG{P0WOPv*V!I^C)tzeNtM!2gJfW~W)PQ6#qG^2X>6S}E@(n!QU z4m=wp!tu-E$=N*owhZ6@kXusQmVx|fS1)i`<~=%NoUO8ZQ>O8R{+x>W+1;06J;o>o g+&cA-oz$hM%T^|GcG6l*QO#{UPkZ@&8?#gR03c;0egFUf literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/cb/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/cb/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..1504acb1e28e73cc7bfbb6575e00a7b6318912fc GIT binary patch literal 3688 zcmeHJ(Q4Z;6unJs_6ylQp)iM0R$5lNWnt+{8Uhi0=qN=|Zh}CTgrtP*?`KD|5?a?F z@2&X74+b61J@?#u?im2|;N#F5Hgt|j|C#dTg6rYlu3*rETV*yGGQqXQ%yCC$wnED{ z5=}NYN~3WcZ8lM2Rs5OJoXgEv$sJ0^m9+4q;XO*a6zHEWG%~*C>@@OC=0CZ}Rf z4b8FO38@wV?K-;FKq@(Mif`tfP|H)j*d|blH@yd&7vlhFcK$pk-uG=;5zMuq4x#TV z^WQ|vOziqtA~|6-v{7s<*&Yu@kiuCMu|Su@6wbu9Qqe*IIHq znZLlP@avoFx1qcWDzq=zh5p44jbEb2q3P$9Wbs}gWIVfgxs~H5kDzsoT7=Xcx69XP zvB)2N5)Scw6Q!4e$mNW{r}{W8^A!eu7@IoKWn$Zf6(Y9F#J3K%`i;?L;_K74Ua5aU U)@9=1{IA!j%f$E;dgqz=7bZ#k#{d8T literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..7db9cb797e23e12e93be3036bf0de06fe5235f60 GIT binary patch literal 16471 zcmeI3QE$^Q5XWy@BE$>g1(=ZFjh6{B4Fm##fUa7{!>B4X;sJyz*Y%1eCypF<8s8qL zUfecyGr4HeG~LS{I^}dZpYP}Y`LY85_uD0X z>AD5jF-`(}Y%!!*A(d`E+8OqbzRSr>FxX8Ftd;lSR)j7!DVMm-37$h*D?kKV17k6t5Npq6=rP6YSc_rDiH8!o6tB7H_(}x!x?N zRYpO~&YgE{$>q<9o>UnT1ENUAjGqt}!dd$e{I1TaXyH@%Vx9^)UXB-?I+wze-WnU2 z?ErCdFdC#b@3-|TWmzGJX0WI0`Mb8#R-gPS za3<+ev?D5NQ{lm$o3if}r)O@}w)AOf|2dybzHThPEw5Lba?2N8xb+L)G`5H?HqBmE zhb%l7(zM%u)2zzjJ1=FWrle#L>qT{W8yu|kZ?Oc2@O2YaF1a9Adjy^}U|JAO|BM75 zkN#*~z`os&ZHs_d+_q*p$|4pwo!R_F1F^V%y7fouie-q!xdQOV2(cIrqPvd8rpD~( zvOhgKdW}F_5zLNYPClVdY;+y`HK&%HPLiQcyz0{U&lWBqj}p6xrpsqJFkReJZ|pIzd4bM$i-?Lq?UJPj1I?muGurUcZ}yzgNsHf z4mpnRtd94hOhlQ8GSQ3?<5a6}0Dnc>Ar7x^58qxKK3>P+HymeeesO|4L>?j!k%t?u qNRfwu-?H3Z9=>SsaPgG~o!=*7_tY~>fp|nbA|4Tsh{rqrwZ}iBTtImM literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..dfbe1d33faa954f96ce1bc4666f03cd673a5a690 GIT binary patch literal 1865 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 CtR0sC literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version new file mode 100644 index 0000000..25cb955 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index new file mode 100644 index 0000000000000000000000000000000000000000..2219f353f3428f574a0e92663077e783b4d3e0d1 GIT binary patch literal 104 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 literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources new file mode 100644 index 0000000000000000000000000000000000000000..7511d68e9a6ec7c04e0b8086a47622c66f991c8f GIT binary patch literal 1054 zcmZ?R*xjhShe1S2b=vdAllRFf=Oz}Hq!uZZBqrsgaw&&olqz_Y<|r5%0g;udrIn$j zg0pLIh=P%Up#@iRPHJM2OKMI@Vtjs4x?XB>PG&)Is$LNgC+8QX+LjcRrgEi#isbiL9{h}&^^5N;&cavX|4p^%oDlUhv3G>Dam0K;KkPG(+dMM-{sPO%=y{+!ID zjQlcSpy6{vZe>noo?b~}aW=vg`g$crsj0SRTn8e4e+EZ=;OCy|-Q~v|Xqgn!5_5`a to)!pO0*^V;5(C6w91#OI6R#?i\n\n \n \n \n \n \n\n diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.mylyn.ui.prefs b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.mylyn.ui.prefs new file mode 100644 index 0000000..0451f54 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.mylyn.ui.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.mylyn.cdt.ui.run.count.3_3_0=1 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs new file mode 100644 index 0000000..71ac973 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs @@ -0,0 +1,5 @@ +content_assist_disabled_computers=org.eclipse.cdt.ui.textProposalCategory\u0000org.eclipse.cdt.ui.parserProposalCategory\u0000 +eclipse.preferences.version=1 +spelling_locale_initialized=true +useAnnotationsPrefPage=true +useQuickDiffPrefPage=true diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..dffc6b5 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +version=1 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs new file mode 100644 index 0000000..dd78b8d --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs @@ -0,0 +1,5 @@ +//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.launch.applicationLaunchType=org.eclipse.cdt.dsf.gdb.launch.localCLaunch,debug,;org.eclipse.cdt.cdi.launch.localCLaunch,run,; +//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.launch.attachLaunchType=org.eclipse.cdt.dsf.gdb.launch.attachCLaunch,debug,; +//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.launch.postmortemLaunchType=org.eclipse.cdt.dsf.gdb.launch.coreCLaunch,debug,; +//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.launch.remoteApplicationLaunchType=org.eclipse.rse.remotecdt.dsf.debug,debug,; +eclipse.preferences.version=1 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs new file mode 100644 index 0000000..1f70388 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=\n\n +org.eclipse.debug.ui.cancel_launch_with_compile_errors=always +preferredTargets=org.eclipse.cdt.debug.ui.toggleCBreakpointTarget,org.eclipse.cdt.debug.ui.toggleCDynamicPrintfTarget\:org.eclipse.cdt.debug.ui.toggleCBreakpointTarget| diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.logging.aeri.ide.prefs b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.logging.aeri.ide.prefs new file mode 100644 index 0000000..c186df8 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.epp.logging.aeri.ide.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +resetSendMode=KEEP +resetSendModeOn=0 +sendMode=NOTIFY diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.launchbar.core.prefs b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.launchbar.core.prefs new file mode 100644 index 0000000..670f3d2 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.launchbar.core.prefs @@ -0,0 +1,7 @@ +LaunchTargetManager/org.eclipse.launchbar.core.launchTargetType.local,Local/arch=x86_64 +LaunchTargetManager/org.eclipse.launchbar.core.launchTargetType.local,Local/name=Local +LaunchTargetManager/org.eclipse.launchbar.core.launchTargetType.local,Local/os=linux +configDescList=org.eclipse.launchbar.core.descriptorType.default\:new configuration (__STF549_Ng112__src__etc__etc__AtsNg112__AtsNg112.cfg) +eclipse.preferences.version=1 +org.eclipse.launchbar.core.descriptorType.default\:new\ configuration\ (__STF549_Ng112__src__etc__etc__AtsNg112__AtsNg112.cfg)/activeLaunchMode=run +org.eclipse.launchbar.core.descriptorType.default\:new\ configuration\ (__STF549_Ng112__src__etc__etc__AtsNg112__AtsNg112.cfg)/activeLaunchTarget=org.eclipse.launchbar.core.launchTargetType.local\:Local diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs new file mode 100644 index 0000000..43e97e4 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +mylyn.attention.migrated=true diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.ui.prefs b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.ui.prefs new file mode 100644 index 0000000..8d462a6 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.ui.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.mylyn.monitor.activity.tracking.enabled.checked=true diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.tasks.ui.prefs b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.tasks.ui.prefs new file mode 100644 index 0000000..2b60c21 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.tasks.ui.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +migrated.task.repositories.secure.store=true +org.eclipse.mylyn.tasks.ui.filters.nonmatching=true +org.eclipse.mylyn.tasks.ui.filters.nonmatching.encouraged=true +org.eclipse.mylyn.tasks.ui.welcome.message=true diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.core.prefs b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.core.prefs new file mode 100644 index 0000000..411bd8c --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.core.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +org.eclipse.rse.systemtype.local.systemType.defaultUserId=vagrant +useridperkey=vagrant.Local\=vagrant; diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.ui.prefs b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.ui.prefs new file mode 100644 index 0000000..cc2842c --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.ui.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.rse.preferences.order.connections=vagrant.Local diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs new file mode 100644 index 0000000..cec65c4 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.search.defaultPerspective=org.eclipse.search.defaultPerspective.none diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs new file mode 100644 index 0000000..56cd496 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.team.ui.first_time=false diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.titan.executor.prefs b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.titan.executor.prefs new file mode 100644 index 0000000..408df57 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.titan.executor.prefs @@ -0,0 +1,2 @@ +deleteLogFiles=true +eclipse.preferences.version=1 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.titan.log.viewer.prefs b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.titan.log.viewer.prefs new file mode 100644 index 0000000..5df2ef4 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.titan.log.viewer.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.titan.log.viewer.version=1.2 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs new file mode 100644 index 0000000..61f3bb8 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +overviewRuler_migration=migrated_3.1 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs new file mode 100644 index 0000000..e237aef --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs @@ -0,0 +1,6 @@ +PROBLEMS_FILTERS_MIGRATE=true +SWITCH_PERSPECTIVE_ON_PROJECT_CREATION=always +eclipse.preferences.version=1 +platformState=1531373490754 +quickStart=false +tipsAndTricks=true diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs new file mode 100644 index 0000000..08076f2 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +showIntro=false diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.views.log.prefs b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.views.log.prefs new file mode 100644 index 0000000..850ac91 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.views.log.prefs @@ -0,0 +1,10 @@ +activate=true +column2=300 +column3=150 +column4=525 +eclipse.preferences.version=1 +groupBy=0 +maxLogTailSize=1 +orderType=2 +orderValue=-1 +show_filter_text=true diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs new file mode 100644 index 0000000..699e6a2 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs @@ -0,0 +1,2 @@ +//org.eclipse.ui.commands/state/org.eclipse.ui.navigator.resources.nested.changeProjectPresentation/org.eclipse.ui.commands.radioState=false +eclipse.preferences.version=1 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.debug.core/.launches/new configuration (__STF549_Ng112__src__etc__etc__AtsNg112__AtsNg112.cfg).launch b/workspace_stf549/.metadata/.plugins/org.eclipse.debug.core/.launches/new configuration (__STF549_Ng112__src__etc__etc__AtsNg112__AtsNg112.cfg).launch new file mode 100644 index 0000000..a1266c2 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.debug.core/.launches/new configuration (__STF549_Ng112__src__etc__etc__AtsNg112__AtsNg112.cfg).launch @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml b/workspace_stf549/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml new file mode 100644 index 0000000..90d8389 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi b/workspace_stf549/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi new file mode 100644 index 0000000..2351240 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi @@ -0,0 +1,3143 @@ + + + + activeSchemeId:org.eclipse.ui.defaultAcceleratorConfiguration + ModelMigrationProcessor.001 + + + + + + + + topLevel + shellMaximized + + + + + persp.actionSet:org.eclipse.mylyn.doc.actionSet + persp.actionSet:org.eclipse.mylyn.tasks.ui.navigation + persp.actionSet:org.eclipse.ui.cheatsheets.actionSet + persp.actionSet:org.eclipse.rse.core.search.searchActionSet + persp.actionSet:org.eclipse.search.searchActionSet + persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo + persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet + persp.actionSet:org.eclipse.ui.actionSet.keyBindings + persp.actionSet:org.eclipse.ui.actionSet.openFiles + persp.actionSet:org.eclipse.cdt.ui.SearchActionSet + persp.actionSet:org.eclipse.cdt.ui.CElementCreationActionSet + persp.actionSet:org.eclipse.ui.NavigateActionSet + persp.viewSC:org.eclipse.ui.console.ConsoleView + persp.viewSC:org.eclipse.search.ui.views.SearchView + persp.viewSC:org.eclipse.ui.views.ContentOutline + persp.viewSC:org.eclipse.ui.views.ProblemView + persp.viewSC:org.eclipse.cdt.ui.CView + persp.viewSC:org.eclipse.ui.views.ResourceNavigator + persp.viewSC:org.eclipse.ui.views.PropertySheet + persp.viewSC:org.eclipse.ui.views.TaskList + persp.newWizSC:org.eclipse.cdt.autotools.ui.wizards.conversionWizard + persp.newWizSC:org.eclipse.cdt.ui.wizards.ConvertToMakeWizard + persp.newWizSC:org.eclipse.cdt.ui.wizards.NewMakeFromExisting + persp.newWizSC:org.eclipse.cdt.ui.wizard.project + persp.newWizSC:org.eclipse.cdt.ui.wizards.NewSourceFolderCreationWizard + persp.newWizSC:org.eclipse.cdt.ui.wizards.NewFolderCreationWizard + persp.newWizSC:org.eclipse.cdt.ui.wizards.NewSourceFileCreationWizard + persp.newWizSC:org.eclipse.cdt.ui.wizards.NewHeaderFileCreationWizard + persp.newWizSC:org.eclipse.cdt.ui.wizards.NewFileCreationWizard + persp.newWizSC:org.eclipse.cdt.ui.wizards.NewClassCreationWizard + persp.actionSet:org.eclipse.debug.ui.profileActionSet + persp.viewSC:org.eclipse.mylyn.tasks.ui.views.tasks + persp.newWizSC:org.eclipse.mylyn.tasks.ui.wizards.new.repository.task + persp.perspSC:org.eclipse.debug.ui.DebugPerspective + persp.perspSC:org.eclipse.team.ui.TeamSynchronizingPerspective + persp.actionSet:org.eclipse.debug.ui.launchActionSet + persp.actionSet:org.eclipse.cdt.ui.buildConfigActionSet + persp.actionSet:org.eclipse.cdt.ui.NavigationActionSet + persp.actionSet:org.eclipse.cdt.ui.OpenActionSet + persp.actionSet:org.eclipse.cdt.ui.CodingActionSet + persp.actionSet:org.eclipse.ui.edit.text.actionSet.presentation + persp.showIn:org.eclipse.cdt.ui.includeBrowser + persp.showIn:org.eclipse.cdt.ui.CView + persp.showIn:org.eclipse.ui.navigator.ProjectExplorer + persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer + persp.viewSC:org.eclipse.cdt.ui.includeBrowser + persp.showIn:org.eclipse.cdt.codan.internal.ui.views.ProblemDetails + persp.viewSC:org.eclipse.cdt.codan.internal.ui.views.ProblemDetails + persp.actionSet:org.eclipse.debug.ui.breakpointActionSet + persp.viewSC:org.eclipse.cdt.make.ui.views.MakeView + persp.actionSet:org.eclipse.cdt.make.ui.makeTargetActionSet + persp.viewSC:org.eclipse.tm.terminal.view.ui.TerminalsView + persp.showIn:org.eclipse.tm.terminal.view.ui.TerminalsView + + + noFocus + + + + + + + + + + + + + + + + + + + + + + + + + + + + persp.actionSet:org.eclipse.mylyn.doc.actionSet + persp.actionSet:org.eclipse.mylyn.tasks.ui.navigation + persp.actionSet:org.eclipse.ui.cheatsheets.actionSet + persp.actionSet:org.eclipse.rse.core.search.searchActionSet + persp.actionSet:org.eclipse.search.searchActionSet + persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo + persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet + persp.actionSet:org.eclipse.ui.actionSet.keyBindings + persp.actionSet:org.eclipse.ui.actionSet.openFiles + persp.actionSet:org.eclipse.debug.ui.launchActionSet + persp.newWizSC:org.eclipse.titan.designer.wizards.NewTITANProjectWizard + persp.newWizSC:org.eclipse.titan.designer.wizards.NewASN1ModuleWizard + persp.newWizSC:org.eclipse.titan.designer.wizards.NewTTCN3ModuleWizard + persp.newWizSC:org.eclipse.titan.designer.wizards.NewConfigFileWizard + persp.newWizSC:org.eclipse.ui.wizards.new.folder + persp.newWizSC:org.eclipse.ui.wizards.new.file + persp.perspSC:org.eclipse.titan.executor.perspectives.ExecutingPerspective + persp.viewSC:org.eclipse.ui.views.ProblemView + persp.viewSC:org.eclipse.ui.console.ConsoleView + persp.viewSC:org.eclipse.ui.views.ProgressView + persp.viewSC:org.eclipse.ui.views.TaskList + persp.viewSC:org.eclipse.ui.views.ContentOutline + persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer + persp.viewSC:org.eclipse.pde.runtime.LogView + persp.showIn:org.eclipse.tm.terminal.view.ui.TerminalsView + + + active + noFocus + + + + + + + General + + + + + + + + + + + + + persp.actionSet:org.eclipse.mylyn.doc.actionSet + persp.actionSet:org.eclipse.mylyn.tasks.ui.navigation + persp.actionSet:org.eclipse.ui.cheatsheets.actionSet + persp.actionSet:org.eclipse.rse.core.search.searchActionSet + persp.actionSet:org.eclipse.search.searchActionSet + persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo + persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet + persp.actionSet:org.eclipse.ui.actionSet.keyBindings + persp.actionSet:org.eclipse.ui.actionSet.openFiles + persp.perspSC:org.eclipse.titan.designer.perspectives.EditingPerspective + persp.viewSC:org.eclipse.ui.console.ConsoleView + persp.viewSC:org.eclipse.ui.views.TaskList + persp.viewSC:org.eclipse.ui.views.ProblemView + persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer + persp.viewSC:org.eclipse.pde.runtime.LogView + persp.viewSC:org.eclipse.titan.executor.views.executorMonitor.ExecutorMonitorView + persp.viewSC:org.eclipse.titan.executor.views.testExecution.TestExecutionView + persp.viewSC:org.eclipse.titan.executor.views.notification.NotificationView + persp.actionSet:org.eclipse.debug.ui.launchActionSet + persp.showIn:org.eclipse.tm.terminal.view.ui.TerminalsView + + + + + + + noFocus + + + + + + + + + + + + + + + + + + + + + + + persp.actionSet:org.eclipse.mylyn.doc.actionSet + persp.actionSet:org.eclipse.mylyn.tasks.ui.navigation + persp.actionSet:org.eclipse.ui.cheatsheets.actionSet + persp.actionSet:org.eclipse.rse.core.search.searchActionSet + persp.actionSet:org.eclipse.search.searchActionSet + persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo + persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet + persp.actionSet:org.eclipse.ui.actionSet.keyBindings + persp.actionSet:org.eclipse.ui.actionSet.openFiles + persp.actionSet:org.eclipse.titan.log.viewer.search.SearchActionSet + persp.showIn:org.eclipse.tm.terminal.view.ui.TerminalsView + + + + + + + + + + + + + + + + + + General + TITAN Log Viewer + + + + + + + + + + + Minimized + + + + + + + + + + + + + + View + categoryTag:Help + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Help + + + + org.eclipse.e4.primaryDataStack + EditorStack + + + + + + + View + categoryTag:General + active + activeOnClose + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:General + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:General + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:Mylyn + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Make + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Terminal + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:TITAN Monitors + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:TITAN Monitors + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:TITAN Monitors + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:TITAN Log Viewer + + + + + View + categoryTag:TITAN Log Viewer + + + + + View + categoryTag:TITAN Log Viewer + + + + + View + categoryTag:TITAN Log Viewer + + + + + View + categoryTag:TITAN Log Viewer + + + + + View + categoryTag:TITAN Log Viewer + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:TITAN Log Viewer + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:TITAN Log Viewer + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:TITAN Log Viewer + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:TITAN Log Viewer + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:TITAN Log Viewer + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:TITAN Log Viewer + + ViewMenu + menuContribution:menu + + + + + + toolbarSeparator + + + + Draggable + + + + toolbarSeparator + + + + Draggable + + + Draggable + + + Draggable + + + Draggable + + + toolbarSeparator + + + + Draggable + + + + toolbarSeparator + + + + toolbarSeparator + + + + Draggable + + + stretch + SHOW_RESTORE_MENU + + + Draggable + HIDEABLE + SHOW_RESTORE_MENU + + + + + stretch + + + Draggable + + + Draggable + + + + + TrimStack + Draggable + + + TrimStack + Draggable + + + TrimStack + Draggable + + + + + TrimStack + Draggable + + + TrimStack + Draggable + + + TrimStack + Draggable + + + TrimStack + Draggable + + + + + + platform:gtk + + + + + + + + + + + platform:gtk + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Editor + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Make + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:General + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Git + + + + + View + categoryTag:Git + + + + + View + categoryTag:Git + + + + + View + categoryTag:Git + + + + + View + categoryTag:Git + + + + + View + categoryTag:Help + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:Charts + + + + + View + categoryTag:Profiling + + + + + View + categoryTag:Profiling + + + + + View + categoryTag:Man pages + + + + + View + categoryTag:Profiling + + + + + View + categoryTag:Profiling + + + + + View + categoryTag:Profiling + + + + + View + categoryTag:Profiling + + + + + View + categoryTag:Profiling + + + + + View + categoryTag:Profiling + + + + + View + categoryTag:Profiling + + + + + View + categoryTag:SystemTap + + + + + View + categoryTag:SystemTap + + + + + View + categoryTag:SystemTap + + + + + View + categoryTag:Profiling + + + + + View + categoryTag:Mylyn + + + + + View + categoryTag:Mylyn + + + + + View + categoryTag:Mylyn + + + + + View + categoryTag:Oomph + + + + + View + categoryTag:Connections + + + + + View + categoryTag:Remote Systems + + + + + View + categoryTag:Remote Systems + + + + + View + categoryTag:Remote Systems + + + + + View + categoryTag:Remote Systems + + + + + View + categoryTag:Remote Systems + + + + + View + categoryTag:Remote Systems + + + + + View + categoryTag:Remote Systems + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:Team + + + + + View + categoryTag:Team + + + + + View + categoryTag:Terminal + + + + + View + categoryTag:Other + + + + + View + categoryTag:LTTng + + + + + View + categoryTag:LTTng + + + + + View + categoryTag:Tracing + + + + + View + categoryTag:LTTng + + + + + View + categoryTag:LTTng + + + + + View + categoryTag:LTTng + + + + + View + categoryTag:LTTng + + + + + View + categoryTag:LTTng + + + + + View + categoryTag:LTTng + + + + + View + categoryTag:LTTng + + + + + View + categoryTag:LTTng + + + + + View + categoryTag:LTTng + + + + + View + categoryTag:Tracing + + + + + View + categoryTag:Tracing + + + + + View + categoryTag:Tracing + + + + + View + categoryTag:Tracing + + + + + View + categoryTag:Tracing + + + + + View + categoryTag:LTTng + + + + + View + categoryTag:Tracing + + + + + View + categoryTag:LTTng + + + + + View + categoryTag:LTTng + + + + + View + categoryTag:LTTng + + + + + View + categoryTag:Tracing + + + + + View + categoryTag:Tracing + + + + + View + categoryTag:Tracing + + + + + View + categoryTag:Tracing + + + + + View + categoryTag:Tracing + + + + + View + categoryTag:Tracing + + + + + View + categoryTag:Tracing + + + + + View + categoryTag:Tracing + + + + + View + categoryTag:Tracing + + + + + View + categoryTag:Tracing + + + + + View + categoryTag:Tracing + + + + + View + categoryTag:Tracing + + + + + View + categoryTag:Tracing + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:Help + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:XML + + + + + View + categoryTag:XML + + + + + View + categoryTag:TITAN Monitors + + + + + View + categoryTag:TITAN Monitors + + + + + View + categoryTag:TITAN Monitors + + + + + View + categoryTag:TITAN Log Viewer + + + + + View + categoryTag:TITAN Log Viewer + + + + + View + categoryTag:TITAN Log Viewer + + + + + View + categoryTag:TITAN Log Viewer + + + + + View + categoryTag:Titanium + + + + + View + categoryTag:Titanium + + + + + View + categoryTag:Titanium + + + + + + + glue + move_after:PerspectiveSpacer + SHOW_RESTORE_MENU + + + move_after:Spacer Glue + HIDEABLE + SHOW_RESTORE_MENU + + + glue + move_after:SearchField + SHOW_RESTORE_MENU + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.equinox.p2.ui/dialog_settings.xml b/workspace_stf549/.metadata/.plugins/org.eclipse.equinox.p2.ui/dialog_settings.xml new file mode 100644 index 0000000..1a20e10 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.equinox.p2.ui/dialog_settings.xml @@ -0,0 +1,35 @@ + +
+
+ + + + + +
+
+ + + + + + + + + +
+
+ + + + + +
+
+ + + + + +
+
diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.linuxtools.cdt.libhover/C/devhelp.libhover b/workspace_stf549/.metadata/.plugins/org.eclipse.linuxtools.cdt.libhover/C/devhelp.libhover new file mode 100644 index 0000000000000000000000000000000000000000..4586e41085744e59015897a2171253745c50fe13 GIT binary patch literal 334 zcmZvXJx&8L5QS&6iSi=~5K?YHiIYAOAR$GGWI7JO#OuvEGCRihCZ^#;Tq5EGv>bpg zZEDuq2tkx-=0{K8d-J}7jmX>j~n8jgU<^)Y8 zEl4?Zg+}M3^Ki*mxW-ZCl^)H|6%S}89Qt`x3a_X8Xup1A+LPl7Ri_@% literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.linuxtools.cdt.libhover/C/glibc_library.libhover b/workspace_stf549/.metadata/.plugins/org.eclipse.linuxtools.cdt.libhover/C/glibc_library.libhover new file mode 100644 index 0000000000000000000000000000000000000000..7ce9769164d2c8bcca20c383f5810acc8bbc6af3 GIT binary patch literal 1039341 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 nIsZjpt3ZymAE*q}T4c{nzPG}TxMFHbc literal 0 HcmV?d00001 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2018/7/28/refactorings.history b/workspace_stf549/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2018/7/28/refactorings.history new file mode 100644 index 0000000..381ae2f --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2018/7/28/refactorings.history @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2018/7/28/refactorings.index b/workspace_stf549/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2018/7/28/refactorings.index new file mode 100644 index 0000000..69417a9 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2018/7/28/refactorings.index @@ -0,0 +1,8 @@ +1531374777568 Delete 16 resources +1531374801079 Delete 2 resources +1531376201036 Delete 2 resources +1531376378781 Delete resource 'STF549_Ng112/src/ccsrc' +1531382182339 Delete resource 'STF549_Ng112/src/logs' +1531385948845 Delete 3 resources +1531389072291 Delete 3 resources +1531391493751 Delete resource 'STF549_Ng112/logs/STF549_Ng112.vagrant-hc.log' diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml b/workspace_stf549/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml new file mode 100644 index 0000000..aa26784 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml @@ -0,0 +1,7 @@ + +

+
+ + +
+
diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.oomph.setup/workspace.setup b/workspace_stf549/.metadata/.plugins/org.eclipse.oomph.setup/workspace.setup new file mode 100644 index 0000000..1f73e14 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.oomph.setup/workspace.setup @@ -0,0 +1,6 @@ + + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.rse.core/.log b/workspace_stf549/.metadata/.plugins/org.eclipse.rse.core/.log new file mode 100644 index 0000000..e69de29 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.rse.core/initializerMarks/org.eclipse.rse.internal.core.RSELocalConnectionInitializer.mark b/workspace_stf549/.metadata/.plugins/org.eclipse.rse.core/initializerMarks/org.eclipse.rse.internal.core.RSELocalConnectionInitializer.mark new file mode 100644 index 0000000..e69de29 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.vagrant_0/FP.local.files_0/node.properties b/workspace_stf549/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.vagrant_0/FP.local.files_0/node.properties new file mode 100644 index 0000000..f280531 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.vagrant_0/FP.local.files_0/node.properties @@ -0,0 +1,57 @@ +# RSE DOM Node +00-name=vagrant\:local.files +01-type=FilterPool +03-attr.default=true +03-attr.deletable=true +03-attr.id=local.files +03-attr.nonRenamable=false +03-attr.owningParentName=null +03-attr.release=200 +03-attr.singleFilterStringOnly=false +03-attr.singleFilterStringOnlyESet=false +03-attr.stringsCaseSensitive=true +03-attr.supportsDuplicateFilterStrings=false +03-attr.supportsNestedFilters=true +03-attr.type=default +06-child.00000.00-name=My Home +06-child.00000.01-type=Filter +06-child.00000.03-attr.default=false +06-child.00000.03-attr.filterType=default +06-child.00000.03-attr.id=My Home +06-child.00000.03-attr.nonChangable=false +06-child.00000.03-attr.nonDeletable=false +06-child.00000.03-attr.nonRenamable=false +06-child.00000.03-attr.promptable=false +06-child.00000.03-attr.relativeOrder=0 +06-child.00000.03-attr.release=200 +06-child.00000.03-attr.singleFilterStringOnly=false +06-child.00000.03-attr.stringsCaseSensitive=true +06-child.00000.03-attr.stringsNonChangable=false +06-child.00000.03-attr.supportsDuplicateFilterStrings=false +06-child.00000.03-attr.supportsNestedFilters=true +06-child.00000.06-child.00000.00-name=/home/vagrant/* +06-child.00000.06-child.00000.01-type=FilterString +06-child.00000.06-child.00000.03-attr.default=false +06-child.00000.06-child.00000.03-attr.string=/home/vagrant/* +06-child.00000.06-child.00000.03-attr.type=default +06-child.00001.00-name=Root +06-child.00001.01-type=Filter +06-child.00001.03-attr.default=false +06-child.00001.03-attr.filterType=default +06-child.00001.03-attr.id=Root +06-child.00001.03-attr.nonChangable=false +06-child.00001.03-attr.nonDeletable=false +06-child.00001.03-attr.nonRenamable=false +06-child.00001.03-attr.promptable=false +06-child.00001.03-attr.relativeOrder=0 +06-child.00001.03-attr.release=200 +06-child.00001.03-attr.singleFilterStringOnly=false +06-child.00001.03-attr.stringsCaseSensitive=true +06-child.00001.03-attr.stringsNonChangable=false +06-child.00001.03-attr.supportsDuplicateFilterStrings=false +06-child.00001.03-attr.supportsNestedFilters=true +06-child.00001.06-child.00000.00-name=/* +06-child.00001.06-child.00000.01-type=FilterString +06-child.00001.06-child.00000.03-attr.default=false +06-child.00001.06-child.00000.03-attr.string=/* +06-child.00001.06-child.00000.03-attr.type=default diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.vagrant_0/H.local_16/node.properties b/workspace_stf549/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.vagrant_0/H.local_16/node.properties new file mode 100644 index 0000000..7240f5b --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.vagrant_0/H.local_16/node.properties @@ -0,0 +1,25 @@ +# RSE DOM Node +00-name=Local +01-type=Host +03-attr.description= +03-attr.hostname=LOCALHOST +03-attr.offline=false +03-attr.promptable=false +03-attr.systemType=org.eclipse.rse.systemtype.local +03-attr.type=Local +06-child.00000.00-name=Local Connector Service +06-child.00000.01-type=ConnectorService +06-child.00000.03-attr.group=Local Connector Service +06-child.00000.03-attr.port=0 +06-child.00000.03-attr.useSSL=false +06-child.00000.06-child.00000.00-name=Local Files +06-child.00000.06-child.00000.01-type=SubSystem +06-child.00000.06-child.00000.03-attr.hidden=false +06-child.00000.06-child.00000.03-attr.type=local.files +06-child.00000.06-child.00000.06-child.00000.00-name=vagrant___vagrant\:local.files +06-child.00000.06-child.00000.06-child.00000.01-type=FilterPoolReference +06-child.00000.06-child.00000.06-child.00000.03-attr.refID=local.files +06-child.00000.06-child.00001.00-name=Local Shells +06-child.00000.06-child.00001.01-type=SubSystem +06-child.00000.06-child.00001.03-attr.hidden=false +06-child.00000.06-child.00001.03-attr.type=local.shells diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.vagrant_0/node.properties b/workspace_stf549/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.vagrant_0/node.properties new file mode 100644 index 0000000..2d15bb1 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.vagrant_0/node.properties @@ -0,0 +1,7 @@ +# RSE DOM Node +00-name=vagrant +01-type=Profile +03-attr.defaultPrivate=true +03-attr.isActive=true +05-ref.00000=FP.local.files_0 +05-ref.00001=H.local_16 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.rse.ui/.log b/workspace_stf549/.metadata/.plugins/org.eclipse.rse.ui/.log new file mode 100644 index 0000000..e69de29 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.rse.ui/dialog_settings.xml b/workspace_stf549/.metadata/.plugins/org.eclipse.rse.ui/dialog_settings.xml new file mode 100644 index 0000000..855bfdb --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.rse.ui/dialog_settings.xml @@ -0,0 +1,5 @@ + +
+
+
+
diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.search/dialog_settings.xml b/workspace_stf549/.metadata/.plugins/org.eclipse.search/dialog_settings.xml new file mode 100644 index 0000000..fd6e979 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.search/dialog_settings.xml @@ -0,0 +1,70 @@ + +
+
+ +
+
+ +
+
+ + + + + + +
+ + +
+
+ + + + + + + + + + + + + +
+
+
+ +
+
+ + + + + + + + + + + + + + + + +
+
+ +
+
+ +
+
+ + + + + +
+
diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.titan.log.viewer/dialog_settings.xml b/workspace_stf549/.metadata/.plugins/org.eclipse.titan.log.viewer/dialog_settings.xml new file mode 100644 index 0000000..312a93e --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.titan.log.viewer/dialog_settings.xml @@ -0,0 +1,32 @@ + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+
diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml b/workspace_stf549/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml new file mode 100644 index 0000000..50f1edb --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml @@ -0,0 +1,5 @@ + +
+
+
+
diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml b/workspace_stf549/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml new file mode 100644 index 0000000..ba65cad --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml @@ -0,0 +1,18 @@ + +
+
+ + + + + + + +
+
+ + + + +
+
diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.ui.intro/introstate b/workspace_stf549/.metadata/.plugins/org.eclipse.ui.intro/introstate new file mode 100644 index 0000000..236d56c --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.ui.intro/introstate @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.ui.views.log/dialog_settings.xml b/workspace_stf549/.metadata/.plugins/org.eclipse.ui.views.log/dialog_settings.xml new file mode 100644 index 0000000..4709bcb --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.ui.views.log/dialog_settings.xml @@ -0,0 +1,12 @@ + +
+
+ + + + + + + +
+
diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml b/workspace_stf549/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml new file mode 100644 index 0000000..daa2bc3 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml @@ -0,0 +1,25 @@ + +
+
+ + + + + + + + + + + + + +
+
+ + + + + +
+
diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml b/workspace_stf549/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml new file mode 100644 index 0000000..e704233 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml @@ -0,0 +1,41 @@ + +
+
+ + +
+
+ + + + + + + + + + +
+
+ + + + +
+
+ + + + + + + + + + + + + + +
+
diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml b/workspace_stf549/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml new file mode 100644 index 0000000..d97e80a --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.wst.sse.core/task-tags.properties b/workspace_stf549/.metadata/.plugins/org.eclipse.wst.sse.core/task-tags.properties new file mode 100644 index 0000000..3d8a7ab --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.wst.sse.core/task-tags.properties @@ -0,0 +1,3 @@ +# +#Thu Jul 12 06:35:54 UTC 2018 +task-tag-projects-already-scanned=STF549_Ng112,RemoteSystemsTempFiles diff --git a/workspace_stf549/.metadata/version.ini b/workspace_stf549/.metadata/version.ini new file mode 100644 index 0000000..1f704bf --- /dev/null +++ b/workspace_stf549/.metadata/version.ini @@ -0,0 +1,3 @@ +#Thu Jul 12 12:39:45 CEST 2018 +org.eclipse.core.runtime=2 +org.eclipse.platform=4.7.2.v20171130-0510 diff --git a/workspace_stf549/RemoteSystemsTempFiles/.project b/workspace_stf549/RemoteSystemsTempFiles/.project new file mode 100644 index 0000000..5447a64 --- /dev/null +++ b/workspace_stf549/RemoteSystemsTempFiles/.project @@ -0,0 +1,12 @@ + + + RemoteSystemsTempFiles + + + + + + + org.eclipse.rse.ui.remoteSystemsTempNature + + diff --git a/workspace_stf549/STF549_Ng112/.TITAN_properties b/workspace_stf549/STF549_Ng112/.TITAN_properties new file mode 100644 index 0000000..beb5b02 --- /dev/null +++ b/workspace_stf549/STF549_Ng112/.TITAN_properties @@ -0,0 +1,131 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + None + -std=c++11 + + pcap + ssl + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn + + true + + + + + + src/ttcn/ttcn/TestCodec + + false + true + + + + \ No newline at end of file diff --git a/workspace_stf549/STF549_Ng112/.project b/workspace_stf549/STF549_Ng112/.project new file mode 100644 index 0000000..6367f78 --- /dev/null +++ b/workspace_stf549/STF549_Ng112/.project @@ -0,0 +1,395 @@ + + + STF549_Ng112 + + + + + + org.eclipse.titan.designer.core.TITANBuilder + + + + + + org.eclipse.titan.designer.core.TITANNature + org.eclipse.titan.log.viewer.TitanLogProject + + + + src/ccsrc/EncDec + 2 + virtual:/virtual + + + src/ccsrc/Framework + 2 + virtual:/virtual + + + src/ccsrc/Ports + 2 + virtual:/virtual + + + src/ccsrc/Protocols + 2 + virtual:/virtual + + + src/ccsrc/README.md + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/README.md + + + src/etc/etc + 2 + PARENT-1-WORKSPACE_LOC/etc + + + src/test_purposes/test_purposes + 2 + PARENT-1-WORKSPACE_LOC/test_purposes + + + src/ttcn/ttcn + 2 + PARENT-1-WORKSPACE_LOC/ttcn + + + src/ccsrc/EncDec/LibHttp + 2 + virtual:/virtual + + + src/ccsrc/EncDec/LibSip + 2 + virtual:/virtual + + + src/ccsrc/Framework/include + 2 + virtual:/virtual + + + src/ccsrc/Framework/src + 2 + virtual:/virtual + + + src/ccsrc/Ports/LibHttp + 2 + virtual:/virtual + + + src/ccsrc/Ports/LibSip + 2 + virtual:/virtual + + + src/ccsrc/Protocols/ETH + 2 + virtual:/virtual + + + src/ccsrc/Protocols/Held + 2 + virtual:/virtual + + + src/ccsrc/Protocols/Http + 2 + virtual:/virtual + + + src/ccsrc/Protocols/Pcap + 2 + virtual:/virtual + + + src/ccsrc/Protocols/Sip + 2 + virtual:/virtual + + + src/ccsrc/Protocols/Tcp + 2 + virtual:/virtual + + + src/ccsrc/Protocols/UDP + 2 + virtual:/virtual + + + src/ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + + + src/ccsrc/EncDec/LibSip/LibSip_Encdec.cc + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/EncDec/LibSip/LibSip_Encdec.cc + + + src/ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + + + src/ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + + + src/ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + + + src/ccsrc/Framework/include/codec.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Framework/include/codec.hh + + + src/ccsrc/Framework/include/codec_factory.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Framework/include/codec_factory.hh + + + src/ccsrc/Framework/include/codec_stack_builder.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Framework/include/codec_stack_builder.hh + + + src/ccsrc/Framework/include/converter.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Framework/include/converter.hh + + + src/ccsrc/Framework/include/layer.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Framework/include/layer.hh + + + src/ccsrc/Framework/include/layer_factory.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Framework/include/layer_factory.hh + + + src/ccsrc/Framework/include/layer_stack_builder.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Framework/include/layer_stack_builder.hh + + + src/ccsrc/Framework/include/loggers.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Framework/include/loggers.hh + + + src/ccsrc/Framework/include/params.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Framework/include/params.hh + + + src/ccsrc/Framework/include/t_layer.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Framework/include/t_layer.hh + + + src/ccsrc/Framework/src/codec_stack_builder.cc + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Framework/src/codec_stack_builder.cc + + + src/ccsrc/Framework/src/converter.cc + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Framework/src/converter.cc + + + src/ccsrc/Framework/src/layer_factory.cc + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Framework/src/layer_factory.cc + + + src/ccsrc/Framework/src/loggers.cc + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Framework/src/loggers.cc + + + src/ccsrc/Framework/src/params.cc + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Framework/src/params.cc + + + src/ccsrc/Ports/LibHttp/HttpPort.cc + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Ports/LibHttp/HttpPort.cc + + + src/ccsrc/Ports/LibHttp/HttpPort.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Ports/LibHttp/HttpPort.hh + + + src/ccsrc/Ports/LibSip/OperatorPort.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Ports/LibSip/OperatorPort.hh + + + src/ccsrc/Ports/LibSip/SipPort.cc + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Ports/LibSip/SipPort.cc + + + src/ccsrc/Ports/LibSip/SipPort.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Ports/LibSip/SipPort.hh + + + src/ccsrc/Protocols/ETH/ethernet_layer.cc + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/ETH/ethernet_layer.cc + + + src/ccsrc/Protocols/ETH/ethernet_layer.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/ETH/ethernet_layer.hh + + + src/ccsrc/Protocols/ETH/ethernet_layer_factory.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/ETH/ethernet_layer_factory.hh + + + src/ccsrc/Protocols/Held/held_codec.cc + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/Held/held_codec.cc + + + src/ccsrc/Protocols/Held/held_codec.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/Held/held_codec.hh + + + src/ccsrc/Protocols/Held/held_codec_factory.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/Held/held_codec_factory.hh + + + src/ccsrc/Protocols/Http/http_codec.cc + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/Http/http_codec.cc + + + src/ccsrc/Protocols/Http/http_codec.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/Http/http_codec.hh + + + src/ccsrc/Protocols/Http/http_layer.cc + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/Http/http_layer.cc + + + src/ccsrc/Protocols/Http/http_layer.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/Http/http_layer.hh + + + src/ccsrc/Protocols/Http/http_layer_factory.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/Http/http_layer_factory.hh + + + src/ccsrc/Protocols/Pcap/pcap_layer.cc + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/Pcap/pcap_layer.cc + + + src/ccsrc/Protocols/Pcap/pcap_layer.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/Pcap/pcap_layer.hh + + + src/ccsrc/Protocols/Pcap/pcap_layer_factory.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/Pcap/pcap_layer_factory.hh + + + src/ccsrc/Protocols/Sip/sip_codec_register_request.cc + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/Sip/sip_codec_register_request.cc + + + src/ccsrc/Protocols/Sip/sip_codec_register_request.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/Sip/sip_codec_register_request.hh + + + src/ccsrc/Protocols/Sip/sip_codec_request.cc + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/Sip/sip_codec_request.cc + + + src/ccsrc/Protocols/Sip/sip_codec_request.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/Sip/sip_codec_request.hh + + + src/ccsrc/Protocols/Sip/sip_layer.cc + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/Sip/sip_layer.cc + + + src/ccsrc/Protocols/Sip/sip_layer.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/Sip/sip_layer.hh + + + src/ccsrc/Protocols/Sip/sip_layer_factory.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/Sip/sip_layer_factory.hh + + + src/ccsrc/Protocols/Tcp/Abstract_Socket.cc + 1 + PARENT-3-WORKSPACE_LOC/frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + + + src/ccsrc/Protocols/Tcp/Abstract_Socket.hh + 1 + PARENT-3-WORKSPACE_LOC/frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh + + + src/ccsrc/Protocols/Tcp/tcp_layer.cc + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/Tcp/tcp_layer.cc + + + src/ccsrc/Protocols/Tcp/tcp_layer.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/Tcp/tcp_layer.hh + + + src/ccsrc/Protocols/Tcp/tcp_layer_factory.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/Tcp/tcp_layer_factory.hh + + + src/ccsrc/Protocols/UDP/udp_layer.cc + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/UDP/udp_layer.cc + + + src/ccsrc/Protocols/UDP/udp_layer.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/UDP/udp_layer.hh + + + src/ccsrc/Protocols/UDP/udp_layer_factory.hh + 1 + PARENT-2-ECLIPSE_HOME/dev/STF549_Ng112/ccsrc/Protocols/UDP/udp_layer_factory.hh + + + -- GitLab From f16b04dbb6eebe9f253072a827808d7151c29a86 Mon Sep 17 00:00:00 2001 From: garciay Date: Thu, 12 Jul 2018 13:04:11 +0200 Subject: [PATCH 52/72] Add TITAN Eclipse project --- .../13/70b89801b985001814de869e8ad08251 | 132 - .../15/e1b5cbe1978500181c21d10bc58219ba | 97 - .../16/b00bbfe1978500181c21d10bc58219ba | 414 --- .../17/808fd4e1978500181c21d10bc58219ba | 71 - .../18/80770d69c28500181dc9eb7ae31560a9 | 132 - .../1a/404dc5e1978500181c21d10bc58219ba | 48 - .../1e/008e0c58b685001814de869e8ad08251 | 418 --- .../1e/b0d6329bc28500181dc9eb7ae31560a9 | 418 --- .../1e/f1a0d5e1978500181c21d10bc58219ba | 46 - .../20/c066b61cb985001814de869e8ad08251 | 418 --- .../23/00493a33b685001814de869e8ad08251 | 418 --- .../23/6063cfd3978500181c21d10bc58219ba | Bin 870912 -> 0 bytes .../24/f0215881bd85001814de869e8ad08251 | 45 - .../28/f0fbaad8b185001814de869e8ad08251 | 418 --- .../2c/a079d26dc28500181dc9eb7ae31560a9 | 418 --- .../2f/50a9d1e1978500181c21d10bc58219ba | 135 - .../3/3044c0e1978500181c21d10bc58219ba | 63 - .../3/c02bd5e1978500181c21d10bc58219ba | 91 - .../30/3026c5e1978500181c21d10bc58219ba | 356 --- .../31/30b7da0ab985001814de869e8ad08251 | 418 --- .../31/414dc5e1978500181c21d10bc58219ba | 45 - .../31/50c9eee5b08500181eabf1ba1ea37ea1 | 418 --- .../31/b07cc1e1978500181c21d10bc58219ba | 46 - .../34/70cb39abb08500181eabf1ba1ea37ea1 | 131 - .../38/619bc5e1978500181c21d10bc58219ba | 45 - .../3a/20d21c389e8500181eabf1ba1ea37ea1 | 79 - .../3b/c084754b9e8500181eabf1ba1ea37ea1 | 91 - .../3b/f0a0d5e1978500181c21d10bc58219ba | 264 -- .../3f/00220b34c08500181dc9eb7ae31560a9 | 418 --- .../3f/80e03c63bc85001814de869e8ad08251 | 418 --- .../4/50a2d8bbbd85001814de869e8ad08251 | 418 --- .../40/60ac5fd6b185001814de869e8ad08251 | 257 -- .../40/906eb7d3978500181c21d10bc58219ba | Bin 723336 -> 0 bytes .../40/b0e00cc0be85001814de869e8ad08251 | 418 --- .../44/005c57e0b08500181eabf1ba1ea37ea1 | 418 --- .../44/d0f3281cb985001814de869e8ad08251 | 98 - .../45/f0589ff0c08500181dc9eb7ae31560a9 | 418 --- .../48/1149c7e1978500181c21d10bc58219ba | 73 - .../48/50efc5ecc08500181dc9eb7ae31560a9 | 418 --- .../4c/90c76ed6b185001814de869e8ad08251 | 98 - .../4c/d0ce10889e8500181eabf1ba1ea37ea1 | 115 - .../4f/20dbb304b985001814de869e8ad08251 | 418 --- .../53/51a9d1e1978500181c21d10bc58219ba | 82 - .../54/1049c7e1978500181c21d10bc58219ba | 87 - .../54/d0d08d049e8500181eabf1ba1ea37ea1 | 58 - .../58/807cbd08b985001814de869e8ad08251 | 418 --- .../5a/2270c7e1978500181c21d10bc58219ba | 62 - .../5c/5274c5e1978500181c21d10bc58219ba | 66 - .../5d/0122c7e1978500181c21d10bc58219ba | 289 -- .../5d/8073aed7b185001814de869e8ad08251 | 132 - .../5e/303dd6e1978500181c21d10bc58219ba | 988 ------ .../5f/609bc5e1978500181c21d10bc58219ba | 82 - .../60/003b0e2b9e8500181eabf1ba1ea37ea1 | 73 - .../61/70ebb22fc08500181dc9eb7ae31560a9 | 418 --- .../62/3058727e9e8500181eabf1ba1ea37ea1 | 109 - .../64/40e123c69d8500181eabf1ba1ea37ea1 | 32 - .../6b/403f1ddfb985001814de869e8ad08251 | 418 --- .../6d/305bd1e1978500181c21d10bc58219ba | 2821 ----------------- .../6d/90a3c3d3978500181c21d10bc58219ba | Bin 375992 -> 0 bytes .../7/0022c7e1978500181c21d10bc58219ba | 67 - .../70/d0485336b685001814de869e8ad08251 | 418 --- .../71/10e63a61a88500181eabf1ba1ea37ea1 | 127 - .../72/c072b5d3978500181c21d10bc58219ba | Bin 340448 -> 0 bytes .../73/f0fcb796c28500181dc9eb7ae31560a9 | 132 - .../74/d011241cb985001814de869e8ad08251 | 257 -- .../74/f033d3d3978500181c21d10bc58219ba | Bin 663120 -> 0 bytes .../75/202f796f9e8500181eabf1ba1ea37ea1 | 97 - .../75/601787eeac8500181eabf1ba1ea37ea1 | 131 - .../75/a093cf0ab985001814de869e8ad08251 | 418 --- .../7c/e0832037b685001814de869e8ad08251 | 418 --- .../8/b004d5e1978500181c21d10bc58219ba | 4 - .../80/b0a46cd6b185001814de869e8ad08251 | 159 - .../81/8043f232b685001814de869e8ad08251 | 418 --- .../84/7015cde1978500181c21d10bc58219ba | 44 - .../86/109946f39d8500181eabf1ba1ea37ea1 | 52 - .../86/5074c5e1978500181c21d10bc58219ba | 23 - .../8d/003b57dfb985001814de869e8ad08251 | 418 --- .../9/2045a71fb985001814de869e8ad08251 | 418 --- .../91/a0caebd7b185001814de869e8ad08251 | 418 --- .../92/c0a9071fb985001814de869e8ad08251 | 418 --- .../95/60d0d1e1978500181c21d10bc58219ba | 82 - .../96/60a6726dc28500181dc9eb7ae31560a9 | 418 --- .../99/a0124aeb9d8500181eabf1ba1ea37ea1 | 46 - .../99/e0ee711eb885001814de869e8ad08251 | 418 --- .../9b/d006f332b685001814de869e8ad08251 | 418 --- .../9b/e04fb3d3978500181c21d10bc58219ba | Bin 135776 -> 0 bytes .../9c/d09c90bbbd85001814de869e8ad08251 | 418 --- .../9d/20049defc08500181dc9eb7ae31560a9 | 418 --- .../9d/5156cae1978500181c21d10bc58219ba | 45 - .../9f/10b4315bbc85001814de869e8ad08251 | 418 --- .../9f/708420b4a88500181eabf1ba1ea37ea1 | 128 - .../a2/c0387d0bb985001814de869e8ad08251 | 418 --- .../ad/e0ead7e1978500181c21d10bc58219ba | 125 - .../ae/d05237a7ac8500181eabf1ba1ea37ea1 | 129 - .../b0/b011035bb685001814de869e8ad08251 | 418 --- .../b2/2070c7e1978500181c21d10bc58219ba | 49 - .../b5/800d75bfbe85001814de869e8ad08251 | 159 - .../b7/2170c7e1978500181c21d10bc58219ba | 27 - .../b8/80b52d1ab885001814de869e8ad08251 | 57 - .../b9/4082d1e1978500181c21d10bc58219ba | 4 - .../ba/617dcae1978500181c21d10bc58219ba | 99 - .../ba/d0c3d7e1978500181c21d10bc58219ba | 181 -- .../bb/10e667e5b08500181eabf1ba1ea37ea1 | 418 --- .../bf/70d9d6e1978500181c21d10bc58219ba | 35 - .../c1/40febdd3978500181c21d10bc58219ba | Bin 997736 -> 0 bytes .../c2/10919f5bbc85001814de869e8ad08251 | 418 --- .../c2/306f093f9e8500181eabf1ba1ea37ea1 | 85 - .../c2/d0c4ab04b985001814de869e8ad08251 | 418 --- .../c4/e0b5cbe1978500181c21d10bc58219ba | 44 - .../c6/f0cc7e57b685001814de869e8ad08251 | 418 --- .../c7/f1fac6e1978500181c21d10bc58219ba | 114 - .../cf/c0b9dd8f9e8500181eabf1ba1ea37ea1 | 121 - .../d2/00bcaed3978500181c21d10bc58219ba | Bin 531144 -> 0 bytes .../d3/503ed799c28500181dc9eb7ae31560a9 | 418 --- .../d4/b0edd64c978500181c21d10bc58219ba | 12 - .../d5/60df62189e8500181eabf1ba1ea37ea1 | 67 - .../d8/d0adcde29d8500181eabf1ba1ea37ea1 | 40 - .../dd/607dcae1978500181c21d10bc58219ba | 72 - .../de/00f495bbbd85001814de869e8ad08251 | 418 --- .../de/d0dd7033c08500181dc9eb7ae31560a9 | 418 --- .../df/108b860cbc85001814de869e8ad08251 | 71 - .../e1/00485b1fb985001814de869e8ad08251 | 418 --- .../e1/5056cae1978500181c21d10bc58219ba | 73 - .../e2/f0fac6e1978500181c21d10bc58219ba | 144 - .../e3/62d0d1e1978500181c21d10bc58219ba | 57 - .../e5/f0352becc08500181dc9eb7ae31560a9 | 132 - .../e6/20b7df769e8500181eabf1ba1ea37ea1 | 103 - .../ea/3019ff6bc28500181dc9eb7ae31560a9 | 418 --- .../ea/e0dffc35c08500181dc9eb7ae31560a9 | 418 --- .../ed/20ffc4e1978500181c21d10bc58219ba | 74 - .../ed/90c20963bc85001814de869e8ad08251 | 418 --- .../ee/6087e5dfb08500181eabf1ba1ea37ea1 | 418 --- .../ef/9064abdfb08500181eabf1ba1ea37ea1 | 418 --- .../ef/d087d51db885001814de869e8ad08251 | 418 --- .../f2/61d0d1e1978500181c21d10bc58219ba | 516 --- .../f6/b0a5281cb985001814de869e8ad08251 | 159 - .../f8/20784e69c28500181dc9eb7ae31560a9 | 418 --- .../fa/5174c5e1978500181c21d10bc58219ba | 46 - 138 files changed, 32942 deletions(-) delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/13/70b89801b985001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/15/e1b5cbe1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/16/b00bbfe1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/17/808fd4e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/18/80770d69c28500181dc9eb7ae31560a9 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1a/404dc5e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/008e0c58b685001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/b0d6329bc28500181dc9eb7ae31560a9 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/f1a0d5e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/20/c066b61cb985001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/23/00493a33b685001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/23/6063cfd3978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/24/f0215881bd85001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/28/f0fbaad8b185001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/2c/a079d26dc28500181dc9eb7ae31560a9 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/2f/50a9d1e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3/3044c0e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3/c02bd5e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/30/3026c5e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/30b7da0ab985001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/414dc5e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/50c9eee5b08500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/b07cc1e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/34/70cb39abb08500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/38/619bc5e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3a/20d21c389e8500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3b/c084754b9e8500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3b/f0a0d5e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3f/00220b34c08500181dc9eb7ae31560a9 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3f/80e03c63bc85001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4/50a2d8bbbd85001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/40/60ac5fd6b185001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/40/906eb7d3978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/40/b0e00cc0be85001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/44/005c57e0b08500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/44/d0f3281cb985001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/45/f0589ff0c08500181dc9eb7ae31560a9 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/48/1149c7e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/48/50efc5ecc08500181dc9eb7ae31560a9 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4c/90c76ed6b185001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4c/d0ce10889e8500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4f/20dbb304b985001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/53/51a9d1e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/54/1049c7e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/54/d0d08d049e8500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/58/807cbd08b985001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5a/2270c7e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5c/5274c5e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5d/0122c7e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5d/8073aed7b185001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5e/303dd6e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5f/609bc5e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/60/003b0e2b9e8500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/61/70ebb22fc08500181dc9eb7ae31560a9 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/62/3058727e9e8500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/64/40e123c69d8500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/6b/403f1ddfb985001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/6d/305bd1e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/6d/90a3c3d3978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/7/0022c7e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/70/d0485336b685001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/71/10e63a61a88500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/72/c072b5d3978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/73/f0fcb796c28500181dc9eb7ae31560a9 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/74/d011241cb985001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/74/f033d3d3978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/75/202f796f9e8500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/75/601787eeac8500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/75/a093cf0ab985001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/7c/e0832037b685001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/8/b004d5e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/80/b0a46cd6b185001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/81/8043f232b685001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/84/7015cde1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/86/109946f39d8500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/86/5074c5e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/8d/003b57dfb985001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9/2045a71fb985001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/91/a0caebd7b185001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/92/c0a9071fb985001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/95/60d0d1e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/96/60a6726dc28500181dc9eb7ae31560a9 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/99/a0124aeb9d8500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/99/e0ee711eb885001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9b/d006f332b685001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9b/e04fb3d3978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9c/d09c90bbbd85001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9d/20049defc08500181dc9eb7ae31560a9 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9d/5156cae1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9f/10b4315bbc85001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9f/708420b4a88500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/a2/c0387d0bb985001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ad/e0ead7e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ae/d05237a7ac8500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b0/b011035bb685001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b2/2070c7e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b5/800d75bfbe85001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b7/2170c7e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b8/80b52d1ab885001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b9/4082d1e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ba/617dcae1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ba/d0c3d7e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/bb/10e667e5b08500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/bf/70d9d6e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c1/40febdd3978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/10919f5bbc85001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/306f093f9e8500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/d0c4ab04b985001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c4/e0b5cbe1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c6/f0cc7e57b685001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c7/f1fac6e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/cf/c0b9dd8f9e8500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d2/00bcaed3978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d3/503ed799c28500181dc9eb7ae31560a9 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d4/b0edd64c978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d5/60df62189e8500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d8/d0adcde29d8500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/dd/607dcae1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/de/00f495bbbd85001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/de/d0dd7033c08500181dc9eb7ae31560a9 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/df/108b860cbc85001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e1/00485b1fb985001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e1/5056cae1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e2/f0fac6e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e3/62d0d1e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e5/f0352becc08500181dc9eb7ae31560a9 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e6/20b7df769e8500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ea/3019ff6bc28500181dc9eb7ae31560a9 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ea/e0dffc35c08500181dc9eb7ae31560a9 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ed/20ffc4e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ed/90c20963bc85001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ee/6087e5dfb08500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ef/9064abdfb08500181eabf1ba1ea37ea1 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ef/d087d51db885001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f2/61d0d1e1978500181c21d10bc58219ba delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f6/b0a5281cb985001814de869e8ad08251 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f8/20784e69c28500181dc9eb7ae31560a9 delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/fa/5174c5e1978500181c21d10bc58219ba diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/13/70b89801b985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/13/70b89801b985001814de869e8ad08251 deleted file mode 100644 index 0313248..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/13/70b89801b985001814de869e8ad08251 +++ /dev/null @@ -1,132 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - None - -Wall-std=c++11-pthread-fPIC - - pcap - ssl - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - -pthread-fPIC - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn - - true - - - - - - src/ttcn/ttcn/TestCodec - - false - true - - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/15/e1b5cbe1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/15/e1b5cbe1978500181c21d10bc58219ba deleted file mode 100644 index c012aba..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/15/e1b5cbe1978500181c21d10bc58219ba +++ /dev/null @@ -1,97 +0,0 @@ -/*! - * \file udp_layer.hh - * \brief Header file for ITS UDP/IP protocol layer definition. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include -#if !defined(LINUX) -#include -#include -struct iphdr { - #if __BYTE_ORDER == __LITTLE_ENDIAN - u_int8_t ihl:4, - version:4; - #elif __BYTE_ORDER == __BIG_ENDIAN - u_int8_t version:4, - ihl:4; - #else - #error "Please fix " - #endif - u_int8_t tos; - u_int16_t tot_len; - u_int16_t id; - u_int16_t frag_off; - u_int8_t ttl; - u_int8_t protocol; - u_int16_t check; - struct in_addr saddr; - struct in_addr daddr; - //The options start here. -}; -#else // LINUX -#include -#include -#endif // LINUX - -#include "t_layer.hh" -#include "params.hh" - -/*! - * \class udp_layer - * \brief This class provides description of ITS UDP/IP protocol layer - */ -class udp_layer : public layer { - params _params; //! Layer parameters - struct iphdr* _iphdr; //! IP layer description - struct udphdr* _udphdr; //! UDP layer description - struct sockaddr_in _saddr; //! Source socket address description - struct sockaddr_in _daddr; //! Destination socket address description - - /*! - * \fn unsigned short inet_check_sum(const void *buf, size_t hdr_len, const unsigned short p_initial_sum = 0); - * \brief Compute the UDP checksum - * \param[in] p_buffer The data to be sent - * \param[in] p_header_length The UDP header length - * \param [in] p_initial_sum The initial checksum value. Default: 0 - * \return The checksum value - */ - unsigned short inet_check_sum(const void *p_buffer, size_t p_header_length, const unsigned short p_initial_sum = 0); - -public: //! \publicsection - /*! - * \brief Specialised constructor - * Create a new instance of the udp_layer class - * \param[in] p_type \todo - * \param[in] p_param \todo - */ - udp_layer(const std::string & p_type, const std::string & p_param); - /*! - * \brief Default destructor - */ - virtual ~udp_layer() {} - - /*! - * \virtual - * \fn void send_data(OCTETSTRING& data, params& params); - * \brief Send bytes formated data to the lower layers - * \param[in] p_data The data to be sent - * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters - */ - virtual void send_data(OCTETSTRING& data, params& params); - /*! - * \virtual - * \fn void receive_data(OCTETSTRING& data, params& params); - * \brief Receive bytes formated data from the lower layers - * \param[in] p_data The bytes formated data received - * \param[in] p_params Some lower layers parameters values when data was received - */ - virtual void receive_data(OCTETSTRING& data, params& info); -}; // End of class udp_layer - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/16/b00bbfe1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/16/b00bbfe1978500181c21d10bc58219ba deleted file mode 100644 index 2d7ad2a..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/16/b00bbfe1978500181c21d10bc58219ba +++ /dev/null @@ -1,414 +0,0 @@ -/****************************************************************************** -* Copyright (c) 2000-2018 Ericsson Telecom AB -* All rights reserved. This program and the accompanying materials -* are made available under the terms of the Eclipse Public License v2.0 -* which accompanies this distribution, and is available at -* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html -* -* Contributors: -* Zoltan Bibo - initial implementation and initial documentation -* Gergely Futo -* Oliver Ferenc Czerman -* Balasko Jeno -* Zoltan Bibo -* Eduard Czimbalmos -* Kulcsár Endre -* Gabor Szalai -* Jozsef Gyurusi -* Csöndes Tibor -* Zoltan Jasz -******************************************************************************/ -// -// File: Abstract_Socket.hh -// Description: Abstract_Socket header file -// Rev: R9B -// Prodnr: CNL 113 384 -// - - -#ifndef Abstract_Socket_HH -#define Abstract_Socket_HH - -#ifdef AS_USE_SSL -#include -#include -#include -#endif - -#include -#include -#include - -// to support systems not supporting IPv6 define AF_INET6 to some dummy value: -#ifndef AF_INET6 -#define AF_INET6 (-255) -#endif - -class PacketHeaderDescr { -public: - // Byte order in the header - enum HeaderByteOrder{ Header_MSB, Header_LSB }; -private: - unsigned long length_offset; - unsigned long nr_bytes_in_length; - HeaderByteOrder byte_order; - long value_offset; - unsigned long length_multiplier; -public: - PacketHeaderDescr(unsigned long p_length_offset, - unsigned long p_nr_bytes_in_length, HeaderByteOrder p_byte_order, - long p_value_offset = 0, unsigned long p_length_multiplier = 1) - : length_offset(p_length_offset), nr_bytes_in_length(p_nr_bytes_in_length), - byte_order(p_byte_order), value_offset(p_value_offset), - length_multiplier(p_length_multiplier) { } - - // returns the message length - unsigned long Get_Message_Length(const unsigned char* buffer_pointer) const; - // returns the number of bytes needed to have a valid message length - inline unsigned long Get_Valid_Header_Length() const - { return length_offset + nr_bytes_in_length; } -}; - -class Abstract_Socket -{ -protected: - enum TCP_STATES {CLOSED, LISTEN, ESTABLISHED, CLOSE_WAIT, FIN_WAIT}; - enum READING_STATES {STATE_DONT_RECEIVE, STATE_WAIT_FOR_RECEIVE_CALLBACK, STATE_BLOCK_FOR_SENDING, STATE_DONT_CLOSE, STATE_NORMAL}; - // client data - struct as_client_struct { - void *user_data; // pointer to any additional data needed by the user - TTCN_Buffer *fd_buff; // pointer to the data buffer - struct sockaddr_storage clientAddr;// client address -#if defined LINUX || defined FREEBSD || defined SOLARIS8 - socklen_t -#else /* SOLARIS or WIN32 */ - int -#endif - clientAddrlen; - TCP_STATES tcp_state; // TCP state - READING_STATES reading_state; //used when SSL_write returns SSL_ERROR_WANT_READ an we are using non-blocking socket - }; - - Abstract_Socket(); - Abstract_Socket(const char *testport_type, const char *testport_name); - virtual ~Abstract_Socket(); - - // Shall be called from set_parameter() - bool parameter_set(const char *parameter_name, const char *parameter_value); - // Shall be called from user_map() - void map_user(); - // Shall be called from user_unmap() - void unmap_user(); - - // puts the IP address in the addr - void get_host_id(const char* hostName, struct sockaddr_in *addr); /* This function should not be used! Use getaddrinfo instead! */ - - // Closes the current listening port and opens the specified one - int open_listen_port(const struct sockaddr_in & localAddr); /* This function should be removed! Deprecated by: */ - int open_listen_port(const char* localHostname, const char* localServicename); - // Closes the current listening port - void close_listen_port(); - - virtual void listen_port_opened(int port_number); - - // Opens a new client connection - int open_client_connection(const struct sockaddr_in & new_remote_addr, const struct sockaddr_in & new_local_addr); /* This function should be removed! Deprecated by: */ - int open_client_connection(const char* remoteHostname, const char* remoteService, const char* localHostname, const char* localService); - - virtual void client_connection_opened(int client_id); - - // Shall be called from Handle_Fd_Event() - void Handle_Socket_Event(int fd, boolean is_readable, boolean is_writable, boolean is_error); - // Shall be called from Handle_Timeout() - for possible future development - void Handle_Timeout_Event(double /*time_since_last_call*/) {}; - - // Shall be called from outgoing_send() - void send_outgoing(const unsigned char* message_buffer, int length, int client_id = -1); - void send_shutdown(int client_id = -1); - - // Access to private variables - bool get_nagling() const {return nagling;} - bool get_use_non_blocking_socket() const {return use_non_blocking_socket;}; - bool get_server_mode() const {return server_mode;} - bool get_socket_debugging() const {return socket_debugging;} - bool get_halt_on_connection_reset() const {return halt_on_connection_reset;} - bool get_use_connection_ASPs() const {return use_connection_ASPs;} - bool get_handle_half_close() const {return handle_half_close;} - int get_socket_fd() const; - int get_listen_fd() const {return listen_fd;} - - //set non-blocking mode - int set_non_block_mode(int fd, bool enable_nonblock); - - //increase buffer size - bool increase_send_buffer(int fd, int &old_size, int& new_size); - - const char* get_local_host_name(){return local_host_name; }; - unsigned int get_local_port_number(){return local_port_number; }; - const char* get_remote_host_name(){return remote_host_name; }; - unsigned int get_remote_port_number(){return remote_port_number; }; - const struct sockaddr_in & get_remote_addr() {return remoteAddr; }; /* FIXME: This function is deprecated and should be removed! */ - const struct sockaddr_in & get_local_addr() {return localAddr; }; /* FIXME: This function is deprecated and should be removed! */ - const int& get_ai_family() const {return ai_family;} - void set_ai_family(int parameter_value) {ai_family=parameter_value;} - bool get_ttcn_buffer_usercontrol() const {return ttcn_buffer_usercontrol; } - void set_nagling(bool parameter_value) {nagling=parameter_value;} - void set_server_mode(bool parameter_value) {server_mode=parameter_value;} - void set_handle_half_close(bool parameter_value) {handle_half_close=parameter_value;} - void set_socket_debugging(bool parameter_value) {socket_debugging=parameter_value;} - void set_halt_on_connection_reset(bool parameter_value) {halt_on_connection_reset=parameter_value;} - void set_ttcn_buffer_usercontrol(bool parameter_value) {ttcn_buffer_usercontrol=parameter_value;} - const char *test_port_type; - const char *test_port_name; - - // Called when a message is received - virtual void message_incoming(const unsigned char* message_buffer, int length, int client_id = -1) = 0; - - virtual void Add_Fd_Read_Handler(int fd) = 0; - virtual void Add_Fd_Write_Handler(int fd) = 0; - virtual void Remove_Fd_Read_Handler(int fd) = 0; - virtual void Remove_Fd_Write_Handler(int fd) = 0; - virtual void Remove_Fd_All_Handlers(int fd) = 0; - virtual void Handler_Uninstall() = 0; - virtual void Timer_Set_Handler(double call_interval, boolean is_timeout = TRUE, - boolean call_anyway = TRUE, boolean is_periodic = TRUE) = 0; // unused - for possible future development - virtual const PacketHeaderDescr* Get_Header_Descriptor() const; - - // Logging functions - void log_debug(const char *fmt, ...) const - __attribute__ ((__format__ (__printf__, 2, 3))); - void log_warning(const char *fmt, ...) const - __attribute__ ((__format__ (__printf__, 2, 3))); - void log_error(const char *fmt, ...) const - __attribute__ ((__format__ (__printf__, 2, 3), __noreturn__)); - void log_hex(const char *prompt, const unsigned char *msg, size_t length) const; - - // Called when a message is to be received (an event detected) - virtual int receive_message_on_fd(int client_id); - // Called when a message is to be sent - virtual int send_message_on_fd(int client_id, const unsigned char* message_buffer, int message_length); - virtual int send_message_on_nonblocking_fd(int client_id, const unsigned char *message_buffer, int message_length); - // Called after a peer is connected - virtual void peer_connected(int client_id, sockaddr_in& remote_addr); /* This function should be removed! deprecated by: */ - virtual void peer_connected(int /*client_id*/, const char * /*host*/, const int /*port*/) {}; - // Called after a peer is disconnected - virtual void peer_disconnected(int client_id); - // Called when a peer shut down its fd for writing - virtual void peer_half_closed(int client_id); - // Called after a send error - virtual void report_error(int client_id, int msg_length, int sent_length, const unsigned char* msg, const char* error_text); - // Called after a unsent message - virtual void report_unsent(int client_id, int msg_length, int sent_length, const unsigned char* msg, const char* error_text); - - // Test port parameters - virtual const char* local_port_name(); - virtual const char* remote_address_name(); - virtual const char* local_address_name(); - virtual const char* remote_port_name(); - virtual const char* ai_family_name(); - virtual const char* use_connection_ASPs_name(); - virtual const char* halt_on_connection_reset_name(); - virtual const char* client_TCP_reconnect_name(); - virtual const char* TCP_reconnect_attempts_name(); - virtual const char* TCP_reconnect_delay_name(); - virtual const char* server_mode_name(); - virtual const char* socket_debugging_name(); - virtual const char* nagling_name(); - virtual const char* use_non_blocking_socket_name(); - virtual const char* server_backlog_name(); - - // Fetch/Set user data pointer - void* get_user_data(int client_id) {return get_peer(client_id)->user_data;} - void set_user_data(int client_id, void *uptr) {get_peer(client_id)->user_data = uptr;} - // Called after a TCP connection is established - virtual bool add_user_data(int client_id); - // Called before the TCP connection is drop down - virtual bool remove_user_data(int client_id); - // Called when a client shall be removed - virtual void remove_client(int client_id); - // Called when all clients shall be removed - virtual void remove_all_clients(); - // Called at the beginning of map() to check mandatory parameter presence - virtual bool user_all_mandatory_configparameters_present(); - TTCN_Buffer *get_buffer(int client_id) {return get_peer(client_id)->fd_buff; } - - // Client data management functions - // add peer to the list - as_client_struct *peer_list_add_peer(int client_id); - // remove peer from list - void peer_list_remove_peer(int client_id); - // remove all peers from list - void peer_list_reset_peer(); - // returns back the structure of the peer - as_client_struct *get_peer(int client_id, bool no_error=false) const; - // length of the list - int peer_list_get_length() const { return peer_list_length; } - // number of peers in the list - int peer_list_get_nr_of_peers() const; - // fd of the last peer in the list - int peer_list_get_last_peer() const; - // fd of the first peer in the list - int peer_list_get_first_peer() const; - - -private: - void handle_message(int client_id = -1); - void all_mandatory_configparameters_present(); - bool halt_on_connection_reset_set; - bool halt_on_connection_reset; - bool client_TCP_reconnect; - int TCP_reconnect_attempts; - int TCP_reconnect_delay; - bool server_mode; - bool use_connection_ASPs; - bool handle_half_close; - bool socket_debugging; - bool nagling; - bool use_non_blocking_socket; - bool ttcn_buffer_usercontrol; - char* local_host_name; - unsigned int local_port_number; - char* remote_host_name; - unsigned int remote_port_number; - int ai_family; // address family to use - // remoteAddr and localAddr is filled when map_user is called - struct sockaddr_in remoteAddr; /* FIXME: not used! should be removed */ - struct sockaddr_in localAddr; /* FIXME: not used! should be removed */ - int server_backlog; - int deadlock_counter; - int listen_fd; - int peer_list_length; - - // Client data management functions - as_client_struct **peer_list_root; - void peer_list_resize_list(int client_id); -}; - - - -#ifdef AS_USE_SSL - -class SSL_Socket: public Abstract_Socket -{ - -protected: - SSL_Socket(); - SSL_Socket(const char *tp_type, const char *tp_name); - virtual ~SSL_Socket(); - - bool parameter_set(const char * parameter_name, const char * parameter_value); - // Called after a TCP connection is established (client side or server accepted a connection). - // It will create a new SSL conenction on the top of the TCP connection. - virtual bool add_user_data(int client_id); - // Called after a TCP connection is closed. - // It will delete the SSL conenction. - virtual bool remove_user_data(int client_id); - // Called from all_mandatory_configparameters_present() function - // during map() operation to check mandatory parameter presents. - virtual bool user_all_mandatory_configparameters_present(); - // Called after an SSL connection is established (handshake finished) for further - // authentication. Shall return 'true' if verification - // is OK, otherwise 'false'. If return value was 'true', the connection is kept, otherwise - // the connection will be shutted down. - virtual bool ssl_verify_certificates(); - // Call during SSL handshake (and rehandshake as well) by OpenSSL - // Return values: - // ==1: user authentication is passed, go on with handshake - // ==0: user authentication failed, refuse the connection to the other peer - // <0 : user don't care, go on with default basic checks - virtual int ssl_verify_certificates_at_handshake(int preverify_ok, X509_STORE_CTX *ssl_ctx); - // Called to receive from the socket if data is available (select()). - // Shall return with 0 if the peer is disconnected or with the number of bytes read. - // If error occured, execution shall stop in the function by calling log_error() - virtual int receive_message_on_fd(int client_id); - // Called to send a message on the socket. - // Shall return with 0 if the peer is disconnected or with the number of bytes written. - // If error occured, execution shall stop in the function by calling log_error() - virtual int send_message_on_fd(int client_id, const unsigned char * message_buffer, int length_of_message); - virtual int send_message_on_nonblocking_fd(int client_id, const unsigned char * message_buffer, int length_of_message); - - // The following members can be called to fetch the current values - bool get_ssl_use_ssl() const {return ssl_use_ssl;} - bool get_ssl_verifycertificate() const {return ssl_verify_certificate;} - bool get_ssl_use_session_resumption() const {return ssl_use_session_resumption;} - bool get_ssl_initialized() const {return ssl_initialized;} - char * get_ssl_key_file() const {return ssl_key_file;} - char * get_ssl_certificate_file() const {return ssl_certificate_file;} - char * get_ssl_trustedCAlist_file() const {return ssl_trustedCAlist_file;} - char * get_ssl_cipher_list() const {return ssl_cipher_list;} - char * get_ssl_password() const; - const unsigned char * get_ssl_server_auth_session_id_context() const {return ssl_server_auth_session_id_context;} -// const SSL_METHOD * get_current_ssl_method() const {return ssl_method;} -// const SSL_CIPHER * get_current_ssl_cipher() const {return ssl_cipher;} - SSL_SESSION* get_current_ssl_session() const {return ssl_session;} - SSL_CTX * get_current_ssl_ctx() const {return ssl_ctx;} - SSL * get_current_ssl() const {return ssl_current_ssl;} - - // The following members can be called to set the current values - // NOTE that in case the parameter_value is a char *pointer, the old character - // array is deleted by these functions automatically. - void set_ssl_use_ssl(bool parameter_value); - void set_ssl_verifycertificate(bool parameter_value); - void set_ssl_use_session_resumption(bool parameter_value); - void set_ssl_key_file(char * parameter_value); - void set_ssl_certificate_file(char * parameter_value); - void set_ssl_trustedCAlist_file(char * parameter_value); - void set_ssl_cipher_list(char * parameter_value); - void set_ssl_server_auth_session_id_context(const unsigned char * parameter_value); - - // The following members can be called to fetch the default test port parameter names - virtual const char* ssl_use_ssl_name(); - virtual const char* ssl_use_session_resumption_name(); - virtual const char* ssl_private_key_file_name(); - virtual const char* ssl_trustedCAlist_file_name(); - virtual const char* ssl_certificate_file_name(); - virtual const char* ssl_password_name(); - virtual const char* ssl_cipher_list_name(); - virtual const char* ssl_verifycertificate_name(); - virtual const char* ssl_disable_SSLv2(); - virtual const char* ssl_disable_SSLv3(); - virtual const char* ssl_disable_TLSv1(); - virtual const char* ssl_disable_TLSv1_1(); - virtual const char* ssl_disable_TLSv1_2(); - -private: - bool ssl_verify_certificate; // verify other part's certificate or not - bool ssl_use_ssl; // whether to use SSL - bool ssl_initialized; // whether SSL already initialized or not - bool ssl_use_session_resumption; // use SSL sessions or not - - bool SSLv2; - bool SSLv3; - bool TLSv1; - bool TLSv1_1; - bool TLSv1_2; - - - char *ssl_key_file; // private key file - char *ssl_certificate_file; // own certificate file - char *ssl_trustedCAlist_file; // trusted CA list file - char *ssl_cipher_list; // ssl_cipher list restriction to apply - char *ssl_password; // password to decode the private key - static const unsigned char * ssl_server_auth_session_id_context; - -// const SSL_METHOD *ssl_method; // SSL context method - SSL_CTX *ssl_ctx; // SSL context -// const SSL_CIPHER *ssl_cipher; // used SSL ssl_cipher - SSL_SESSION *ssl_session; // SSL ssl_session - SSL *ssl_current_ssl; // currently used SSL object - static void *ssl_current_client; // current SSL object, used only during authentication - - void ssl_actions_to_seed_PRNG(); // Seed the PRNG with enough random data - void ssl_init_SSL(); // Initialize SSL libraries and create the SSL context - void ssl_log_SSL_info(); // Log the currently used SSL setting (debug) - int ssl_getresult(int result_code); // Fetch and log the SSL error code from I/O operation result codes - // Callback function to pass the password to OpenSSL. Called by OpenSSL - // during SSL handshake. - static int ssl_password_cb(char * password_buffer, int length_of_password, int rw_flag, void * user_data); - // Callback function to perform authentication during SSL handshake. Called by OpenSSL. - // NOTE: for further authentication, use ssl_verify_certificates(). - static int ssl_verify_callback(int preverify_status, X509_STORE_CTX * ssl_context); -}; -#endif - -#endif diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/17/808fd4e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/17/808fd4e1978500181c21d10bc58219ba deleted file mode 100644 index 33f24fe..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/17/808fd4e1978500181c21d10bc58219ba +++ /dev/null @@ -1,71 +0,0 @@ -#include -#include - -#include "layer_stack_builder.hh" - -#include "loggers.hh" - -layer_stack_builder* layer_stack_builder::_instance = NULL; - -// static functions -layer_stack_builder * layer_stack_builder::get_instance() -{ - return _instance ? _instance : _instance = new layer_stack_builder(); -} - -void layer_stack_builder::register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory) -{ - layer_stack_builder::get_instance()->_register_layer_factory(p_type, p_layer_factory); -} - -// member functions -layer_stack_builder::layer_stack_builder() -{ -} - -void layer_stack_builder::_register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory) -{ - _layer_factories[p_type] = p_layer_factory; -} - -layer* layer_stack_builder::create_layer_stack(const char* p_layer_stack_description) -{ - loggers::get_instance().log(">>> layer_stack_builder::create_layer_stack: %s", p_layer_stack_description); - - layer* entry = NULL; // Initial layer (the first declared) - layer* up = NULL; // Upper layer - // Parse the layer description - try { - std::regex rgx ("(\\w+)(\\((.*?)\\))?(\\/|$)"); - std::string str = p_layer_stack_description; - std::sregex_iterator begin(str.cbegin(), str.cend(), rgx); - std::sregex_iterator end = std::sregex_iterator(); - for (std::sregex_iterator it = begin; it != end; ++it) { - std::smatch m = *it; - loggers::get_instance().log("layer_stack_builder::create_layer_stack: %d - %s - %s - %s - %s", m.size(), m[0].str().c_str(), m[1].str().c_str(), m[2].str().c_str(), m[3].str().c_str()); - LayerFactoryMap::iterator i = _layer_factories.find(m[1].str()); - if (i == _layer_factories.end()) { - loggers::get_instance().error("layer_stack_builder::create_layer_stack: %s: Unknown layer type", m[1].str().c_str()); - } - loggers::get_instance().log("layer_stack_builder::create_layer_stack: Create layer %s, %s", m[1].str().c_str(), m[3].str().c_str()); - layer* l = i->second->create_layer(m[1].str(), m[3].str()); - if (NULL == l) { - loggers::get_instance().error("layer_stack_builder::create_layer_stack: %s: Layer creation error", m[1].str().c_str()); - } - - loggers::get_instance().log("layer_stack_builder::create_layer_stack: Setup layers for %s", l->to_string().c_str()); - l->add_upper_layer(up); - if (entry == NULL) { // Set the first declared layer - entry = l; - } - up = l; // Build the linked list of layers - } // End of 'for' statement - } - catch(const std::logic_error& e){ - if(up){ // FIXME To be reviewed - up->delete_layer(); - up = NULL; - } - } - return entry; -} diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/18/80770d69c28500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/18/80770d69c28500181dc9eb7ae31560a9 deleted file mode 100644 index 0313248..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/18/80770d69c28500181dc9eb7ae31560a9 +++ /dev/null @@ -1,132 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - None - -Wall-std=c++11-pthread-fPIC - - pcap - ssl - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - -pthread-fPIC - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn - - true - - - - - - src/ttcn/ttcn/TestCodec - - false - true - - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1a/404dc5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1a/404dc5e1978500181c21d10bc58219ba deleted file mode 100644 index 6f224a8..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1a/404dc5e1978500181c21d10bc58219ba +++ /dev/null @@ -1,48 +0,0 @@ -/*! - * \file udp_layer.hh - * \brief Header file for ITS UDP/IP protocol layer definition. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "t_layer.hh" -#include "params.hh" - -class ethernet_layer : public layer { - params _params; //! Layer parameters - -public: //! \publicsection - /*! - * \brief Specialised constructor - * Create a new instance of the ethernet_layer class - * \param[in] p_type \todo - * \param[in] p_param \todo - */ - ethernet_layer(const std::string & p_type, const std::string & param); - /*! - * \brief Default destructor - */ - virtual ~ethernet_layer() {}; - - /*! - * \virtual - * \fn void send_data(OCTETSTRING& data, params& params); - * \brief Send bytes formated data to the lower layers - * \param[in] p_data The data to be sent - * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters - */ - virtual void send_data(OCTETSTRING& data, params& params); - /*! - * \virtual - * \fn void receive_data(OCTETSTRING& data, params& params); - * \brief Receive bytes formated data from the lower layers - * \param[in] p_data The bytes formated data received - * \param[in] p_params Some lower layers parameters values when data was received - */ - virtual void receive_data(OCTETSTRING& data, params& info); -}; // End of class ethernet_layer diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/008e0c58b685001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/008e0c58b685001814de869e8ad08251 deleted file mode 100644 index 34ae5ce..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/008e0c58b685001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 11:31:23 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall-std=c++11-pthread-fPIC - -# Flags for the linker: -LDFLAGS = -pthread-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/b0d6329bc28500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/b0d6329bc28500181dc9eb7ae31560a9 deleted file mode 100644 index 026fc03..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/b0d6329bc28500181dc9eb7ae31560a9 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 12:59:08 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -std=c++11 - -# Flags for the linker: -LDFLAGS = - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/f1a0d5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/f1a0d5e1978500181c21d10bc58219ba deleted file mode 100644 index 3a9df27..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/1e/f1a0d5e1978500181c21d10bc58219ba +++ /dev/null @@ -1,46 +0,0 @@ -#include "LibSip_SIPTypesAndValues.hh" - -#include "sip_codec_register_request.hh" -#include "loggers.hh" - -int sip_codec_register_request::encode (const LibSip__SIPTypesAndValues::REGISTER__Request& msg, OCTETSTRING& data) -{ - loggers::get_instance().log_msg(">>> sip_codec_register_request::encode: ", (const Base_Type&)msg); - - loggers::get_instance().log_msg("<<< sip_codec_register_request::encode: data=", data); - if (_codec.encode((LibSip__SIPTypesAndValues::Request&)msg, data) == -1) { - loggers::get_instance().warning("sip_codec_register_request::encode: Failed to encode message"); - return -1; - } - - return 0; -} - -int sip_codec_register_request::decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::REGISTER__Request& msg, params* p_params) -{ - loggers::get_instance().log_msg(">>> sip_codec_register_request::decode: data=", data); - - // Sanity checks - if (data.lengthof() == 0) { - loggers::get_instance().warning("sip_codec_register_request::decode: Wrong parameters"); - return -1; - } - - // LibSip__SIPTypesAndValues::Request request; - if (_codec.decode(data, (LibSip__SIPTypesAndValues::Request&)msg) == -1) { - // if (_codec.decode(data, request) == -1) { - loggers::get_instance().warning("sip_codec_register_request::decode: Failed to decode message"); - return -1; - } - // msg.requestLine() = request.requestLine(); - // msg.msgHeader() = request.msgHeader(); - // msg.messageBody() = request.messageBody(); - // msg.payload() = request.payload(); - - if (msg.requestLine().method() != LibSip__SIPTypesAndValues::Method::REGISTER__E) { - loggers::get_instance().warning("sip_codec_register_request::decode: Wrong SIP Method, expected REGISTER"); - return -1; - } - - return 0; -} diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/20/c066b61cb985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/20/c066b61cb985001814de869e8ad08251 deleted file mode 100644 index 1de96de..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/20/c066b61cb985001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 11:50:44 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC - -# Flags for the linker: -LDFLAGS = -pthread,-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/23/00493a33b685001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/23/00493a33b685001814de869e8ad08251 deleted file mode 100644 index 8d9519d..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/23/00493a33b685001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 10:59:12 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall -std=c++11 -pthread -fPIC - -# Flags for the linker: -LDFLAGS = -pthread -fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/23/6063cfd3978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/23/6063cfd3978500181c21d10bc58219ba deleted file mode 100644 index 0e6c799b8037bdd3590eabc15371d4b684c01f7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 870912 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

LEI`y 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%0DtnU^2~z! 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 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/24/f0215881bd85001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/24/f0215881bd85001814de869e8ad08251 deleted file mode 100644 index 3d59dfc..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/24/f0215881bd85001814de869e8ad08251 +++ /dev/null @@ -1,45 +0,0 @@ -/*! - * \file sip_layer_factory.hh - * \brief Header file for ITS Sip protocol layer factory. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "layer_stack_builder.hh" - -#include "sip_layer.hh" - -/*! - * \class sip_layer_factory - * \brief This class provides a factory class to create an sip_layer class instance - */ -class sip_layer_factory : public layer_factory { - static sip_layer_factory _f; //! Reference to the unique instance of this class -public: //! \publicsection - /*! - * \brief Default constructor - * Create a new instance of the udp_layer_factory class - * \remark The HTTP layer identifier is HTTP - */ - sip_layer_factory() { - // Register factory - layer_stack_builder::register_layer_factory("HTTP", this); - }; - /*! - * \fn layer* create_layer(const std::string & type, const std::string & param); - * \brief Create the layers stack based on the provided layers stack description - * \param[in] p_type The provided layers stack description - * \param[in] p_params Optional parameters - * \return 0 on success, -1 otherwise - * \inline - */ - inline virtual layer* create_layer(const std::string& p_type, const std::string& p_param){ - return new sip_layer(p_type, p_param); - }; -}; // End of class sip_layer_factory - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/28/f0fbaad8b185001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/28/f0fbaad8b185001814de869e8ad08251 deleted file mode 100644 index ed111ce..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/28/f0fbaad8b185001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 10:58:53 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall -std=c++11 -pthread -fPIC - -# Flags for the linker: -LDFLAGS = -pthread -fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/2c/a079d26dc28500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/2c/a079d26dc28500181dc9eb7ae31560a9 deleted file mode 100644 index 85c1b22..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/2c/a079d26dc28500181dc9eb7ae31560a9 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 12:57:54 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -std=c++11-pthread-fPIC - -# Flags for the linker: -LDFLAGS = -pthread-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/2f/50a9d1e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/2f/50a9d1e1978500181c21d10bc58219ba deleted file mode 100644 index 84bef6d..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/2f/50a9d1e1978500181c21d10bc58219ba +++ /dev/null @@ -1,135 +0,0 @@ -#include "converter.hh" - -converter * converter::instance = NULL; - -uint16_t converter::swap(const uint16_t p_value) { - uint8_t *ptr = (uint8_t *)&p_value; - return (ptr[0] << 8) | ptr[1]; -} - -uint32_t converter::swap(const uint32_t p_value) { - uint8_t *ptr = (uint8_t *)&p_value; - return (ptr[0] << 24) | (ptr[1] << 16) | (ptr[2] << 8) | ptr[3]; -} - -std::string converter::string_to_hexa(const std::string & p_value) { - static const char * const lut = "0123456789ABCDEF"; - - std::string input(p_value); - std::for_each( - input.begin(), - input.end(), - [](char & c) { - c = std::toupper(c); - } - ); - - std::string output; - uint32_t length = p_value.length(); - output.reserve(2 * length); - for (uint32_t i = 0; i < length; ++i) { - const uint8_t c = input[i]; - output.push_back(lut[c >> 4]); - output.push_back(lut[c & 15]); - } // End of 'for' statement - - return output; -} - -std::string converter::bytes_to_hexa(const std::vector & p_value) { - std::ostringstream oss; - oss << std::setfill('0'); - std::for_each( - p_value.begin(), - p_value.end(), - [&oss](uint8_t ch) { - oss << std::hex - << std::setw(2) - << static_cast(ch); - } - ); - return oss.str(); -} - -std::vector converter::hexa_to_bytes(const std::string & p_value) { - static const char * const lut = "0123456789ABCDEF"; - - // Sanity check - std::vector output; - if (p_value.length() & 1) { - return output; - } - - std::string input(p_value); - std::for_each( - input.begin(), - input.end(), - [](char & c) { - c = std::toupper(c); - } - ); - - output.reserve(p_value.length() / 2); - for (uint32_t i = 0; i < p_value.length(); i += 2) { - char msbDigit = input[i]; - const char *msbIndex = std::lower_bound(lut, lut + 16, msbDigit); - if (*msbIndex != msbDigit) { - output.clear(); - return output; - } - char lsbDigit = input[i + 1]; - const char* lsbIndex = std::lower_bound(lut, lut + 16, lsbDigit); - if (*lsbIndex != lsbDigit) { - output.clear(); - return output; - } - output.push_back(((msbIndex - lut) << 4) | (lsbIndex - lut)); - } // End of 'for' statement - - return output; -} - -std::string converter::time_to_string(const time_t p_time) { - struct tm * t = std::localtime(&p_time); - return time_to_string(*t); -} - -std::string converter::time_to_string(const struct tm & p_time) { - char buffer[64] = { 0 }; - // Format: RFC 822, 1036, 1123, 2822 - std::strftime(buffer, 64, "%a, %d %b %Y %H:%M:%S %z", &p_time); - return std::string(buffer); -} - -std::string converter::trim(const std::string& str, const std::string& whitespace) { - size_t strBegin = str.find_first_not_of(whitespace); - if (strBegin == std::string::npos) - return ""; // no content - - size_t strEnd = str.find_last_not_of(whitespace); - size_t strRange = strEnd - strBegin + 1; - - return str.substr(strBegin, strRange); -} - -std::vector converter::split_arguments_line(const std::string & p_value) { - std::vector output; - std::string line = trim(p_value); - if (!line.empty() && (line[0] == '-')) { // Valid command line - size_t current = 0; - size_t next = (size_t)-1; - size_t pos = 0; - do { - if (line[pos + 1] == '-') { // -- - current = pos + 2; - } else { - current = pos + 1; - } - next = line.find("-", current); - std::string str(line.substr(pos, next - pos)); - output.push_back(str); - pos = next; - } while (next != std::string::npos); - } // else, invalid command line - return output; -} diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3/3044c0e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3/3044c0e1978500181c21d10bc58219ba deleted file mode 100644 index 9a6f4b5..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3/3044c0e1978500181c21d10bc58219ba +++ /dev/null @@ -1,63 +0,0 @@ -/*! - * \file codec.hh - * \brief Header file for ITS abstract codec definition. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "params.hh" - -class OCTETSTRING; //! Declare TITAN class -class CHARSTRING; //! Declare TITAN class -class BITSTRING; //! Declare TITAN class - -/*! - * \class codec - * \brief This class provides the interface for all ITS codecs, include UT and AC codecs - * \abstract - */ -template -class codec { -protected: - params* _params; //! Reference to params stack - // \todo Use smart pointer std::unique_ptr - -public: //! \publicsection - /*! - * \fn codec(); - * \brief Default constructor - * \todo Remove logs - */ - explicit codec() : _params(nullptr) { }; - /*! - * \fn ~codec(); - * \brief Default destructor - * \virtual - * \todo Remove logs - */ - virtual ~codec() { }; - /*! - * \fn int encode(const TPDUEnc& msg, OCTETSTRING& data); - * \brief Encode typed message into an octet string - * \param[in] p_message The typed message to be encoded - * \param[out] p_data The encoding result - * \return 0 on success, -1 otherwise - * \pure - */ - virtual int encode(const TPDUEnc& p_message, OCTETSTRING& p_data) = 0; - /*! - * \fn int decode(const OCTETSTRING& p_, TPDUDec& p_message, params* p_params = NULL); - * \brief Encode typed message into an octet string format - * \param[in] p_data The message in its octet string - * \param[out] p_message The decoded typed message - * \return 0 on success, -1 otherwise - * \pure - */ - virtual int decode(const OCTETSTRING& p_, TPDUDec& p_message, params* p_params = NULL) = 0; -}; // End of class codec - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3/c02bd5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3/c02bd5e1978500181c21d10bc58219ba deleted file mode 100644 index 1fae651..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3/c02bd5e1978500181c21d10bc58219ba +++ /dev/null @@ -1,91 +0,0 @@ -/*! - * \file params.cc - * \brief Source file for the parameter dictionary. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#include -#include - -#include "params.hh" -#include "loggers.hh" - -const std::string& params::debug = std::string("debug"); - -const std::string& params::loopback = std::string("loopback"); - -const std::string& params::mac_src = std::string("mac_src"); -const std::string& params::mac_dst = std::string("mac_dst"); -const std::string& params::mac_bc = std::string("mac_bc"); -const std::string& params::eth_type = std::string("eth_type"); - - -const std::string& params::nic = std::string("nic"); -const std::string& params::latitude = std::string("latitude"); -const std::string& params::longitude = std::string("longitude"); - -const std::string& params::server = std::string("server"); -const std::string& params::port = std::string("port"); -const std::string& params::use_ssl = std::string("use_ssl"); - -const std::string& params::sip_url = std::string("sip_url"); -const std::string& params::sip_version = std::string("sip_version"); -const std::string& params::payload = std::string("payload"); - -const std::string& params::codecs = std::string("codecs"); - -void params::convert(params& p_param, const std::string p_parameters) { - // Sanity checks - if (p_parameters.length() == 0) { - return; - } - loggers::get_instance().log(">>> params::convert: %s", p_parameters.c_str()); - // Extract parameters - try { - std::regex rgx ("(\\w+)=(.*?)(,|$)"); - std::sregex_iterator begin(p_parameters.cbegin(), p_parameters.cend(), rgx); - std::sregex_iterator end = std::sregex_iterator(); - for (std::sregex_iterator it = begin; it != end; ++it) { - std::smatch m = *it; - loggers::get_instance().log("params::convert: %d - %s - %s - %s - %s", m.size(), m[0].str().c_str(), m[1].str().c_str(), m[2].str().c_str(), m[3].str().c_str()); - p_param.insert(std::pair(m[1].str(), m[2].str())); - } // End of 'for' statement - } - catch(const std::logic_error& e){ - p_param.clear(); - } - loggers::get_instance().log("<<< params::convert"); -} - -void params::log() const { - loggers::get_instance().log("params::log"); - if (size() == 0) { - loggers::get_instance().log("\tEmpty"); - } else { - for (const_iterator it = cbegin(); it != cend(); ++it) { - loggers::get_instance().log("\t(%s, %s)", it->first.c_str(), it->second.c_str()); - } // End of 'for' statement - } -} - -void params::log() { - loggers::get_instance().log("params::log"); - if (size() == 0) { - loggers::get_instance().log("\tEmpty"); - } else { - for (const_iterator it = cbegin(); it != cend(); ++it) { - loggers::get_instance().log("\t(%s, %s)", it->first.c_str(), it->second.c_str()); - } // End of 'for' statement - } -} - -void params::reset() { - loggers::get_instance().log("params::reset"); - for (iterator it = begin(); it != end(); ++it) { - it->second.clear(); - } // End of 'for' statement -} diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/30/3026c5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/30/3026c5e1978500181c21d10bc58219ba deleted file mode 100644 index 5d67984..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/30/3026c5e1978500181c21d10bc58219ba +++ /dev/null @@ -1,356 +0,0 @@ -/*! - * \file converter.hh - * \brief Helper class for types converter. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include -#include -#include - -#include -#include -#include - -#include -#include -#include // LONG_MAX, LLONG_MAX -#include // time_t, struct tm, difftime, time, mktime - -/*! - * \class converter - * \brief This class provide a set of methods for types conversions - * \remark Singleton pattern - */ -class converter { - - /*! - * \brief Unique static object reference of this class - */ - static converter * instance; - - /*! - * \brief Default private ctor - */ - converter() {}; - /*! - * \brief Default private dtor - */ - ~converter() { - if (instance != NULL) { - delete instance; - instance = NULL; - } - }; - -public: /*! \publicsection */ - /*! - * \brief Public accessor to the single object reference - */ - inline static converter & get_instance() { - if (instance == NULL) instance = new converter(); - return *instance; - }; - -public: - /*! - * \enum endian_t - * \brief Endianess style - */ - typedef enum { - big_endian, - little_endian - } endian_t; - -public: - /*! - * \brief Convert a Binary Coded Decimal value into a binary value - * \param[in] p_value The BDC value - * \return The binary value - * \inline - */ - inline uint8_t bcd_to_bin(const uint8_t p_value) { - return ((p_value / 16 * 10) + (p_value % 16)); - }; - - /*! - * \brief Convert a binary value into a Binary Coded Decimal value - * \param[in] p_value The binary value - * \return The BCD value - * \inline - */ - inline uint8_t bin_to_bcd(const uint8_t p_value) { - return ((p_value / 10 * 16) + (p_value % 10)); - }; - - /*! - * \brief Swap two bytes length value (e.g. 0xCAFE becomes 0xFECA) - * \param[in] p_value The value to swap - * \return The swapped value - * \inline - */ - uint16_t swap(const uint16_t p_value); - inline int16_t swap(const int16_t p_value) { - return static_cast(swap(static_cast(p_value))); - }; - /*! - * \brief Swap four bytes length value (used for littel endian / big endian) - * \param[in] p_value The value to swap - * \return The swapped value - */ - uint32_t swap(const uint32_t p_value); - inline int32_t swap(const int32_t p_value) { - return static_cast(swap(static_cast(p_value))); - }; - - /*! - * \brief Convert a string into an hexadecimal string - * \param[in] p_value The string value - * \return The hexadecimal value - */ - std::string string_to_hexa(const std::string & p_value); - /*! - * \brief Convert a bytes array int32_t an hexadecimal string - * \param[in] p_value The bytes array value - * \return The hexadecimal value - */ - std::string bytes_to_hexa(const std::vector & p_value); - /*! - * \brief Convert an hexadecimal string into a bytes array - * \param[in] p_value The hexadecimal value - * \return The bytes array value - */ - std::vector hexa_to_bytes(const std::string & p_value); - - /*! - * \brief Convert a time in time_t format into a string formated according to RFC 822, 1036, 1123, 2822 - * \param[in] p_time The time to convert in time_t format - * \return The time string formated - * \see http://www.unixtimestamp.com/ - * @code - * std::string result = time_to_string(1489755780); - * result.compare("Fri, 17 Mar 2017 13:03:00 +0000") == 0 // When time zone is set to UTC - * @endcode - * \remark Use commands 1) timedatectl to change your machine timezone (e.g. sudo timedatectl set-timezone UTC to change machine timezone to UTC, 2) timedatectl list-timezones to get the list of the timezones) - */ - std::string time_to_string(const time_t p_time); - /*! - * \brief Convert a time in struct tm format into a string formated according to RFC 822, 1036, 1123, 2822 - * \param[in] p_time The time to convert in struct tm format - * \return The time string formated - * \see http://www.unixtimestamp.com/ - */ - std::string time_to_string(const struct tm & p_time); - - /*! - * \brief Convert a 16-bits integer (int16_t) into a bytes array - * \param[in] p_value The 16-bits integer value - * \param[in] p_endianess Endianess style. Default: big_endian - * \return The bytes array value - */ - inline std::vector short_to_bytes(const int16_t p_value, const endian_t p_endianess = big_endian) const { - std::vector result(sizeof(short), 0x00); - for (int i = sizeof(short) - 1; i >= 0; i--) { - int offset = (sizeof(short) - 1 - i) * 8; - result[i] = static_cast((p_value >> offset) & 0xFF); - } // End of 'for' statement - return result; - }; // End of short_to_bytes - - /*! - * \brief Convert a bytes array into a 16-bits integer (int16_t) - * \param[in] p_value The bytes array - * \param[in] p_endianess Endianess style. Default: big_endian - * \return The 16-bits integer on success, SHRT_MAX on error (wrong bytes array size) - */ - inline int16_t bytes_to_short(const std::vector & p_value, const endian_t p_endianess = big_endian) const { - // Sanity check - if (p_value.size() > sizeof(short)) { - return SHRT_MAX; - } - int16_t value = 0; - for (size_t i = 0; i < p_value.size(); i++) { - value = (value << 8) + (p_value[i] & 0xff); - } // End of 'for' statement - return value; - }; // End of bytes_to_short - - /*! - * \brief Convert a 32-bits integer (int32_t) into a bytes array - * \param[in] p_value The 32-bits integer value - * \param[in] p_endianess Endianess style. Default: big_endian - * \return The bytes array value - */ - inline std::vector int_to_bytes(const int32_t p_value, const endian_t p_endianess = big_endian) const { - /*uint8_t bytes[sizeof(p_value)]; - std::copy( - static_cast(static_cast(&p_value)), - static_cast(static_cast(&p_value)) + sizeof(p_value), - bytes - ); - std::vector result(bytes, bytes + sizeof(bytes) / sizeof(uint8_t));*/ - std::vector result(sizeof(int), 0x00); - for (int i = sizeof(int) - 1; i >= 0; i--) { - int offset = (sizeof(int) - 1 - i) * 8; - result[i] = static_cast((p_value >> offset) & 0xFF); - } // End of 'for' statement - return result; - }; // End of int_to_bytes - - /*! - * \brief Convert a bytes array into a 32-bits integer (int32_t) - * \param[in] p_value The bytes array - * \param[in] p_endianess Endianess style. Default: big_endian - * \return The 32-bits integer on success, LONG_MAX on error (wrong bytes array size) - */ - inline int32_t bytes_to_int(const std::vector & p_value, const endian_t p_endianess = big_endian) const { - // Sanity check - if (p_value.size() > sizeof(int)) { - return INT_MAX; - } - int32_t value = 0; - for (size_t i = 0; i < p_value.size(); i++) { - value = (value << 8) + (p_value[i] & 0xff); - } // End of 'for' statement - return value; - // return *((int *)(&p_value[0])); - }; // End of bytes_to_int - - /*! - * \brief Convert a 64-bits integer (int64_t) into a bytes array - * \param[in] p_value The 64-bits integer value - * \param[in] p_endianess Endianess style. Default: big_endian - * \return The bytes array value - */ - inline std::vector long_to_bytes(const int64_t p_value, const endian_t p_endianess = big_endian) const { - /*uint8_t bytes[sizeof(p_value)]; - std::copy( - static_cast(static_cast(&p_value)), - static_cast(static_cast(&p_value)) + sizeof(p_value), - bytes - ); - std::vector result(bytes, bytes + sizeof(bytes) / sizeof(uint8_t));*/ - std::vector result(sizeof(int64_t), 0x00); - for (int i = sizeof(int64_t) - 1; i >= 0; i--) { - int offset = (sizeof(int64_t) - 1 - i) * 8; - result[i] = static_cast((p_value >> offset) & 0xFF); - } // End of 'for' statement - return result; - }; // End of long_to_bytes - - /*! - * \brief Convert a bytes array into a 64-bits integer (int64_t) - * \param[in] p_value The bytes array - * \param[in] p_endianess Endianess style. Default: big_endian - * \return The 64-bits integer on success, LLONG_MAX on error (wrong bytes array size) - */ - inline int64_t bytes_to_long(const std::vector & p_value, const endian_t p_endianess = big_endian) const { - // Sanity check - if (p_value.size() > sizeof(int64_t)) { - return LLONG_MAX; - } - int64_t value = 0; - for (size_t i = 0; i < p_value.size(); i++) { - value = (value << 8) + (p_value[i] & 0xff); - } // End of 'for' statement - return value; - // return *((long *)(&p_value[0])); - }; // End of bytes_to_long - - /*! - * \brief Convert a float value into a bytes array - * \param[in] p_value The float value - * \return The bytes array value - */ - inline std::vector float_to_bytes(const float p_value) const { - uint8_t bytes[sizeof(p_value)]; - std::copy( - static_cast(static_cast(&p_value)), - static_cast(static_cast(&p_value)) + sizeof(p_value), - bytes - ); - std::vector result(bytes, bytes + sizeof(bytes) / sizeof(uint8_t)); - return result; - }; // End of float_to_long - - /*! - * \brief Convert a bytes array into a float - * \param[in] p_value The bytes array - * \return The float value - */ - inline float bytes_to_float(const std::vector & p_value) const { - return *((float *)(&p_value[0])); - }; // End of bytes_to_float - - /*! - * \brief Convert a string into a bytes array - * \param[in] p_value The string value - * \return The bytes array value - */ - inline std::vector string_to_bytes(const std::string & p_value) const { - return std::vector(p_value.begin(), p_value.end()); - }; // End of string_to_bytes - - /*! - * \brief Convert a bytes array into a string - * \param[in] p_value The bytes array value - * \return The string value - */ - inline std::string bytes_to_string(const std::vector & p_value) const { - return std::string(p_value.begin(), p_value.end()); - }; // End of bytes_to_string - -public: - /*! - * \brief Convert a string into an integer - * \param[in] p_value The string value - * \return The integer value - */ - inline int32_t string_to_int(const std::string & p_value) const { - return std::stoi(p_value); - //return atoi(p_value.c_str()); - }; // End of string_to_int - - /*! - * \brief Convert an integer into a string - * \param[in] p_value The integer value - * \return The string value - */ - inline std::string int_to_string(const int32_t & p_value) const { - std::ostringstream ss; - ss << p_value; - return ss.str(); - }; // End of string_to_bytes - -public: - - /*! - * \brief Returns a copy of the string, with leading and trailing special characters omitted - * \param[in] p_value The string value - * \param[in] p_trim_chars The special characters to be omitted. Default: ' ' and TAB - * \return The new string value - */ - std::string trim(const std::string& p_value, const std::string& p_trim_chars = " \t"); - - /*! - * \brief Convert the provided string into a list of arguments - * \param[in] p_value The string value - * \return The arguments list - * \code{.cc} - * std::string str = "--host localhost --port 12345 --duration -1"; - * std::vector tokens = converter::get_instance().split_arguments_line(str); - * std::clog << "Tokens: " << std::endl; - * for (auto it = tokens.begin(); it != tokens.end(); ++it) { - * std::clog << " " << *it << std::endl; - * } - * \endcode - */ - std::vector split_arguments_line(const std::string & p_value); - -}; // End of class converter diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/30b7da0ab985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/30b7da0ab985001814de869e8ad08251 deleted file mode 100644 index aea0c14..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/30b7da0ab985001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 11:50:43 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC - -# Flags for the linker: -LDFLAGS = -pthread,-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/414dc5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/414dc5e1978500181c21d10bc58219ba deleted file mode 100644 index 099a925..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/414dc5e1978500181c21d10bc58219ba +++ /dev/null @@ -1,45 +0,0 @@ -/*! - * \file ethernet_layer_factory.hh - * \brief Header file for ITS Ethernet protocol layer factory. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "layer_stack_builder.hh" - -#include "ethernet_layer.hh" - -/*! - * \class ethernet_layer_factory - * \brief This class provides a factory class to create an ethernet_layer class instance - */ -class ethernet_layer_factory: public layer_factory { - static ethernet_layer_factory _f; //! Reference to the unique instance of this class -public: //! \publicsection - /*! - * \brief Default constructor - * Create a new instance of the ethernet_layer_factory class - * \remark The ETH layer identifier is ETH - */ - ethernet_layer_factory() { - // register factory - layer_stack_builder::register_layer_factory("ETH", this); - }; - /*! - * \fn layer* create_layer(const std::string & type, const std::string & param); - * \brief Create the layers stack based on the provided layers stack description - * \param[in] p_type The provided layers stack description - * \param[in] p_params Optional parameters - * \return 0 on success, -1 otherwise - * \inline - */ - inline virtual layer* create_layer(const std::string& p_type, const std::string& p_param) { - return new ethernet_layer(p_type, p_param); - }; -}; // End of class ethernet_layer_factory - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/50c9eee5b08500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/50c9eee5b08500181eabf1ba1ea37ea1 deleted file mode 100644 index 92434f7..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/50c9eee5b08500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 08:52:24 UTC 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -std=c++11-pthread-gPIC - -# Flags for the linker: -LDFLAGS = -pthread-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/b07cc1e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/b07cc1e1978500181c21d10bc58219ba deleted file mode 100644 index cbded3b..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/31/b07cc1e1978500181c21d10bc58219ba +++ /dev/null @@ -1,46 +0,0 @@ -/*! - * \file codec_factory.hh - * \brief Header file for ITS abstract protocol codec definition. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include -#include -#include -#include - -#include "codec.hh" - -class Record_Type; //! TITAN forward declaration - -/*! - * \class codec_factory - * \brief This class provides a factory class to create codec class instances - * \abstract - */ -class codec_factory { -public: //! \publicsection - /*! - * \fn codec(); - * \brief Default constructor - */ - codec_factory() { }; - /*! - * \fn codec* create_codec(const std::string & type, const std::string & param); - * \brief Create the codecs stack based on the provided codecs stack description (cf. remark) - * \param[in] p_type The provided codecs stack description - * \param[in] p_params Optional parameters - * \return 0 on success, -1 otherwise - * \remark The description below introduces codecs stack in case of ITS project: - * HTTP(codecs=xml:held_codec;html:html_codec,json:json_codec)/TCP(debug=1,server=httpbin.org,port=80,use_ssl=0) - * \pure - */ - virtual codec* create_codec() = 0; -}; // End of class codec_factory - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/34/70cb39abb08500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/34/70cb39abb08500181eabf1ba1ea37ea1 deleted file mode 100644 index beb5b02..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/34/70cb39abb08500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,131 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - None - -std=c++11 - - pcap - ssl - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn - - true - - - - - - src/ttcn/ttcn/TestCodec - - false - true - - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/38/619bc5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/38/619bc5e1978500181c21d10bc58219ba deleted file mode 100644 index 8f79560..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/38/619bc5e1978500181c21d10bc58219ba +++ /dev/null @@ -1,45 +0,0 @@ -/*! - * \file http_layer_factory.hh - * \brief Header file for ITS Http protocol layer factory. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "layer_stack_builder.hh" - -#include "http_layer.hh" - -/*! - * \class http_layer_factory - * \brief This class provides a factory class to create an http_layer class instance - */ -class http_layer_factory : public layer_factory { - static http_layer_factory _f; //! Reference to the unique instance of this class -public: //! \publicsection - /*! - * \brief Default constructor - * Create a new instance of the tcp_layer_factory class - * \remark The HTTP layer identifier is HTTP - */ - http_layer_factory() { - // Register factory - layer_stack_builder::register_layer_factory("HTTP", this); - }; - /*! - * \fn layer* create_layer(const std::string & type, const std::string & param); - * \brief Create the layers stack based on the provided layers stack description - * \param[in] p_type The provided layers stack description - * \param[in] p_params Optional parameters - * \return 0 on success, -1 otherwise - * \inline - */ - inline virtual layer* create_layer(const std::string& p_type, const std::string& p_param){ - return new http_layer(p_type, p_param); - }; -}; // End of class http_layer_factory - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3a/20d21c389e8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3a/20d21c389e8500181eabf1ba1ea37ea1 deleted file mode 100644 index 4f23035..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3a/20d21c389e8500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,79 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn - - true - - - - - - src/ttcn/ttcn/TestCodec - - false - true - - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3b/c084754b9e8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3b/c084754b9e8500181eabf1ba1ea37ea1 deleted file mode 100644 index 047f896..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3b/c084754b9e8500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,91 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn - - true - - - - - - src/ttcn/ttcn/TestCodec - - false - true - - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3b/f0a0d5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3b/f0a0d5e1978500181c21d10bc58219ba deleted file mode 100644 index 8872a33..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3b/f0a0d5e1978500181c21d10bc58219ba +++ /dev/null @@ -1,264 +0,0 @@ -#if (OSTYPE == linux) - -#include -#include -#include -#include -#include - -#include "Port.hh" - -#include "pcap_layer_factory.hh" - -#include "loggers.hh" - -pcap_layer::pcap_layer(const std::string& p_type, const std::string& param) : layer(p_type), PORT(p_type.c_str()), _params(), _device(NULL), _pcap_h(-1), _thread(NULL), _running(FALSE), _resume(), _sent_file(NULL), _time_key("pcap_layer::Handle_Fd_Event_Readable") { - loggers::get_instance().log(">>> pcap_layer::pcap_layer: %s, %s", to_string().c_str(), param.c_str()); - _fd[0] = -1; _fd[1] = -1; - // Setup parameters - params::convert(_params, param); - //_params.log(); - // Prepare capture processing - char error_buffer[PCAP_ERRBUF_SIZE]; - params::const_iterator it = _params.find(params::nic); - if ((it != _params.end()) && !it->second.empty()) { // Use online capture - // Fetch the network address and network mask - bpf_u_int32 mask; // subnet mask - bpf_u_int32 net; // ip address - if (pcap_lookupnet(_params[params::nic].c_str(), &net, &mask, error_buffer) != 0) { - loggers::get_instance().error("pcap_layer::pcap_layer: pcap_layer::pcap_layer: Failed to fetch newtork address for device %s", _params[params::nic].c_str()); - } - loggers::get_instance().log("pcap_layer::pcap_layer: Device %s Network address: %d", _params[params::nic].c_str(), net); - // Open the device - _device = pcap_open_live(_params[params::nic].c_str(), 65536, 1, 1000, error_buffer); // TODO Replace hard coded values by pcap_layer:: - if (_device == NULL) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to open device %s", _params[params::nic].c_str()); - } // else, continue - // Set non-blocking flag for the polling procedure - if (pcap_setnonblock(_device, 1, error_buffer) != 0) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to set blocking mode: %s", error_buffer); - } - // Retrieve the device file handler - _pcap_h = pcap_get_selectable_fd(_device); - if (_pcap_h == -1) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to get device handler"); - } - } else { - // Check file name - it = _params.find(std::string("file")); - if ((it != _params.cend()) && !it->second.empty()) { // Use offline capture - struct stat s = {0}; - if ((stat(_params["file"].c_str(), &s) != 0) || !S_ISREG(s.st_mode)) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to acces PCAP file %s", _params["file"].c_str()); - } - // File exist, open it - _device = pcap_open_offline(_params["file"].c_str(), error_buffer); - if (_device == NULL) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to open PCAP file %s", error_buffer); - } // else, continue - // Create the dump file for the sent packet based on the openned file name and the current time in milliseconds - it = _params.find("save_mode"); - if ((it != _params.cend()) && (it->second.compare("1") == 0)) { - unsigned long ms = std::chrono::system_clock::now().time_since_epoch() / std::chrono::milliseconds(1); - std::string ext("_" + std::to_string(ms)); - int i = _params["file"].find(".pcap"); - if (i > 0) { - std::string f(_params["file"].substr(0, i) + ext + ".pcap"); - loggers::get_instance().log("pcap_layer::pcap_layer: Save file name: %s", f.c_str()); - if ((_sent_file = pcap_dump_open(_device, f.c_str())) == NULL) { - loggers::get_instance().warning("pcap_layer::pcap_layer: Failed to open save file %s", f.c_str()); - } - } - } // else, nothing to do - } else { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to open PCAP file %s", error_buffer); - } - } - // Setup filter - std::string filter = ""; - it = _params.find(params::mac_src); - if (it == _params.end()) { // Not found - loggers::get_instance().error("pcap_layer::pcap_layer: mac_src parameter not found, cannot continue"); - } else { - // Reject ITS messages sent by this component - filter = "not ether src " + _params[params::mac_src]; - // Accept ITS broadcasted to this componenet - filter += " and (ether dst " + _params[params::mac_src]; - // Accept ITS broadcasted messages - it = _params.find(params::mac_bc); - if ((it != _params.end()) && !it->second.empty()) { - filter += " or ether dst " + it->second + ")"; - } else { - filter += " or ether dst ffffffffffff) "; - } - // Add user defined filter - it = _params.find(std::string("filter")); - if ((it != _params.end()) && !it->second.empty()) { - filter += _params["filter"]; - } // else nothing to do - } - // Log final PCAP filter - loggers::get_instance().user("pcap_layer::pcap_layer: Filter: %s", filter.c_str()); - if (!filter.empty()) { - struct bpf_program f = {0}; - if (pcap_compile(_device, &f, filter.c_str(), 1, PCAP_NETMASK_UNKNOWN) != 0) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to compile PCAP filter"); - } - if (pcap_setfilter(_device, &f) != 0) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to set PCAP filter"); - } - pcap_freecode(&f); - } - // Pass the device file handler to the polling procedure - if (_pcap_h != -1) { // Live capture - Handler_Add_Fd_Read(_pcap_h); - } else { // Offline capture - // Create a pipe - if (pipe2(_fd, O_NONBLOCK) == -1) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to create a pipe: %s", ::strerror(errno)); - } - // Pass the pipe handler to the polling procedure - loggers::get_instance().log("pcap_layer::pcap_layer: Call handler with descriptor %d", _fd[0]); - Handler_Add_Fd_Read(_fd[0]); - // Create the offline reader thread - _thread = new std::thread(&pcap_layer::run, (void *)this); - if (_thread == NULL) { - loggers::get_instance().error("pcap_layer::pcap_layer: Failed to start offline thread"); - } - // Start it to dispatch packet to a pipe - while (_running == FALSE) { - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - } - // Thread was started - loggers::get_instance().log("<<< pcap_layer::pcap_layer"); - } -} // End of ctor - -pcap_layer::~pcap_layer() { - loggers::get_instance().log(">>> pcap_layer::~pcap_layer"); - - if (_device != NULL) { - if (_thread != NULL) { - _running = FALSE; - // Wait for the working thread to terminate - _thread->join(); - loggers::get_instance().log("pcap_layer::~pcap_layer: Thread were stops"); - // Cleanup - delete _thread; - close(_fd[0]); - close(_fd[1]); - } - if (_sent_file != NULL) { - pcap_dump_close(_sent_file); - } - pcap_close(_device); - } -} // End of dtor - -void* pcap_layer::run(void* p_this) { - loggers::get_instance().log(">>> pcap_layer::run"); - - // Pointer the main object - pcap_layer& p = *static_cast(p_this); - // Wait a little bit before to start sending packet - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - params::const_iterator it = p._params.find("frame_offset"); - if ((it != p._params.cend()) && (it->second.compare("0") != 0)) { - // TODO Try t use PCAP filter to start directly to the correct frame offset - /*try { - unsigned int offset = std::stoul(str_dec, &s); - // Skip frames - struct pcap_pkthdr *pkt_header; - const u_char *pkt_data; - int result = pcap_next_ex(_device, &pkt_header, &pkt_data); - if (result == 1) { // Succeed - } - } - catch (invalid_argument& i) { - } - catch (out_of_range& o) { - }*/ - } - // Let's go - p._running = TRUE; - while (p._running) { // Loop while _running flag is up - if (p._resume.try_lock() == TRUE) { // Previous packet was consumed, lock for the next one - write(p._fd[1], "\n", 1); // Any character will do the job - } else { // not ready yet - std::this_thread::sleep_for(std::chrono::milliseconds(100)); - } - } - - loggers::get_instance().log("<<< pcap_layer::run"); - return NULL; -} - -void pcap_layer::send_data(OCTETSTRING& data, params& params) { - loggers::get_instance().log_msg(">>> pcap_layer::send_data: ", data); - - if (_pcap_h != -1) { // Check if offline mode is used - if (pcap_sendpacket(_device, static_cast(data), data.lengthof()) == -1) { - loggers::get_instance().error("pcap_layer::send_data: Failed to send packet: %s", pcap_geterr(_device)); - } - } else if (_sent_file != NULL) { - struct pcap_pkthdr hdr; - std::chrono::system_clock::time_point now = std::chrono::system_clock::now(); - std::chrono::milliseconds ms = std::chrono::duration_cast(now.time_since_epoch()); - hdr.ts.tv_sec = ms.count() / 1000; - hdr.ts.tv_usec = (ms.count() % 1000) * 1000; - hdr.caplen = data.lengthof(); - hdr.len = hdr.caplen; - pcap_dump((u_char *)_sent_file, &hdr, static_cast(data)); - } else { - loggers::get_instance().log("pcap_layer::send_data: Offline mode, operation was skipped"); - } -} - -void pcap_layer::receive_data(OCTETSTRING& data, params& params) { - loggers::get_instance().log(">>> pcap_layer::receive_data: Received %d bytes", data.lengthof()); - loggers::get_instance().log_to_hexa("Packet dump", data); - - // Pass the packet to the upper layers - receive_to_all_layers(data, params); -} - -void pcap_layer::Handle_Fd_Event_Readable(int fd) { - //loggers::get_instance().log(">>> pcap_layer::Handle_Fd_Event_Readable: %d", fd); - - struct pcap_pkthdr *pkt_header; - const u_char *pkt_data; - int result = pcap_next_ex(_device, &pkt_header, &pkt_data); - if (result == 1) { // Succeed - if (pkt_header->caplen > 14) { // Reject too small packet - //loggers::get_instance().log("pcap_layer::Handle_Fd_Event_Readable: %.6d - %d", pkt_header->ts.tv_usec, pkt_header->len); - // Fill parameters from PCAP layer - params params; - params.insert(std::pair(std::string("timestamp"), std::to_string(pkt_header->ts.tv_usec))); - // Process the packet at this layer - OCTETSTRING os(pkt_header->caplen, pkt_data); - //loggers::get_instance().log_to_hexa("pcap_layer::Handle_Fd_Event_Readable: ", os); - // TODO Case of caplen != len !!! - float duration; - loggers::get_instance().set_start_time(_time_key); - this->receive_data(os, params); // TODO Check execution time for decoding operation - loggers::get_instance().set_stop_time(_time_key, duration); - } - } // else, skip the packet - // Specific to offline mode - if (_fd[0] != -1) { // Check if offline mode is used - //loggers::get_instance().log("pcap_layer::Handle_Fd_Event_Readable: Read pipe"); - char c[2]; - read(_fd[0], &c, 1); - if (result == -2) { // End of file, therminate worker thread - _running = FALSE; - } else { // Get next packet - //loggers::get_instance().log("pcap_layer::Handle_Fd_Event_Readable: pcap_next_ex failed: result=%d", result); - _resume.unlock(); - } - } // else, nothing to do -} - -pcap_layer_factory pcap_layer_factory::_f; - -#endif - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3f/00220b34c08500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3f/00220b34c08500181dc9eb7ae31560a9 deleted file mode 100644 index 5a96b0c..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3f/00220b34c08500181dc9eb7ae31560a9 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 12:41:57 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall -std=c++11 -pthread -fPIC - -# Flags for the linker: -LDFLAGS = -pthread -fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3f/80e03c63bc85001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3f/80e03c63bc85001814de869e8ad08251 deleted file mode 100644 index a9b5768..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/3f/80e03c63bc85001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 12:14:39 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC - -# Flags for the linker: -LDFLAGS = -pthread,-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4/50a2d8bbbd85001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4/50a2d8bbbd85001814de869e8ad08251 deleted file mode 100644 index 03ca899..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4/50a2d8bbbd85001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 12:24:17 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC - -# Flags for the linker: -LDFLAGS = -pthread,-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/40/60ac5fd6b185001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/40/60ac5fd6b185001814de869e8ad08251 deleted file mode 100644 index e4390e0..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/40/60ac5fd6b185001814de869e8ad08251 +++ /dev/null @@ -1,257 +0,0 @@ -10:45:33.761930 hc EXECUTOR - TTCN-3 Host Controller started on vagrant. Version: CRL 113 200/6 R4A. -10:45:33.761966 hc EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error -10:45:33.761970 hc EXECUTOR - Maximum number of open file descriptors: 1048576, FD_SETSIZE = 1024 -10:45:33.762077 hc WARNING - Warning: The address of MC was set to a local IP address. This may cause incorrect behavior if a HC from a remote host also connects to MC. -10:45:33.762084 hc EXECUTOR - The address of MC was set to 127.0.0.1:0. -10:45:33.766623 hc EXECUTOR - Connected to MC. -10:45:33.766734 hc EXECUTOR - This host supports UNIX domain sockets for local communication. -10:45:33.767039 hc EXECUTOR - Processing configuration data received from MC. -10:45:33.767643 hc EXECUTOR - Module LibCommon_Sync has the following parameters: { PX_TSYNC_TIME_LIMIT := 120.000000, PX_TSHUT_DOWN_TIME_LIMIT := 120.000000 } -10:45:33.767693 hc EXECUTOR - Module LibCommon_Time has the following parameters: { PX_TDONE := 120.000000, PX_TAC := 30.000000, PX_TNOAC := 10.000000, PX_TWAIT := 120.000000, PX_LOOP := 1.000000 } -10:45:33.767751 hc EXECUTOR - Module LibItsHttp_Pics has the following parameters: { PICS_HEADER_HOST := "ptsv2.com", PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8" } -10:45:33.767802 hc EXECUTOR - Module LibNg112_Pics has the following parameters: { PICS_LIS_IUT := true, PICS_ECRF_IUT := false, PICS_HTTP_POST_REQUEST := true, PICS_LOCATION_HELD := true, PICS_SERVICE_LOST := true, PICS_LIS_REQUEST_URIs := { "/t/9rk8l-1531130342/post", "/t/r143f-1528105031/post", "/t/6ouem-1531201238/post" }, PICS_ECRF_URI := "/service" } -10:45:33.768211 hc EXECUTOR - Module LibNg112_Pixits has the following parameters: { PX_DOUBLE_CMP_EPSILON := 1.000000e-05, PX_DEVICE_URI_SIP := "sip:user@example.net;gr=kjh29x97us97d", PX_DEVICE_URI_TEL := "+436501234567", PX_UNKNOWN_DEVICE_URI := "sip:no_one@example.net;gr=kjh29x97us97d", PX_DEVICE_POSITION := { -34.407000, 150.883000, 24.800000 }, PX_CIRCLE_POS := { 48.215388, 16.290300 }, PX_CIRCLE_UOM := "urn:ogc:def:uom:EPSG::9001", PX_CIRCLE_BASE := 23.600000, PX_SRS_NAME := "urn:ogc:def:crs:EPSG::4326" } -10:45:33.768314 hc EXECUTOR - Module LibSip_PIXITS has the following parameters: { PX_SIP_SDP_USER_NAME := "voicesession", PX_SIP_SDP_SESSION_ID := "30000", PX_SIP_SDP_DYN := "0", PX_SIP_SDP_B_MODIFIER := "AS", PX_SIP_SDP_B_BANDWIDTH := 64, PX_SIP_SDP_ENCODING := "PCMU", PX_SIP_SDP_CLOCKRATE := "8000", PX_MB_LENGTH_FROM_ENCVAL := true, PX_USE_FX_FOR_XML_LENGTH := false, PX_SIP_TRANSPORT := "UDP", PX_SIP_REGISTRATION := false, PX_AUTH_ALGORITHM := "AKAv1-MD5", PX_SIP_REGISTER_AUTHENTICATION_ENABLED := true, PX_SIP_INVITE_AUTHENTICATION_ENABLED := false, PX_SIP_TWAIT := 30.000000, PX_SIP_TACK := 8.000000, PX_SIP_TRESP := 15.000000, PX_SIP_TNOACT := 1.000000, PX_SIP_MIME_BOUNDARY := "boundary1" } -10:45:33.776982 hc EXECUTOR - Initializing module AtsNg112_TestCases. -10:45:33.779421 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibItsHttp_Functions. -10:45:33.779522 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_TypesAndValues. -10:45:33.779574 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0 Initializing module LibItsHttp_MessageBodyTypes. -10:45:33.779628 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XmlMessageBodyTypes. -10:45:33.779687 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XMLTypes. -10:45:33.779762 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held. -10:45:33.779835 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initializing module http_www_w3_org_XML_1998_namespace. -10:45:33.779951 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initializing module XSD. -10:45:33.780058 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn:0 Initializing module UsefulTtcn3Types. -10:45:33.780144 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn:0 Initialization of module UsefulTtcn3Types finished. -10:45:33.780222 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initialization of module XSD finished. -10:45:33.780294 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initialization of module http_www_w3_org_XML_1998_namespace finished. -10:45:33.780406 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held finished. -10:45:33.780480 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held_id. -10:45:33.780546 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held_id finished. -10:45:33.783484 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10. -10:45:33.783580 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy. -10:45:33.783651 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy finished. -10:45:33.783723 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10 finished. -10:45:33.783788 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc. -10:45:33.783895 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc finished. -10:45:33.783963 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf. -10:45:33.784039 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf finished. -10:45:33.784103 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XMLTypes finished. -10:45:33.784164 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XmlMessageBodyTypes finished. -10:45:33.784223 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_BinaryMessageBodyTypes. -10:45:33.784282 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_BinaryMessageBodyTypes finished. -10:45:33.784340 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0 Initialization of module LibItsHttp_MessageBodyTypes finished. -10:45:33.784476 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_TypesAndValues finished. -10:45:33.784527 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_Pics. -10:45:33.784577 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_Pics finished. -10:45:33.784628 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibItsHttp_Functions finished. -10:45:33.784672 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Templates. -10:45:33.784716 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Templates finished. -10:45:33.786933 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Functions. -10:45:33.787029 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_Templates. -10:45:33.787080 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_Templates finished. -10:45:33.787129 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_XmlTemplates. -10:45:33.787178 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape. -10:45:33.787235 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0 Initializing module http_www_opengis_net_pidflo_1_0. -10:45:33.787309 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn:0 Initializing module http_www_opengis_net_gml. -10:45:33.787417 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn:0 Initialization of module http_www_opengis_net_gml finished. -10:45:33.787493 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0 Initialization of module http_www_opengis_net_pidflo_1_0 finished. -10:45:33.787553 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape finished. -10:45:33.787613 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_XmlTemplates finished. -10:45:33.787663 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TypesAndValues. -10:45:33.787712 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TypesAndValues finished. -10:45:33.787760 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TestSystem. -10:45:33.787810 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibItsHttp_TestSystem. -10:45:33.787906 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Sync. -10:45:33.787968 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initializing module LibCommon_AbstractData. -10:45:33.788032 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0->../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initializing module LibCommon_BasicTypesAndValues. -10:45:33.788098 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0->../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initialization of module LibCommon_BasicTypesAndValues finished. -10:45:33.788174 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_AbstractData finished. -10:45:33.788237 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initializing module LibCommon_VerdictControl. -10:45:33.788305 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_VerdictControl finished. -10:45:33.788412 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Sync finished. -10:45:33.788473 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Time. -10:45:33.788533 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Time finished. -10:45:33.788593 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibItsHttp_TestSystem finished. -10:45:33.788648 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibSip_Interface. -10:45:33.788703 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_SIPTypesAndValues. -10:45:33.788765 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0 Initializing module LibSip_MessageBodyTypes. -10:45:33.788828 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SDPTypes. -10:45:33.793010 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn:0 Initializing module LibSip_Common. -10:45:33.793098 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn:0 Initialization of module LibSip_Common finished. -10:45:33.793168 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SDPTypes finished. -10:45:33.793236 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SimpleMsgSummaryTypes. -10:45:33.793697 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SimpleMsgSummaryTypes finished. -10:45:33.793770 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_XMLTypes. -10:45:33.793838 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_resource_lists. -10:45:33.793953 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_resource_lists finished. -10:45:33.794024 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_xcap. -10:45:33.794110 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_ietf_params_xml_ns_common_policy. -10:45:33.801059 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_ietf_params_xml_ns_common_policy finished. -10:45:33.801196 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_oma_xml_xdm_common_policy. -10:45:33.801272 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_oma_xml_xdm_common_policy finished. -10:45:33.801357 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_xcap finished. -10:45:33.801485 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_mcid. -10:45:33.801555 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_mcid finished. -10:45:33.801625 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module NoTargetNamespace. -10:45:33.801696 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module NoTargetNamespace finished. -10:45:33.801777 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_3gpp_ns_cw_1_0. -10:45:33.801858 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_3gpp_ns_cw_1_0 finished. -10:45:33.801958 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_conference_info. -10:45:33.802029 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_conference_info finished. -10:45:33.802098 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_pstn. -10:45:33.802168 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_pstn finished. -10:45:33.802237 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_comm_div_info. -10:45:33.802307 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_comm_div_info finished. -10:45:33.802424 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_reginfo. -10:45:33.802495 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_reginfo finished. -10:45:33.802564 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_XMLTypes finished. -10:45:33.802631 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0 Initialization of module LibSip_MessageBodyTypes finished. -10:45:33.802694 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_SIPTypesAndValues finished. -10:45:33.802754 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_PIXITS. -10:45:33.802814 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initializing module LibCommon_DataStrings. -10:45:33.802928 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initialization of module LibCommon_DataStrings finished. -10:45:33.802992 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_PIXITS finished. -10:45:33.803052 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibSip_Interface finished. -10:45:33.803107 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TestSystem finished. -10:45:33.803163 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Functions finished. -10:45:33.803207 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pics. -10:45:33.803250 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pics finished. -10:45:33.803293 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pixits. -10:45:33.807410 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pixits finished. -10:45:33.807517 hc EXECUTOR - Initialization of module AtsNg112_TestCases finished. -10:45:33.807561 hc EXECUTOR - Initializing module AtsNg112_TestControl. -10:45:33.807603 hc EXECUTOR - Initialization of module AtsNg112_TestControl finished. -10:45:33.807645 hc EXECUTOR - Initializing module LibCommon_TextStrings. -10:45:33.807688 hc EXECUTOR - Initialization of module LibCommon_TextStrings finished. -10:45:33.807730 hc EXECUTOR - Initializing module LibItsHttp_BinaryTemplates. -10:45:33.807772 hc EXECUTOR - Initialization of module LibItsHttp_BinaryTemplates finished. -10:45:33.807814 hc EXECUTOR - Initializing module LibItsHttp_BinaryTypes. -10:45:33.807899 hc EXECUTOR - Initialization of module LibItsHttp_BinaryTypes finished. -10:45:33.807945 hc EXECUTOR - Initializing module LibItsHttp_EncdecDeclarations. -10:45:33.807986 hc EXECUTOR - Initialization of module LibItsHttp_EncdecDeclarations finished. -10:45:33.808028 hc EXECUTOR - Initializing module LibNg112_EncdecDeclarations. -10:45:33.808070 hc EXECUTOR - Initialization of module LibNg112_EncdecDeclarations finished. -10:45:33.808112 hc EXECUTOR - Initializing module LibSip_EncdecDeclarations. -10:45:33.808153 hc EXECUTOR ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn:0 Initializing module LibSip_SMSTypesAndValues. -10:45:33.808198 hc EXECUTOR ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn:0 Initialization of module LibSip_SMSTypesAndValues finished. -10:45:33.808243 hc EXECUTOR - Initialization of module LibSip_EncdecDeclarations finished. -10:45:33.808284 hc EXECUTOR - Initializing module LibSip_Library. -10:45:33.808326 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_SMSTemplates. -10:45:33.808412 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn:0 Initializing module LibSip_SMSFunctions. -10:45:33.808463 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn:0 Initialization of module LibSip_SMSFunctions finished. -10:45:33.810943 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_SMSTemplates finished. -10:45:33.811025 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_Steps. -10:45:33.811070 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn:0 Initializing module LibSip_Templates. -10:45:33.814808 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn:0 Initialization of module LibSip_Templates finished. -10:45:33.819438 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_Steps finished. -10:45:33.819539 hc EXECUTOR - Initialization of module LibSip_Library finished. -10:45:33.819583 hc EXECUTOR - Initializing module PreGenRecordOf. -10:45:33.819624 hc EXECUTOR - Initialization of module PreGenRecordOf finished. -10:45:33.819665 hc EXECUTOR - Initializing module TitanLoggerApi. -10:45:33.819707 hc EXECUTOR - Initialization of module TitanLoggerApi finished. -10:45:33.819749 hc EXECUTOR - Initializing module urn_ietf_params_xml_ns_geopriv_conf. -10:45:33.819792 hc EXECUTOR - Initialization of module urn_ietf_params_xml_ns_geopriv_conf finished. -10:45:33.819919 hc EXECUTOR - Configuration data was processed successfully. -10:45:33.820212 hc EXECUTOR - MTC was created. Process id: 16092. -10:45:33.823667 mtc EXECUTOR - TTCN-3 Main Test Component started on vagrant. Version: CRL 113 200/6 R4A. -10:45:33.823773 mtc EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error -10:45:33.823935 mtc EXECUTOR - Connected to MC. -10:45:33.824010 mtc EXECUTOR - Executing test case TC_LIS_HTTP_POST_BV_01 in module AtsNg112_TestCases. -10:45:33.824104 mtc TESTCASE ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Test case TC_LIS_HTTP_POST_BV_01 started. -10:45:33.824164 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Initializing variables, timers and ports of component type LibItsHttp_TestSystem.HttpComponent inside testcase TC_LIS_HTTP_POST_BV_01. -10:45:33.824251 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port syncPort was started. -10:45:33.824305 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port syncSendPort was started. -10:45:33.824392 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) >>> HttpPort::user_start -10:45:33.824460 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port httpPort was started. -10:45:33.824507 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Component type LibItsHttp_TestSystem.HttpComponent was initialized. -10:45:33.824585 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Mapping port mtc:httpPort to system:httpPort. -10:45:33.824664 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) HttpPort::set_parameter: params=HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) -10:45:33.824739 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> HttpPort::user_map: httpPort -10:45:33.824798 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) HttpPort::user_map: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) -10:45:33.824922 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) -10:45:33.826026 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1, - codecs - held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1 - , -10:45:33.831456 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - server=ptsv2.com, - server - ptsv2.com - , -10:45:33.831590 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - port=80, - port - 80 - , -10:45:33.831666 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - use_ssl=0) - use_ssl - 0) - -10:45:33.831749 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert -10:45:33.831802 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> layer_stack_builder::create_layer_stack: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) -10:45:33.832716 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: 5 - HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/ - HTTP - (codecs=held:held_codec;html:html_codec;json:json_codec) - codecs=held:held_codec;html:html_codec;json:json_codec -10:45:33.832782 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Create layer HTTP, codecs=held:held_codec;html:html_codec;json:json_codec -10:45:33.832844 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> sip_layer::sip_layer: HTTP, codecs=held:held_codec;html:html_codec;json:json_codec -10:45:33.832940 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: codecs=held:held_codec;html:html_codec;json:json_codec -10:45:33.833796 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - codecs=held:held_codec;html:html_codec;json:json_codec - codecs - held:held_codec;html:html_codec;json:json_codec - -10:45:33.833910 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert -10:45:33.833966 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Setup layers for HTTP -10:45:33.834072 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: 5 - TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) - TCP - (debug=1,server=ptsv2.com,port=80,use_ssl=0) - debug=1,server=ptsv2.com,port=80,use_ssl=0 -10:45:33.834131 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Create layer TCP, debug=1,server=ptsv2.com,port=80,use_ssl=0 -10:45:33.834193 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::tcp_layer: TCP, debug=1,server=ptsv2.com,port=80,use_ssl=0 -10:45:33.834246 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: debug=1,server=ptsv2.com,port=80,use_ssl=0 -10:45:33.835116 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - debug=1, - debug - 1 - , -10:45:33.835224 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - server=ptsv2.com, - server - ptsv2.com - , -10:45:33.835301 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - port=80, - port - 80 - , -10:45:33.835408 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - use_ssl=0 - use_ssl - 0 - -10:45:33.835486 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert -10:45:33.835544 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::log -10:45:33.835600 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (debug, 1) -10:45:33.835656 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (port, 80) -10:45:33.835715 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (server, ptsv2.com) -10:45:33.835770 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (use_ssl, 0) -10:45:33.835829 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(server, ptsv2.com) -10:45:33.835918 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(server, ptsv2.com) -10:45:33.835977 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(server, ptsv2.com) -10:45:33.836035 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(server, ptsv2.com) -10:45:33.836094 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(port, 80) -10:45:33.836152 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(port, 80) -10:45:33.836210 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(port, 80) -10:45:33.836275 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(port, 80) -10:45:33.836339 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(use_connection_ASPs, yes) -10:45:33.836423 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(use_connection_ASPs, yes) -10:45:33.836480 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(use_connection_ASPs, yes) -10:45:33.836537 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(use_connection_ASPs, yes) -10:45:33.836593 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(server_backlog, 1024) -10:45:33.836650 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(server_backlog, 1024) -10:45:33.836715 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(server_backlog, 1024) -10:45:33.836769 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(server_backlog, 1024) -10:45:33.836822 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::map_user() -10:45:33.836917 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::map_user() -10:45:33.836972 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::open_client_connection(remoteAddr: ptsv2.com/80, localAddr: UNSPEC/UNSPEC) called -10:45:33.843325 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Number of remote addresses: 8 - -10:45:33.843512 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Using address family for socket 6: IPv4 -10:45:33.843572 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Connecting to server from address UNSPEC/UNSPEC -10:45:33.869099 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Connection established (addr): 10.0.2.15/43136 -> ptsv2.com/80 - -10:45:33.869207 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: connected to: host ptsv2.com service 80 via address family IPv4 - -10:45:33.869249 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_add_peer: Adding client 6 to peer list -10:45:33.869286 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_get_last_peer: Finding last peer of the peer array -10:45:33.869321 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_get_last_peer: No active peer found -10:45:33.869367 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_resize_list: Resizing to 7 -10:45:33.869483 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_resize_list: New length is 7 -10:45:33.869527 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::open_client_connection(). Handler set to socket fd 6 -10:45:33.869565 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::add_user_data: 6 -10:45:33.869604 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) tcp_layer::add_user_data: Non secured mode -10:45:33.869640 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::client_connection_opened: 6 -10:45:33.869677 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Setup layers for TCP -10:45:33.869737 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Port httpPort was mapped to system:httpPort. -10:45:33.869965 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Map operation of mtc:httpPort to system:httpPort finished. -10:45:33.870038 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Connecting ports mtc:syncSendPort and mtc:syncPort. -10:45:33.870128 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Port syncPort has established the connection with local port syncSendPort. -10:45:33.870187 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Port syncSendPort has established the connection with local port syncPort. -10:45:33.870274 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Connect operation on mtc:syncSendPort and mtc:syncPort finished. -10:45:33.870337 mtc DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:28(function:f_cf_01_http_up) Altstep a_cf_01_http_down was activated as default, id 1 -10:45:33.870417 mtc DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:29(function:f_cf_01_http_up) Altstep a_default_requests was activated as default, id 2 -10:45:33.870456 mtc DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:30(function:f_cf_01_http_up) Altstep a_default_responses was activated as default, id 3 -10:45:33.870699 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) Warning: No UTF-8 Byte Order Mark(BOM) detected. It may result decoding errors -10:45:33.871298 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) Sent on httpPort to system @LibItsHttp_TypesAndValues.HttpMessage : { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } -10:45:33.871399 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> HttpPort::outgoing_send: payload={ request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } -10:45:33.871544 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_layer::sendMsg: { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } -10:45:33.871669 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode: { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } -10:45:33.871791 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode_request: { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } -10:45:33.871954 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_request: body: { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } -10:45:33.872019 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode_body: { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } -10:45:33.872083 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_body: # of codecs=0 -10:45:34.860715 hc EXECUTOR - Exit was requested from MC. Terminating HC. -10:45:34.862156 hc EXECUTOR - Disconnected from MC. -10:45:34.862206 hc EXECUTOR - TTCN-3 Host Controller finished. diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/40/906eb7d3978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/40/906eb7d3978500181c21d10bc58219ba deleted file mode 100644 index 4319facdc8b762040abb549af8f720e9fa06e43f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 723336 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

s9}(V-_~f#c#E4P&fAHP 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 $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/44/005c57e0b08500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/44/005c57e0b08500181eabf1ba1ea37ea1 deleted file mode 100644 index e1cf6af..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/44/005c57e0b08500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 08:52:15 UTC 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -std=c++11-pthread-gPIC - -# Flags for the linker: -LDFLAGS = -pthread-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/44/d0f3281cb985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/44/d0f3281cb985001814de869e8ad08251 deleted file mode 100644 index 1c80331..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/44/d0f3281cb985001814de869e8ad08251 +++ /dev/null @@ -1,98 +0,0 @@ -11:31:00.861820 EXECUTOR - TTCN-3 Main Test Component started on vagrant. Version: CRL 113 200/6 R4A. -11:31:00.861932 EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error -11:31:00.862105 EXECUTOR - Connected to MC. -11:31:00.862183 EXECUTOR - Executing test case TC_LIS_HTTP_POST_BV_01 in module AtsNg112_TestCases. -11:31:00.862289 TESTCASE ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Test case TC_LIS_HTTP_POST_BV_01 started. -11:31:00.862347 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Initializing variables, timers and ports of component type LibItsHttp_TestSystem.HttpComponent inside testcase TC_LIS_HTTP_POST_BV_01. -11:31:00.862456 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port syncPort was started. -11:31:00.862547 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port syncSendPort was started. -11:31:00.862601 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) >>> HttpPort::user_start -11:31:00.862651 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port httpPort was started. -11:31:00.862699 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Component type LibItsHttp_TestSystem.HttpComponent was initialized. -11:31:00.862779 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Mapping port mtc:httpPort to system:httpPort. -11:31:00.866560 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) HttpPort::set_parameter: params=HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) -11:31:00.866682 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> HttpPort::user_map: httpPort -11:31:00.866749 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) HttpPort::user_map: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) -11:31:00.866814 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) -11:31:00.867930 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1, - codecs - held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1 - , -11:31:00.868067 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - server=ptsv2.com, - server - ptsv2.com - , -11:31:00.868143 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - port=80, - port - 80 - , -11:31:00.868219 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - use_ssl=0) - use_ssl - 0) - -11:31:00.868299 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert -11:31:00.868353 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> layer_stack_builder::create_layer_stack: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) -11:31:00.869245 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: 5 - HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/ - HTTP - (codecs=held:held_codec;html:html_codec;json:json_codec) - codecs=held:held_codec;html:html_codec;json:json_codec -11:31:00.877679 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Create layer HTTP, codecs=held:held_codec;html:html_codec;json:json_codec -11:31:00.877814 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> sip_layer::sip_layer: HTTP, codecs=held:held_codec;html:html_codec;json:json_codec -11:31:00.877874 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: codecs=held:held_codec;html:html_codec;json:json_codec -11:31:00.878777 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - codecs=held:held_codec;html:html_codec;json:json_codec - codecs - held:held_codec;html:html_codec;json:json_codec - -11:31:00.883125 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert -11:31:00.883244 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Setup layers for HTTP -11:31:00.883357 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: 5 - TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) - TCP - (debug=1,server=ptsv2.com,port=80,use_ssl=0) - debug=1,server=ptsv2.com,port=80,use_ssl=0 -11:31:00.883419 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Create layer TCP, debug=1,server=ptsv2.com,port=80,use_ssl=0 -11:31:00.883527 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::tcp_layer: TCP, debug=1,server=ptsv2.com,port=80,use_ssl=0 -11:31:00.883601 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: debug=1,server=ptsv2.com,port=80,use_ssl=0 -11:31:00.884476 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - debug=1, - debug - 1 - , -11:31:00.884587 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - server=ptsv2.com, - server - ptsv2.com - , -11:31:00.884667 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - port=80, - port - 80 - , -11:31:00.884748 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - use_ssl=0 - use_ssl - 0 - -11:31:00.884820 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert -11:31:00.884876 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::log -11:31:00.884940 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (debug, 1) -11:31:00.885037 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (port, 80) -11:31:00.885091 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (server, ptsv2.com) -11:31:00.885144 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (use_ssl, 0) -11:31:00.885199 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(server, ptsv2.com) -11:31:00.885254 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(server, ptsv2.com) -11:31:00.885308 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(server, ptsv2.com) -11:31:00.885362 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(server, ptsv2.com) -11:31:00.885418 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(port, 80) -11:31:00.885513 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(port, 80) -11:31:00.885571 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(port, 80) -11:31:00.885634 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(port, 80) -11:31:00.885696 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(use_connection_ASPs, yes) -11:31:00.885752 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(use_connection_ASPs, yes) -11:31:00.885805 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(use_connection_ASPs, yes) -11:31:00.885860 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(use_connection_ASPs, yes) -11:31:00.885913 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(server_backlog, 1024) -11:31:00.886009 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(server_backlog, 1024) -11:31:00.886065 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(server_backlog, 1024) -11:31:00.886121 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(server_backlog, 1024) -11:31:00.886175 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::map_user() -11:31:00.886228 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::map_user() -11:31:00.886283 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::open_client_connection(remoteAddr: ptsv2.com/80, localAddr: UNSPEC/UNSPEC) called -11:31:00.888097 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Number of remote addresses: 8 - -11:31:00.891050 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Using address family for socket 6: IPv4 -11:31:00.891178 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Connecting to server from address UNSPEC/UNSPEC -11:31:00.917758 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Connection established (addr): 10.0.2.15/43142 -> ptsv2.com/80 - -11:31:00.917855 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: connected to: host ptsv2.com service 80 via address family IPv4 - -11:31:00.917896 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_add_peer: Adding client 6 to peer list -11:31:00.917932 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_get_last_peer: Finding last peer of the peer array -11:31:00.918055 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_get_last_peer: No active peer found -11:31:00.918093 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_resize_list: Resizing to 7 -11:31:00.918128 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_resize_list: New length is 7 -11:31:00.918172 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::open_client_connection(). Handler set to socket fd 6 -11:31:00.918210 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::add_user_data: 6 -11:31:00.918249 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) tcp_layer::add_user_data: Non secured mode -11:31:00.918285 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::client_connection_opened: 6 -11:31:00.918321 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Setup layers for TCP -11:31:00.918381 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Port httpPort was mapped to system:httpPort. -11:31:00.918603 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Map operation of mtc:httpPort to system:httpPort finished. -11:31:00.918680 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Connecting ports mtc:syncSendPort and mtc:syncPort. -11:31:00.918771 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Port syncPort has established the connection with local port syncSendPort. -11:31:00.918831 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Port syncSendPort has established the connection with local port syncPort. -11:31:00.918919 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Connect operation on mtc:syncSendPort and mtc:syncPort finished. -11:31:00.919041 DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:28(function:f_cf_01_http_up) Altstep a_cf_01_http_down was activated as default, id 1 -11:31:00.919082 DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:29(function:f_cf_01_http_up) Altstep a_default_requests was activated as default, id 2 -11:31:00.919119 DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:30(function:f_cf_01_http_up) Altstep a_default_responses was activated as default, id 3 -11:31:00.919387 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) Warning: No UTF-8 Byte Order Mark(BOM) detected. It may result decoding errors -11:31:00.919998 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) Sent on httpPort to system @LibItsHttp_TypesAndValues.HttpMessage : { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } -11:31:00.920062 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> HttpPort::outgoing_send: payload={ request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } -11:31:00.920207 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_layer::sendMsg: { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } -11:31:00.920333 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode: { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } -11:31:00.920484 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode_request: { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } -11:31:00.920627 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_request: body: { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } -11:31:00.920692 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode_body: { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } -11:31:00.920757 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_body: # of codecs=0 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/45/f0589ff0c08500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/45/f0589ff0c08500181dc9eb7ae31560a9 deleted file mode 100644 index 9b788a8..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/45/f0589ff0c08500181dc9eb7ae31560a9 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 12:47:13 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall-std=c++11-pthread-fPIC - -# Flags for the linker: -LDFLAGS = -pthread-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/48/1149c7e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/48/1149c7e1978500181c21d10bc58219ba deleted file mode 100644 index 9b37f41..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/48/1149c7e1978500181c21d10bc58219ba +++ /dev/null @@ -1,73 +0,0 @@ -/*! - * \file pcap_layer.hh - * \brief Header file for ITS Pcap port layer. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#if (OSTYPE == linux) - -#include -#include -#include - -#include "t_layer.hh" -#include "params.hh" - -class PORT; //! Forward declaration of TITAN class - -/*! - * \class pcap_layer - * \brief This class provides description of ITS PCAP port protocol layer - */ -class pcap_layer : public layer, public PORT { - params _params; //! Layer parameters - pcap_t* _device; //! Device handle - int _pcap_h; //! PCAP instance handle - std::thread* _thread; //! Thread handle, used to read PCAP file instead of NIC, used in file mode - bool _running; //! Set to true when the thread is running, used in file mode - std::mutex _resume; //! \todo - pcap_dumper_t* _sent_file; //! Write file handle to save sent packet, used in file mode - std::string _time_key; //! \todo - int _fd[2]; //! \todo - - static void* run(void* p_this); -public: //! \publicsection - /*! - * \brief Specialised constructor - * Create a new instance of the pcap_layer class - * \param[in] p_type \todo - * \param[in] p_param \todo - */ - pcap_layer(const std::string& p_type, const std::string& param); - /*! - * \brief Default destructor - */ - virtual ~pcap_layer(); - - /*! - * \virtual - * \fn void send_data(OCTETSTRING& data, params& params); - * \brief Send bytes formated data to the lower layers - * \param[in] p_data The data to be sent - * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters - */ - virtual void send_data(OCTETSTRING& data, params& params); - /*! - * \virtual - * \fn void receive_data(OCTETSTRING& data, params& params); - * \brief Receive bytes formated data from the lower layers - * \param[in] p_data The bytes formated data received - * \param[in] p_params Some lower layers parameters values when data was received - */ - virtual void receive_data(OCTETSTRING& data, params& info); - - void Handle_Fd_Event_Readable(int fd); -}; - -#endif diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/48/50efc5ecc08500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/48/50efc5ecc08500181dc9eb7ae31560a9 deleted file mode 100644 index 5a96b0c..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/48/50efc5ecc08500181dc9eb7ae31560a9 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 12:41:57 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall -std=c++11 -pthread -fPIC - -# Flags for the linker: -LDFLAGS = -pthread -fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4c/90c76ed6b185001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4c/90c76ed6b185001814de869e8ad08251 deleted file mode 100644 index cd8e44d..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4c/90c76ed6b185001814de869e8ad08251 +++ /dev/null @@ -1,98 +0,0 @@ -10:45:33.823667 EXECUTOR - TTCN-3 Main Test Component started on vagrant. Version: CRL 113 200/6 R4A. -10:45:33.823773 EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error -10:45:33.823935 EXECUTOR - Connected to MC. -10:45:33.824010 EXECUTOR - Executing test case TC_LIS_HTTP_POST_BV_01 in module AtsNg112_TestCases. -10:45:33.824104 TESTCASE ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Test case TC_LIS_HTTP_POST_BV_01 started. -10:45:33.824164 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Initializing variables, timers and ports of component type LibItsHttp_TestSystem.HttpComponent inside testcase TC_LIS_HTTP_POST_BV_01. -10:45:33.824251 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port syncPort was started. -10:45:33.824305 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port syncSendPort was started. -10:45:33.824392 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) >>> HttpPort::user_start -10:45:33.824460 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port httpPort was started. -10:45:33.824507 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Component type LibItsHttp_TestSystem.HttpComponent was initialized. -10:45:33.824585 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Mapping port mtc:httpPort to system:httpPort. -10:45:33.824664 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) HttpPort::set_parameter: params=HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) -10:45:33.824739 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> HttpPort::user_map: httpPort -10:45:33.824798 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) HttpPort::user_map: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) -10:45:33.824922 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) -10:45:33.826026 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1, - codecs - held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1 - , -10:45:33.831456 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - server=ptsv2.com, - server - ptsv2.com - , -10:45:33.831590 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - port=80, - port - 80 - , -10:45:33.831666 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - use_ssl=0) - use_ssl - 0) - -10:45:33.831749 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert -10:45:33.831802 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> layer_stack_builder::create_layer_stack: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) -10:45:33.832716 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: 5 - HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/ - HTTP - (codecs=held:held_codec;html:html_codec;json:json_codec) - codecs=held:held_codec;html:html_codec;json:json_codec -10:45:33.832782 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Create layer HTTP, codecs=held:held_codec;html:html_codec;json:json_codec -10:45:33.832844 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> sip_layer::sip_layer: HTTP, codecs=held:held_codec;html:html_codec;json:json_codec -10:45:33.832940 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: codecs=held:held_codec;html:html_codec;json:json_codec -10:45:33.833796 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - codecs=held:held_codec;html:html_codec;json:json_codec - codecs - held:held_codec;html:html_codec;json:json_codec - -10:45:33.833910 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert -10:45:33.833966 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Setup layers for HTTP -10:45:33.834072 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: 5 - TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) - TCP - (debug=1,server=ptsv2.com,port=80,use_ssl=0) - debug=1,server=ptsv2.com,port=80,use_ssl=0 -10:45:33.834131 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Create layer TCP, debug=1,server=ptsv2.com,port=80,use_ssl=0 -10:45:33.834193 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::tcp_layer: TCP, debug=1,server=ptsv2.com,port=80,use_ssl=0 -10:45:33.834246 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: debug=1,server=ptsv2.com,port=80,use_ssl=0 -10:45:33.835116 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - debug=1, - debug - 1 - , -10:45:33.835224 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - server=ptsv2.com, - server - ptsv2.com - , -10:45:33.835301 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - port=80, - port - 80 - , -10:45:33.835408 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - use_ssl=0 - use_ssl - 0 - -10:45:33.835486 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert -10:45:33.835544 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::log -10:45:33.835600 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (debug, 1) -10:45:33.835656 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (port, 80) -10:45:33.835715 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (server, ptsv2.com) -10:45:33.835770 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (use_ssl, 0) -10:45:33.835829 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(server, ptsv2.com) -10:45:33.835918 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(server, ptsv2.com) -10:45:33.835977 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(server, ptsv2.com) -10:45:33.836035 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(server, ptsv2.com) -10:45:33.836094 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(port, 80) -10:45:33.836152 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(port, 80) -10:45:33.836210 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(port, 80) -10:45:33.836275 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(port, 80) -10:45:33.836339 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(use_connection_ASPs, yes) -10:45:33.836423 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(use_connection_ASPs, yes) -10:45:33.836480 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(use_connection_ASPs, yes) -10:45:33.836537 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(use_connection_ASPs, yes) -10:45:33.836593 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(server_backlog, 1024) -10:45:33.836650 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(server_backlog, 1024) -10:45:33.836715 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(server_backlog, 1024) -10:45:33.836769 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(server_backlog, 1024) -10:45:33.836822 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::map_user() -10:45:33.836917 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::map_user() -10:45:33.836972 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::open_client_connection(remoteAddr: ptsv2.com/80, localAddr: UNSPEC/UNSPEC) called -10:45:33.843325 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Number of remote addresses: 8 - -10:45:33.843512 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Using address family for socket 6: IPv4 -10:45:33.843572 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Connecting to server from address UNSPEC/UNSPEC -10:45:33.869099 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Connection established (addr): 10.0.2.15/43136 -> ptsv2.com/80 - -10:45:33.869207 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: connected to: host ptsv2.com service 80 via address family IPv4 - -10:45:33.869249 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_add_peer: Adding client 6 to peer list -10:45:33.869286 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_get_last_peer: Finding last peer of the peer array -10:45:33.869321 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_get_last_peer: No active peer found -10:45:33.869367 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_resize_list: Resizing to 7 -10:45:33.869483 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_resize_list: New length is 7 -10:45:33.869527 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::open_client_connection(). Handler set to socket fd 6 -10:45:33.869565 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::add_user_data: 6 -10:45:33.869604 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) tcp_layer::add_user_data: Non secured mode -10:45:33.869640 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::client_connection_opened: 6 -10:45:33.869677 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Setup layers for TCP -10:45:33.869737 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Port httpPort was mapped to system:httpPort. -10:45:33.869965 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Map operation of mtc:httpPort to system:httpPort finished. -10:45:33.870038 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Connecting ports mtc:syncSendPort and mtc:syncPort. -10:45:33.870128 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Port syncPort has established the connection with local port syncSendPort. -10:45:33.870187 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Port syncSendPort has established the connection with local port syncPort. -10:45:33.870274 PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Connect operation on mtc:syncSendPort and mtc:syncPort finished. -10:45:33.870337 DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:28(function:f_cf_01_http_up) Altstep a_cf_01_http_down was activated as default, id 1 -10:45:33.870417 DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:29(function:f_cf_01_http_up) Altstep a_default_requests was activated as default, id 2 -10:45:33.870456 DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:30(function:f_cf_01_http_up) Altstep a_default_responses was activated as default, id 3 -10:45:33.870699 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) Warning: No UTF-8 Byte Order Mark(BOM) detected. It may result decoding errors -10:45:33.871298 PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) Sent on httpPort to system @LibItsHttp_TypesAndValues.HttpMessage : { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } -10:45:33.871399 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> HttpPort::outgoing_send: payload={ request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } -10:45:33.871544 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_layer::sendMsg: { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } -10:45:33.871669 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode: { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } -10:45:33.871791 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode_request: { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } -10:45:33.871954 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_request: body: { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } -10:45:33.872019 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode_body: { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } -10:45:33.872083 DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_body: # of codecs=0 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4c/d0ce10889e8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4c/d0ce10889e8500181eabf1ba1ea37ea1 deleted file mode 100644 index e8c0235..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4c/d0ce10889e8500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,115 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn - - true - - - - - - src/ttcn/ttcn/TestCodec - - false - true - - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4f/20dbb304b985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4f/20dbb304b985001814de869e8ad08251 deleted file mode 100644 index b251177..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/4f/20dbb304b985001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 11:50:32 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC - -# Flags for the linker: -LDFLAGS = -pthread,-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/53/51a9d1e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/53/51a9d1e1978500181c21d10bc58219ba deleted file mode 100644 index d0ba32a..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/53/51a9d1e1978500181c21d10bc58219ba +++ /dev/null @@ -1,82 +0,0 @@ -#include "ethernet_layer_factory.hh" - -#include "loggers.hh" - -ethernet_layer::ethernet_layer(const std::string & p_type, const std::string & param) : layer(p_type), _params() { - loggers::get_instance().log(">>> ethernet_layer::ethernet_layer: %s, %s", to_string().c_str(), param.c_str()); - // Setup parameters - params::convert(_params, param); - params::const_iterator it = _params.find("mac_src"); - if (it == _params.cend()) { - _params.insert(std::pair(std::string("mac_src"), "000000000000")); - } - it = _params.find("mac_bc"); - if (it == _params.cend()) { - _params.insert(std::pair(std::string("mac_bc"), "FFFFFFFFFFFF")); - } - it = _params.find("eth_type"); - if (it == _params.cend()) { - _params.insert(std::pair(std::string("eth_type"), "8947")); - } - //_params.log(); -} - -void ethernet_layer::send_data(OCTETSTRING& data, params& params) { - loggers::get_instance().log_msg(">>> ethernet_layer::send_data: ", data); - - OCTETSTRING eth; - // Destination MAC address - params::const_iterator it = params.find(params::mac_dst); // Find in provided parameters, params - if (it != params.cend()) { - eth = str2oct(CHARSTRING(it->second.c_str())); - } else { - it = _params.find(params::mac_dst); - if (it != _params.cend()) { - eth = str2oct(CHARSTRING(it->second.c_str())); - } else { - eth = str2oct(CHARSTRING(_params[params::mac_bc].c_str())); - } - } - // Source MAC address - it = params.find(params::mac_src); // Find in provided parameters, params - if (it != params.cend()) { - eth += str2oct(CHARSTRING(it->second.c_str())); - } else { - eth += str2oct(CHARSTRING(_params[params::mac_src].c_str())); - } - // Ethernet type - it = params.find(params::eth_type); // Find in layer parameters - if (it != params.cend()) { - eth += str2oct(CHARSTRING(it->second.c_str())); - } else { - eth += str2oct(CHARSTRING(_params[params::eth_type].c_str())); - } - - eth += data; - send_to_all_layers(eth, params); -} - -void ethernet_layer::receive_data(OCTETSTRING& data, params& params) { - loggers::get_instance().log_msg(">>> ethernet_layer::receive_data: ", data); - - // Extract dest MAC Address - OCTETSTRING dst = OCTETSTRING(6, static_cast(data)); - //loggers::get_instance().log_msg("ethernet_layer::receive_data: dst: ", dst); - // Extract source MAC Address - OCTETSTRING src = OCTETSTRING(6, 6 + static_cast(data)); - //loggers::get_instance().log_msg("ethernet_layer::receive_data: src: ", src); - // Extract ethertype - OCTETSTRING proto = OCTETSTRING(2, 2 + static_cast(data)); - //loggers::get_instance().log_msg("ethernet_layer::receive_data: proto: ", proto); - data = OCTETSTRING(data.lengthof() - 14, 14 + static_cast(data)); - // Update params - CHARSTRING s = oct2str(dst); - params.insert(std::pair(params::mac_dst, std::string(static_cast(s)))); - s = oct2str(src); - params.insert(std::pair(params::mac_src, std::string(static_cast(s)))); - //loggers::get_instance().log_msg("ethernet_layer::receive_data: payload for upper layer:", data); - - receive_to_all_layers(data, params); -} - -ethernet_layer_factory ethernet_layer_factory::_f; diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/54/1049c7e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/54/1049c7e1978500181c21d10bc58219ba deleted file mode 100644 index a0c841d..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/54/1049c7e1978500181c21d10bc58219ba +++ /dev/null @@ -1,87 +0,0 @@ -/*! - * \file params.hh - * \brief Header file for the parameter dictionary. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include -#include - - /*! - * \class params - * \brief This class provides basic functionalities for an ITS dictionary - * \implements std::map - */ -class params : public std::map { -public: //! \publicsection - // TODO Use static constexpr (see commsignia_layer.hh) - static const std::string& debug; //! Set to 1 to enable the debug mode - - static const std::string& loopback; - - static const std::string& mac_src; //! Source MAC address parameter name - static const std::string& mac_dst; //! Destination MAC address parameter name - static const std::string& mac_bc; //! Broadcast MAC address parameter name - static const std::string& eth_type; //! Ethernet type parameter name - static const std::string& nic; //! Network Interface Card parameter name - static const std::string& latitude; //! Test system Latitude parameter name - static const std::string& longitude; //! Test system Longitude parameter name - - static const std::string& server; //! HTTP server address (e.g. www.etsi.org) - static const std::string& port; //! Commsignia HTTP server port. Default: 80 - static const std::string& use_ssl; //! Set to 1 to use SSL to communicate with the HTTP server. Default: false - - static const std::string& sip_url; - static const std::string& sip_version; - static const std::string& payload; //! UpperLayer Payload parameter name - - static const std::string& codecs; //! List of codecs to use for HTTP application layers - - /*! - * \brief Default constructor - * Create a new instance of the params class - */ - params() : std::map() {}; - /*! - * \brief Copy constructor - * Clone an existing instance of a params object - * \param[in] p_params An existing instance of a params object - */ - explicit params(const params& p_params) : std::map(p_params.begin(), p_params.end()) { }; - - /*! - * \brief Default destructor - */ - virtual ~params() { }; - - /*! - * \fn void log() const; - * \brief Provides a dump of the content of this instance - */ - void log() const; - /*! - * \fn void log() const; - * \brief Provides a dump of the content of this instance - */ - void log(); - /*! - * \fn void reset(); - * \brief Reset the content of this instance - */ - void reset(); - - /*! - * \static - * \fn void convert(params& p_param, const std::string p_parameters); - * \brief Create a new instance of a params object by converting a list of ITS parameters in string format (t1=v1,T2=(v0,v1v2)...) - * \return a new instance of a params object - */ - static void convert(params& p_param, const std::string p_parameters); -}; // End of class params - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/54/d0d08d049e8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/54/d0d08d049e8500181eabf1ba1ea37ea1 deleted file mode 100644 index 9e66651..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/54/d0d08d049e8500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,58 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn - - true - - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/58/807cbd08b985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/58/807cbd08b985001814de869e8ad08251 deleted file mode 100644 index b251177..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/58/807cbd08b985001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 11:50:32 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC - -# Flags for the linker: -LDFLAGS = -pthread,-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5a/2270c7e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5a/2270c7e1978500181c21d10bc58219ba deleted file mode 100644 index 2f2f946..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5a/2270c7e1978500181c21d10bc58219ba +++ /dev/null @@ -1,62 +0,0 @@ -#pragma once - -#include "codec.hh" -#include "params.hh" - -#include "osipparser2/osip_parser.h" - -class Base_Type; -class TTCN_Typedescriptor_t; -class TTCN_Buffer; - -namespace LibSip__SIPTypesAndValues { - class Request; - class HostPort; - class Authorization; - class From; - class To; - class Via; -} - -namespace LibSip__Common { - class SemicolonParam__List; - class AmpersandParam__List; -} -// class OPTIONAL; -// class OPTIONAL; - -class sip_codec_request: public codec < -LibSip__SIPTypesAndValues::Request, -LibSip__SIPTypesAndValues::Request> -{ -public: - explicit sip_codec_request() : codec() { }; - virtual ~sip_codec_request() { }; - - virtual int encode (const LibSip__SIPTypesAndValues::Request& msg, OCTETSTRING& data); - virtual int decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::Request& msg, params* p_params = NULL); -private: //! \todo Move this section into a sip_codec_helper class, need to decode Response too - void fill_message_body(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request); - void fill_payload(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request); - void fill_uri(LibSip__SIPTypesAndValues::SipUrl& p_sip_url, const osip_uri_t* p_uri); - void fill_request_line(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& msg); - void fill_headers(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& msg); - - - void fill_accept_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Accept& p_accept_header); - void fill_accept_contact_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptContact& p_accept_contact_header); - void fill_accept_encoding_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptEncoding& p_accept_encoding_header); - void fill_accept_language_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptLanguage& p_accept_language_header); - void fill_alert_info_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AlertInfo& p_alert_info_header); - void fill_allow_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Allow& p_allow_header); - void fill_allow_events_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AllowEvents& p_allow_events_header); - void fill_authorization_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Authorization& p_authorization_header); - void fill_from_header(const osip_from_t* p_sip_from, LibSip__SIPTypesAndValues::From& p_from_header); - void fill_to_header(const osip_to_t* p_sip_to, LibSip__SIPTypesAndValues::To& p_to_header); - void fill_via_header(const osip_message_t* p_sip_via_list, LibSip__SIPTypesAndValues::Via& p_via_header); - - void fill_host_port(const char* p_host, const char* p_port, LibSip__SIPTypesAndValues::HostPort& p_host_port); - void fill_semi_colon_params(const osip_list_t& p_sip_list, OPTIONAL& p_list); - void fill_ampersand_params(const osip_list_t& p_sip_list, OPTIONAL& p_list); - -}; // End of class sip_codec_request diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5c/5274c5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5c/5274c5e1978500181c21d10bc58219ba deleted file mode 100644 index 1a0f651..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5c/5274c5e1978500181c21d10bc58219ba +++ /dev/null @@ -1,66 +0,0 @@ -#pragma once - -#include - -#include "codec.hh" -#include "params.hh" - -class Base_Type; -class Record_Type; -class TTCN_Typedescriptor_t; -class TTCN_Buffer; - -namespace LibItsHttp__TypesAndValues { - class HttpMessage; - class Request; - class Response; - class HeaderLines; - class HeaderLine; -} -namespace LibItsHttp__MessageBodyTypes { - class HttpMessageBody; -} - -struct encoding_context { - unsigned int length; - unsigned char is_content_length_present; - - encoding_context() { reset(); }; - void reset() { length = -1; is_content_length_present = 0x00; }; -}; - -struct decoding_context { - unsigned int length; - unsigned char is_binary; - - decoding_context() { reset(); }; - void reset() { length = -1; is_binary = 0x00; }; -}; - -class http_codec: public codec < -LibItsHttp__TypesAndValues::HttpMessage, -LibItsHttp__TypesAndValues::HttpMessage> -{ - encoding_context _ec; - decoding_context _dc; - std::map > > _codecs; -public: - explicit http_codec() : codec(), _ec(), _dc(), _codecs() { }; - virtual ~http_codec() { }; - - virtual int encode (const LibItsHttp__TypesAndValues::HttpMessage&, OCTETSTRING& data); - virtual int decode (const OCTETSTRING& data, LibItsHttp__TypesAndValues::HttpMessage&, params* params = NULL); - - void set_payload_codecs(const std::string& p_codecs); - -private: - int encode_request (const LibItsHttp__TypesAndValues::Request& p_request, TTCN_Buffer& p_encoding_buffer); - int encode_response (const LibItsHttp__TypesAndValues::Response& p_response, TTCN_Buffer& p_encoding_buffer); - int encode_body(const LibItsHttp__MessageBodyTypes::HttpMessageBody& p_message_body, OCTETSTRING& p_encoding_buffer); - - int decode_headers(TTCN_Buffer& decoding_buffer, LibItsHttp__TypesAndValues::HeaderLines& headers); - int decode_header(CHARSTRING& header_line, LibItsHttp__TypesAndValues::HeaderLine& header); - int decode_body(TTCN_Buffer& decoding_buffer, LibItsHttp__MessageBodyTypes::HttpMessageBody& message_body); - int get_line(TTCN_Buffer& buffer, CHARSTRING& to, const bool concatenate_header_lines = false); - -}; // End of class http_codec diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5d/0122c7e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5d/0122c7e1978500181c21d10bc58219ba deleted file mode 100644 index 6f252f5..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5d/0122c7e1978500181c21d10bc58219ba +++ /dev/null @@ -1,289 +0,0 @@ -/*! - * \file loogers.hh - * \brief Header file for the logger framework. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include -#include -#include -#include -#include - -/** -class Base_Type; -class OCTETSTRING; -class TTCN_Buffer; -class TTCN_Logger; -enum TTCN_Logger::Severity; -extern void TTCN_error(const char *err_msg, ...) __attribute__ ((__format__ (__printf__, 1, 2), __noreturn__)); -extern void TTCN_error_begin(const char *err_msg, ...) __attribute__ ((__format__ (__printf__, 1, 2))); -extern void TTCN_error_end() __attribute__ ((__noreturn__)); -void TTCN_warning(const char *warning_msg, ...) __attribute__ ((__format__ (__printf__, 1, 2))); -extern void TTCN_warning_begin(const char *warning_msg, ...) __attribute__ ((__format__ (__printf__, 1, 2))); -extern void TTCN_warning_end(); -**/ - -using namespace std; // Required for isnan() -#include - -/*! - * \class loggers - * \brief This class provides basic functionalities for an ITS dictionary - * \implements Singleton pattern - * \todo Remove reference to TTCN3.hh - */ -class loggers { -private: //! \privatesection - static std::unique_ptr _instance; //! Smart pointer to the unique instance of the logger framework - std::map _times; //! Timer used to measure execution time between calls to methods \loggers::set_start_time and \loggers::set_stop_time - - /*! - * \brief Default constructor - * Create a new instance of the loggers class - * \private - */ - explicit loggers() : _times() { }; - - inline void log_time_exec(const char *p_fmt, ...); - -public: //! \publicsection - /*! - * \brief Default destructor - */ - virtual ~loggers() {}; - - /*! - * \fn static loggers& get_instance(); - * \brief Accessor for the unique instance of the logger framework - * \inline - */ - static inline loggers& get_instance() { return *_instance.get(); }; - - /*! - * \fn void log_to_hexa(const char *p_prompt, const TTCN_Buffer& buffer); - * \brief Hexa dump of the \see TTCN_Buffer buffer - * \param[in] p_prompt Label of the log to be produced - * \param[in] buffer The TTCN_Buffer buffer to dump - * \inline - */ - inline void log_to_hexa(const char *p_prompt, const TTCN_Buffer& buffer); - /*! - * \fn void log_to_hexa(const char *p_prompt, const OCTETSTRING& msg); - * \brief Hexa dump of the \see OCTETSTRING buffer - * \param[in] p_prompt Label of the log to be produced - * \param[in] msg The OCTETSTRING buffer to dump - * \inline - */ - inline void log_to_hexa(const char *p_prompt, const OCTETSTRING& msg); - /*! - * \fn void log_to_hexa(const char *p_prompt, const unsigned char* msg, const size_t msg_size); - * \brief Hexa dump of the provided buffer - * \param[in] p_prompt Label of the log to be produced - * \param[in] msg The buffer to dump - * \inline - */ - inline void log_to_hexa(const char *p_prompt, const unsigned char* msg, const size_t msg_size); - /*! - * \fn void log_msg(const char *p_prompt, const Base_Type& p_type); - * \brief Debug log of TITAN data structures - * \param[in] p_prompt Label of the log to be produced - * \param[in] msg The TITAN data structure to log - * \inline - */ - inline void log_msg(const char *p_prompt, const Base_Type& p_type); - /*! - * \fn void log(const char *p_fmt, ...); - * \brief Debug message based on printf-compliant formatting message - * \param[in] p_fmt The printf-compliant format of the message to log - * \param[in] ... The arguments - * \inline - */ - inline void log(const char *p_fmt, ...); - - /*! - * \fn void user_msg(const char *p_prompt, const Base_Type& p_type); - * \brief User message of TITAN data structures - * \param[in] p_prompt Label of the log to be produced - * \param[in] msg The TITAN data structure to log - * \inline - */ - inline void user_msg(const char *p_prompt, const Base_Type& p_type); - /*! - * \fn void user(const char *p_fmt, ...); - * \brief User message based on printf-compliant formatting message - * \param[in] p_fmt The printf-compliant format of the message to log - * \param[in] ... The arguments - * \inline - */ - inline void user(const char *p_fmt, ...); - - /*! - * \fn void user_msg(const char *p_prompt, const Base_Type& p_type); - * \brief Warning message of TITAN data structures - * \param[in] p_prompt Label of the log to be produced - * \param[in] msg The TITAN data structure to log - * \inline - */ - inline void warning_msg(const char *p_prompt, const Base_Type& p_type); - /*! - * \fn void user(const char *p_fmt, ...); - * \brief Warning message based on printf-compliant formatting message - * \param[in] p_fmt The printf-compliant format of the message to log - * \param[in] ... The arguments - * \inline - */ - inline void warning(const char *p_fmt, ...); - - /*! - * \fn void user(const char *p_fmt, ...); - * \brief Error message based on printf-compliant formatting message - * \param[in] p_fmt The printf-compliant format of the message to log - * \param[in] ... The arguments - * \inline - */ - inline void error(const char *p_fmt, ...); - - /*! - * \fn void set_start_time(std::string& p_time_key); - * \brief Start execution time measurement - * \param[in] p_time_key A timer identifier (any string) - * \inline - */ - inline void set_start_time(std::string& p_time_key); - /*! - * \fn void set_stop_time(std::string& p_time_key, float& p_time); - * \brief Stop execution time measurement - * \param[in] p_time_key The timer identifier provided while calling \see loggers::set_start_time method - * \param[out] p_time The execution time measured in milliseconds - * \inline - */ - inline void set_stop_time(std::string& p_time_key, float& p_time); -}; // End of class loggers - -void loggers::log_to_hexa(const char *p_prompt, const TTCN_Buffer & buffer) -{ - TTCN_Logger::begin_event(TTCN_Logger::DEBUG_UNQUALIFIED); - TTCN_Logger::log_event_str(p_prompt); - buffer.log(); - TTCN_Logger::end_event(); -} - -void loggers::log_to_hexa(const char *p_prompt, const OCTETSTRING& msg) -{ - TTCN_Logger::begin_event(TTCN_Logger::DEBUG_UNQUALIFIED); - TTCN_Logger::log_event_str(p_prompt); - TTCN_Logger::log_event("Size: %d,\nMsg: ", msg.lengthof()); - - for(int i = 0; i < msg.lengthof(); i++) { - TTCN_Logger::log_event(" %02x", ((const unsigned char*)msg)[i]); - } - TTCN_Logger::log_event("\n"); - TTCN_Logger::end_event(); -} - -void loggers::log_to_hexa(const char *p_prompt, const unsigned char* msg, const size_t msg_size) -{ - TTCN_Logger::begin_event(TTCN_Logger::DEBUG_UNQUALIFIED); - TTCN_Logger::log_event_str(p_prompt); - for(size_t i = 0; i < msg_size; i++) { - TTCN_Logger::log_event(" %02x", *(msg + i)); - } - TTCN_Logger::log_event("\n"); - TTCN_Logger::end_event(); -} - -void loggers::log_msg(const char *p_prompt, const Base_Type& p_type) -{ - TTCN_Logger::begin_event(TTCN_Logger::DEBUG_UNQUALIFIED); - TTCN_Logger::log_event_str(p_prompt); - p_type.log(); - TTCN_Logger::end_event(); -} - -void loggers::log(const char *p_fmt, ...) -{ - TTCN_Logger::begin_event(TTCN_Logger::DEBUG_UNQUALIFIED); - va_list args; - va_start(args, p_fmt); - TTCN_Logger::log_event_va_list(p_fmt, args); - va_end(args); - TTCN_Logger::end_event(); -} - -void loggers::user_msg(const char *p_prompt, const Base_Type& p_type) -{ - TTCN_Logger::begin_event(TTCN_Logger::USER_UNQUALIFIED); - TTCN_Logger::log_event_str(p_prompt); - p_type.log(); - TTCN_Logger::end_event(); -} - -void loggers::user(const char *p_fmt, ...) -{ - TTCN_Logger::begin_event(TTCN_Logger::USER_UNQUALIFIED); - va_list args; - va_start(args, p_fmt); - TTCN_Logger::log_event_va_list(p_fmt, args); - va_end(args); - TTCN_Logger::end_event(); -} - -void loggers::warning(const char *p_fmt, ...) -{ - TTCN_Logger::begin_event(TTCN_Logger::WARNING_UNQUALIFIED); - va_list args; - va_start(args, p_fmt); - TTCN_Logger::log_event_va_list(p_fmt, args); - va_end(args); - TTCN_Logger::end_event(); -} - -void loggers::warning_msg(const char *p_prompt, const Base_Type& p_type) -{ - TTCN_Logger::begin_event(TTCN_Logger::WARNING_UNQUALIFIED); - TTCN_Logger::log_event_str(p_prompt); - p_type.log(); - TTCN_Logger::end_event(); -} - -void loggers::error(const char *p_fmt, ...) -{ - va_list args; - va_start(args, p_fmt); - TTCN_error(p_fmt, args); - va_end(args); -} - -void loggers::set_start_time(std::string& p_time_key) -{ - _times[p_time_key] = std::clock(); -} - -void loggers::set_stop_time(std::string& p_time_key, float& p_time) -{ - std::map::iterator it = _times.find(p_time_key); - if (it != loggers::_times.end()) { - p_time = (std::clock() - _times[p_time_key]) * 1000.0 / CLOCKS_PER_SEC; // in milliseconds - _times.erase(it); - loggers::get_instance().log_time_exec("%s: Execution duration: %f ms", p_time_key.c_str(), p_time); - - } -} - -void loggers::log_time_exec(const char *p_fmt, ...) -{ - TTCN_Logger::begin_event(TTCN_Logger::EXECUTOR_RUNTIME); - va_list args; - va_start(args, p_fmt); - TTCN_Logger::log_event_va_list(p_fmt, args); - va_end(args); - TTCN_Logger::end_event(); -} - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5d/8073aed7b185001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5d/8073aed7b185001814de869e8ad08251 deleted file mode 100644 index a855fe0..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5d/8073aed7b185001814de869e8ad08251 +++ /dev/null @@ -1,132 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - None - -Wall -std=c++11 -pthread -fPIC - - pcap - ssl - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - -pthread -fPIC - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn - - true - - - - - - src/ttcn/ttcn/TestCodec - - false - true - - - - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5e/303dd6e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5e/303dd6e1978500181c21d10bc58219ba deleted file mode 100644 index fc4b37f..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5e/303dd6e1978500181c21d10bc58219ba +++ /dev/null @@ -1,988 +0,0 @@ -#include "LibSip_SIPTypesAndValues.hh" -#include "LibSip_Common.hh" - -#include "sip_codec_request.hh" -#include "loggers.hh" - -int sip_codec_request::encode (const LibSip__SIPTypesAndValues::Request& msg, OCTETSTRING& data) -{ - loggers::get_instance().log_msg(">>> sip_codec_request::encode: ", (const Base_Type&)msg); - - osip_message_t* _sip_message; - ::parser_init(); - int result = ::osip_message_init(&_sip_message); - if (result != 0) { - loggers::get_instance().warning("sip_codec_request::encode: Failed to initialise internal data structures"); - return -1; - } - - char* buffer = nullptr; - size_t length = 0; - result = ::osip_message_to_str(_sip_message, &buffer, &length); - if (result != 0) { - loggers::get_instance().warning("sip_codec_request::encode: Failed to encode data structures"); - ::osip_message_free(_sip_message); - return -1; - } - ::osip_message_free(_sip_message); - data = OCTETSTRING(length, (const unsigned char*)buffer); - - loggers::get_instance().log_msg("<<< sip_codec_request::encode: data=", data); - return result; -} - -int sip_codec_request::decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::Request& msg, params* p_params) -{ - loggers::get_instance().log_msg(">>> sip_codec_request::decode: data=", data); - - // Sanity checks - if (data.lengthof() == 0) { - loggers::get_instance().warning("sip_codec_request::decode: Wrong parameters"); - return -1; - } - - osip_message_t* _sip_message; - ::parser_init(); - int result = ::osip_message_init(&_sip_message); - if (result != 0) { - loggers::get_instance().warning("sip_codec_request::decode: Failed to initialise internal data structures"); - return -1; - } - result = ::osip_message_parse(_sip_message, (const char*)static_cast(data), data.lengthof()); - if (result != 0) { - loggers::get_instance().warning("sip_codec_request::decode: Failed to parse SIP message"); - return -1; - } - - // Fill RequestLine - fill_request_line(_sip_message, msg); - - // Fill Headers - fill_headers(_sip_message, msg); - - // Fill MessageBody - fill_message_body(_sip_message, msg); - - // Fill Payload - fill_payload(_sip_message, msg); - - ::osip_message_free(_sip_message); - loggers::get_instance().log_msg("sip_codec_request::decode: ", msg); - - return 0; -} - -void sip_codec_request::fill_headers(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request) -{ - loggers::get_instance().log(">>> sip_codec_request::fill_headers"); - - LibSip__SIPTypesAndValues::MessageHeader headers; - // Fill mandatory fields - // From - LibSip__SIPTypesAndValues::From from_header; - fill_from_header(::osip_message_get_from(p_sip_message), from_header); - if (from_header.is_value()) { - headers.fromField() = from_header; - } else { - headers.fromField().set_to_omit(); - } - // To - LibSip__SIPTypesAndValues::To to_header; - fill_to_header(::osip_message_get_to(p_sip_message), to_header); - if (to_header.is_value()) { - headers.toField() = to_header; - } else { - headers.toField().set_to_omit(); - } - // Via - LibSip__SIPTypesAndValues::Via via_header; - fill_via_header(p_sip_message, via_header); - if (via_header.is_value()) { - headers.via() = via_header; - } else { - headers.via().set_to_omit(); - } - - // Fill Optional fields - LibSip__SIPTypesAndValues::Accept accept_header; - fill_accept_header(p_sip_message, accept_header); - if (accept_header.is_value()) { - headers.accept() = accept_header; - } else { - headers.accept().set_to_omit(); - } - - LibSip__SIPTypesAndValues::AcceptContact accept_contact_header; - fill_accept_contact_header(p_sip_message, accept_contact_header); - if (accept_contact_header.is_value()) { - headers.acceptContact() = accept_contact_header; - } else { - headers.acceptContact().set_to_omit(); - } - - LibSip__SIPTypesAndValues::AcceptEncoding accept_encoding_header; - fill_accept_encoding_header(p_sip_message, accept_encoding_header); - if (accept_encoding_header.is_value()) { - headers.acceptEncoding() = accept_encoding_header; - } else { - headers.acceptEncoding().set_to_omit(); - } - - LibSip__SIPTypesAndValues::AcceptLanguage accept_language_header; - fill_accept_language_header(p_sip_message, accept_language_header); - if (accept_language_header.is_value()) { - headers.acceptLanguage() = accept_language_header; - } else { - headers.acceptLanguage().set_to_omit(); - } - - LibSip__SIPTypesAndValues::AlertInfo alert_info_header; - fill_alert_info_header(p_sip_message, alert_info_header); - if (alert_info_header.is_value()) { - headers.alertInfo() = alert_info_header; - } else { - headers.alertInfo().set_to_omit(); - } - - LibSip__SIPTypesAndValues::Allow allow_header; - fill_allow_header(p_sip_message, allow_header); - if (allow_header.is_value()) { - headers.allow() = allow_header; - } else { - headers.allow().set_to_omit(); - } - - LibSip__SIPTypesAndValues::AllowEvents allow_events_header; - fill_allow_events_header(p_sip_message, allow_events_header); - if (allow_events_header.is_value()) { - headers.allowEvents() = allow_events_header; - } else { - headers.allowEvents().set_to_omit(); - } - - LibSip__SIPTypesAndValues::Authorization authorization_header; - fill_authorization_header(p_sip_message, authorization_header); - if (authorization_header.is_value()) { - headers.authorization() = authorization_header; - } else { - headers.authorization().set_to_omit(); - } - headers.authenticationInfo().set_to_omit(); - headers.callId().set_to_omit(); - headers.callInfo().set_to_omit(); - headers.contact().set_to_omit(); - headers.contentDisposition().set_to_omit(); - headers.contentEncoding().set_to_omit(); - headers.contentLanguage().set_to_omit(); - headers.contentLength().set_to_omit(); - headers.contentType().set_to_omit(); - headers.cSeq().set_to_omit(); - headers.date().set_to_omit(); - headers.errorInfo().set_to_omit(); - headers.event().set_to_omit(); - headers.expires().set_to_omit(); - headers.featureCaps().set_to_omit(); - headers.geolocation().set_to_omit(); - headers.geolocationRouting().set_to_omit(); - headers.historyInfo().set_to_omit(); - headers.infoPackage().set_to_omit(); - headers.inReplyTo().set_to_omit(); - headers.maxForwards().set_to_omit(); - headers.mimeVersion().set_to_omit(); - headers.minExpires().set_to_omit(); - headers.minSE().set_to_omit(); - headers.organization().set_to_omit(); - headers.pAccessNetworkInfo().set_to_omit(); - headers.pAssertedID().set_to_omit(); - headers.pAssertedService().set_to_omit(); - headers.pAssociatedURI().set_to_omit(); - headers.path().set_to_omit(); - headers.pCalledPartyID().set_to_omit(); - headers.pChargingFunctionAddresses().set_to_omit(); - headers.pChargingVector().set_to_omit(); - headers.pEarlyMedia().set_to_omit(); - headers.pMediaAuthorization().set_to_omit(); - headers.pPreferredID().set_to_omit(); - headers.pPreferredService().set_to_omit(); - headers.priority().set_to_omit(); - headers.privacy().set_to_omit(); - headers.proxyAuthenticate().set_to_omit(); - headers.proxyAuthorization().set_to_omit(); - headers.proxyRequire().set_to_omit(); - headers.pVisitedNetworkID().set_to_omit(); - headers.rAck().set_to_omit(); - headers.rSeq().set_to_omit(); - headers.reason().set_to_omit(); - headers.recordRoute().set_to_omit(); - headers.recvInfo().set_to_omit(); - headers.requestDisposition().set_to_omit(); - headers.referredBy().set_to_omit(); - headers.referTo().set_to_omit(); - headers.referSub().set_to_omit(); - headers.replaces().set_to_omit(); - headers.replyTo().set_to_omit(); - headers.require().set_to_omit(); - headers.retryAfter().set_to_omit(); - headers.route().set_to_omit(); - headers.securityClient().set_to_omit(); - headers.securityServer().set_to_omit(); - headers.securityVerify().set_to_omit(); - headers.server().set_to_omit(); - headers.serviceRoute().set_to_omit(); - headers.sessionExpires().set_to_omit(); - headers.sessionId().set_to_omit(); - headers.sipETag().set_to_omit(); - headers.sipIfMatch().set_to_omit(); - headers.subject().set_to_omit(); - headers.subscriptionState().set_to_omit(); - headers.supported().set_to_omit(); - headers.timestamp().set_to_omit(); - headers.unsupported().set_to_omit(); - headers.userToUser().set_to_omit(); - headers.userAgent().set_to_omit(); - headers.warning().set_to_omit(); - headers.wwwAuthenticate().set_to_omit(); - headers.resourcePriority().set_to_omit(); - headers.answerMode().set_to_omit(); - headers.privAnswerMode().set_to_omit(); - headers.targetDialog().set_to_omit(); - headers.pAnswerState().set_to_omit(); - headers.undefinedHeader__List().set_to_omit(); - - p_request.msgHeader() = headers; - - loggers::get_instance().log_msg("sip_codec_request::fill_headers: ", p_request); -} // End of method fill_headers - -void sip_codec_request::fill_message_body(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request) -{ - loggers::get_instance().log(">>> sip_codec_request::fill_message_body"); - - p_request.messageBody().set_to_omit(); -} // End of method fill_message_body - -void sip_codec_request::fill_payload(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request) -{ - loggers::get_instance().log(">>> sip_codec_request::fill_payload"); - - p_request.payload().set_to_omit(); - -} // End of method fill_payload - -void sip_codec_request::fill_semi_colon_params(const osip_list_t& p_sip_list, OPTIONAL& p_list) { - loggers::get_instance().log(">>> sip_codec_request::fill_semi_colon_params"); - - if (::osip_list_size(&p_sip_list) != 0) { - LibSip__Common::SemicolonParam__List l; - for (int i = 0; i < ::osip_list_size(&p_sip_list); i++) { - osip_generic_param_t* p = (osip_generic_param_t*)::osip_list_get(&p_sip_list, i); - loggers::get_instance().log("sip_codec_request::fill_semi_colon_params: After cast: %p", p); - CHARSTRING name(p->gname); - if (p->gvalue == nullptr) { - l[i] = LibSip__Common::GenericParam(name, OPTIONAL(OMIT_VALUE)); - } else { - LibSip__Common::GenValue g; - g.tokenOrHost() = CHARSTRING(p->gvalue); - l[i] = LibSip__Common::GenericParam(name, g); - } - } // End of 'for' statement - p_list = OPTIONAL(l); - } else { - p_list.set_to_omit(); - } - - loggers::get_instance().log_msg("<<< sip_codec_request::fill_semi_colon_params: ", p_list); -} // End of method fill_semi_colon_params - -void sip_codec_request::fill_ampersand_params(const osip_list_t& p_sip_list, OPTIONAL& p_list) { - loggers::get_instance().log(">>> sip_codec_request::fill_ampersand_params"); - - if (::osip_list_size(&p_sip_list) != 0) { - LibSip__Common::AmpersandParam__List l; - for (int i = 0; i < ::osip_list_size(&p_sip_list); i++) { - osip_generic_param_t* p = (osip_generic_param_t*)::osip_list_get(&p_sip_list, i); - loggers::get_instance().log("sip_codec_request::fill_ampersand_params: After cast: %p", p); - CHARSTRING name(p->gname); - if (p->gvalue == nullptr) { - l[i] = LibSip__Common::GenericParam(name, OPTIONAL(OMIT_VALUE)); - } else { - LibSip__Common::GenValue g; - g.tokenOrHost() = CHARSTRING(p->gvalue); - l[i] = LibSip__Common::GenericParam(name, g); - } - } // End of 'for' statement - p_list = OPTIONAL(l); - } else { - p_list.set_to_omit(); - } - - loggers::get_instance().log_msg("<<< sip_codec_request::fill_ampersand_params: ", p_list); -} // End of method fill_ampersand_params - -void sip_codec_request::fill_host_port(const char* p_host, const char* p_port, LibSip__SIPTypesAndValues::HostPort& p_host_port) { - loggers::get_instance().log(">>> sip_codec_request::fill_host_port"); - - if (p_host == nullptr) { - p_host_port.host().set_to_omit(); - } else { - p_host_port.host() = OPTIONAL(CHARSTRING(p_host)); - } - OPTIONAL port; - if (p_port == nullptr) { - p_host_port.portField().set_to_omit(); - } else { - p_host_port.portField() = OPTIONAL(INTEGER(std::stoi(p_port))); - } - - loggers::get_instance().log_msg("<<< sip_codec_request::fill_host_port: ", p_host_port); -} // End of method fill_host_port" - -void sip_codec_request::fill_request_line(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request) -{ - loggers::get_instance().log(">>> sip_codec_request::fill_request_line"); - - LibSip__SIPTypesAndValues::RequestLine request_line; - std::string str(::osip_message_get_method(p_sip_message)); - str += "_E"; - request_line.method() = LibSip__SIPTypesAndValues::Method(LibSip__SIPTypesAndValues::Method::str_to_enum(str.c_str())); - loggers::get_instance().log_msg("sip_codec_request::fill_request_line: Method: ", request_line.method()); - LibSip__SIPTypesAndValues::SipUrl uri; - fill_uri(uri, ::osip_message_get_uri(p_sip_message)); - loggers::get_instance().log_msg("sip_codec_request::fill_request_line: SipUrl: ", uri); - request_line.requestUri() = uri; - request_line.sipVersion() = CHARSTRING(::osip_message_get_version(p_sip_message)); - p_request.requestLine() = request_line; - // FIXME To be continued - - loggers::get_instance().log_msg("<<< sip_codec_request::fill_request_line: ", p_request); -} - -void sip_codec_request::fill_uri(LibSip__SIPTypesAndValues::SipUrl& p_sip_url, const osip_uri_t* p_uri) { - loggers::get_instance().log(">>> sip_codec_request::fill_uri"); - - // Scheme - LibSip__SIPTypesAndValues::UriComponents uri_components; - if (::osip_uri_get_scheme((osip_uri_t*)p_uri) != nullptr) { - p_sip_url.scheme() = CHARSTRING(::osip_uri_get_scheme((osip_uri_t*)p_uri)); - loggers::get_instance().log_msg("sip_codec_request::fill_uri: scheme", p_sip_url.scheme()); - // SipUriComponents - if (strcmp(::osip_uri_get_scheme((osip_uri_t*)p_uri), "sip") == 0) { - // User Info - OPTIONAL user_info; - if (::osip_uri_get_username((osip_uri_t*)p_uri) == nullptr) { - user_info.set_to_omit(); - } else { - OPTIONAL password; - if (::osip_uri_get_password((osip_uri_t*)p_uri) == nullptr) { - password.set_to_omit(); - } else { - password = CHARSTRING(::osip_uri_get_password((osip_uri_t*)p_uri)); - } - LibSip__SIPTypesAndValues::UserInfo u(CHARSTRING(::osip_uri_get_username((osip_uri_t*)p_uri)), password); - user_info = OPTIONAL(u); - } - loggers::get_instance().log_msg("sip_codec_request::fill_uri: user_info: ", user_info); - // HostPort - LibSip__SIPTypesAndValues::HostPort host_port; - fill_host_port(::osip_uri_get_host((osip_uri_t*)p_uri), ::osip_uri_get_port((osip_uri_t*)p_uri), host_port); - loggers::get_instance().log_msg("sip_codec_request::fill_uri: host_port: ", host_port); - uri_components.sip() = LibSip__SIPTypesAndValues::SipUriComponents(user_info, host_port); - } else if (strcmp(::osip_uri_get_scheme((osip_uri_t*)p_uri), "tel") == 0) { - // FIXME uri_components.tel() = LibSip__SIPTypesAndValues::TelUriComponents(user_info, host_port); - } else if (strcmp(::osip_uri_get_scheme((osip_uri_t*)p_uri), "urn") == 0) { - // FIXME uri_components.urn() = LibSip__SIPTypesAndValues::UrnUriComponents(user_info, host_port); - } else { - char *buffer = nullptr; - ::osip_uri_to_str_canonical((osip_uri_t*)p_uri, &buffer); - uri_components.other() = CHARSTRING(buffer); - osip_free(buffer); // Macro - } - } else { - char *buffer = nullptr; - ::osip_uri_to_str_canonical((osip_uri_t*)p_uri, &buffer); - uri_components.other() = CHARSTRING(buffer); - osip_free(buffer); // Macro - } - p_sip_url.components() = uri_components; - // UrlParameters - OPTIONAL params; - fill_semi_colon_params(p_uri->url_params, params); - p_sip_url.urlParameters() = params; - // Headers - OPTIONAL headers; - fill_ampersand_params(p_uri->url_headers, headers); - p_sip_url.headers() = headers; - - loggers::get_instance().log_msg("<<< sip_codec_request::fill_uri: ", p_sip_url); -} // End of method fill_uri - -void sip_codec_request::fill_authorization_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Authorization& p_authorization_header) -{ - loggers::get_instance().log(">>> sip_codec_request::fill_authorization_header: %p", p_sip_message->authorizations); - - // FieldName - p_authorization_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("AUTHORIZATION_E")); - // CredentialsList - LibSip__SIPTypesAndValues::CredentialsList l; - int i = 0; - osip_authorization_t *sip_authorization = nullptr; - while(::osip_message_get_authorization(p_sip_message, i, &sip_authorization) == 0) { - loggers::get_instance().log("sip_codec_request::fill_authorization_header: Processing item #%d", i); - LibSip__SIPTypesAndValues::Credentials v; - LibSip__Common::CommaParam__List cl; - int j = 0; - if (::osip_authorization_get_digest(sip_authorization) != nullptr) { - LibSip__Common::GenValue v; - v.tokenOrHost() = CHARSTRING(::osip_authorization_get_digest(sip_authorization)); - cl[j++] = LibSip__Common::GenericParam( - CHARSTRING("Digest"), - OPTIONAL(v) - ); - } - if (::osip_authorization_get_realm(sip_authorization) != nullptr) { - LibSip__Common::GenValue v; - v.tokenOrHost() = CHARSTRING(::osip_authorization_get_realm(sip_authorization)); - cl[j++] = LibSip__Common::GenericParam( - CHARSTRING("Realm"), - OPTIONAL(v) - ); - } - // FIXME To be contiuened - v.digestResponse() = cl; - l[i++] = v; - } // End of 'while' statement - p_authorization_header.body() = l; - - loggers::get_instance().log_msg("<<< sip_codec_request::fill_authorization_header: ", p_authorization_header); -} // End of method fill_authorization_header - - - - - - - - - - - - - - -void sip_codec_request::fill_from_header(const osip_from_t* p_sip_from, LibSip__SIPTypesAndValues::From& p_from_header) -{ - loggers::get_instance().log("sip_codec_request::fill_from_header"); - - // FieldName - p_from_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("FROM_E")); - // Addr_Union - LibSip__SIPTypesAndValues::SipUrl uri; - fill_uri(uri, ::osip_from_get_url((osip_from_t*)p_sip_from)); - OPTIONAL display_name; - if (::osip_from_get_displayname((osip_from_t*)p_sip_from) != nullptr) { - LibSip__SIPTypesAndValues::DisplayName n; - n.token() = CHARSTRING(::osip_from_get_displayname((osip_from_t*)p_sip_from)); - display_name = OPTIONAL(n); - } else { - display_name.set_to_omit(); - } - LibSip__SIPTypesAndValues::NameAddr name_addr(display_name, uri); - LibSip__SIPTypesAndValues::Addr__Union addr; - addr.nameAddr() = name_addr; - p_from_header.addressField() = addr; - // Params - OPTIONAL params; - fill_semi_colon_params(p_sip_from->gen_params, params); - p_from_header.fromParams() = params; - - loggers::get_instance().log_msg("<<< sip_codec_request::fill_from_header: ", p_from_header); -} // End of method fill_from_header - -void sip_codec_request::fill_to_header(const osip_to_t* p_sip_to, LibSip__SIPTypesAndValues::To& p_to_header) -{ - loggers::get_instance().log("sip_codec_request::fill_to_header"); - - // FieldName - p_to_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("TO_E")); - // Addr_Union - LibSip__SIPTypesAndValues::SipUrl uri; - fill_uri(uri, ::osip_to_get_url((osip_to_t*)p_sip_to)); - OPTIONAL display_name; - if (::osip_to_get_displayname((osip_to_t*)p_sip_to) != nullptr) { - LibSip__SIPTypesAndValues::DisplayName n; - n.token() = CHARSTRING(::osip_to_get_displayname((osip_to_t*)p_sip_to)); - display_name = OPTIONAL(n); - } else { - display_name.set_to_omit(); - } - LibSip__SIPTypesAndValues::NameAddr name_addr(display_name, uri); - LibSip__SIPTypesAndValues::Addr__Union addr; - addr.nameAddr() = name_addr; - p_to_header.addressField() = addr; - // Params - OPTIONAL params; - fill_semi_colon_params(p_sip_to->gen_params, params); - p_to_header.toParams() = params; - - loggers::get_instance().log_msg("<<< sip_codec_request::fill_to_header: ", p_to_header); -} // End of method fill_to_header - -void sip_codec_request::fill_accept_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Accept& p_accept_header) -{ - loggers::get_instance().log(">>> sip_codec_request::fill_accept_header: %p", p_sip_message->vias); - - // FieldName - p_accept_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ACCEPT_E")); - // AcceptArgs - // TODO To be done - p_accept_header.acceptArgs().set_to_omit(); - - loggers::get_instance().log_msg("<<< sip_codec_request::fill_accept_header: ", p_accept_header); -} // End of method fill_accept_header - -void sip_codec_request::fill_accept_contact_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptContact& p_accept_contact_header) -{ - loggers::get_instance().log(">>> sip_codec_request::fill_accept_contact_header: %p", p_sip_message->vias); - - // FieldName - p_accept_contact_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ACCEPT_CONTACT_E")); - // AcRcValue - LibSip__SIPTypesAndValues::AcRcValue__List l; - // TODO To be done - l[0] = LibSip__SIPTypesAndValues::AcRcValue(CHARSTRING("*"), OPTIONAL(OMIT_VALUE)); - p_accept_contact_header.acValues() = l; - - loggers::get_instance().log_msg("<<< sip_codec_request::fill_accept_contact_header: ", p_accept_contact_header); -} // End of method fill_accept_contact_header - -void sip_codec_request::fill_accept_encoding_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptEncoding& p_accept_encoding_header) -{ - loggers::get_instance().log(">>> sip_codec_request::fill_accept_encoding_header: %p", p_sip_message->vias); - - // FieldName - p_accept_encoding_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ACCEPT_ENCODING_E")); - // ContentCoding - p_accept_encoding_header.contentCoding().set_to_omit(); - - loggers::get_instance().log_msg("<<< sip_codec_request::fill_accept_encoding_header: ", p_accept_encoding_header); -} // End of method fill_accept_encoding_header - -void sip_codec_request::fill_accept_language_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptLanguage& p_accept_language_header) -{ - loggers::get_instance().log(">>> sip_codec_request::fill_accept_language_header: %p", p_sip_message->vias); - - // FieldName - p_accept_language_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ACCEPT_LANGUAGE_E")); - // LanguageBody - p_accept_language_header.languageBody().set_to_omit(); - - loggers::get_instance().log_msg("<<< sip_codec_request::fill_accept_language_header: ", p_accept_language_header); -} // End of method fill_accept_language_header - -void sip_codec_request::fill_alert_info_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AlertInfo& p_alert_info_header) -{ - loggers::get_instance().log(">>> sip_codec_request::fill_alert_info_header: %p", p_sip_message->vias); - - // FieldName - p_alert_info_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ALERT_INFO_E")); - // AlertInfoBody - p_alert_info_header.alertInfoBody().set_to_omit(); - - loggers::get_instance().log_msg("<<< sip_codec_request::fill_alert_info_header: ", p_alert_info_header); -} // End of method fill_alert_info_header - -void sip_codec_request::fill_allow_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Allow& p_allow_header) -{ - loggers::get_instance().log(">>> sip_codec_request::fill_allow_header: %p", p_sip_message->vias); - - // FieldName - p_allow_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ALLOW_E")); - // Methods - p_allow_header.methods().set_to_omit(); - - loggers::get_instance().log_msg("<<< sip_codec_request::fill_allow_header: ", p_allow_header); -} // End of method fill_allow_header - -void sip_codec_request::fill_allow_events_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AllowEvents& p_allow_events_header) -{ - loggers::get_instance().log(">>> sip_codec_request::fill_allow_events_header: %p", p_sip_message->vias); - - // FieldName - p_allow_events_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ALLOW_EVENTS_E")); - // EventTypes - LibSip__SIPTypesAndValues::EventType__List l; - // TODO To be done - l[0] = CHARSTRING("*"); - p_allow_events_header.eventTypes() = l; - - loggers::get_instance().log_msg("<<< sip_codec_request::fill_allow_events_header: ", p_allow_events_header); -} // End of method fill_allow_events_header - -void sip_codec_request::fill_via_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Via& p_via_header) -{ - loggers::get_instance().log(">>> sip_codec_request::fill_via_header: %p", p_sip_message->vias); - - // FieldName - p_via_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("VIA_E")); - // ViaBody - LibSip__SIPTypesAndValues::ViaBody__List l; - int i = 0; - osip_via_t *sip_via = nullptr; - while(::osip_message_get_via(p_sip_message, i, &sip_via) == 0) { - loggers::get_instance().log("sip_codec_request::fill_via_header: Processing item #%d", i); - LibSip__SIPTypesAndValues::ViaBody v; - v.sentProtocol() = LibSip__SIPTypesAndValues::SentProtocol( - CHARSTRING(::via_get_protocol(sip_via)), - CHARSTRING(::via_get_version(sip_via)), - CHARSTRING(::via_get_comment(sip_via)) - ); - OPTIONAL host_port; - fill_host_port(::via_get_host(sip_via), ::via_get_port(sip_via), host_port); - loggers::get_instance().log_msg("sip_codec_request::fill_via_uri: host_port: ", host_port); - v.sentBy() = host_port; - OPTIONAL params; - fill_semi_colon_params(sip_via->via_params, params); - v.viaParams() = params; - l[i++] = v; - } // End of 'while' statement - p_via_header.viaBody() = l; - - loggers::get_instance().log_msg("<<< sip_codec_request::fill_via_header: ", p_via_header); -} // End of method fill_via_header - -/*** - - inline OPTIONAL& authenticationInfo() - {return field_authenticationInfo;} - inline const OPTIONAL& authenticationInfo() const - {return field_authenticationInfo;} - inline OPTIONAL& authorization() - {return field_authorization;} - inline const OPTIONAL& authorization() const - {return field_authorization;} - inline OPTIONAL& callId() - {return field_callId;} - inline const OPTIONAL& callId() const - {return field_callId;} - inline OPTIONAL& callInfo() - {return field_callInfo;} - inline const OPTIONAL& callInfo() const - {return field_callInfo;} - inline OPTIONAL& contact() - {return field_contact;} - inline const OPTIONAL& contact() const - {return field_contact;} - inline OPTIONAL& contentDisposition() - {return field_contentDisposition;} - inline const OPTIONAL& contentDisposition() const - {return field_contentDisposition;} - inline OPTIONAL& contentEncoding() - {return field_contentEncoding;} - inline const OPTIONAL& contentEncoding() const - {return field_contentEncoding;} - inline OPTIONAL& contentLanguage() - {return field_contentLanguage;} - inline const OPTIONAL& contentLanguage() const - {return field_contentLanguage;} - inline OPTIONAL& contentLength() - {return field_contentLength;} - inline const OPTIONAL& contentLength() const - {return field_contentLength;} - inline OPTIONAL& contentType() - {return field_contentType;} - inline const OPTIONAL& contentType() const - {return field_contentType;} - inline OPTIONAL& cSeq() - {return field_cSeq;} - inline const OPTIONAL& cSeq() const - {return field_cSeq;} - inline OPTIONAL& date() - {return field_date;} - inline const OPTIONAL& date() const - {return field_date;} - inline OPTIONAL& diversion() - {return field_diversion;} - inline const OPTIONAL& diversion() const - {return field_diversion;} - inline OPTIONAL& errorInfo() - {return field_errorInfo;} - inline const OPTIONAL& errorInfo() const - {return field_errorInfo;} - inline OPTIONAL& event() - {return field_event;} - inline const OPTIONAL& event() const - {return field_event;} - inline OPTIONAL& expires() - {return field_expires;} - inline const OPTIONAL& expires() const - {return field_expires;} - inline OPTIONAL& featureCaps() - {return field_featureCaps;} - inline const OPTIONAL& featureCaps() const - {return field_featureCaps;} - inline OPTIONAL& geolocation() - {return field_geolocation;} - inline const OPTIONAL& geolocation() const - {return field_geolocation;} - inline OPTIONAL& geolocationRouting() - {return field_geolocationRouting;} - inline const OPTIONAL& geolocationRouting() const - {return field_geolocationRouting;} - inline OPTIONAL& historyInfo() - {return field_historyInfo;} - inline const OPTIONAL& historyInfo() const - {return field_historyInfo;} - inline OPTIONAL& infoPackage() - {return field_infoPackage;} - inline const OPTIONAL& infoPackage() const - {return field_infoPackage;} - inline OPTIONAL& inReplyTo() - {return field_inReplyTo;} - inline const OPTIONAL& inReplyTo() const - {return field_inReplyTo;} - inline OPTIONAL& maxForwards() - {return field_maxForwards;} - inline const OPTIONAL& maxForwards() const - {return field_maxForwards;} - inline OPTIONAL& mimeVersion() - {return field_mimeVersion;} - inline const OPTIONAL& mimeVersion() const - {return field_mimeVersion;} - inline OPTIONAL& minExpires() - {return field_minExpires;} - inline const OPTIONAL& minExpires() const - {return field_minExpires;} - inline OPTIONAL& minSE() - {return field_minSE;} - inline const OPTIONAL& minSE() const - {return field_minSE;} - inline OPTIONAL& organization() - {return field_organization;} - inline const OPTIONAL& organization() const - {return field_organization;} - inline OPTIONAL& pAccessNetworkInfo() - {return field_pAccessNetworkInfo;} - inline const OPTIONAL& pAccessNetworkInfo() const - {return field_pAccessNetworkInfo;} - inline OPTIONAL& pAssertedID() - {return field_pAssertedID;} - inline const OPTIONAL& pAssertedID() const - {return field_pAssertedID;} - inline OPTIONAL& pAssertedService() - {return field_pAssertedService;} - inline const OPTIONAL& pAssertedService() const - {return field_pAssertedService;} - inline OPTIONAL& pAssociatedURI() - {return field_pAssociatedURI;} - inline const OPTIONAL& pAssociatedURI() const - {return field_pAssociatedURI;} - inline OPTIONAL& path() - {return field_path;} - inline const OPTIONAL& path() const - {return field_path;} - inline OPTIONAL& pCalledPartyID() - {return field_pCalledPartyID;} - inline const OPTIONAL& pCalledPartyID() const - {return field_pCalledPartyID;} - inline OPTIONAL& pChargingFunctionAddresses() - {return field_pChargingFunctionAddresses;} - inline const OPTIONAL& pChargingFunctionAddresses() const - {return field_pChargingFunctionAddresses;} - inline OPTIONAL& pChargingVector() - {return field_pChargingVector;} - inline const OPTIONAL& pChargingVector() const - {return field_pChargingVector;} - inline OPTIONAL& pEarlyMedia() - {return field_pEarlyMedia;} - inline const OPTIONAL& pEarlyMedia() const - {return field_pEarlyMedia;} - inline OPTIONAL& pMediaAuthorization() - {return field_pMediaAuthorization;} - inline const OPTIONAL& pMediaAuthorization() const - {return field_pMediaAuthorization;} - inline OPTIONAL& pPreferredID() - {return field_pPreferredID;} - inline const OPTIONAL& pPreferredID() const - {return field_pPreferredID;} - inline OPTIONAL& pPreferredService() - {return field_pPreferredService;} - inline const OPTIONAL& pPreferredService() const - {return field_pPreferredService;} - inline OPTIONAL& priority() - {return field_priority;} - inline const OPTIONAL& priority() const - {return field_priority;} - inline OPTIONAL& privacy() - {return field_privacy;} - inline const OPTIONAL& privacy() const - {return field_privacy;} - inline OPTIONAL& proxyAuthenticate() - {return field_proxyAuthenticate;} - inline const OPTIONAL& proxyAuthenticate() const - {return field_proxyAuthenticate;} - inline OPTIONAL& proxyAuthorization() - {return field_proxyAuthorization;} - inline const OPTIONAL& proxyAuthorization() const - {return field_proxyAuthorization;} - inline OPTIONAL& proxyRequire() - {return field_proxyRequire;} - inline const OPTIONAL& proxyRequire() const - {return field_proxyRequire;} - inline OPTIONAL& pVisitedNetworkID() - {return field_pVisitedNetworkID;} - inline const OPTIONAL& pVisitedNetworkID() const - {return field_pVisitedNetworkID;} - inline OPTIONAL& rAck() - {return field_rAck;} - inline const OPTIONAL& rAck() const - {return field_rAck;} - inline OPTIONAL& rSeq() - {return field_rSeq;} - inline const OPTIONAL& rSeq() const - {return field_rSeq;} - inline OPTIONAL& reason() - {return field_reason;} - inline const OPTIONAL& reason() const - {return field_reason;} - inline OPTIONAL& recordRoute() - {return field_recordRoute;} - inline const OPTIONAL& recordRoute() const - {return field_recordRoute;} - inline OPTIONAL& recvInfo() - {return field_recvInfo;} - inline const OPTIONAL& recvInfo() const - {return field_recvInfo;} - inline OPTIONAL& requestDisposition() - {return field_requestDisposition;} - inline const OPTIONAL& requestDisposition() const - {return field_requestDisposition;} - inline OPTIONAL& referredBy() - {return field_referredBy;} - inline const OPTIONAL& referredBy() const - {return field_referredBy;} - inline OPTIONAL& referTo() - {return field_referTo;} - inline const OPTIONAL& referTo() const - {return field_referTo;} - inline OPTIONAL& referSub() - {return field_referSub;} - inline const OPTIONAL& referSub() const - {return field_referSub;} - inline OPTIONAL& replaces() - {return field_replaces;} - inline const OPTIONAL& replaces() const - {return field_replaces;} - inline OPTIONAL& replyTo() - {return field_replyTo;} - inline const OPTIONAL& replyTo() const - {return field_replyTo;} - inline OPTIONAL& require() - {return field_require;} - inline const OPTIONAL& require() const - {return field_require;} - inline OPTIONAL& retryAfter() - {return field_retryAfter;} - inline const OPTIONAL& retryAfter() const - {return field_retryAfter;} - inline OPTIONAL& route() - {return field_route;} - inline const OPTIONAL& route() const - {return field_route;} - inline OPTIONAL& securityClient() - {return field_securityClient;} - inline const OPTIONAL& securityClient() const - {return field_securityClient;} - inline OPTIONAL& securityServer() - {return field_securityServer;} - inline const OPTIONAL& securityServer() const - {return field_securityServer;} - inline OPTIONAL& securityVerify() - {return field_securityVerify;} - inline const OPTIONAL& securityVerify() const - {return field_securityVerify;} - inline OPTIONAL& server() - {return field_server;} - inline const OPTIONAL& server() const - {return field_server;} - inline OPTIONAL& serviceRoute() - {return field_serviceRoute;} - inline const OPTIONAL& serviceRoute() const - {return field_serviceRoute;} - inline OPTIONAL& sessionExpires() - {return field_sessionExpires;} - inline const OPTIONAL& sessionExpires() const - {return field_sessionExpires;} - inline OPTIONAL& sessionId() - {return field_sessionId;} - inline const OPTIONAL& sessionId() const - {return field_sessionId;} - inline OPTIONAL& sipETag() - {return field_sipETag;} - inline const OPTIONAL& sipETag() const - {return field_sipETag;} - inline OPTIONAL& sipIfMatch() - {return field_sipIfMatch;} - inline const OPTIONAL& sipIfMatch() const - {return field_sipIfMatch;} - inline OPTIONAL& subject() - {return field_subject;} - inline const OPTIONAL& subject() const - {return field_subject;} - inline OPTIONAL& subscriptionState() - {return field_subscriptionState;} - inline const OPTIONAL& subscriptionState() const - {return field_subscriptionState;} - inline OPTIONAL& supported() - {return field_supported;} - inline const OPTIONAL& supported() const - {return field_supported;} - inline OPTIONAL& timestamp() - {return field_timestamp;} - inline const OPTIONAL& timestamp() const - {return field_timestamp;} - inline OPTIONAL& unsupported() - {return field_unsupported;} - inline const OPTIONAL& unsupported() const - {return field_unsupported;} - inline OPTIONAL& userToUser() - {return field_userToUser;} - inline const OPTIONAL& userToUser() const - {return field_userToUser;} - inline OPTIONAL& userAgent() - {return field_userAgent;} - inline const OPTIONAL& userAgent() const - {return field_userAgent;} - inline OPTIONAL& warning() - {return field_warning;} - inline const OPTIONAL& warning() const - {return field_warning;} - inline OPTIONAL& wwwAuthenticate() - {return field_wwwAuthenticate;} - inline const OPTIONAL& wwwAuthenticate() const - {return field_wwwAuthenticate;} - inline OPTIONAL& resourcePriority() - {return field_resourcePriority;} - inline const OPTIONAL& resourcePriority() const - {return field_resourcePriority;} - inline OPTIONAL& answerMode() - {return field_answerMode;} - inline const OPTIONAL& answerMode() const - {return field_answerMode;} - inline OPTIONAL& privAnswerMode() - {return field_privAnswerMode;} - inline const OPTIONAL& privAnswerMode() const - {return field_privAnswerMode;} - inline OPTIONAL& targetDialog() - {return field_targetDialog;} - inline const OPTIONAL& targetDialog() const - {return field_targetDialog;} - inline OPTIONAL& pAnswerState() - {return field_pAnswerState;} - inline const OPTIONAL& pAnswerState() const - {return field_pAnswerState;} - inline OPTIONAL& undefinedHeader__List() - {return field_undefinedHeader__List;} - inline const OPTIONAL& undefinedHeader__List() const - {return field_undefinedHeader__List;} - -***/ diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5f/609bc5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5f/609bc5e1978500181c21d10bc58219ba deleted file mode 100644 index 0a31e00..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/5f/609bc5e1978500181c21d10bc58219ba +++ /dev/null @@ -1,82 +0,0 @@ -/*! - * \file http_layer.hh - * \brief Header file for ITS HTTP protocol layer. - * \author ETSI STF549 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include - -#include "t_layer.hh" - -#include "http_codec.hh" - -namespace LibItsHttp__TestSystem { - class HttpPort; -} - -namespace LibItsHttp__TypesAndValues { - class HttpMessage; //! Forward declaration of TITAN class -} - -class OCTETSTRING; //! Forward declaration of TITAN class - -/*! - * \class http_layer - * \brief This class provides a factory class to create an tcp_layer class instance - */ -class http_layer : public t_layer { - params _params; - http_codec _codec; - -public: //! \publicsection - /*! - * \brief Specialised constructor - * Create a new instance of the http_layer class - * \param[in] p_type \todo - * \param[in] p_param \todo - */ - http_layer() : t_layer(), _params() { }; - /*! - * \brief Specialised constructor - * Create a new instance of the http_layer class - * \param[in] p_type \todo - * \param[in] p_param \todo - */ - http_layer(const std::string& p_type, const std::string& p_param); - /*! - * \brief Default destructor - */ - virtual ~http_layer() { }; - - /*! - * \fn void sendMsg(const LibItsHttp__TypesAndValues::HttpMessage& p_http_message, params& p_param); - * \brief Send HTTP message to the lower layers - * \param[in] p_http_message The GeoNetworking message to be sent - * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters - */ - void sendMsg(const LibItsHttp__TypesAndValues::HttpMessage& p_http_message, params& p_param); - - /*! - * \virtual - * \fn void send_data(OCTETSTRING& data, params& params); - * \brief Send bytes formated data to the lower layers - * \param[in] p_data The data to be sent - * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters - */ - virtual void send_data(OCTETSTRING& data, params& params); - /*! - * \virtual - * \fn void receive_data(OCTETSTRING& data, params& params); - * \brief Receive bytes formated data from the lower layers - * \param[in] p_data The bytes formated data received - * \param[in] p_params Some lower layers parameters values when data was received - */ - virtual void receive_data(OCTETSTRING& data, params& info); -}; // End of class http_layer - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/60/003b0e2b9e8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/60/003b0e2b9e8500181eabf1ba1ea37ea1 deleted file mode 100644 index aaf4873..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/60/003b0e2b9e8500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,73 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn - - true - - - - - - src/ttcn/ttcn/TestCodec - - false - true - - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/61/70ebb22fc08500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/61/70ebb22fc08500181dc9eb7ae31560a9 deleted file mode 100644 index 173e0e7..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/61/70ebb22fc08500181dc9eb7ae31560a9 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 12:31:34 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall -std=c++11 -pthread -fPIC - -# Flags for the linker: -LDFLAGS = -pthread -fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/62/3058727e9e8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/62/3058727e9e8500181eabf1ba1ea37ea1 deleted file mode 100644 index b39eb80..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/62/3058727e9e8500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,109 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn - - true - - - - - - src/ttcn/ttcn/TestCodec - - false - true - - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/64/40e123c69d8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/64/40e123c69d8500181eabf1ba1ea37ea1 deleted file mode 100644 index b1101e7..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/64/40e123c69d8500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,32 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - - - - bin - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/6b/403f1ddfb985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/6b/403f1ddfb985001814de869e8ad08251 deleted file mode 100644 index 53a110f..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/6b/403f1ddfb985001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 11:51:18 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall -std=c++11 -pthread -fPIC - -# Flags for the linker: -LDFLAGS = -pthread -fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/6d/305bd1e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/6d/305bd1e1978500181c21d10bc58219ba deleted file mode 100644 index ce99819..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/6d/305bd1e1978500181c21d10bc58219ba +++ /dev/null @@ -1,2821 +0,0 @@ -/****************************************************************************** -* Copyright (c) 2000-2018 Ericsson Telecom AB -* All rights reserved. This program and the accompanying materials -* are made available under the terms of the Eclipse Public License v2.0 -* which accompanies this distribution, and is available at -* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html -* -* Contributors: -* Zoltan Bibo - initial implementation and initial documentation -* Gergely Futo -* Oliver Ferenc Czerman -* Balasko Jeno -* Zoltan Bibo -* Eduard Czimbalmos -* Kulcsár Endre -* Gabor Szalai -* Jozsef Gyurusi -* Csöndes Tibor -* Zoltan Jasz -******************************************************************************/ -// -// File: Abstract_Socket.cc -// Description: Abstract_Socket implementation file -// Rev: R9B -// Prodnr: CNL 113 384 -// - -#include "Abstract_Socket.hh" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined SOLARIS8 -# include -#endif - - -#define AS_TCP_CHUNCK_SIZE 4096 -#define AS_SSL_CHUNCK_SIZE 16384 -// Used for the 'address already in use' bug workaround -#define AS_DEADLOCK_COUNTER 16 -// character buffer length to store temporary SSL informations, 256 is usually enough -#define SSL_CHARBUF_LENGTH 256 -// number of bytes to read from the random devices -#define SSL_PRNG_LENGTH 1024 - -#ifndef NI_MAXHOST -#define NI_MAXHOST 1024 -#endif -#ifndef NI_MAXSERV -#define NI_MAXSERV 32 -#endif - -/******************************** - ** PacketHeaderDescr - ** used for fragmentation and concatenation - ** of fixed format messages - *********************************/ - -unsigned long PacketHeaderDescr::Get_Message_Length(const unsigned char* buff) const -{ - unsigned long m_length = 0; - for (unsigned long i = 0; i < nr_bytes_in_length; i++) { - unsigned long shift_count = - byte_order == Header_MSB ? nr_bytes_in_length - 1 - i : i; - m_length |= buff[length_offset + i] << (8 * shift_count); - } - m_length *= length_multiplier; - if (value_offset < 0 && (long)m_length < -value_offset) return 0; - else return m_length + value_offset; -} - - -//////////////////////////////////////////////////////////////////////// -///// Default log functions -//////////////////////////////////////////////////////////////////////// -void Abstract_Socket::log_debug(const char *fmt, ...) const -{ - if (socket_debugging) { - TTCN_Logger::begin_event(TTCN_DEBUG); - if (test_port_type != NULL && test_port_name != NULL) - TTCN_Logger::log_event("%s test port (%s): ", test_port_type, - test_port_name); - else TTCN_Logger::log_event_str("Abstract socket: "); - va_list args; - va_start(args, fmt); - TTCN_Logger::log_event_va_list(fmt, args); - va_end(args); - TTCN_Logger::end_event(); - } -} - -void Abstract_Socket::log_warning(const char *fmt, ...) const -{ - TTCN_Logger::begin_event(TTCN_WARNING); - if (test_port_type != NULL && test_port_name != NULL) - TTCN_Logger::log_event("%s test port (%s): warning: ", test_port_type, - test_port_name); - else TTCN_Logger::log_event_str("Abstract socket: warning: "); - va_list args; - va_start(args, fmt); - TTCN_Logger::log_event_va_list(fmt, args); - va_end(args); - TTCN_Logger::end_event(); -} - - -void Abstract_Socket::log_error(const char *fmt, ...) const -{ - va_list args; - va_start(args, fmt); - char *error_str = mprintf_va_list(fmt, args); - va_end(args); - try { - if (test_port_type != NULL && test_port_name != NULL) - TTCN_error("%s test port (%s): %s", test_port_type, test_port_name, - error_str); - else TTCN_error("Abstract socket: %s", error_str); - } catch (...) { - Free(error_str); - throw; - } - Free(error_str); -} - -void Abstract_Socket::log_hex(const char *prompt, const unsigned char *msg, - size_t length) const -{ - if (socket_debugging) { - TTCN_Logger::begin_event(TTCN_DEBUG); - if (test_port_type != NULL && test_port_name != NULL) - TTCN_Logger::log_event("%s test port (%s): ", test_port_type, - test_port_name); - else TTCN_Logger::log_event_str("Abstract socket: "); - if (prompt != NULL) TTCN_Logger::log_event_str(prompt); - TTCN_Logger::log_event("Size: %lu, Msg:", (unsigned long)length); - for (size_t i = 0; i < length; i++) TTCN_Logger::log_event(" %02x", msg[i]); - TTCN_Logger::end_event(); - } -} - - -/******************************** - ** Abstract_Socket - ** abstract base type for TCP socket handling - *********************************/ - -Abstract_Socket::Abstract_Socket() { - server_mode=false; - socket_debugging=false; - nagling=false; - use_non_blocking_socket=false; - halt_on_connection_reset=true; - halt_on_connection_reset_set=false; - client_TCP_reconnect=false; - TCP_reconnect_attempts=5; - TCP_reconnect_delay=1; - listen_fd=-1; - memset(&remoteAddr, 0, sizeof(remoteAddr)); - memset(&localAddr, 0, sizeof(localAddr)); - server_backlog=1; - peer_list_length=0; - local_host_name = NULL; - local_port_number = 0; - remote_host_name = NULL; - remote_port_number = 0; - ai_family = AF_UNSPEC; // default: Auto - test_port_type=NULL; - test_port_name=NULL; - ttcn_buffer_usercontrol=false; - use_connection_ASPs=false; - handle_half_close = false; - peer_list_root = NULL; -} - -Abstract_Socket::Abstract_Socket(const char *tp_type, const char *tp_name) { - server_mode=false; - socket_debugging=false; - nagling=false; - use_non_blocking_socket=false; - halt_on_connection_reset=true; - halt_on_connection_reset_set=false; - client_TCP_reconnect=false; - TCP_reconnect_attempts=5; - TCP_reconnect_delay=1; - listen_fd=-1; - memset(&remoteAddr, 0, sizeof(remoteAddr)); - memset(&localAddr, 0, sizeof(localAddr)); - server_backlog=1; - peer_list_length=0; - local_host_name = NULL; - local_port_number = 0; - remote_host_name = NULL; - remote_port_number = 0; - ai_family = AF_UNSPEC; // default: Auto - test_port_type=tp_type; - test_port_name=tp_name; - ttcn_buffer_usercontrol=false; - use_connection_ASPs=false; - handle_half_close = false; - peer_list_root = NULL; -} - -Abstract_Socket::~Abstract_Socket() { - peer_list_reset_peer(); - Free(local_host_name); - Free(remote_host_name); -} - -bool Abstract_Socket::parameter_set(const char *parameter_name, - const char *parameter_value) -{ - log_debug("entering Abstract_Socket::parameter_set(%s, %s)", parameter_name, parameter_value); - - if (strcmp(parameter_name, socket_debugging_name()) == 0) { - if (strcasecmp(parameter_value,"yes")==0) socket_debugging = true; - else if (strcasecmp(parameter_value,"no")==0) socket_debugging = false; - else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, socket_debugging_name()); - } else if (strcmp(parameter_name, server_mode_name()) == 0) { - if (strcasecmp(parameter_value,"yes")==0) server_mode = true; - else if (strcasecmp(parameter_value,"no")==0) server_mode = false; - else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, server_mode_name()); - } else if (strcmp(parameter_name, use_connection_ASPs_name()) == 0) { - if (strcasecmp(parameter_value,"yes")==0) use_connection_ASPs = true; - else if (strcasecmp(parameter_value,"no")==0) use_connection_ASPs = false; - else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, use_connection_ASPs_name()); - } else if (strcmp(parameter_name, halt_on_connection_reset_name()) == 0) { - halt_on_connection_reset_set=true; - if (strcasecmp(parameter_value,"yes")==0) halt_on_connection_reset = true; - else if (strcasecmp(parameter_value,"no")==0) halt_on_connection_reset = false; - else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, halt_on_connection_reset_name()); - } else if (strcmp(parameter_name, client_TCP_reconnect_name()) == 0) { - if (strcasecmp(parameter_value,"yes")==0) client_TCP_reconnect = true; - else if (strcasecmp(parameter_value,"no")==0) client_TCP_reconnect = false; - else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, client_TCP_reconnect_name()); - } else if (strcmp(parameter_name, TCP_reconnect_attempts_name()) == 0) { - if (sscanf(parameter_value, "%d", &TCP_reconnect_attempts)!=1) log_error("Invalid input as TCP_reconnect_attempts counter given: %s", parameter_value); - if (TCP_reconnect_attempts<=0) log_error("TCP_reconnect_attempts must be greater than 0, %d is given", TCP_reconnect_attempts); - } else if (strcmp(parameter_name, TCP_reconnect_delay_name()) == 0) { - if (sscanf(parameter_value, "%d", &TCP_reconnect_delay)!=1) log_error("Invalid input as TCP_reconnect_delay given: %s", parameter_value); - if (TCP_reconnect_delay<0) log_error("TCP_reconnect_delay must not be less than 0, %d is given", TCP_reconnect_delay); - } else if(strcmp(parameter_name, remote_address_name()) == 0){ - Free(remote_host_name); - remote_host_name = mcopystr(parameter_value); - } else if(strcmp(parameter_name, local_address_name()) == 0){ // only for backward compatibility - Free(local_host_name); - local_host_name = mcopystr(parameter_value); - } else if(strcmp(parameter_name, remote_port_name()) == 0){ - int a; - if (sscanf(parameter_value, "%d", &a)!=1) log_error("Invalid input as port number given: %s", parameter_value); - if (a>65535 || a<0){ log_error("Port number must be between 0 and 65535, %d is given", remote_port_number);} - else {remote_port_number=a;} - } else if(strcmp(parameter_name, ai_family_name()) == 0){ - if (strcasecmp(parameter_value,"IPv6")==0 || strcasecmp(parameter_value,"AF_INET6")==0) ai_family = AF_INET6; - else if (strcasecmp(parameter_value,"IPv4")==0 || strcasecmp(parameter_value,"AF_INET")==0) ai_family = AF_INET; - else if (strcasecmp(parameter_value,"UNSPEC")==0 || strcasecmp(parameter_value,"AF_UNSPEC")==0) ai_family = AF_UNSPEC; - else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ai_family_name()); - } else if(strcmp(parameter_name, local_port_name()) == 0){ - int a; - if (sscanf(parameter_value, "%d", &a)!=1) log_error("Invalid input as port number given: %s", parameter_value); - if (a>65535 || a<0) {log_error("Port number must be between 0 and 65535, %d is given", local_port_number);} - else {local_port_number=a;} - } else if (strcmp(parameter_name, nagling_name()) == 0) { - if (strcasecmp(parameter_value,"yes")==0) nagling = true; - else if (strcasecmp(parameter_value,"no")==0) nagling = false; - else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, nagling_name()); - } else if (strcmp(parameter_name, use_non_blocking_socket_name()) == 0){ - if (strcasecmp(parameter_value, "yes") == 0) use_non_blocking_socket = true; - else if (strcasecmp(parameter_value, "no") == 0) use_non_blocking_socket = false; - } else if (strcmp(parameter_name, server_backlog_name()) == 0) { - if (sscanf(parameter_value, "%d", &server_backlog)!=1) log_error("Invalid input as server backlog given: %s", parameter_value); - } else { - log_debug("leaving Abstract_Socket::parameter_set(%s, %s)", parameter_name, parameter_value); - return false; - } - - log_debug("leaving Abstract_Socket::parameter_set(%s, %s)", parameter_name, parameter_value); - return true; -} - -void Abstract_Socket::Handle_Socket_Event(int fd, boolean is_readable, boolean is_writable, boolean is_error) -{ - log_debug("entering Abstract_Socket::Handle_Socket_Event(): fd: %d%s%s%s", fd, - is_readable ? " readable" : "", is_writable ? " writable" : "", is_error ? " error" : ""); - - if (fd != listen_fd /* on server the connection requests are handled after the user messages */ - && peer_list_root[fd] != NULL && (is_readable || is_writable) - && get_peer(fd)->reading_state != STATE_DONT_RECEIVE) { - log_debug("receiving data"); - int messageLength = receive_message_on_fd(fd); - if (messageLength == 0) { // peer disconnected - as_client_struct * client_data = get_peer(fd); - log_debug("Abstract_Socket::Handle_Socket_Event(). Client %d closed connection.", fd); - switch (client_data->reading_state) { - case STATE_BLOCK_FOR_SENDING: - log_debug("Abstract_Socket::Handle_Socket_Event(): state is STATE_BLOCK_FOR_SENDING, don't close connection."); - Remove_Fd_Read_Handler(fd); - client_data->reading_state = STATE_DONT_CLOSE; - log_debug("Abstract_Socket::Handle_Socket_Event(): setting socket state to STATE_DONT_CLOSE"); - break; - case STATE_DONT_CLOSE: - log_debug("Abstract_Socket::Handle_Socket_Event(): state is STATE_DONT_CLOSE, don't close connection."); - break; - default: - if((client_data->tcp_state == CLOSE_WAIT) || (client_data->tcp_state == FIN_WAIT)) { - remove_client(fd); - peer_disconnected(fd); - } else { - if(shutdown(fd, SHUT_RD) != 0) { - if(errno == ENOTCONN) { - errno = 0; - } else { - log_error("shutdown(SHUT_RD) system call failed"); - } - } - client_data->tcp_state = CLOSE_WAIT; - Remove_Fd_Read_Handler(fd); - peer_half_closed(fd); - } - } // switch (client_data->reading_state) - } else if (messageLength > 0) { - as_client_struct *client_data=get_peer(fd); - if (socket_debugging) { - struct sockaddr_storage clientAddr = client_data->clientAddr; -#ifdef WIN32 - log_debug("Message received from address %s:%d", inet_ntoa(((struct sockaddr_in*)&clientAddr)->sin_addr), ntohs(((struct sockaddr_in *)&clientAddr)->sin_port)); -#else - char hname[NI_MAXHOST]; - char sname[NI_MAXSERV]; -#if defined LINUX || defined FREEBSD || defined SOLARIS8 - socklen_t -#else /* SOLARIS or WIN32 */ - int -#endif - clientAddrlen = client_data->clientAddrlen; - int error = getnameinfo((struct sockaddr *)&clientAddr, clientAddrlen, - hname, sizeof (hname), sname, sizeof (sname), NI_NUMERICHOST|NI_NUMERICSERV); - if (error) log_error("AbstractSocket: getnameinfo 2: %s\n", gai_strerror(error)); - log_debug("Message received from address (addr) %s/%s", hname, sname); -#endif - } - log_hex("Message received, buffer content: ", get_buffer(fd)->get_data(), get_buffer(fd)->get_len()); - handle_message(fd); - } /* else if (messageLength == -2) => - used in case of SSL: means that reading would bloc. - in this case I stop receiving message on the file descriptor */ - } // if ... (not new connection request) - - if (fd == listen_fd && is_readable) { - // new connection request arrived - log_debug("waiting for accept"); - // receiving new connection on the TCP server - struct sockaddr_storage clientAddr; - -#if defined LINUX || defined FREEBSD || defined SOLARIS8 - socklen_t -#else /* SOLARIS or WIN32 */ - int -#endif - clientAddrlen = sizeof(clientAddr); -#if defined LINUX || defined FREEBSD || defined SOLARIS8 - int newclient_fd = accept(listen_fd, (struct sockaddr *) &clientAddr, (socklen_t*)&clientAddrlen); -#else - int newclient_fd = accept(listen_fd, (struct sockaddr *) &clientAddr, (int*)&clientAddrlen); -#endif - if(newclient_fd < 0) log_error("Cannot accept connection at port"); - - as_client_struct *client_data=peer_list_add_peer(newclient_fd); - Add_Fd_Read_Handler(newclient_fd); // Done here - as in case of error: remove_client expects the handler as added - log_debug("Abstract_Socket::Handle_Socket_Event(). Handler set to other fd %d", newclient_fd); - client_data->fd_buff = new TTCN_Buffer; - client_data->clientAddr = clientAddr; - client_data->clientAddrlen = clientAddrlen; - client_data->tcp_state = ESTABLISHED; - client_data->reading_state = STATE_NORMAL; - if (add_user_data(newclient_fd)) { - char hname[NI_MAXHOST]; - int clientPort = 0; -#ifdef WIN32 - clientPort=ntohs(((struct sockaddr_in *)&clientAddr)->sin_port); - char* tmp=inet_ntoa(((struct sockaddr_in*)&clientAddr)->sin_addr); - strcpy(hname,tmp); -#else - int error; - char sname[NI_MAXSERV]; - error = getnameinfo((struct sockaddr *)&clientAddr, clientAddrlen, - hname, sizeof (hname), sname, sizeof (sname), NI_NUMERICHOST|NI_NUMERICSERV); - if (error) { - log_error("AbstractSocket: getnameinfo: %s\n", - gai_strerror(error)); - } - clientPort = atoi(sname); -#endif - log_debug("Client %d connected from address %s/%d", newclient_fd, hname, clientPort); - peer_connected(newclient_fd, hname, clientPort); - peer_connected(newclient_fd, *((struct sockaddr_in *)&clientAddr)); /* calling deprecated function also */ - log_debug("Handle_Socket_Event updated with client %d ", newclient_fd); - - if (set_non_block_mode(newclient_fd, use_non_blocking_socket) < 0) { - log_error("Set blocking mode failed."); - } - - } else { - remove_client(newclient_fd); - peer_disconnected(newclient_fd); - } - } // if (fd == listen_fd && is_readable) - - log_debug("leaving Abstract_Socket::Handle_Socket_Event()"); -} - -int Abstract_Socket::receive_message_on_fd(int client_id) -{ - as_client_struct * client_data = get_peer(client_id); - TTCN_Buffer* recv_tb = client_data->fd_buff; - unsigned char *end_ptr; - size_t end_len=AS_TCP_CHUNCK_SIZE; - recv_tb->get_end(end_ptr, end_len); - int messageLength = recv(client_id, (char *)end_ptr, end_len, 0); - if (messageLength==0) return messageLength; // peer disconnected - else if (messageLength < 0) { - log_warning("Error when reading the received TCP PDU: %s", strerror(errno)); - errno = 0; - return 0; - } - recv_tb->increase_length(messageLength); - return messageLength; -} - -int Abstract_Socket::send_message_on_fd(int client_id, const unsigned char* send_par, int message_length) -{ - get_peer(client_id); - return send(client_id, (const char *)send_par, message_length, 0); -} - - -//Tthe EAGAIN errno value set by the send operation means that -//the sending operation would block. -//First I try to increase the length of the sending buffer (increase_send_buffer()). -//If the outgoing buffer cannot be increased, the block_for_sending function will -//be called. This function will block until the file descriptor given as its argument -//is ready to write. While the block for sending operation calls the Event_Handler, -//states must be used to indicate that the Event_Handler is called when the -//execution is blocking. -//STATE_BLOCK_FOR_SENDING: the block for sending operation has been called -//STATE_DONT_CLOSE: if the other side close the connection before the block_for_sending -// operation returns, in the Event_Handler the connection -// must not be closed and the block_for_sending must return before we can -// close the connection. This state means that the other side closed the connection -// during the block_for_sending operation -//STATE_NORMAL: normal state -int Abstract_Socket::send_message_on_nonblocking_fd(int client_id, - const unsigned char* send_par, - int length){ - - log_debug("entering Abstract_Socket::" - "send_message_on_nonblocking_fd(id: %d)", client_id); - as_client_struct * client_data = get_peer(client_id); - int sent_len = 0; - while(sent_len < length){ - int ret; - log_debug("Abstract_Socket::send_message_on_nonblocking_fd(id: %d): new iteration", client_id); - if (client_data->reading_state == STATE_DONT_CLOSE){ - goto client_closed_connection; - } else ret = send(client_id, send_par + sent_len, length - sent_len, 0); - - if (ret > 0) sent_len+=ret; - else{ - switch(errno){ - case EINTR:{ //signal: do nothing, try again - errno = 0; - break; - } - case EPIPE:{ //client closed connection - goto client_closed_connection; - } - case EAGAIN:{ // the output buffer is full: - //try to increase it if possible - errno = 0; - int old_bufsize, new_bufsize; - - if (increase_send_buffer( - client_id, old_bufsize, new_bufsize)) { - log_warning("Sending data on on file descriptor %d", - client_id); - log_warning("The sending operation would" - "block execution. The size of the " - "outgoing buffer was increased from %d to " - "%d bytes.",old_bufsize, - new_bufsize); - } else { - log_warning("Sending data on file descriptor %d", - client_id); - log_warning("The sending operation would block " - "execution and it is not possible to " - "further increase the size of the " - "outgoing buffer. Trying to process incoming" - "data to avoid deadlock."); - log_debug("Abstract_Socket::" - "send_message_on_nonblocking_fd():" - " setting socket state to " - "STATE_BLOCK_FOR_SENDING"); - client_data->reading_state = STATE_BLOCK_FOR_SENDING; - TTCN_Snapshot::block_for_sending(client_id); - } - break; - } - default:{ - log_debug("Abstract_Socket::" - "send_message_on_nonblocking_fd(): " - "setting socket state to STATE_NORMAL"); - client_data->reading_state = STATE_NORMAL; - log_debug("leaving Abstract_Socket::" - "send_message_on_nonblocking_fd(id: %d)" - " with error", client_id); - return -1; - } - } //end of switch - }//end of else - } //end of while - - log_debug("Abstract_Socket::send_message_on_nonblocking_fd():" - "setting socket state to STATE_NORMAL"); - client_data->reading_state = STATE_NORMAL; - log_debug("leaving Abstract_Socket::" - "send_message_on_nonblocking_fd(id: %d)", client_id); - return sent_len; - -client_closed_connection: - log_debug("Abstract_Socket::send_message_on_nonblocking_fd(): setting socket state to STATE_NORMAL"); - client_data->reading_state = STATE_NORMAL; - log_debug("leaving Abstract_Socket::" - "send_message_on_nonblocking_fd(id: %d)", client_id); - errno = EPIPE; - return -1; -} - -const PacketHeaderDescr* Abstract_Socket::Get_Header_Descriptor() const -{ - return NULL; -} - -void Abstract_Socket::peer_connected(int /*client_id*/, sockaddr_in& /*remote_addr*/) -{ -} - -void Abstract_Socket::handle_message(int client_id) -{ - const PacketHeaderDescr* head_descr = Get_Header_Descriptor(); - as_client_struct * client_data = get_peer(client_id); - TTCN_Buffer *recv_tb = client_data->fd_buff; - - if(!head_descr){ - message_incoming(recv_tb->get_data(), recv_tb->get_len(), client_id); - if (!ttcn_buffer_usercontrol) recv_tb->clear(); - } else { - recv_tb->rewind(); - unsigned long valid_header_length = head_descr->Get_Valid_Header_Length(); - while (recv_tb->get_len() > 0) { - if ((unsigned long)recv_tb->get_len() < valid_header_length) { - // this is a message without a valid header - // recv_tb->handle_fragment(); - return; - } - unsigned long message_length = - head_descr->Get_Message_Length(recv_tb->get_data()); - if (message_length < valid_header_length) { - // this is a message with a malformed length - log_error("Malformed message: invalid length: %lu. The length should " - "be at least %lu.", message_length, valid_header_length); - } - if((unsigned long)recv_tb->get_len() < message_length){ - // this is a fragmented message with a valid header - // recv_tb->handle_fragment(); - return; - } - // this a valid message - message_incoming(recv_tb->get_data(), message_length, client_id); - if (!ttcn_buffer_usercontrol) { - recv_tb->set_pos(message_length); - recv_tb->cut(); - } - } - } - log_debug("leaving Abstract_Socket::handle_message()"); -} - -void Abstract_Socket::map_user() -{ - log_debug("entering Abstract_Socket::map_user()"); -#if defined SOLARIS8 - sigignore(SIGPIPE); -#endif - if(!use_connection_ASPs) - { - // If halt_on_connection_reset is not set explicitly - // set it to the default value: true on clients, false on servers - if (!halt_on_connection_reset_set) { - if (local_port_number != 0) halt_on_connection_reset=false; - else halt_on_connection_reset=true; - } - } - - all_mandatory_configparameters_present(); - - char remotePort[6]; - char localPort[6]; - sprintf(localPort, "%u", local_port_number); - sprintf(remotePort, "%u", remote_port_number); - - if(!use_connection_ASPs) - { - if(server_mode) { - //open_listen_port(localAddr); - open_listen_port(local_host_name,(char*)&localPort); - } else { - //open_client_connection(remoteAddr, localAddr); - open_client_connection(remote_host_name,(char*)&remotePort,local_host_name,(char*)&localPort); - } - } - - log_debug("leaving Abstract_Socket::map_user()"); -} - -int Abstract_Socket::open_listen_port(const struct sockaddr_in & new_local_addr) -{ -#ifndef WIN32 - log_debug("**** DEPRECATED FUNCTION CALLED: Abstract_Socket::open_listen_port(const struct sockaddr_in & new_local_addr)." - " USE Abstract_Socket::open_listen_port(const char* localHostname, const char* localServicename) INSTEAD! ****"); -#endif - log_debug("Local address: %s:%d", inet_ntoa(new_local_addr.sin_addr), ntohs(new_local_addr.sin_port)); - - close_listen_port(); - - listen_fd = socket(AF_INET, SOCK_STREAM, 0); - if(listen_fd<0) { - if(use_connection_ASPs) - { - log_warning("Cannot open socket when trying to open the listen port: %s", strerror(errno)); - listen_port_opened(-1); - errno = 0; - return -1; - } - else log_error("Cannot open socket"); - } - - if(!nagling) { - int on = 1; - setsockopt(listen_fd, IPPROTO_TCP, TCP_NODELAY, (const char*)&on, sizeof(on)); - } - int val = 1; - if(setsockopt(listen_fd, SOL_SOCKET, SO_REUSEADDR, (const char*)&val, sizeof(val)) < 0) { - close(listen_fd); - listen_fd = -1; - if(use_connection_ASPs) - { - log_warning("Setsockopt failed when trying to open the listen port: %s", strerror(errno)); - listen_port_opened(-1); - errno = 0; - return -1; - } - else log_error("Setsockopt failed"); - } - - int rc = 0; - - log_debug("Bind to port..."); - rc = bind(listen_fd, (const struct sockaddr *)&new_local_addr, sizeof(new_local_addr)); - if(rc<0) { - close(listen_fd); - listen_fd = -1; - if(use_connection_ASPs) - { - log_warning("Cannot bind to port when trying to open the listen port: %s", strerror(errno)); - listen_port_opened(-1); - errno = 0; - return -1; - } - else log_error("Cannot bind to port"); - } - log_debug("Bind successful on server."); - - rc = listen(listen_fd, server_backlog); - if(rc<0) { - close(listen_fd); - listen_fd = -1; - if(use_connection_ASPs) - { - log_warning("Cannot listen at port when trying to open the listen port: %s", strerror(errno)); - listen_port_opened(-1); - errno = 0; - return -1; - } - else log_error("Cannot listen at port"); - } - - // to avoid dead-locks and make possible - // handling of multiple clients "accept" is placed in the Event_Handler - -#if defined LINUX || defined FREEBSD || defined SOLARIS8 - socklen_t -#else /* SOLARIS or WIN32 */ - int -#endif - addr_len = sizeof(new_local_addr); - if (getsockname(listen_fd, (struct sockaddr*)&new_local_addr, &addr_len)) { - close(listen_fd); - listen_fd = -1; - if(use_connection_ASPs) - { - log_warning("getsockname() system call failed on the server socket when trying to open the listen port: %s", strerror(errno)); - listen_port_opened(-1); - errno = 0; - return -1; - } - else log_error("getsockname() system call failed on the server socket"); - } - log_debug("Listen successful on server port %d", ntohs(new_local_addr.sin_port)); - - Add_Fd_Read_Handler(listen_fd); // Done here - after all error checks: as closed fd should not be left added - log_debug("Abstract_Socket::open_listen_port(): Handler set to socket fd %d", listen_fd); - - //localAddr = new_local_addr; - - if(use_connection_ASPs) - listen_port_opened(ntohs(new_local_addr.sin_port)); - - return new_local_addr.sin_port; -} - -int Abstract_Socket::open_listen_port(const char* localHostname, const char* localServicename) { - log_debug("Local address: %s/%s", (localHostname!=NULL)?localHostname:"UNSPEC",(localServicename!=NULL)?localServicename:"UNSPEC"); - -#ifdef WIN32 - struct sockaddr_in new_local_addr; - memset(&new_local_addr, 0, sizeof(new_local_addr)); - if(localHostname!=NULL){ - get_host_id(localHostname,&new_local_addr); - } - if(localServicename!=NULL){ - new_local_addr.sin_port=htons(atoi(localServicename)); - } - return open_listen_port(new_local_addr); -#else - close_listen_port(); - - struct addrinfo *aip; - struct addrinfo hints; - int sock_opt; - int error; - - /* Set up a socket to listen for connections. */ - bzero(&hints, sizeof (hints)); - hints.ai_flags = /*AI_ALL|*/AI_ADDRCONFIG|AI_PASSIVE; - hints.ai_socktype = SOCK_STREAM; - hints.ai_family = ai_family; - - error = getaddrinfo(localHostname, localServicename, &hints, &aip); - if (error != 0) { - if(use_connection_ASPs) - { - log_warning("getaddrinfo: %s for host %s service %s", gai_strerror(error), - (localHostname!=NULL)?localHostname:"UNSPEC",(localServicename!=NULL)?localServicename:"UNSPEC"); - listen_port_opened(-1); - return -1; - } - else log_error("getaddrinfo: %s for host %s service %s", gai_strerror(error), - (localHostname!=NULL)?localHostname:"UNSPEC",(localServicename!=NULL)?localServicename:"UNSPEC"); - } - - struct addrinfo *res; - if (socket_debugging) { - /* count the returned addresses: */ - int counter = 0; - for (res = aip; res != NULL; res = res->ai_next,++counter) {}; - log_debug("Number of local addresses: %d\n", counter); - } - - - for (res = aip; res != NULL; res = res->ai_next) { - listen_fd = socket(res->ai_family, res->ai_socktype, res->ai_protocol); - log_debug("Waiting for connection via: %s\n", - ((res->ai_family==AF_INET)?"IPv4": - ((res->ai_family==AF_INET6)?"IPv6":"unknown"))); - if (listen_fd == -1) { - if(use_connection_ASPs) - { - log_warning("Cannot open socket when trying to open the listen port: %s", strerror(errno)); - listen_port_opened(-1); - errno = 0; - freeaddrinfo(aip); - return -1; - } - else log_error("Cannot open socket"); - } - - /* Tell the system to allow local addresses to be reused. */ - sock_opt = 1; - if (setsockopt(listen_fd, SOL_SOCKET, SO_REUSEADDR, (void *)&sock_opt, - sizeof (sock_opt)) == -1) { - - close(listen_fd); - listen_fd = -1; - if(use_connection_ASPs) - { - log_warning("Setsockopt failed when trying to open the listen port: %s", strerror(errno)); - listen_port_opened(-1); - errno = 0; - freeaddrinfo(aip); - return -1; - } - else log_error("Setsockopt failed"); - } - - if(!nagling) { - int on = 1; - setsockopt(listen_fd, IPPROTO_TCP, TCP_NODELAY, (const char*)&on, sizeof(on)); - } - - log_debug("Bind to port..."); - if (bind(listen_fd, res->ai_addr, res->ai_addrlen) == -1) { - error = errno; // save it for the warning message - close(listen_fd); - listen_fd = -1; - log_debug("Cannot bind to port when trying to open the listen port: %s", strerror(errno)); - errno = 0; - continue; - } - log_debug("Bind successful on server."); - break; - } - if (res==NULL) { - if(use_connection_ASPs) - { - log_warning("Cannot bind to port when trying to open the listen port: %s", strerror(error)); - listen_port_opened(-1); - error = 0; - freeaddrinfo(aip); - return -1; - } - else log_error("Cannot bind to port"); - } - - if (listen(listen_fd, server_backlog) == -1) { - close(listen_fd); - listen_fd = -1; - if(use_connection_ASPs) - { - log_warning("Cannot listen at port when trying to open the listen port: %s", strerror(errno)); - listen_port_opened(-1); - errno = 0; - freeaddrinfo(aip); - return -1; - } - else log_error("Cannot listen at port"); - } - - - // to avoid dead-locks and make possible - // handling of multiple clients "accept" is placed in Handle_Socket_Event - - // to determine the local address: - if (getsockname(listen_fd, res->ai_addr, &res->ai_addrlen)) { - close(listen_fd); - listen_fd = -1; - if(use_connection_ASPs) - { - log_warning("getsockname() system call failed on the server socket when trying to open the listen port: %s", strerror(errno)); - listen_port_opened(-1); - errno = 0; - freeaddrinfo(aip); - return -1; - } - else log_error("getsockname() system call failed on the server socket"); - } - char hname[NI_MAXHOST]; - char sname[NI_MAXSERV]; -/* error = getnameinfo(res->ai_addr, res->ai_addrlen, - hname, sizeof (hname), sname, sizeof (sname), NI_NUMERICSERV); - if (error) { - close(listen_fd); - listen_fd = -1; - if(use_connection_ASPs) - { - log_warning("getnameinfo() system call failed on the server socket when trying to open the listen port: %s", gai_strerror(error)); - listen_port_opened(-1); - freeaddrinfo(aip); - return -1; - } - else log_error("getsockname() system call failed on the server socket"); - } else { - log_debug("Listening on (name): %s/%s\n", - hname, sname); - }*/ - error = getnameinfo(res->ai_addr, res->ai_addrlen, - hname, sizeof (hname), sname, sizeof (sname), NI_NUMERICHOST|NI_NUMERICSERV); - if (error) { - close(listen_fd); - listen_fd = -1; - if(use_connection_ASPs) - { - log_warning("getnameinfo() system call failed on the server socket when trying to open the listen port: %s", gai_strerror(error)); - listen_port_opened(-1); - freeaddrinfo(aip); - return -1; - } - else log_error("getsockname() system call failed on the server socket"); - } else { - log_debug("Listening on (addr): %s/%s\n", - hname, sname); - } - - Add_Fd_Read_Handler(listen_fd); // Done here - after all error checks: as closed fd should not be left added - log_debug("Abstract_Socket::open_listen_port(): Handler set to socket fd %d", listen_fd); - - log_debug("new_local_addr Addr family: %s\n", - ((res->ai_addr->sa_family==AF_INET)?"IPv4": - ((res->ai_addr->sa_family==AF_INET6)?"IPv6":"unknown")) - ); - - - int listenPort = atoi(sname); - if(use_connection_ASPs) - listen_port_opened(listenPort); - - freeaddrinfo(aip); - return listenPort; -#endif -} - -void Abstract_Socket::listen_port_opened(int /*port_number*/) -{ - // Intentionally blank -} - -void Abstract_Socket::close_listen_port() -{ - // close current listening port if it is alive - if(listen_fd != -1) - { - Remove_Fd_Read_Handler(listen_fd); - close(listen_fd); - log_debug("Closed listening port of fd: %d", listen_fd); - listen_fd = -1; - } -} - -int Abstract_Socket::get_socket_fd() const{ - if(server_mode) return listen_fd; - if(peer_list_get_nr_of_peers()==0) return -1; - return peer_list_get_first_peer(); -} - -int Abstract_Socket::open_client_connection(const struct sockaddr_in & new_remote_addr, const struct sockaddr_in & new_local_addr) -{ -#ifdef WIN32 - log_debug("**** DEPRECATED FUNCTION CALLED: Abstract_Socket::open_client_connection(const struct sockaddr_in & new_remote_addr, const struct sockaddr_in & new_local_addr)." - " USE open_client_connection(const char* remoteHostname, const char* remoteServicename, const char* localHostname, const char* localServicename) INSTEAD! ****"); -#endif - log_debug("Remote address: %s:%d", inet_ntoa(new_remote_addr.sin_addr), ntohs(new_remote_addr.sin_port)); - - int deadlock_counter = AS_DEADLOCK_COUNTER; - int TCP_reconnect_counter = TCP_reconnect_attempts; - - // workaround for the 'address already used' bug - // used also when TCP reconnect is used - as_start_connecting: - - int socket_fd = socket(AF_INET, SOCK_STREAM, 0); - if(socket_fd<0) { - if(use_connection_ASPs) - { - log_warning("Cannot open socket when trying to open client connection: %s", strerror(errno)); - client_connection_opened(-1); - errno = 0; - return -1; - } - else log_error("Cannot open socket."); - } - - if(!nagling) { - int on = 1; - setsockopt(socket_fd, IPPROTO_TCP, TCP_NODELAY, (const char*)&on, sizeof(on)); - } - - int rc; - - // when using client mode there is no separate file_desriptor for listening and target - log_debug("Connecting to server from address %s:%d", inet_ntoa(new_local_addr.sin_addr), ntohs(new_local_addr.sin_port)); - if (new_local_addr.sin_port != ntohs(0)) { // specific port to use - int val = 1; - if(setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR, (const char*)&val, sizeof(val)) < 0) { - if(use_connection_ASPs) - { - log_warning("Setsockopt failed when trying to open client connection: %s", strerror(errno)); - client_connection_opened(-1); - errno = 0; - return -1; - } - else log_error("Setsockopt failed."); - } - rc = bind(socket_fd, (const struct sockaddr *)&new_local_addr, sizeof(new_local_addr)); - if(rc<0) { - if(use_connection_ASPs) - { - log_warning("Cannot bind to port when trying to open client connection: %s", strerror(errno)); - client_connection_opened(-1); - errno = 0; - return -1; - } - else log_error("Cannot bind to port."); - } - log_debug("Bind successful on client."); - } - rc = connect(socket_fd, (const struct sockaddr *)&new_remote_addr, sizeof(new_remote_addr)); - - if(rc<0){ - if (errno == EADDRINUSE) { - log_warning("connect() returned error code EADDRINUSE. Perhaps this is a kernel bug. Trying to connect again."); - close(socket_fd); - errno = 0; - deadlock_counter--; - if (deadlock_counter<0) { - if(use_connection_ASPs) - { - log_warning("Already tried %d times, giving up when trying to open client connection: %s", AS_DEADLOCK_COUNTER, strerror(errno)); - client_connection_opened(-1); - errno = 0; - return -1; - } - else log_error("Already tried %d times, giving up", AS_DEADLOCK_COUNTER); - } - goto as_start_connecting; - } else if (client_TCP_reconnect && errno != 0) { - log_warning("connect() returned error code %d, trying to connect again (TCP reconnect mode).", errno); - close(socket_fd); - errno = 0; - TCP_reconnect_counter--; - if (TCP_reconnect_counter<0) { - if(use_connection_ASPs) - { - log_warning("Already tried %d times, giving up when trying to open client connection: %s", TCP_reconnect_attempts, strerror(errno)); - client_connection_opened(-1); - errno = 0; - return -1; - } - else log_error("Already tried %d times, giving up", TCP_reconnect_attempts); - } - sleep(TCP_reconnect_delay); - goto as_start_connecting; - } - - if(use_connection_ASPs) - { - log_warning("Cannot connect to server when trying to open client connection: %s", strerror(errno)); - client_connection_opened(-1); - errno = 0; - return -1; - } - else log_error("Cannot connect to server"); - } - - // Non-blocking mode is set before updating bookkeping to handle the error case properly. - if (set_non_block_mode(socket_fd, use_non_blocking_socket) < 0){ - close(socket_fd); - if (use_connection_ASPs){ - client_connection_opened(-1); - errno = 0; - return -1; - } - else log_error("Set blocking mode failed."); - } - - as_client_struct * client_data=peer_list_add_peer(socket_fd); - Add_Fd_Read_Handler(socket_fd); // Done here - as in case of error: remove_client expects the handler as added - log_debug("Abstract_Socket::open_client_connection(). Handler set to socket fd %d", socket_fd); - client_data->fd_buff = new TTCN_Buffer; -// client_data->clientAddr = *(struct sockaddr_storage*)&new_remote_addr; - memset(&client_data->clientAddr,0,sizeof(client_data->clientAddr)); - memcpy(&client_data->clientAddr,&new_remote_addr,sizeof(new_remote_addr)); - client_data->clientAddrlen = sizeof(new_remote_addr); - client_data->tcp_state = ESTABLISHED; - client_data->reading_state = STATE_NORMAL; - if (!add_user_data(socket_fd)) { - remove_client(socket_fd); - peer_disconnected(socket_fd); - return -1; - } - - -// localAddr = new_local_addr; -// remoteAddr = new_remote_addr; - - client_connection_opened(socket_fd); - - return socket_fd; -} - -int Abstract_Socket::open_client_connection(const char* remoteHostname, const char* remoteServicename, const char* localHostname, const char* localServicename) { - log_debug("Abstract_Socket::open_client_connection(remoteAddr: %s/%s, localAddr: %s/%s) called", - remoteHostname,remoteServicename, - (localHostname!=NULL)?localHostname:"UNSPEC",(localServicename!=NULL)?localServicename:"UNSPEC"); -#ifdef WIN32 - struct sockaddr_in new_local_addr; - struct sockaddr_in new_remote_addr; - memset(&new_local_addr, 0, sizeof(new_local_addr)); - memset(&new_local_addr, 0, sizeof(new_remote_addr)); - if(localHostname!=NULL){ - get_host_id(localHostname,&new_local_addr); - } - if(localServicename!=NULL){ - new_local_addr.sin_port=htons(atoi(localServicename)); - } - if(remoteHostname!=NULL){ - get_host_id(remoteHostname,&new_remote_addr); - } - if(remoteServicename!=NULL){ - new_remote_addr.sin_port=htons(atoi(remoteServicename)); - } - return open_client_connection(new_remote_addr,new_local_addr); -#else - - int deadlock_counter = AS_DEADLOCK_COUNTER; - int TCP_reconnect_counter = TCP_reconnect_attempts; - - - struct addrinfo *res, *aip; - struct addrinfo hints; - int socket_fd = -1; - int error; - - /* Get host address. Any type of address will do. */ - bzero(&hints, sizeof (hints)); - hints.ai_flags = AI_ADDRCONFIG; /* |AI_ALL*/ - if (localHostname!=NULL || localServicename!=NULL) { /* use specific local address */ - hints.ai_flags |= AI_PASSIVE; - } - hints.ai_socktype = SOCK_STREAM; - hints.ai_family = ai_family; - - error = getaddrinfo(remoteHostname, remoteServicename, &hints, &res); - if (error != 0) { - if(use_connection_ASPs) - { - log_warning("getaddrinfo: %s for host %s service %s", - gai_strerror(error), remoteHostname, remoteServicename); - client_connection_opened(-1); - return -1; - } - else { log_error("getaddrinfo: %s for host %s service %s", - gai_strerror(error), remoteHostname, remoteServicename); - } - } - - if (socket_debugging) { - /* count the returned addresses: */ - int counter = 0; - for (aip = res; aip != NULL; aip = aip->ai_next,++counter) {}; - log_debug("Number of remote addresses: %d\n", counter); - } - - // workaround for the 'address already used' bug - // used also when TCP reconnect is used - as_start_connecting: - - /* Try all returned addresses until one works */ - for (aip = res; aip != NULL; aip = aip->ai_next) { - /* - * Open socket. The address type depends on what - * getaddrinfo() gave us. - */ - socket_fd = socket(aip->ai_family, aip->ai_socktype, - aip->ai_protocol); - if (socket_fd == -1) { - if(use_connection_ASPs) - { - log_warning("Cannot open socket when trying to open client connection: %s", strerror(errno)); - client_connection_opened(-1); - freeaddrinfo(res); - return -1; - } - else { - freeaddrinfo(res); - log_error("Cannot open socket."); - } - } - - log_debug("Using address family for socket %d: %s",socket_fd, - ((aip->ai_family==AF_INET)?"IPv4": - ((aip->ai_family==AF_INET6)?"IPv6":"unknown")) - ); - - - if(!nagling) { - int on = 1; - setsockopt(socket_fd, IPPROTO_TCP, TCP_NODELAY, (const char*)&on, sizeof(on)); - } - - // when using client mode there is no separate file_descriptor for listening and target - log_debug("Connecting to server from address %s/%s", - (localHostname!=NULL)?localHostname:"UNSPEC",(localServicename!=NULL)?localServicename:"UNSPEC"); - if (localHostname!=NULL || localServicename!=NULL) { // specific localaddress/port to use - int val = 1; - if(setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR, (const char*)&val, sizeof(val)) < 0) { - if(use_connection_ASPs) - { - log_warning("Setsockopt failed when trying to open client connection: %s", strerror(errno)); - client_connection_opened(-1); - errno = 0; - return -1; - } - else log_error("Setsockopt failed."); - } - - // determine the local address: - struct addrinfo *localAddrinfo; - /* Get host address. Any type of address will do. */ - bzero(&hints, sizeof (hints)); - hints.ai_flags = AI_PASSIVE; - hints.ai_socktype = SOCK_STREAM; - hints.ai_family = ai_family;//aip->ai_family; // NOTE: On solaris 10 if is set to aip->ai_family, getaddrinfo will crash for IPv4-mapped addresses! - - error = getaddrinfo(localHostname, localServicename, &hints, &localAddrinfo); - if (error != 0) { - if(use_connection_ASPs) - { - log_warning("getaddrinfo: %s for host %s service %s", - gai_strerror(error), (localHostname!=NULL)?localHostname:"UNSPEC",(localServicename!=NULL)?localServicename:"UNSPEC"); - client_connection_opened(-1); - return -1; - } - else { log_error("getaddrinfo: %s for host %s service %s", - gai_strerror(error), (localHostname!=NULL)?localHostname:"UNSPEC",(localServicename!=NULL)?localServicename:"UNSPEC"); - } - } - - if (socket_debugging) { - /* count the returned addresses: */ - int counter = 0; - for (struct addrinfo* aip2 = localAddrinfo; aip2 != NULL; aip2 = aip2->ai_next,++counter) {}; - log_debug("Number of local addresses: %d\n", counter); - } - - /* Try all returned addresses until one works */ - struct addrinfo* aip2; - for (aip2 = localAddrinfo; aip2 != NULL; aip2 = aip2->ai_next) { - log_debug("Using address family for bind: %s", - ((aip2->ai_family==AF_INET)?"IPv4": - ((aip2->ai_family==AF_INET6)?"IPv6":"unknown")) - ); - - if(bind(socket_fd, aip2->ai_addr, aip2->ai_addrlen)<0) { -/* if(use_connection_ASPs) // the if else branches are the same - {*/ - log_debug("Cannot bind to port when trying to open client connection: %s", strerror(errno)); - //client_connection_opened(-1); - //freeaddrinfo(localAddrinfo); - errno = 0; - continue; //aip2 cycle - //return -1; -/* } - else { - //freeaddrinfo(localAddrinfo); - //log_error("Cannot bind to port."); - log_debug("Cannot bind to port when trying to open client connection: %s", strerror(errno)); - errno = 0; - continue; //aip2 cycle - }*/ - } - log_debug("Bind successful on client."); - freeaddrinfo(localAddrinfo); - break; - } - if (aip2==NULL) { - log_debug("Bind failed for all local addresses."); - freeaddrinfo(localAddrinfo); - continue; // aip cycle - } - } - - /* Connect to the host. */ - if (connect(socket_fd, aip->ai_addr, aip->ai_addrlen) == -1) { - if (errno == EADDRINUSE) { - log_warning("connect() returned error code EADDRINUSE. Perhaps this is a kernel bug. Trying to connect again."); - close(socket_fd); - socket_fd = -1; - errno = 0; - deadlock_counter--; - if (deadlock_counter<0) { - if(use_connection_ASPs) - { - log_warning("Already tried %d times, giving up when trying to open client connection: %s", AS_DEADLOCK_COUNTER, strerror(errno)); - client_connection_opened(-1); - errno = 0; - return -1; - } - else log_error("Already tried %d times, giving up", AS_DEADLOCK_COUNTER); - } - goto as_start_connecting; - } else if (client_TCP_reconnect && errno != 0) { - log_warning("connect() returned error code %d (%s), trying to connect again (TCP reconnect mode).", errno, strerror(errno)); - close(socket_fd); - socket_fd = -1; - errno = 0; - if (aip->ai_next==NULL) { /* Last address is tried and there is still an error */ - TCP_reconnect_counter--; - if (TCP_reconnect_counter<0) { - if(use_connection_ASPs) - { - log_warning("Already tried %d times, giving up when trying to open client connection: %s", TCP_reconnect_attempts, strerror(errno)); - client_connection_opened(-1); - errno = 0; - return -1; - } - else { log_error("Already tried %d times, giving up", TCP_reconnect_attempts); } - } - } - sleep(TCP_reconnect_delay); - goto as_start_connecting; - } else { - log_debug("Cannot connect to server: %s", strerror(errno)); - (void) close(socket_fd); - socket_fd = -1; - } - - if (aip->ai_next==NULL) { - if(use_connection_ASPs) - { - log_warning("Cannot connect to server when trying to open client connection: %s", strerror(errno)); - client_connection_opened(-1); - errno = 0; - return -1; - } - else log_error("Cannot connect to server"); - } - continue; //aip cycle - } - - // to determine the local address: - if (getsockname(socket_fd, aip->ai_addr, &aip->ai_addrlen)) { - close(socket_fd); - if(use_connection_ASPs) { - log_warning("getsockname() system call failed on the client socket when trying to connect to server: %s", strerror(errno)); - client_connection_opened(-1); - errno = 0; - return -1; - } - else log_error("getsockname() system call failed on the client socket when trying to connect to server: %s", strerror(errno)); - } - char hname[NI_MAXHOST]; - char sname[NI_MAXSERV]; -/* error = getnameinfo(aip->ai_addr, aip->ai_addrlen, - hname, sizeof (hname), sname, sizeof (sname), NI_NUMERICSERV); - if (error) { - close(socket_fd); - if(use_connection_ASPs) - { - log_warning("getnameinfo() system call failed on the client socket when trying to connect to server: %s", gai_strerror(error)); - client_connection_opened(-1); - return -1; - } - else log_error("getnameinfo() system call failed on the client socket when trying to connect to server: %s", gai_strerror(error)); - } else { - log_debug("Connection established (name): %s/%s -> %s/%s\n", - hname, sname, - remoteHostname, remoteServicename); - }*/ - error = getnameinfo(aip->ai_addr, aip->ai_addrlen, - hname, sizeof (hname), sname, sizeof (sname), NI_NUMERICHOST|NI_NUMERICSERV); - if (error) { -/* close(socket_fd); - if(use_connection_ASPs) - { - log_warning("getnameinfo() system call failed on the client socket when trying to connect to server: %s", gai_strerror(error)); -// client_connection_opened(-1); -// return -1; - } - else*/ - log_warning("getnameinfo() system call failed on the client socket when trying to connect to server: %s", gai_strerror(error)); - } else { - log_debug("Connection established (addr): %s/%s -> %s/%s\n", - hname, sname, - remoteHostname, remoteServicename); - } - - log_debug( - "connected to: host %s service %s via address family %s\n", - remoteHostname, remoteServicename, - ((aip->ai_family==AF_INET)?"IPv4": - ((aip->ai_family==AF_INET6)?"IPv6":"unknown"))); - break; - } - if (aip==NULL) { - if(use_connection_ASPs) - { - log_warning("Cannot connect to server"); - client_connection_opened(-1); - freeaddrinfo(res); - return -1; - } - else log_error("Cannot connect to server"); - } - - // Non-blocking mode is set before updating bookkeping to handle the error case properly. - if (set_non_block_mode(socket_fd, use_non_blocking_socket) < 0) { - freeaddrinfo(res); - close(socket_fd); - if (use_connection_ASPs){ - log_warning("Set blocking mode failed."); - client_connection_opened(-1); - errno = 0; - return -1; - } - else log_error("Set blocking mode failed."); - } - - as_client_struct * client_data=peer_list_add_peer(socket_fd); - Add_Fd_Read_Handler(socket_fd); // Done here - as in case of error: remove_client expects the handler as added - log_debug("Abstract_Socket::open_client_connection(). Handler set to socket fd %d", socket_fd); - client_data->fd_buff = new TTCN_Buffer; -// client_data->clientAddr = *(struct sockaddr_storage*)aip->ai_addr; - memset(&client_data->clientAddr,0,sizeof(client_data->clientAddr)); - memcpy(&client_data->clientAddr,aip->ai_addr,sizeof(*aip->ai_addr)); - client_data->clientAddrlen = aip->ai_addrlen; - client_data->tcp_state = ESTABLISHED; - client_data->reading_state = STATE_NORMAL; - - freeaddrinfo(res); - - if (!add_user_data(socket_fd)) { - remove_client(socket_fd); - peer_disconnected(socket_fd); - return -1; - } - - client_connection_opened(socket_fd); - - return socket_fd; -#endif -} - - -void Abstract_Socket::client_connection_opened(int /*client_id*/) -{ - // Intentionally blank -} - -void Abstract_Socket::unmap_user() -{ - log_debug("entering Abstract_Socket::unmap_user()"); - remove_all_clients(); - close_listen_port(); - Handler_Uninstall(); // For robustness only - log_debug("leaving Abstract_Socket::unmap_user()"); -} - -void Abstract_Socket::peer_disconnected(int /*fd*/) -{ - // virtual peer_disconnected() needs to be overriden in test ports! - if(!use_connection_ASPs) { - if (halt_on_connection_reset) - log_error("Connection was interrupted by the other side."); - if (client_TCP_reconnect){ - log_warning("TCP connection was interrupted by the other side, trying to reconnect again..."); - unmap_user(); - map_user(); - log_warning("TCP reconnect successfuly finished"); - } - } -} - -void Abstract_Socket::peer_half_closed(int fd) -{ - log_debug("Entering Abstract_Socket::peer_half_closed()"); - remove_client(fd); - peer_disconnected(fd); - log_debug("Leaving Abstract_Socket::peer_half_closed()"); -} - -void Abstract_Socket::send_shutdown(int client_id) -{ - log_debug("entering Abstract_Socket::send_shutdown()"); - int dest_fd = client_id; - - if (dest_fd == -1) { - if(peer_list_get_nr_of_peers() > 1) - log_error("Client Id not specified altough not only 1 client exists"); - else if(peer_list_get_nr_of_peers() == 0) - log_error("There is no connection alive, connect before sending anything."); - dest_fd = peer_list_get_first_peer(); - } - as_client_struct * client_data = get_peer(dest_fd); - if(client_data->tcp_state != ESTABLISHED) - log_error("TCP state of client nr %i does not allow to shut down its connection for writing!", dest_fd); - - if(shutdown(dest_fd, SHUT_WR) != 0) - { - if(errno == ENOTCONN) - { - remove_client(dest_fd); - peer_disconnected(dest_fd); - errno = 0; - } - else - log_error("shutdown() system call failed"); - } - else client_data->tcp_state = FIN_WAIT; - - // dest_fd is not removed from readfds, data can be received - - log_debug("leaving Abstract_Socket::send_shutdown()"); -} - -void Abstract_Socket::send_outgoing(const unsigned char* send_par, int length, int client_id) -{ - log_debug("entering Abstract_Socket::send_outgoing()"); - log_hex("Sending data: ", send_par, length); - int dest_fd; - int nrOfBytesSent; - - dest_fd = client_id; - if (dest_fd == -1) { - if(peer_list_get_nr_of_peers() > 1) - log_error("Client Id not specified altough not only 1 client exists"); - else if(peer_list_get_nr_of_peers() == 0) - log_error("There is no connection alive, use a Connect ASP before sending anything."); - dest_fd = peer_list_get_first_peer(); - } - as_client_struct * client_data = get_peer(dest_fd,true); - if(!client_data || ((client_data->tcp_state != ESTABLISHED) && (client_data->tcp_state != CLOSE_WAIT))){ - char *error_text=mprintf("client nr %i has no established connection", dest_fd); - report_error(client_id,length,-2,send_par,error_text); - Free(error_text); - log_debug("leaving Abstract_Socket::send_outgoing()"); - return; - } - - nrOfBytesSent = use_non_blocking_socket ? send_message_on_nonblocking_fd(dest_fd, send_par, length) : - send_message_on_fd(dest_fd, send_par, length); - - if (nrOfBytesSent == -1){ - log_debug("Client %d closed connection. Error: %d %s", client_id, errno, strerror(errno)); - report_unsent(dest_fd,length,nrOfBytesSent,send_par,"Client closed the connection"); - - if(client_data->tcp_state == CLOSE_WAIT){ - log_debug("Client %d waiting for close ASP.", client_id); - } else { - errno = 0; - log_debug("Client %d closed connection", client_id); - client_data->tcp_state = CLOSE_WAIT; - Remove_Fd_Read_Handler(dest_fd); - peer_half_closed(dest_fd); - } - }else if (nrOfBytesSent != length) { - char *error_text=mprintf("Send system call failed: %d bytes were sent instead of %d", nrOfBytesSent, length); - report_error(client_id,length,nrOfBytesSent,send_par,error_text); - Free(error_text); - } else { - log_debug("Nr of bytes sent = %d", nrOfBytesSent); - } - log_debug("leaving Abstract_Socket::send_outgoing()"); -} - -void Abstract_Socket::report_error(int /*client_id*/, int /*msg_length*/, int /*sent_length*/, const unsigned char* /*msg*/, const char* error_text) -{ - log_error("%s",error_text); -} - -void Abstract_Socket::report_unsent(int /*client_id*/, int /*msg_length*/, int /*sent_length*/, const unsigned char* /*msg*/, const char* error_text) -{ - log_debug("%s",error_text); -} - -void Abstract_Socket::all_mandatory_configparameters_present() -{ - if(!use_connection_ASPs) - { - if(server_mode) { - if(local_port_number == 0) { - log_error("%s is not defined in the configuration file", local_port_name()); - } - } - else { // client mode - if (remote_host_name == NULL) { - log_error("%s is not defined in the configuration file", remote_address_name()); - } - if(remote_port_number == 0){ - log_error("%s is not defined in the configuration file", remote_port_name()); - } - } - } - user_all_mandatory_configparameters_present(); -} - - -void Abstract_Socket::get_host_id(const char* hostName, struct sockaddr_in *addr) -{ - log_debug("Abstract_Socket::get_host_id called"); - unsigned int port = addr->sin_port; - memset(addr, 0, sizeof(*addr)); - addr->sin_family = AF_INET; - addr->sin_port = port; - struct hostent *hptr; - if(strcmp("localhost", hostName) != 0) - { - hptr = gethostbyname(hostName); - if (hptr != NULL) memcpy(&addr->sin_addr, hptr->h_addr_list[0], hptr->h_length); - else log_error("The host name %s is not valid in the configuration file.", hostName); - log_debug("The address set to %s[%s]", hptr->h_name, inet_ntoa(addr->sin_addr)); - } - else - { - addr->sin_addr.s_addr = htonl(INADDR_ANY); - log_debug("The address set to [%s]", inet_ntoa(addr->sin_addr)); - } -} - -void Abstract_Socket::remove_client(int fd) -{ - log_debug("entering Abstract_Socket::remove_client(%d)", fd); - if(fd != listen_fd) { - get_peer(fd); // check if client exists, log_error && fail if not - // TODO FIXME: remove the Add_Fd_Read_Handler(fd); if TITAN is fixed - Add_Fd_Read_Handler(fd); - Remove_Fd_All_Handlers(fd); - remove_user_data(fd); - delete get_peer(fd)->fd_buff; - peer_list_remove_peer(fd); - close(fd); - log_debug("Removed client %d.", fd); - } - else log_warning("Abstract_Socket::remove_client: %d is the server listening port, can not be removed!", fd); - log_debug("leaving Abstract_Socket::remove_client(%d)", fd); -} - -void Abstract_Socket::remove_all_clients() -{ - log_debug("entering Abstract_Socket::remove_all_clients"); - for(int i = 0; peer_list_root != NULL && i < peer_list_length; i++) - { - if(i != listen_fd && peer_list_root[i] != NULL) - remove_client(i); - } - // check if no stucked data - while (peer_list_get_nr_of_peers()) { - int client_id = peer_list_get_first_peer(); - if (client_id >= 0) log_warning("Client %d has not been removed, programming error", client_id); - else log_error("Number of clients<>0 but cannot get first client, programming error"); - peer_list_remove_peer(client_id); - } - - log_debug("leaving Abstract_Socket::remove_all_clients"); -} - -int Abstract_Socket::set_non_block_mode(int fd, bool enable_nonblock){ - - int flags = fcntl(fd, F_GETFL); - if (flags < 0) { - log_warning("System call fcntl(F_GETFL) failed on file " - "descriptor %d.", fd); - return -1; - } - - if (enable_nonblock) flags |= O_NONBLOCK; - else flags &= ~O_NONBLOCK; - - if (fcntl(fd, F_SETFL, flags) == -1) { - log_warning("System call fcntl(F_SETFL) failed on file " - "descriptor %d.", fd); - return -1; - } - return 0; - -} - -bool Abstract_Socket::increase_send_buffer(int fd, - int &old_size, int& new_size) -{ - int set_size; -#if defined LINUX || defined FREEBSD || defined SOLARIS8 - socklen_t -#else /* SOLARIS or WIN32 */ - int -#endif - optlen = sizeof(old_size); - // obtaining the current buffer size first - if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, (char*)&old_size, &optlen)) - goto getsockopt_failure; - if (old_size <= 0) { - log_warning("System call getsockopt(SO_SNDBUF) " - "returned invalid buffer size (%d) on file descriptor %d.", - old_size, fd); - return false; - } - // trying to double the buffer size - set_size = 2 * old_size; - if (set_size > old_size) { - if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, (const char*)&set_size, - sizeof(set_size))) { - // the operation failed - switch (errno) { - case ENOMEM: - case ENOBUFS: - errno = 0; - break; - default: - // other error codes indicate a fatal error - goto setsockopt_failure; - } - } else { - // the operation was successful - goto success; - } - } - // trying to perform a binary search to determine the maximum buffer size - set_size = old_size; - for (int size_step = old_size / 2; size_step > 0; size_step /= 2) { - int tried_size = set_size + size_step; - if (tried_size > set_size) { - if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, (const char*)&tried_size, - sizeof(tried_size))) { - // the operation failed - switch (errno) { - case ENOMEM: - case ENOBUFS: - errno = 0; - break; - default: - // other error codes indicate a fatal error - goto setsockopt_failure; - } - } else { - // the operation was successful - set_size = tried_size; - } - } - } - if (set_size <= old_size) return false; -success: - // querying the new effective buffer size (it might be smaller - // than set_size but should not be smaller than old_size) - optlen = sizeof(new_size); - if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, (char*)&new_size, - &optlen)) goto getsockopt_failure; - if (new_size > old_size) return true; - else { - if (new_size < old_size) - log_warning("System call getsockopt(SO_SNDBUF) returned unexpected buffer size " - "(%d, after increasing it from %d to %d) on file descriptor %d.", - new_size, old_size, set_size, fd); - return false; - } -getsockopt_failure: - log_warning("System call getsockopt(SO_SNDBUF) failed on file " - "descriptor %d. (%s)", fd, strerror(errno)); - return false; -setsockopt_failure: - log_warning("System call setsockopt(SO_SNDBUF) failed on file " - "descriptor %d. (%s)", fd, strerror(errno)); - return false; -} - - -const char* Abstract_Socket::local_port_name() { return "serverPort";} -const char* Abstract_Socket::remote_address_name() { return "destIPAddr";} -const char* Abstract_Socket::local_address_name() { return "serverIPAddr";} -const char* Abstract_Socket::remote_port_name() { return "destPort";} -const char* Abstract_Socket::ai_family_name() { return "ai_family";} -const char* Abstract_Socket::use_connection_ASPs_name() { return "use_connection_ASPs";} -const char* Abstract_Socket::halt_on_connection_reset_name(){ return "halt_on_connection_reset";} -const char* Abstract_Socket::client_TCP_reconnect_name() { return "client_TCP_reconnect";} -const char* Abstract_Socket::TCP_reconnect_attempts_name() { return "TCP_reconnect_attempts";} -const char* Abstract_Socket::TCP_reconnect_delay_name() { return "TCP_reconnect_delay";} -const char* Abstract_Socket::server_mode_name() { return "server_mode";} -const char* Abstract_Socket::socket_debugging_name() { return "socket_debugging";} -const char* Abstract_Socket::nagling_name() { return "nagling";} -const char* Abstract_Socket::use_non_blocking_socket_name() { return "use_non_blocking_socket";} -const char* Abstract_Socket::server_backlog_name() { return "server_backlog";} -bool Abstract_Socket::add_user_data(int) {return true;} -bool Abstract_Socket::remove_user_data(int) {return true;} -bool Abstract_Socket::user_all_mandatory_configparameters_present() { return true; } - - - -//////////////////////////////////////////////////////////////////////// -///// Peer handling functions -//////////////////////////////////////////////////////////////////////// - -void Abstract_Socket::peer_list_reset_peer() { - log_debug("Abstract_Socket::peer_list_reset_peer: Resetting peer array"); - for (int i = 0; i < peer_list_length; i++) - if (peer_list_root[i] != NULL) { - delete peer_list_root[i]; - peer_list_root[i] = NULL; - } - - peer_list_resize_list(-1); - log_debug("Abstract_Socket::peer_list_reset_peer: New length is %d", peer_list_length); -} - -void Abstract_Socket::peer_list_resize_list(int client_id) { - int new_length=client_id; - if (new_length<0) new_length = peer_list_get_last_peer(); - new_length++; // index starts from 0 - log_debug("Abstract_Socket::peer_list_resize_list: Resizing to %d", new_length); - peer_list_root = (as_client_struct **)Realloc(peer_list_root, new_length*sizeof(as_client_struct *)); - - // initialize new entries - for (int i = peer_list_length; i < new_length; i++) - peer_list_root[i] = NULL; - - peer_list_length = new_length; - log_debug("Abstract_Socket::peer_list_resize_list: New length is %d", peer_list_length); -} - -int Abstract_Socket::peer_list_get_first_peer() const { - log_debug("Abstract_Socket::peer_list_get_first_peer: Finding first peer of the peer array"); - for (int i = 0; i < peer_list_length; i++) { - if (peer_list_root[i] != NULL) { - log_debug("Abstract_Socket::peer_list_get_first_peer: First peer is %d", i); - return i; - } - } - log_debug("Abstract_Socket::peer_list_get_first_peer: No active peer found"); - return -1; // this indicates an empty list -} - -int Abstract_Socket::peer_list_get_last_peer() const -{ - log_debug("Abstract_Socket::peer_list_get_last_peer: Finding last peer of the peer array"); - if (peer_list_length==0) { - log_debug("Abstract_Socket::peer_list_get_last_peer: No active peer found"); - return -1; - } - for (int i = peer_list_length - 1; i >= 0; i--) { - if (peer_list_root[i] != NULL) { - log_debug("Abstract_Socket::peer_list_get_last_peer: Last peer is %u", i); - return i; - } - } - log_debug("Abstract_Socket::peer_list_get_last_peer: No active peer found"); - return -1; // this indicates an empty list -} - -int Abstract_Socket::peer_list_get_nr_of_peers() const -{ - int nr=0; - for (int i = 0; i < peer_list_length; i++) - if (peer_list_root[i] != NULL) nr++; - log_debug("Abstract_Socket::peer_list_get_nr_of_peers: Number of active peers = %d", nr); - return nr; -} - -Abstract_Socket::as_client_struct *Abstract_Socket::get_peer (int client_id, bool no_error) const -{ - if (client_id >= peer_list_length){ - if(no_error) return NULL; - else log_error ("Index %d exceeds length of peer list.", client_id); - } - if (peer_list_root[client_id]==NULL){ - if(no_error) return NULL; - else log_error("Abstract_Socket::get_peer: Client %d does not exist", client_id); - } - return peer_list_root[client_id]; -} - -Abstract_Socket::as_client_struct * Abstract_Socket::peer_list_add_peer (int client_id) { - log_debug("Abstract_Socket::peer_list_add_peer: Adding client %d to peer list", client_id); - if (client_id<0) log_error("Invalid Client Id is given: %d.", client_id); - if (client_id>peer_list_get_last_peer()) peer_list_resize_list(client_id); - peer_list_root[client_id] = new as_client_struct; - peer_list_root[client_id]->user_data = NULL; - peer_list_root[client_id]->fd_buff = NULL; - peer_list_root[client_id]->tcp_state = CLOSED; - peer_list_root[client_id]->reading_state = STATE_NORMAL; - return peer_list_root[client_id]; -} - -void Abstract_Socket::peer_list_remove_peer (int client_id) { - - log_debug("Abstract_Socket::peer_list_remove_peer: Removing client %d from peer list", client_id); - if (client_id >= peer_list_length || client_id<0) log_error("Invalid Client Id is given: %d.", client_id); - if (peer_list_root[client_id] == NULL) log_error("Peer %d does not exist.", client_id); - - delete peer_list_root[client_id]; - peer_list_root[client_id] = NULL; - - peer_list_resize_list(-1); -} - - - -#ifdef AS_USE_SSL -/* - * Server mode - When the mode is server, first a TCP socket is created. The server starts - to listen on this port. Once a TCP connect request is received, the TCP - connection is setup. After this the SSL handshake begins. - The SSL is mapped to the file descriptor of the TCP socket. The BIO is - automatically created by OpenSSL inheriting the characteristics of the - socket (non-blocking mode). The BIO is completely transparent. - The server always sends its certificate to the client. If configured so, - the server will request the certificate of the client and check if it is - a valid certificate. If not, the SSL connection is refused. - If configured not to verify the certificate, the server will not request - it from the client and the SSL connection is accepted. - If usage of the SSL ssl_session resumption is enabled and - the client refers to a previous ssl_session, the server will accept it, - unless it is not found in the SSL context cache. - Once the connection is negotiated, data can be sent/received. - The SSL connection is shutted down on an unmap() operation. The shutdown - process does not follow the standard. The server simply shuts down and - does not expect any acknowledgement from the client. - Clients connected to the server are distinguished with their file - descriptor numbers. When a message is received, the file descriptor - number is also passed, so the client can be identified. - * Client mode - When the mode is client, first a TCP connection is requested to the - server. Once accepted, the SSL endpoint is created. - If configured so, the client tries to use the ssl_session Id from the - previous connection, if available (e.g. not the first connection). - If no ssl_session Id is available or the server does not accept it, - a full handshake if performed. - If configured so, the certificate of the server is verified. - If the verification fails, the SSL connection is interrupted by the - client. If no verification required, the received certificate is - still verified, however the result does not affect the connection - (might fail). - * ssl_verify_certificates() is a virtual function. It is called after - SSL connection is up. Testports may use it to check other peer's - certificate and do actions. If the return value is 0, then the - SSL connection is closed. In case of a client, the test port - exits with an error (verification_error). The server just removes - client data, but keeps running. - If ssl_verifiycertificate == "yes", then accept connections only - where certificate is valid - Further checks can be done using SSL_Socket::ssl_verify_certificates() - after the SSL connection is established with the following function call - sequence: - - remove_client(dest_fd); - peer_disconnected(dest_fd); - -*/ - - -// ssl_session ID context of the server -static unsigned char ssl_server_context_name[] = "McHalls&EduardWasHere"; -const unsigned char * SSL_Socket::ssl_server_auth_session_id_context = ssl_server_context_name; -// Password pointer -void *SSL_Socket::ssl_current_client = NULL; - - -SSL_Socket::SSL_Socket() -{ - ssl_use_ssl=false; - ssl_initialized=false; - ssl_key_file=NULL; - ssl_certificate_file=NULL; - ssl_trustedCAlist_file=NULL; - ssl_cipher_list=NULL; - ssl_verify_certificate=false; - ssl_use_session_resumption=true; - ssl_session=NULL; - ssl_password=NULL; - test_port_type=NULL; - test_port_name=NULL; - ssl_ctx = NULL; - ssl_current_ssl = NULL; - SSLv2=true; - SSLv3=true; - TLSv1=true; - TLSv1_1=true; - TLSv1_2=true; -} - -SSL_Socket::SSL_Socket(const char *tp_type, const char *tp_name) -{ - ssl_use_ssl=false; - ssl_initialized=false; - ssl_key_file=NULL; - ssl_certificate_file=NULL; - ssl_trustedCAlist_file=NULL; - ssl_cipher_list=NULL; - ssl_verify_certificate=false; - ssl_use_session_resumption=true; - ssl_session=NULL; - ssl_password=NULL; - test_port_type=tp_type; - test_port_name=tp_name; - ssl_ctx = NULL; - ssl_current_ssl = NULL; - SSLv2=true; - SSLv3=true; - TLSv1=true; - TLSv1_1=true; - TLSv1_2=true; -} - -SSL_Socket::~SSL_Socket() -{ - // now SSL context can be removed - if (ssl_use_ssl && ssl_ctx!=NULL) { - SSL_CTX_free(ssl_ctx); - } - delete [] ssl_key_file; - delete [] ssl_certificate_file; - delete [] ssl_trustedCAlist_file; - delete [] ssl_cipher_list; - delete [] ssl_password; -} - - -bool SSL_Socket::parameter_set(const char *parameter_name, - const char *parameter_value) -{ - log_debug("entering SSL_Socket::parameter_set(%s, %s)", parameter_name, parameter_value); - - if(strcmp(parameter_name, ssl_use_ssl_name()) == 0) { - if(strcasecmp(parameter_value, "yes") == 0) ssl_use_ssl = true; - else if(strcasecmp(parameter_value, "no") == 0) ssl_use_ssl = false; - else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_use_ssl_name()); - } else if(strcmp(parameter_name, ssl_use_session_resumption_name()) == 0) { - if(strcasecmp(parameter_value, "yes") == 0) ssl_use_session_resumption = true; - else if(strcasecmp(parameter_value, "no") == 0) ssl_use_session_resumption = false; - else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_use_session_resumption_name()); - } else if(strcmp(parameter_name, ssl_private_key_file_name()) == 0) { - delete [] ssl_key_file; - ssl_key_file=new char[strlen(parameter_value)+1]; - strcpy(ssl_key_file, parameter_value); - } else if(strcmp(parameter_name, ssl_trustedCAlist_file_name()) == 0) { - delete [] ssl_trustedCAlist_file; - ssl_trustedCAlist_file=new char[strlen(parameter_value)+1]; - strcpy(ssl_trustedCAlist_file, parameter_value); - } else if(strcmp(parameter_name, ssl_certificate_file_name()) == 0) { - delete [] ssl_certificate_file; - ssl_certificate_file=new char[strlen(parameter_value)+1]; - strcpy(ssl_certificate_file, parameter_value); - } else if(strcmp(parameter_name, ssl_cipher_list_name()) == 0) { - delete [] ssl_cipher_list; - ssl_cipher_list=new char[strlen(parameter_value)+1]; - strcpy(ssl_cipher_list, parameter_value); - } else if(strcmp(parameter_name, ssl_password_name()) == 0) { - ssl_password=new char[strlen(parameter_value)+1]; - strcpy(ssl_password, parameter_value); - } else if(strcmp(parameter_name, ssl_verifycertificate_name()) == 0) { - if(strcasecmp(parameter_value, "yes") == 0) ssl_verify_certificate = true; - else if(strcasecmp(parameter_value, "no") == 0) ssl_verify_certificate = false; - else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_verifycertificate_name()); - } else if(strcasecmp(parameter_name, ssl_disable_SSLv2()) == 0) { - if(strcasecmp(parameter_value, "yes") == 0) SSLv2= false; - else if(strcasecmp(parameter_value, "no") == 0) SSLv2 = true; - else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_disable_SSLv2()); - } else if(strcasecmp(parameter_name, ssl_disable_SSLv3()) == 0) { - if(strcasecmp(parameter_value, "yes") == 0) SSLv2 = false; - else if(strcasecmp(parameter_value, "no") == 0) SSLv2 = true; - else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_disable_SSLv3()); - } else if(strcasecmp(parameter_name, ssl_disable_TLSv1()) == 0) { - if(strcasecmp(parameter_value, "yes") == 0) TLSv1= false; - else if(strcasecmp(parameter_value, "no") == 0) TLSv1 = true; - else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_disable_TLSv1()); - } else if(strcasecmp(parameter_name, ssl_disable_TLSv1_1()) == 0) { - if(strcasecmp(parameter_value, "yes") == 0) TLSv1_1 = false; - else if(strcasecmp(parameter_value, "no") == 0) TLSv1_1 = true; - else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_disable_TLSv1_1()); - } else if(strcasecmp(parameter_name, ssl_disable_TLSv1_2()) == 0) { - if(strcasecmp(parameter_value, "yes") == 0) TLSv1_2 = false; - else if(strcasecmp(parameter_value, "no") == 0) TLSv1_2 = true; - else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, ssl_disable_TLSv1_2()); - } else { - log_debug("leaving SSL_Socket::parameter_set(%s, %s)", parameter_name, parameter_value); - return Abstract_Socket::parameter_set(parameter_name, parameter_value); - } - log_debug("leaving SSL_Socket::parameter_set(%s, %s)", parameter_name, parameter_value); - return true; -} - - -bool SSL_Socket::add_user_data(int client_id) { - - log_debug("entering SSL_Socket::add_user_data()"); - if (!ssl_use_ssl) { - log_debug("leaving SSL_Socket::add_user_data()"); - return Abstract_Socket::add_user_data(client_id); - } - - ssl_init_SSL(); - - log_debug("Create a new SSL object"); - if (ssl_ctx==NULL) - log_error("No SSL CTX found, SSL not initialized"); - ssl_current_ssl=SSL_new(ssl_ctx); - - if (ssl_current_ssl==NULL) - log_error("Creation of SSL object failed"); -#ifdef SSL_OP_NO_SSLv2 - if(!SSLv2){ - SSL_set_options(ssl_current_ssl,SSL_OP_NO_SSLv2); - } -#endif -#ifdef SSL_OP_NO_SSLv3 - if(!SSLv3){ - SSL_set_options(ssl_current_ssl,SSL_OP_NO_SSLv3); - } -#endif -#ifdef SSL_OP_NO_TLSv1 - if(!TLSv1){ - SSL_set_options(ssl_current_ssl,SSL_OP_NO_TLSv1); - } -#endif -#ifdef SSL_OP_NO_TLSv1_1 - if(!TLSv1_1){ - SSL_set_options(ssl_current_ssl,SSL_OP_NO_TLSv1_1); - } -#endif -#ifdef SSL_OP_NO_TLSv1_2 - if(!TLSv1_2){ - SSL_set_options(ssl_current_ssl,SSL_OP_NO_TLSv1_2); - } -#endif - - set_user_data(client_id, ssl_current_ssl); - log_debug("New client added with key '%d'", client_id); - log_debug("Binding SSL to the socket"); - if (SSL_set_fd(ssl_current_ssl, client_id)!=1) - log_error("Binding of SSL object to socket failed"); - - // Conext change for SSL objects may come here in the - // future. - - if (Abstract_Socket::get_server_mode()) { - log_debug("Accept SSL connection request"); - if (ssl_current_client!=NULL) log_warning("Warning: race condition while setting current client object pointer"); - ssl_current_client=(SSL_Socket *)this; - if (ssl_getresult(SSL_accept(ssl_current_ssl))!=SSL_ERROR_NONE) { - log_warning("Connection from client %d is refused", client_id); - ssl_current_client=NULL; - log_debug("leaving SSL_Socket::add_user_data()"); - return false; - } - ssl_current_client=NULL; - - } else { - if (ssl_use_session_resumption && ssl_session!=NULL) { - log_debug("Try to use ssl_session resumption"); - if (ssl_getresult(SSL_set_session(ssl_current_ssl, ssl_session))!=SSL_ERROR_NONE) - log_error("SSL error occured"); - } - - log_debug("Connect to server"); - if (ssl_current_client!=NULL) log_warning("Warning: race condition while setting current client object pointer"); - ssl_current_client=(SSL_Socket *)this; - // - - while(true) - { - int res = ssl_getresult(SSL_connect(ssl_current_ssl)); - switch (res) { - case SSL_ERROR_NONE: break; - case SSL_ERROR_WANT_WRITE: - ssl_current_client = NULL; - TTCN_Snapshot::block_for_sending(client_id); - continue; - case SSL_ERROR_WANT_READ: - for(;;) { - pollfd pollClientFd = { client_id, POLLIN, 0 }; - int nEvents = poll(&pollClientFd, 1, 0); - if (nEvents == 1 && (pollClientFd.revents & (POLLIN | POLLHUP)) != 0) - break; - if(nEvents < 0 && errno != EINTR) - log_error("System call poll() failed on file descriptor %d", client_id); - } - continue; - default: - log_warning("Connection to server is refused"); - ssl_current_client=NULL; - log_debug("leaving SSL_Socket::add_user_data()"); - return false; - } - break; - } //while - - - ssl_current_client=NULL; - if (ssl_use_session_resumption) { - log_debug("Connected, get new ssl_session"); - ssl_session=SSL_get1_session(ssl_current_ssl); - if (ssl_session==NULL) - log_warning("Server did not send a session ID"); - } - } - - if (ssl_use_session_resumption) { - if (SSL_session_reused(ssl_current_ssl)) log_debug("Session was reused"); - else log_debug("Session was not reused"); - } - - if (!ssl_verify_certificates()) { // remove client - log_warning("Verification failed"); - log_debug("leaving SSL_Socket::add_user_data()"); - return false; - - } - log_debug("leaving SSL_Socket::add_user_data()"); - return true; -} - - -bool SSL_Socket::remove_user_data(int client_id) { - - log_debug("entering SSL_Socket::remove_user_data()"); - if (!ssl_use_ssl) { - log_debug("leaving SSL_Socket::remove_user_data()"); - return Abstract_Socket::remove_user_data(client_id); - } - ssl_current_ssl = (SSL*)get_user_data(client_id); - if (ssl_current_ssl!=NULL) { - SSL_shutdown(ssl_current_ssl); - SSL_free(ssl_current_ssl); - } else - log_warning("SSL object not found for client %d", client_id); - log_debug("leaving SSL_Socket::remove_user_data()"); - return true; -} - - - -bool SSL_Socket::user_all_mandatory_configparameters_present() { - if (!ssl_use_ssl) { return true; } - if (Abstract_Socket::get_server_mode()) { - if (ssl_certificate_file==NULL) - log_error("%s is not defined in the configuration file", ssl_certificate_file_name()); - if (ssl_trustedCAlist_file==NULL) - log_error("%s is not defined in the configuration file", ssl_trustedCAlist_file_name()); - if (ssl_key_file==NULL) - log_error("%s is not defined in the configuration file", ssl_private_key_file_name()); - } else { - if (ssl_verify_certificate && ssl_trustedCAlist_file==NULL) - log_error("%s is not defined in the configuration file altough %s=yes", ssl_trustedCAlist_file_name(), ssl_verifycertificate_name()); - } - return true; -} - - - -//STATE_WAIT_FOR_RECEIVE_CALLBACK: if the SSL_read operation would -// block because the socket is not ready for writing, -// I set the socket state to this state and add the file -// descriptor to the Event_Handler. The Event_Handler will -// wake up and call the receive_message_on_fd operation -// if the socket is ready to write. -//If the SSL_read operation would block because the socket is not ready for -//reading, I do nothing -int SSL_Socket::receive_message_on_fd(int client_id) -{ - log_debug("entering SSL_Socket::receive_message_on_fd()"); - if (!ssl_use_ssl) { - log_debug("leaving SSL_Socket::receive_message_on_fd()"); - return Abstract_Socket::receive_message_on_fd(client_id); - } - - if (ssl_current_client!=NULL) log_warning("Warning: race condition while setting current client object pointer"); - ssl_current_client=(SSL_Socket *)this; - - as_client_struct* peer = get_peer(client_id); // check if client exists - if (peer->reading_state == STATE_WAIT_FOR_RECEIVE_CALLBACK){ - Remove_Fd_Write_Handler(client_id); - log_debug("SSL_Socket::receive_message_on_fd: setting socket state to STATE_NORMAL"); - peer->reading_state = STATE_NORMAL; - } - TTCN_Buffer* recv_tb = get_buffer(client_id); - ssl_current_ssl=(SSL*)get_user_data(client_id); - int messageLength=0; - size_t end_len=AS_SSL_CHUNCK_SIZE; - unsigned char *end_ptr; - while (messageLength<=0) { - log_debug(" one read cycle started"); - recv_tb->get_end(end_ptr, end_len); - messageLength = SSL_read(ssl_current_ssl, end_ptr, end_len); - if (messageLength <= 0) { - int res=ssl_getresult(messageLength); - switch (res) { - case SSL_ERROR_ZERO_RETURN: - log_debug("SSL_Socket::receive_message_on_fd: SSL connection was interrupted by the other side"); - SSL_set_quiet_shutdown(ssl_current_ssl, 1); - log_debug("SSL_ERROR_ZERO_RETURN is received, setting SSL SHUTDOWN mode to QUIET"); - ssl_current_client=NULL; - log_debug("leaving SSL_Socket::receive_message_on_fd() with SSL_ERROR_ZERO_RETURN"); - return 0; - case SSL_ERROR_WANT_WRITE://writing would block - if (get_use_non_blocking_socket()){ - Add_Fd_Write_Handler(client_id); - log_debug("SSL_Socket::receive_message_on_fd: setting socket state to STATE_WAIT_FOR_RECEIVE_CALLBACK"); - peer->reading_state = STATE_WAIT_FOR_RECEIVE_CALLBACK; - ssl_current_client=NULL; - log_debug("leaving SSL_Socket::receive_message_on_fd()"); - return -2; - } - case SSL_ERROR_WANT_READ: //reading would block, continue processing data - if (get_use_non_blocking_socket()){ - log_debug("SSL_Socket::receive_message_on_fd: reading would block, leaving SSL_Socket::receive_message_on_fd()"); - ssl_current_client = NULL; - log_debug("leaving SSL_Socket::receive_message_on_fd()"); - return -2; - } - log_debug("repeat the read operation to finish the pending SSL handshake"); - break; - default: - log_error("SSL error occured"); - } - } else { - recv_tb->increase_length(messageLength); - } - } - ssl_current_client=NULL; - log_debug("leaving SSL_Socket::receive_message_on_fd() with number of bytes read: %d", messageLength); - return messageLength; -} - - -int SSL_Socket::send_message_on_fd(int client_id, const unsigned char* send_par, int message_length) -{ - log_debug("entering SSL_Socket::send_message_on_fd()"); - - if (!ssl_use_ssl) { - log_debug("leaving SSL_Socket::send_message_on_fd()"); - return Abstract_Socket::send_message_on_fd(client_id, send_par, message_length); - } - - if (ssl_current_client!=NULL) log_warning("Warning: race condition while setting current client object pointer"); - ssl_current_client=(SSL_Socket *)this; - - get_peer(client_id); // check if client exists - ssl_current_ssl=(SSL*)get_user_data(client_id); - if (ssl_current_ssl==NULL) { log_error("No SSL data available for client %d", client_id); } - log_debug("Client ID = %d", client_id); - while (true) { - log_debug(" one write cycle started"); - - int res = ssl_getresult(SSL_write(ssl_current_ssl, send_par, message_length)); - switch (res) { - case SSL_ERROR_NONE: - ssl_current_client=NULL; - log_debug("leaving SSL_Socket::send_message_on_fd()"); - return message_length; - case SSL_ERROR_WANT_WRITE: - case SSL_ERROR_WANT_READ: - log_debug("repeat the write operation to finish the pending SSL handshake"); - break; - case SSL_ERROR_ZERO_RETURN: - log_warning("SSL_Socket::send_message_on_fd: SSL connection was interrupted by the other side"); - SSL_set_quiet_shutdown(ssl_current_ssl, 1); - log_debug("SSL_ERROR_ZERO_RETURN is received, setting SSL SHUTDOWN mode to QUIET"); - ssl_current_client=NULL; - log_debug("leaving SSL_Socket::send_message_on_fd()"); - return -1; - default: - log_debug("SSL error occured"); - return -1; - } - } - // avoid compiler warnings - return 0; -} - -//If the socket is not ready for writing, the same mechanism is used -//as described at the Abstract_Socket class -//If the socket is not ready for reading, I block the execution using -//the take_new operation while the socket is not ready for reading. -//While this operation will call the Event_Handler, -//I indicate with the STATE_DONT_RECEIVE state that from the Event_Handler the receive_message_on_fd -//operation must not be called for this socket. -int SSL_Socket::send_message_on_nonblocking_fd(int client_id, const unsigned char* send_par, int message_length){ - log_debug("entering SSL_Socket::send_message_on_nonblocking_fd()"); - - if (!ssl_use_ssl) { - log_debug("leaving SSL_Socket::send_message_on_nonblocking_fd()"); - return Abstract_Socket::send_message_on_nonblocking_fd(client_id, send_par, message_length); - } - - as_client_struct* peer; - if (ssl_current_client!=NULL) log_warning("Warning: race condition while setting current client object pointer"); - ssl_current_client=(SSL_Socket *)this; - - get_peer(client_id); - ssl_current_ssl=(SSL*)get_user_data(client_id); - if (ssl_current_ssl==NULL) { log_error("No SSL data available for client %d", client_id); } - log_debug("Client ID = %d", client_id); - while (true) { - int res; - peer = get_peer(client_id); // check if client exists - log_debug(" one write cycle started"); - ssl_current_ssl = (SSL*)get_user_data(client_id); - if (peer -> reading_state == STATE_DONT_CLOSE){ - goto client_closed_connection; - }else res = ssl_getresult(SSL_write(ssl_current_ssl, send_par, message_length)); - - switch (res) { - case SSL_ERROR_NONE: - ssl_current_client=NULL; - log_debug("leaving SSL_Socket::send_message_on_nonblocking_fd()"); - log_debug("SSL_Socket::send_message_on_nonblocking_fd: setting socket state to STATE_NORMAL"); - peer -> reading_state = STATE_NORMAL; - return message_length; - case SSL_ERROR_WANT_WRITE: - if (peer == NULL){ - log_error("SSL_Socket::send_message_on_nonblocking_fd, Client ID %d does not exist.", client_id); - } - int old_bufsize, new_bufsize; - if (increase_send_buffer(client_id, old_bufsize, new_bufsize)) { - log_debug("Sending data on on file descriptor %d",client_id); - log_debug("The sending operation would block execution. The " - "size of the outgoing buffer was increased from %d to " - "%d bytes.",old_bufsize, - new_bufsize); - } else { - log_warning("Sending data on file descriptor %d", client_id); - log_warning("The sending operation would block execution and it " - "is not possible to further increase the size of the " - "outgoing buffer. Trying to process incoming data to " - "avoid deadlock."); - ssl_current_client=NULL; - log_debug("SSL_Socket::send_message_on_nonblocking_fd: setting socket state to STATE_BLOCK_FOR_SENDING"); - peer->reading_state = STATE_BLOCK_FOR_SENDING; - TTCN_Snapshot::block_for_sending(client_id); - } - peer = get_peer(client_id); // check if client exists - if (peer == NULL){ - log_error("SSL_Socket::send_message_on_nonblocking_fd, Client ID %d does not exist.", client_id); - } - break; - case SSL_ERROR_WANT_READ: - //receiving buffer is probably empty thus reading would block execution - log_debug("SSL_write cannot read data from socket %d. Trying to process data to avoid deadlock.", client_id); - log_debug("SSL_Socket::send_message_on_nonblocking_fd: setting socket state to STATE_DONT_RECEIVE"); - peer -> reading_state = STATE_DONT_RECEIVE; //don't call receive_message_on_fd() to this socket - for (;;) { - TTCN_Snapshot::take_new(TRUE); - pollfd pollClientFd = { client_id, POLLIN, 0 }; - int nEvents = poll(&pollClientFd, 1, 0); - if (nEvents == 1 && (pollClientFd.revents & (POLLIN | POLLHUP)) != 0) - break; - if (nEvents < 0 && errno != EINTR) - log_error("System call poll() failed on file descriptor %d", client_id); - } - log_debug("Deadlock resolved"); - break; - case SSL_ERROR_ZERO_RETURN: - goto client_closed_connection; - default: - log_warning("SSL error occured"); - return -1; - } - } - -client_closed_connection: - log_warning("SSL_Socket::send_message_on_nonblocking_fd: SSL connection was interrupted by the other side"); - SSL_set_quiet_shutdown(ssl_current_ssl, 1); - log_debug("Setting SSL SHUTDOWN mode to QUIET"); - ssl_current_client=NULL; - log_debug("leaving SSL_Socket::send_message_on_nonblocking_fd()"); - log_debug("SSL_Socket::send_message_on_nonblocking_fd: setting socket state to STATE_NORMAL"); - peer -> reading_state = STATE_NORMAL; - errno = EPIPE; - return -1; - -} - -bool SSL_Socket::ssl_verify_certificates() -{ - char str[SSL_CHARBUF_LENGTH]; - - log_debug("entering SSL_Socket::ssl_verify_certificates()"); - - ssl_log_SSL_info(); - - // Get the other side's certificate - log_debug("Check certificate of the other party"); - X509 *cert = SSL_get_peer_certificate (ssl_current_ssl); - if (cert != NULL) { - - { - log_debug("Certificate information:"); - X509_NAME_oneline (X509_get_subject_name (cert), str, SSL_CHARBUF_LENGTH); - log_debug(" subject: %s", str); - } - - // We could do all sorts of certificate verification stuff here before - // deallocating the certificate. - - // Just a basic check that the certificate is valid - // Other checks (e.g. Name in certificate vs. hostname) shall be - // done on application level - if (ssl_verify_certificate) - log_debug("Verification state is: %s", X509_verify_cert_error_string(SSL_get_verify_result(ssl_current_ssl))); - X509_free (cert); - - } else - log_warning("Other side does not have certificate."); - - log_debug("leaving SSL_Socket::ssl_verify_certificates()"); - return true; -} - - - -// Data set/get functions -char * SSL_Socket::get_ssl_password() const {return ssl_password;} -void SSL_Socket::set_ssl_use_ssl(bool par) {ssl_use_ssl=par;} -void SSL_Socket::set_ssl_verifycertificate(bool par) {ssl_verify_certificate=par;} -void SSL_Socket::set_ssl_use_session_resumption(bool par) {ssl_use_session_resumption=par;} -void SSL_Socket::set_ssl_key_file(char * par) { - delete [] ssl_key_file; - ssl_key_file=par; -} -void SSL_Socket::set_ssl_certificate_file(char * par) { - delete [] ssl_certificate_file; - ssl_certificate_file=par; -} -void SSL_Socket::set_ssl_trustedCAlist_file(char * par) { - delete [] ssl_trustedCAlist_file; - ssl_trustedCAlist_file=par; -} -void SSL_Socket::set_ssl_cipher_list(char * par) { - delete [] ssl_cipher_list; - ssl_cipher_list=par; -} -void SSL_Socket::set_ssl_server_auth_session_id_context(const unsigned char * par) { - ssl_server_auth_session_id_context=par; -} - -// Default parameter names -const char* SSL_Socket::ssl_use_ssl_name() { return "ssl_use_ssl";} -const char* SSL_Socket::ssl_use_session_resumption_name() { return "ssl_use_session_resumption";} -const char* SSL_Socket::ssl_private_key_file_name() { return "ssl_private_key_file";} -const char* SSL_Socket::ssl_trustedCAlist_file_name() { return "ssl_trustedCAlist_file";} -const char* SSL_Socket::ssl_certificate_file_name() { return "ssl_certificate_chain_file";} -const char* SSL_Socket::ssl_password_name() { return "ssl_private_key_password";} -const char* SSL_Socket::ssl_cipher_list_name() { return "ssl_allowed_ciphers_list";} -const char* SSL_Socket::ssl_verifycertificate_name() { return "ssl_verify_certificate";} -const char* SSL_Socket::ssl_disable_SSLv2() { return "ssl_disable_SSLv2";} -const char* SSL_Socket::ssl_disable_SSLv3() { return "ssl_disable_SSLv3";} -const char* SSL_Socket::ssl_disable_TLSv1() { return "ssl_disable_TLSv1";} -const char* SSL_Socket::ssl_disable_TLSv1_1() { return "ssl_disable_TLSv1_1";} -const char* SSL_Socket::ssl_disable_TLSv1_2() { return "ssl_disable_TLSv1_2";} - - -void SSL_Socket::ssl_actions_to_seed_PRNG() { - struct stat randstat; - - if(RAND_status()) { - log_debug("PRNG already initialized, no action needed"); - return; - } - log_debug("Seeding PRND"); - // OpenSSL tries to use random devives automatically - // these would not be necessary - if (!stat("/dev/urandom", &randstat)) { - log_debug("Using installed random device /dev/urandom for seeding the PRNG with %d bytes.", SSL_PRNG_LENGTH); - if (RAND_load_file("/dev/urandom", SSL_PRNG_LENGTH)!=SSL_PRNG_LENGTH) - log_error("Could not read from /dev/urandom"); - } else if (!stat("/dev/random", &randstat)) { - log_debug("Using installed random device /dev/random for seeding the PRNG with %d bytes.", SSL_PRNG_LENGTH); - if (RAND_load_file("/dev/random", SSL_PRNG_LENGTH)!=SSL_PRNG_LENGTH) - log_error("Could not read from /dev/random"); - } else { - /* Neither /dev/random nor /dev/urandom are present, so add - entropy to the SSL PRNG a hard way. */ - log_warning("Solaris patches to provide random generation devices are not installed.\nSee http://www.openssl.org/support/faq.html \"Why do I get a \"PRNG not seeded\" error message?\"\nA workaround will be used."); - for (int i = 0; i < 10000 && !RAND_status(); ++i) { - char buf[4]; - struct timeval tv; - gettimeofday(&tv, 0); - buf[0] = tv.tv_usec & 0xF; - buf[2] = (tv.tv_usec & 0xF0) >> 4; - buf[3] = (tv.tv_usec & 0xF00) >> 8; - buf[1] = (tv.tv_usec & 0xF000) >> 12; - RAND_add(buf, sizeof buf, 0.1); - } - return; - } - - if(!RAND_status()) { - log_error("Could not seed the Pseudo Random Number Generator with enough data."); - } else { - log_debug("PRNG successfully initialized."); - } -} - - -void SSL_Socket::ssl_init_SSL() -{ - if (ssl_initialized) { - log_debug("SSL already initialized, no action needed"); - return; - } - - { - log_debug("Init SSL started"); - log_debug("Using %s (%lx)", SSLeay_version(SSLEAY_VERSION), OPENSSL_VERSION_NUMBER); - } - - SSL_library_init(); // initialize library - SSL_load_error_strings(); // readable error messages - - // Create SSL method: both server and client understanding SSLv2, SSLv3, TLSv1 -// ssl_method = SSLv23_method(); -// if (ssl_method==NULL) -// log_error("SSL method creation failed."); - // Create context - ssl_ctx = SSL_CTX_new (SSLv23_method()); - if (ssl_ctx==NULL) - log_error("SSL context creation failed."); - - // valid for all SSL objects created from this context afterwards - if(ssl_certificate_file!=NULL) { - log_debug("Loading certificate file"); - if(SSL_CTX_use_certificate_chain_file(ssl_ctx, ssl_certificate_file)!=1) - log_error("Can't read certificate file "); - } - - // valid for all SSL objects created from this context afterwards - if(ssl_key_file!=NULL) { - log_debug("Loading key file"); - if (ssl_current_client!=NULL) log_warning("Warning: race condition while setting current client object pointer"); - ssl_current_client=(SSL_Socket *)this; - if(ssl_password!=NULL) - SSL_CTX_set_default_passwd_cb(ssl_ctx, ssl_password_cb); - if(SSL_CTX_use_PrivateKey_file(ssl_ctx, ssl_key_file, SSL_FILETYPE_PEM)!=1) - log_error("Can't read key file "); - ssl_current_client=NULL; - } - - if (ssl_trustedCAlist_file!=NULL) { - log_debug("Loading trusted CA list file"); - if (SSL_CTX_load_verify_locations(ssl_ctx, ssl_trustedCAlist_file, NULL)!=1) - log_error("Can't read trustedCAlist file "); - } - - if (ssl_certificate_file!=NULL && ssl_key_file!=NULL) { - log_debug("Check for consistency between private and public keys"); - if (SSL_CTX_check_private_key(ssl_ctx)!=1) - log_warning("Private key does not match the certificate public key"); - } - - // check the other side's certificates - if (ssl_verify_certificate) { - log_debug("Setting verification behaviour: verification required and do not allow to continue on failure.."); - SSL_CTX_set_verify(ssl_ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, ssl_verify_callback); - } else { - log_debug("Setting verification behaviour: verification not required and do allow to continue on failure.."); - SSL_CTX_set_verify(ssl_ctx, SSL_VERIFY_NONE, ssl_verify_callback); - } - - if (ssl_cipher_list!=NULL) { - log_debug("Setting ssl_cipher list restrictions"); - if (SSL_CTX_set_cipher_list(ssl_ctx, ssl_cipher_list)!=1) - log_error("Cipher list restriction failed for %s", ssl_cipher_list); - } - - ssl_actions_to_seed_PRNG(); - - if (Abstract_Socket::get_server_mode() && ssl_use_session_resumption) { - log_debug("Prepare server for ssl_session resumption"); - - log_debug("Context is: %s; length = %lu", ssl_server_auth_session_id_context, (unsigned long)strlen((const char*)ssl_server_auth_session_id_context)); - if (SSL_CTX_set_session_id_context(ssl_ctx, ssl_server_auth_session_id_context, strlen((const char*)ssl_server_auth_session_id_context))!=1) - log_error("Activation of SSL ssl_session resumption failed on server"); - } - - ssl_initialized=true; - - log_debug("Init SSL successfully finished"); -} - - -void SSL_Socket::ssl_log_SSL_info() -{ - char str[SSL_CHARBUF_LENGTH]; - - log_debug("Check SSL description"); - const SSL_CIPHER *ssl_cipher=SSL_get_current_cipher(ssl_current_ssl); - if (ssl_cipher!=NULL) { - SSL_CIPHER_description(SSL_get_current_cipher(ssl_current_ssl), str, SSL_CHARBUF_LENGTH); - { - log_debug("SSL description:"); - log_debug("%s", str); - } - } -} - - - -// Log the SSL error and flush the error queue -// Can be used after the followings: -// SSL_connect(), SSL_accept(), SSL_do_handshake(), -// SSL_read(), SSL_peek(), or SSL_write() -int SSL_Socket::ssl_getresult(int res) -{ - int err = SSL_get_error(ssl_current_ssl, res); - - log_debug("SSL operation result:"); - - switch(err) { - case SSL_ERROR_NONE: - log_debug("SSL_ERROR_NONE"); - break; - case SSL_ERROR_ZERO_RETURN: - log_debug("SSL_ERROR_ZERO_RETURN"); - break; - case SSL_ERROR_WANT_READ: - log_debug("SSL_ERROR_WANT_READ"); - break; - case SSL_ERROR_WANT_WRITE: - log_debug("SSL_ERROR_WANT_WRITE"); - break; - case SSL_ERROR_WANT_CONNECT: - log_debug("SSL_ERROR_WANT_CONNECT"); - break; - case SSL_ERROR_WANT_ACCEPT: - log_debug("SSL_ERROR_WANT_ACCEPT"); - break; - case SSL_ERROR_WANT_X509_LOOKUP: - log_debug("SSL_ERROR_WANT_X509_LOOKUP"); - break; - case SSL_ERROR_SYSCALL: - log_debug("SSL_ERROR_SYSCALL"); - log_debug("EOF was observed that violates the protocol, peer disconnected; treated as a normal disconnect"); - return SSL_ERROR_ZERO_RETURN; - break; - case SSL_ERROR_SSL: - log_debug("SSL_ERROR_SSL"); - break; - default: - log_error("Unknown SSL error code: %d", err); - } - // get the copy of the error string in readable format - unsigned long e=ERR_get_error(); - while (e) { - log_debug("SSL error queue content:"); - log_debug(" Library: %s", ERR_lib_error_string(e)); - log_debug(" Function: %s", ERR_func_error_string(e)); - log_debug(" Reason: %s", ERR_reason_error_string(e)); - e=ERR_get_error(); - } - //It does the same but more simple: - // ERR_print_errors_fp(stderr); - return err; -} - -int SSL_Socket::ssl_verify_certificates_at_handshake(int /*preverify_ok*/, X509_STORE_CTX */*ssl_ctx*/) { - // don't care by default - return -1; -} - -// Callback function used by OpenSSL. -// Called when a password is needed to decrypt the private key file. -// NOTE: not thread safe -int SSL_Socket::ssl_password_cb(char *buf, int num, int /*rwflag*/,void */*userdata*/) { - - if (ssl_current_client!=NULL) { - char *ssl_client_password; - ssl_client_password=((SSL_Socket *)ssl_current_client)->get_ssl_password(); - if(ssl_client_password==NULL) return 0; - const char* pass = (const char*) ssl_client_password; - int pass_len = strlen(pass) + 1; - if (num < pass_len) return 0; - - strcpy(buf, pass); - return(strlen(pass)); - } else { // go on with no password set - fprintf(stderr, "Warning: no current SSL object found but ssl_password_cb is called, programming error\n"); - return 0; - } -} - -// Callback function used by OpenSSL. -// Called during SSL handshake with a pre-verification status. -int SSL_Socket::ssl_verify_callback(int preverify_ok, X509_STORE_CTX *ssl_ctx) -{ - SSL *ssl_pointer; - SSL_CTX *ctx_pointer; - int user_result; - - ssl_pointer = (SSL *)X509_STORE_CTX_get_ex_data(ssl_ctx, SSL_get_ex_data_X509_STORE_CTX_idx()); - ctx_pointer = SSL_get_SSL_CTX(ssl_pointer); - - if (ssl_current_client!=NULL) { - // if ssl_verifiycertificate == "no", then always accept connections - if(((SSL_Socket *)ssl_current_client)->ssl_verify_certificate) { - user_result=((SSL_Socket *)ssl_current_client)->ssl_verify_certificates_at_handshake(preverify_ok, ssl_ctx); - if (user_result>=0) return user_result; - } else { - return 1; - } - } else { // go on with default authentication - fprintf(stderr, "Warning: no current SSL object found but ssl_verify_callback is called, programming error\n"); - } - - // if ssl_verifiycertificate == "no", then always accept connections - if (SSL_CTX_get_verify_mode(ctx_pointer) == SSL_VERIFY_NONE) - return 1; - // if ssl_verifiycertificate == "yes", then accept connections only if the - // certificate is valid - else if (SSL_CTX_get_verify_mode(ctx_pointer) & SSL_VERIFY_PEER) { - return preverify_ok; - } - // something went wrong - else - return 0; -} - -#endif diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/6d/90a3c3d3978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/6d/90a3c3d3978500181c21d10bc58219ba deleted file mode 100644 index 5751e97d77ed24423b9ef6b9c3a138cd7b9dcbdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 375992 zcmd?S2Y6M*_CCDlBqZk$fk+n+BF#t%9YPN^A%sBaMF)Bb+E3bFN z7|;J_ye?i)^0l7#;{|10AxoqzZ@;%sxLr{0ij8(z*t%J{2lAd)?uER!m9vrOSh)}K zTr2lQo@eEL$n&k-ANc?)7a$*qZ4kD>RyPFsP%95ZKHSP9Y(5hCC~Rli@@V8^uoc?! zSmfiZJl^I-HlKjJ*vb=;PqOl4XZ1<-Jr>eZ z(duQNty^$x^|H@Qg>&gC=c3L?y<<#PEj#wdAD&m?Ty{^+MQx}HuYOY+$9R&4A4#=pq_hLisnePm=b)Bh9aj+;@uXx7|m&F0N5 zYBqh=q)Ekd=VcUe9pS%blV{B+ZnkjTq`Bi}&Tr<(^P0_{GJo7mO*4vS%`I-$XXd>5 z&epM_{7n9}*hi|02hnl-a%!Q8pUGmDCq zTS}ecci#Nzg|o*^p~u20>;YJKJ%{w`H=?lnklwv}4fN&~Pb@_2-jqo*(M_I

W*X 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%0DXg`_b|{ZqH-n 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ßi#>9RHrd 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 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/7/0022c7e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/7/0022c7e1978500181c21d10bc58219ba deleted file mode 100644 index af797a3..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/7/0022c7e1978500181c21d10bc58219ba +++ /dev/null @@ -1,67 +0,0 @@ -/*! - * \file layer_stack_builder.hh - * \brief Header file for ITS protocol stack builder. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "layer_factory.hh" - -/*! - * \class layer_stack_builder - * \brief This class provides a factory class to create Layer class instances - */ -class layer_stack_builder { -private: //! \privatesection - typedef std::map LayerFactoryMap; - - static layer_stack_builder * _instance; //! Smart pointer to the unique instance of the logger framework - std::map _layer_factories; //! The list of the registered \see t_layer factories - - /*! - * \brief Default constructor - * Create a new instance of the layer_stack_builder class - * \private - */ - layer_stack_builder(); // can not be created manually -public: //! \publicsection - /*! - * \fn layer_stack_builder* get_instance(); - * \brief Accessor for the unique instance of the logger framework - * \static - */ - static layer_stack_builder* get_instance(); - - /*! - * \fn void register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory); - * \brief Add a new layer factory - * \param[in] p_type The layer identifier (e.g. GN for the GeoNetworking layer...) - * \param[in] p_layer_factory A reference to the \see layer_factory - * \static - */ - static void register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory); - -private: //! \privatesection - /*! - * \fn void _register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory); - * \brief Add a new layer factory - * \param[in] p_type The layer identifier (e.g. GN for the GeoNetworking layer...) - * \param[in] p_layer_factory A reference to the \see layer_factory - */ - void _register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory); - -public: //! \publicsection - /*! - * \fn layer* create_layer_stack(const char* p_layer_stack_description); - * \brief Add a new layer factory - * \param[in] p_layer_stack_description A textual description of the layer to create - * \return The created layer object on success, nullptr otherwise - */ - layer* create_layer_stack(const char* p_layer_stack_description); -}; // End of class layer_stack_builder - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/70/d0485336b685001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/70/d0485336b685001814de869e8ad08251 deleted file mode 100644 index 836983c..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/70/d0485336b685001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 11:30:22 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall-std=c++11-pthread-fPIC - -# Flags for the linker: -LDFLAGS = -pthread-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/71/10e63a61a88500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/71/10e63a61a88500181eabf1ba1ea37ea1 deleted file mode 100644 index ede66de..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/71/10e63a61a88500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,127 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn - - true - - - - - - src/ttcn/ttcn/TestCodec - - false - true - - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/72/c072b5d3978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/72/c072b5d3978500181c21d10bc58219ba deleted file mode 100644 index bcdfff1ea4a405e245ebe4510878dcbc48f9dbb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 340448 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 M+V41Z14QfpA7h3NxBvhE diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/73/f0fcb796c28500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/73/f0fcb796c28500181dc9eb7ae31560a9 deleted file mode 100644 index 0324abb..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/73/f0fcb796c28500181dc9eb7ae31560a9 +++ /dev/null @@ -1,132 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - None - -std=c++11-pthread-fPIC - - pcap - ssl - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - -pthread-fPIC - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn - - true - - - - - - src/ttcn/ttcn/TestCodec - - false - true - - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/74/d011241cb985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/74/d011241cb985001814de869e8ad08251 deleted file mode 100644 index e34b889..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/74/d011241cb985001814de869e8ad08251 +++ /dev/null @@ -1,257 +0,0 @@ -11:31:00.784752 hc EXECUTOR - TTCN-3 Host Controller started on vagrant. Version: CRL 113 200/6 R4A. -11:31:00.784785 hc EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error -11:31:00.784790 hc EXECUTOR - Maximum number of open file descriptors: 1048576, FD_SETSIZE = 1024 -11:31:00.784904 hc WARNING - Warning: The address of MC was set to a local IP address. This may cause incorrect behavior if a HC from a remote host also connects to MC. -11:31:00.784912 hc EXECUTOR - The address of MC was set to 127.0.0.1:0. -11:31:00.791043 hc EXECUTOR - Connected to MC. -11:31:00.791150 hc EXECUTOR - This host supports UNIX domain sockets for local communication. -11:31:00.794161 hc EXECUTOR - Processing configuration data received from MC. -11:31:00.795044 hc EXECUTOR - Module LibCommon_Sync has the following parameters: { PX_TSYNC_TIME_LIMIT := 120.000000, PX_TSHUT_DOWN_TIME_LIMIT := 120.000000 } -11:31:00.795100 hc EXECUTOR - Module LibCommon_Time has the following parameters: { PX_TDONE := 120.000000, PX_TAC := 30.000000, PX_TNOAC := 10.000000, PX_TWAIT := 120.000000, PX_LOOP := 1.000000 } -11:31:00.795158 hc EXECUTOR - Module LibItsHttp_Pics has the following parameters: { PICS_HEADER_HOST := "ptsv2.com", PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8" } -11:31:00.795210 hc EXECUTOR - Module LibNg112_Pics has the following parameters: { PICS_LIS_IUT := true, PICS_ECRF_IUT := false, PICS_HTTP_POST_REQUEST := true, PICS_LOCATION_HELD := true, PICS_SERVICE_LOST := true, PICS_LIS_REQUEST_URIs := { "/t/9rk8l-1531130342/post", "/t/r143f-1528105031/post", "/t/6ouem-1531201238/post" }, PICS_ECRF_URI := "/service" } -11:31:00.795273 hc EXECUTOR - Module LibNg112_Pixits has the following parameters: { PX_DOUBLE_CMP_EPSILON := 1.000000e-05, PX_DEVICE_URI_SIP := "sip:user@example.net;gr=kjh29x97us97d", PX_DEVICE_URI_TEL := "+436501234567", PX_UNKNOWN_DEVICE_URI := "sip:no_one@example.net;gr=kjh29x97us97d", PX_DEVICE_POSITION := { -34.407000, 150.883000, 24.800000 }, PX_CIRCLE_POS := { 48.215388, 16.290300 }, PX_CIRCLE_UOM := "urn:ogc:def:uom:EPSG::9001", PX_CIRCLE_BASE := 23.600000, PX_SRS_NAME := "urn:ogc:def:crs:EPSG::4326" } -11:31:00.795375 hc EXECUTOR - Module LibSip_PIXITS has the following parameters: { PX_SIP_SDP_USER_NAME := "voicesession", PX_SIP_SDP_SESSION_ID := "30000", PX_SIP_SDP_DYN := "0", PX_SIP_SDP_B_MODIFIER := "AS", PX_SIP_SDP_B_BANDWIDTH := 64, PX_SIP_SDP_ENCODING := "PCMU", PX_SIP_SDP_CLOCKRATE := "8000", PX_MB_LENGTH_FROM_ENCVAL := true, PX_USE_FX_FOR_XML_LENGTH := false, PX_SIP_TRANSPORT := "UDP", PX_SIP_REGISTRATION := false, PX_AUTH_ALGORITHM := "AKAv1-MD5", PX_SIP_REGISTER_AUTHENTICATION_ENABLED := true, PX_SIP_INVITE_AUTHENTICATION_ENABLED := false, PX_SIP_TWAIT := 30.000000, PX_SIP_TACK := 8.000000, PX_SIP_TRESP := 15.000000, PX_SIP_TNOACT := 1.000000, PX_SIP_MIME_BOUNDARY := "boundary1" } -11:31:00.795494 hc EXECUTOR - Initializing module AtsNg112_TestCases. -11:31:00.795542 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibItsHttp_Functions. -11:31:00.795594 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_TypesAndValues. -11:31:00.795645 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0 Initializing module LibItsHttp_MessageBodyTypes. -11:31:00.795698 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XmlMessageBodyTypes. -11:31:00.795757 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XMLTypes. -11:31:00.795831 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held. -11:31:00.795900 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initializing module http_www_w3_org_XML_1998_namespace. -11:31:00.796014 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initializing module XSD. -11:31:00.796090 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn:0 Initializing module UsefulTtcn3Types. -11:31:00.796174 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn:0 Initialization of module UsefulTtcn3Types finished. -11:31:00.796252 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initialization of module XSD finished. -11:31:00.796324 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initialization of module http_www_w3_org_XML_1998_namespace finished. -11:31:00.796394 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held finished. -11:31:00.796550 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held_id. -11:31:00.796620 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held_id finished. -11:31:00.796686 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10. -11:31:00.796750 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy. -11:31:00.796820 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy finished. -11:31:00.796891 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10 finished. -11:31:00.803032 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc. -11:31:00.803181 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc finished. -11:31:00.803259 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf. -11:31:00.806217 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf finished. -11:31:00.806349 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XMLTypes finished. -11:31:00.806418 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XmlMessageBodyTypes finished. -11:31:00.806570 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_BinaryMessageBodyTypes. -11:31:00.806644 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_BinaryMessageBodyTypes finished. -11:31:00.806705 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0 Initialization of module LibItsHttp_MessageBodyTypes finished. -11:31:00.806762 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_TypesAndValues finished. -11:31:00.806813 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_Pics. -11:31:00.806864 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_Pics finished. -11:31:00.806915 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibItsHttp_Functions finished. -11:31:00.807032 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Templates. -11:31:00.807076 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Templates finished. -11:31:00.807096 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Functions. -11:31:00.807117 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_Templates. -11:31:00.807138 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_Templates finished. -11:31:00.807158 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_XmlTemplates. -11:31:00.807178 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape. -11:31:00.807200 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0 Initializing module http_www_opengis_net_pidflo_1_0. -11:31:00.807237 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn:0 Initializing module http_www_opengis_net_gml. -11:31:00.807262 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn:0 Initialization of module http_www_opengis_net_gml finished. -11:31:00.807286 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0 Initialization of module http_www_opengis_net_pidflo_1_0 finished. -11:31:00.807309 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape finished. -11:31:00.807334 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_XmlTemplates finished. -11:31:00.807354 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TypesAndValues. -11:31:00.807374 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TypesAndValues finished. -11:31:00.807393 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TestSystem. -11:31:00.807414 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibItsHttp_TestSystem. -11:31:00.807436 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Sync. -11:31:00.810148 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initializing module LibCommon_AbstractData. -11:31:00.810253 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0->../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initializing module LibCommon_BasicTypesAndValues. -11:31:00.810326 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0->../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initialization of module LibCommon_BasicTypesAndValues finished. -11:31:00.810409 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_AbstractData finished. -11:31:00.810531 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initializing module LibCommon_VerdictControl. -11:31:00.810599 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_VerdictControl finished. -11:31:00.810667 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Sync finished. -11:31:00.810728 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Time. -11:31:00.810790 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Time finished. -11:31:00.810850 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibItsHttp_TestSystem finished. -11:31:00.810906 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibSip_Interface. -11:31:00.811072 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_SIPTypesAndValues. -11:31:00.811157 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0 Initializing module LibSip_MessageBodyTypes. -11:31:00.811229 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SDPTypes. -11:31:00.811301 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn:0 Initializing module LibSip_Common. -11:31:00.811385 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn:0 Initialization of module LibSip_Common finished. -11:31:00.811508 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SDPTypes finished. -11:31:00.811582 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SimpleMsgSummaryTypes. -11:31:00.811654 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SimpleMsgSummaryTypes finished. -11:31:00.811726 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_XMLTypes. -11:31:00.811799 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_resource_lists. -11:31:00.811875 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_resource_lists finished. -11:31:00.811967 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_xcap. -11:31:00.812051 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_ietf_params_xml_ns_common_policy. -11:31:00.812142 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_ietf_params_xml_ns_common_policy finished. -11:31:00.812221 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_oma_xml_xdm_common_policy. -11:31:00.812311 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_oma_xml_xdm_common_policy finished. -11:31:00.812534 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_xcap finished. -11:31:00.815136 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_mcid. -11:31:00.815275 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_mcid finished. -11:31:00.815355 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module NoTargetNamespace. -11:31:00.815433 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module NoTargetNamespace finished. -11:31:00.815573 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_3gpp_ns_cw_1_0. -11:31:00.815649 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_3gpp_ns_cw_1_0 finished. -11:31:00.815725 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_conference_info. -11:31:00.815798 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_conference_info finished. -11:31:00.815868 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_pstn. -11:31:00.815950 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_pstn finished. -11:31:00.824022 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_comm_div_info. -11:31:00.824161 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_comm_div_info finished. -11:31:00.824246 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_reginfo. -11:31:00.824319 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_reginfo finished. -11:31:00.824389 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_XMLTypes finished. -11:31:00.824502 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0 Initialization of module LibSip_MessageBodyTypes finished. -11:31:00.824570 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_SIPTypesAndValues finished. -11:31:00.824631 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_PIXITS. -11:31:00.824691 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initializing module LibCommon_DataStrings. -11:31:00.824754 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initialization of module LibCommon_DataStrings finished. -11:31:00.824818 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_PIXITS finished. -11:31:00.824879 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibSip_Interface finished. -11:31:00.824935 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TestSystem finished. -11:31:00.825037 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Functions finished. -11:31:00.825081 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pics. -11:31:00.825125 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pics finished. -11:31:00.825169 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pixits. -11:31:00.825212 hc EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pixits finished. -11:31:00.825773 hc EXECUTOR - Initialization of module AtsNg112_TestCases finished. -11:31:00.825829 hc EXECUTOR - Initializing module AtsNg112_TestControl. -11:31:00.825872 hc EXECUTOR - Initialization of module AtsNg112_TestControl finished. -11:31:00.825915 hc EXECUTOR - Initializing module LibCommon_TextStrings. -11:31:00.826000 hc EXECUTOR - Initialization of module LibCommon_TextStrings finished. -11:31:00.826046 hc EXECUTOR - Initializing module LibItsHttp_BinaryTemplates. -11:31:00.826088 hc EXECUTOR - Initialization of module LibItsHttp_BinaryTemplates finished. -11:31:00.826130 hc EXECUTOR - Initializing module LibItsHttp_BinaryTypes. -11:31:00.826171 hc EXECUTOR - Initialization of module LibItsHttp_BinaryTypes finished. -11:31:00.826213 hc EXECUTOR - Initializing module LibItsHttp_EncdecDeclarations. -11:31:00.826255 hc EXECUTOR - Initialization of module LibItsHttp_EncdecDeclarations finished. -11:31:00.826297 hc EXECUTOR - Initializing module LibNg112_EncdecDeclarations. -11:31:00.826339 hc EXECUTOR - Initialization of module LibNg112_EncdecDeclarations finished. -11:31:00.826381 hc EXECUTOR - Initializing module LibSip_EncdecDeclarations. -11:31:00.826426 hc EXECUTOR ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn:0 Initializing module LibSip_SMSTypesAndValues. -11:31:00.827039 hc EXECUTOR ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn:0 Initialization of module LibSip_SMSTypesAndValues finished. -11:31:00.827122 hc EXECUTOR - Initialization of module LibSip_EncdecDeclarations finished. -11:31:00.829723 hc EXECUTOR - Initializing module LibSip_Library. -11:31:00.829826 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_SMSTemplates. -11:31:00.829888 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn:0 Initializing module LibSip_SMSFunctions. -11:31:00.829984 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn:0 Initialization of module LibSip_SMSFunctions finished. -11:31:00.832419 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_SMSTemplates finished. -11:31:00.839154 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_Steps. -11:31:00.839218 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn:0 Initializing module LibSip_Templates. -11:31:00.853331 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn:0 Initialization of module LibSip_Templates finished. -11:31:00.853598 hc EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_Steps finished. -11:31:00.853699 hc EXECUTOR - Initialization of module LibSip_Library finished. -11:31:00.853789 hc EXECUTOR - Initializing module PreGenRecordOf. -11:31:00.853877 hc EXECUTOR - Initialization of module PreGenRecordOf finished. -11:31:00.853966 hc EXECUTOR - Initializing module TitanLoggerApi. -11:31:00.854055 hc EXECUTOR - Initialization of module TitanLoggerApi finished. -11:31:00.854141 hc EXECUTOR - Initializing module urn_ietf_params_xml_ns_geopriv_conf. -11:31:00.854231 hc EXECUTOR - Initialization of module urn_ietf_params_xml_ns_geopriv_conf finished. -11:31:00.854377 hc EXECUTOR - Configuration data was processed successfully. -11:31:00.854729 hc EXECUTOR - MTC was created. Process id: 21691. -11:31:00.861820 mtc EXECUTOR - TTCN-3 Main Test Component started on vagrant. Version: CRL 113 200/6 R4A. -11:31:00.861932 mtc EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error -11:31:00.862105 mtc EXECUTOR - Connected to MC. -11:31:00.862183 mtc EXECUTOR - Executing test case TC_LIS_HTTP_POST_BV_01 in module AtsNg112_TestCases. -11:31:00.862289 mtc TESTCASE ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Test case TC_LIS_HTTP_POST_BV_01 started. -11:31:00.862347 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Initializing variables, timers and ports of component type LibItsHttp_TestSystem.HttpComponent inside testcase TC_LIS_HTTP_POST_BV_01. -11:31:00.862456 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port syncPort was started. -11:31:00.862547 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port syncSendPort was started. -11:31:00.862601 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) >>> HttpPort::user_start -11:31:00.862651 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Port httpPort was started. -11:31:00.862699 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:91(testcase:TC_LIS_HTTP_POST_BV_01) Component type LibItsHttp_TestSystem.HttpComponent was initialized. -11:31:00.862779 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Mapping port mtc:httpPort to system:httpPort. -11:31:00.866560 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) HttpPort::set_parameter: params=HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) -11:31:00.866682 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> HttpPort::user_map: httpPort -11:31:00.866749 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) HttpPort::user_map: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) -11:31:00.866814 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) -11:31:00.867930 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1, - codecs - held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1 - , -11:31:00.868067 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - server=ptsv2.com, - server - ptsv2.com - , -11:31:00.868143 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - port=80, - port - 80 - , -11:31:00.868219 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - use_ssl=0) - use_ssl - 0) - -11:31:00.868299 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert -11:31:00.868353 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> layer_stack_builder::create_layer_stack: HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) -11:31:00.869245 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: 5 - HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/ - HTTP - (codecs=held:held_codec;html:html_codec;json:json_codec) - codecs=held:held_codec;html:html_codec;json:json_codec -11:31:00.877679 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Create layer HTTP, codecs=held:held_codec;html:html_codec;json:json_codec -11:31:00.877814 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> sip_layer::sip_layer: HTTP, codecs=held:held_codec;html:html_codec;json:json_codec -11:31:00.877874 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: codecs=held:held_codec;html:html_codec;json:json_codec -11:31:00.878777 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - codecs=held:held_codec;html:html_codec;json:json_codec - codecs - held:held_codec;html:html_codec;json:json_codec - -11:31:00.883125 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert -11:31:00.883244 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Setup layers for HTTP -11:31:00.883357 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: 5 - TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0) - TCP - (debug=1,server=ptsv2.com,port=80,use_ssl=0) - debug=1,server=ptsv2.com,port=80,use_ssl=0 -11:31:00.883419 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Create layer TCP, debug=1,server=ptsv2.com,port=80,use_ssl=0 -11:31:00.883527 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::tcp_layer: TCP, debug=1,server=ptsv2.com,port=80,use_ssl=0 -11:31:00.883601 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: debug=1,server=ptsv2.com,port=80,use_ssl=0 -11:31:00.884476 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - debug=1, - debug - 1 - , -11:31:00.884587 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - server=ptsv2.com, - server - ptsv2.com - , -11:31:00.884667 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - port=80, - port - 80 - , -11:31:00.884748 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - use_ssl=0 - use_ssl - 0 - -11:31:00.884820 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert -11:31:00.884876 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::log -11:31:00.884940 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (debug, 1) -11:31:00.885037 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (port, 80) -11:31:00.885091 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (server, ptsv2.com) -11:31:00.885144 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (use_ssl, 0) -11:31:00.885199 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(server, ptsv2.com) -11:31:00.885254 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(server, ptsv2.com) -11:31:00.885308 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(server, ptsv2.com) -11:31:00.885362 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(server, ptsv2.com) -11:31:00.885418 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(port, 80) -11:31:00.885513 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(port, 80) -11:31:00.885571 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(port, 80) -11:31:00.885634 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(port, 80) -11:31:00.885696 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(use_connection_ASPs, yes) -11:31:00.885752 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(use_connection_ASPs, yes) -11:31:00.885805 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(use_connection_ASPs, yes) -11:31:00.885860 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(use_connection_ASPs, yes) -11:31:00.885913 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(server_backlog, 1024) -11:31:00.886009 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(server_backlog, 1024) -11:31:00.886065 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(server_backlog, 1024) -11:31:00.886121 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(server_backlog, 1024) -11:31:00.886175 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::map_user() -11:31:00.886228 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::map_user() -11:31:00.886283 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::open_client_connection(remoteAddr: ptsv2.com/80, localAddr: UNSPEC/UNSPEC) called -11:31:00.888097 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Number of remote addresses: 8 - -11:31:00.891050 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Using address family for socket 6: IPv4 -11:31:00.891178 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Connecting to server from address UNSPEC/UNSPEC -11:31:00.917758 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Connection established (addr): 10.0.2.15/43142 -> ptsv2.com/80 - -11:31:00.917855 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: connected to: host ptsv2.com service 80 via address family IPv4 - -11:31:00.917896 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_add_peer: Adding client 6 to peer list -11:31:00.917932 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_get_last_peer: Finding last peer of the peer array -11:31:00.918055 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_get_last_peer: No active peer found -11:31:00.918093 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_resize_list: Resizing to 7 -11:31:00.918128 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_resize_list: New length is 7 -11:31:00.918172 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::open_client_connection(). Handler set to socket fd 6 -11:31:00.918210 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::add_user_data: 6 -11:31:00.918249 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) tcp_layer::add_user_data: Non secured mode -11:31:00.918285 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::client_connection_opened: 6 -11:31:00.918321 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Setup layers for TCP -11:31:00.918381 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Port httpPort was mapped to system:httpPort. -11:31:00.918603 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Map operation of mtc:httpPort to system:httpPort finished. -11:31:00.918680 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Connecting ports mtc:syncSendPort and mtc:syncPort. -11:31:00.918771 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Port syncPort has established the connection with local port syncSendPort. -11:31:00.918831 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Port syncSendPort has established the connection with local port syncPort. -11:31:00.918919 mtc PARALLEL ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Connect operation on mtc:syncSendPort and mtc:syncPort finished. -11:31:00.919041 mtc DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:28(function:f_cf_01_http_up) Altstep a_cf_01_http_down was activated as default, id 1 -11:31:00.919082 mtc DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:29(function:f_cf_01_http_up) Altstep a_default_requests was activated as default, id 2 -11:31:00.919119 mtc DEFAULTOP ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:104(testcase:TC_LIS_HTTP_POST_BV_01)->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:30(function:f_cf_01_http_up) Altstep a_default_responses was activated as default, id 3 -11:31:00.919387 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) Warning: No UTF-8 Byte Order Mark(BOM) detected. It may result decoding errors -11:31:00.919998 mtc PORTEVENT ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) Sent on httpPort to system @LibItsHttp_TypesAndValues.HttpMessage : { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } -11:31:00.920062 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> HttpPort::outgoing_send: payload={ request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } -11:31:00.920207 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_layer::sendMsg: { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } -11:31:00.920333 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode: { request := { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } } -11:31:00.920484 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode_request: { method := "POST", uri := "/t/9rk8l-1531130342/post", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "ptsv2.com" } }, { header_name := "Content-type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-length", header_value := { "0" } }, { header_name := "Connection", header_value := { "keep-alive" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Cache-Control", header_value := { "no-cache" } } }, body := { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } } -11:31:00.920627 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_request: body: { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } -11:31:00.920692 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode_body: { xml_body := { locationRequest := { responseTime := omit, attr := omit, locationType := { exact := true, base := { alt_1 := { geodetic (1) } } }, elem_list := { "\n\t+436501234567\n\n\n" } } } } -11:31:00.920757 mtc DEBUG ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:110(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_body: # of codecs=0 -11:31:01.998763 hc EXECUTOR - Exit was requested from MC. Terminating HC. -11:31:01.999234 hc EXECUTOR - Disconnected from MC. -11:31:01.999278 hc EXECUTOR - TTCN-3 Host Controller finished. diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/74/f033d3d3978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/74/f033d3d3978500181c21d10bc58219ba deleted file mode 100644 index db5a22c3259afa85f881fc5adcada3cd711fbe2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 663120 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

>|0({%<@dI55GpyF^WlIwyGV0?6$ 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%0AD5Ml16hTAY@7&2FJ zGgI7&=B81~*G1;0amu%Jlfp5c!a1>m;&>a1-p3VMg*%yXsskcx3H}Mt?*wo5U^yT{ z7PyBG!$%-+*>Epb{!bEW1E>?hteoeRA$36HbOfKPA(z-Pf!7B_#sa%689tlUhh_o0 z)sIWsYTm_)5)DX?vN)>yUM?0eXjED{WgDX6ZeEehx^>0TGtY7>?~kT(~fJo{HKO_f4*y1oj6ua+$2wQs+K@_v^fCx*S9gva( zA}n=DKuQjXu!YwLAnSn0{Q*c0h;Xi~3B)A_L^wx22uP{-1SmK52BiMUwTz_>8>!PJ zHE&lMWhEaFX%46ZE-rodEwAlZ2SoY+KR+4AIv`R6e1_rN1cPj4)&Y?PAU%?V$Rn0I zAQFZ6dT`z~Jjxd?G--fBmIES0{+@`VbSjw44OMt@K!kWlgLAy$Srj=SLIEcOju^^& zlp)e*%K?!K01Y>=r9lpeP$X9Yp68>8<%h0Dri(>#K!kE>35ctSOii0BGgrXG10tmP z-yrTTU$Yz#Ak4*+^pt5CiEI)=IZYy|X*k>;IqbwGrrzW}t$NDKV3C!KmRW~#XCxaEMz zy%cvQpc4qTdVM({vXtO%fbs&;+gLeEUj%4GK>B@#S$aC4YXj2T8Rq@rg@6_Z;LjKy zMRC6XXng>d10oE62&I#!LebO6-T z2fNH+%hUl8&iO)+M*E1W@CvJt9_GvdeuLpqkmASz5l+biz@Ic6?j9sAIUvG%UIzZY z;c&fRqa@wxfXH_sxZ`xXe=fxx{isH&4u~8HLVZnA#>fE?j;I}=Yz z;6sSRot0&<91!6|O$9zP8Rs4^bM6Mdgg8|B>~TU4h;Ur%fp0Z>tbs`mh_KCH0sk?X z9yuVwdTNfx6d9M;Z0V5$B0thxGYfbZ;;=ndy5xY!uf*vOywK>eII_s$ihUXIt29St zu^bTLF5?zJ_Y%y}a0ezsOHL{Z%UJksp@S5EOwfxF|3Qk0 zh)1nbQe0YF%8I3mw^@LL6tpx*TZA7;i5#TZjQcIPLNjSa3ia^HL5fcix?3YI#~>rC z9Hh7&P*w12;0nzmVKozg4|}peGl85CK#yf~9_U?xLbY?gp|%qqc&RI1Z{y>i};d3R&;o<|V;9Nbx1$@BI|s;*wP@WvD8e z9`5I;!IJC#gA|8i4W@uR-kuQBX)Z08#h))lb1Ik;aHdNux3oU^QMHbZo`m}=aD|>A zTVWQwa(Lnfgx;nRm!lLxB4Pvt^t6FjdMPbrm?C}+*E>Xc-b3Z^L}P@0i|eNVI)Y`} zAhafuei$xWRt`_BgR*8ovIu3XrJ&{T1f?$z$XOb-%jpVMPYUogPiKOrsDhTm6Qtle zAoDe9EAS3aJOX$nQ7CQhi(Ud}aU4_^wgP_7Pq7M`N&~G@{q!Us|1{&Ul)(+Bsy)k; zS=3ysP;knPhfIQV1pC$Di3SLffZ?>;e9)ydez z!o}k5J`dkQsdn8)z_JXUN_EvfJdq3NJOejDCR!2MhbP8@beSQt9rodgIG_avCNo@% zvx{wc9QbO(AyaJ5_sn?<_~(Yh_OKqFBb&n$zk^ZrQk7_#x&Dj9Q{?bObyDqyL1?B) zk~2b*?ng+uAoMXL&K{neq{!h3CXEDMWH@A#40`JD1XT$)4ty?gYEur23aaFIHH+XS zfS%AQ6g-sSs|kJy&}&ATC%NkI1WSJnXpfN=SPoCHbhRm{`nc@4Wl!`rQr-km3xc_V ziD`0pVllxz0rd_@%i#%@9tLPkKw5SVS-J#JEFgWKm#{^E9tyyZdhl96n**>Mo?zvl z0NN3NOIey>_cCK_H5JfI zf+~>Q-`Pftmk3i%aiG8$sAstYytjmGCgv5f>$R$0RPLcho|W|C`Fzt z(2za|H`aLw4BJlHUzk_$u+4LZ!-(P5={OB-=PdHqIf+C1;(h?G&`DJ6^%;rK?`Q;0 zCLjlZ+mld^t}pr0S_8>s1>p;--i4cbbQ2y}l>qgoL!C)aV(?KBPk9SK29fGqPRj7k z{&ei#^@v65JQaMFuTw4t)#pBi~-FiVy?~u< za7(c)5=H@OR00k%@7@w-^d*5XxhQvJ~*MhQeBS0IDlvc4#ZG_YBVI zMlu80cmu0DnKRN!TLuDGqx8B{{+zC6{dMo-1}c>a!v5WG~hd8Uk#b!8xlEOGDL3Di2*TL$IzdnVDWUmNH@n3WP!&`Hp?vf2R=S zx@(~M71CZ0=DYu(G;lvu_dP}U6yR<{$Rq+Ib!DtSfyC0Fy$&u*iEv7*P%O-82E4uD zupUXKjP-6WU}qbgM4TjvqQNMWEyo9huLWJkxhvACOVY@gst+0D;;KEN%JlzwC|qzH z8b}pVROenA2-E<#n8zI%>>i*7?xwv8RWho*$?^Vx`;-!-wKt`F4es2_@uN7~nNt^d zV?U=KB}nw_X3j~#dl=5S1ap4Wk?z_(AJ{OBTTe#n90jK16j1C}0l!XjT-L$)UZ=gs zxfl4OhQojOK{(mWnMVoO2>cb|3?(xJjxfyW`vTA|19u!gw8*K`$AeR^!QlM=$b0Yj zs*3G>c+W|~*#}TU5knCINC}}A2|b}1YA8~qg^&QDBTa;$fCYQO?nT9p6)ad$!OBIw zDmE-A_O91<#r{6eTC->GbCUb@`~Kd~@2~fKK6}oZ^*n3Mn%OhE&fXhK)LLKjv4lY$ z4X7<)HkfrjS*%wQ9tdctv(_`OI(XkEesZO^6xdvcYixSjDzR+&g)px%Rm)HzKF?*jbX5h_S{NC~IQpR9v4bfm+vXnzor>unF4 z@Nk1&@@UqIuf8sTLC|v-?1s`JEBq-AS?S9xCTFw4A#41b8H+!cJ?ZUel-QT{=S9JkmlB^RR`0+!o$SFuYjtVi7Vs5TZZv<@ZJvRj78)M^VHGOZe0KD0T*Atlv*VJq4?Os%%XA=9eKo3<=6 zquRp`DXEsn^(A{qb7ZxQe*IK1?QO0eKU2$}jB7a^(wf(w>t1`sr@-Zi zi1YYtAoZ7~U4xUP?)0qvvHnWgel5o4trw8NSYj)Xk(XXs%4$cM2Dsc&WcbS1sJ~7q z>#&(S3-Bdaq-c3cU))Lm6`ekv&M;jQJc>-v)LnKXw4gHX)|0y#m0X$r=b|#SPO8j0 z#2*Jz2TSY>Rz@Z@YNT2jQrgnkQDn0(_qVy7jusA=9cIl^;bm zMG)>btPLj7zI>kbhDXY;?}&rYYXfS7Gv(FLQqcCIg%Q@c;Z?%AkaNYrk`M$!uvt?2QnnM@BuAC8?L8M^wpXAWY+F|TJ1 z%00dq7kdLPC#;(=N#!01?&N^WiSYVuW|1OXjv$F)eZZBHU82P|eu1iVjDu zwKC#}0qzYLVQiG5jz)p@RT8Zs4?H4{7=7IfY^x+kA9Yj{wC+i?sm}yO)g8*1`F4bf zV8|9m4tpl^&KWm^-jR(n_{Vdie}GbXvs9BXH(AmHE(J$V0U~ElS_)sp@MuuVQTb@> zYnBETQU*Wu@m|1??|u|5Pi9Qs4YLbvq>}k^Wf19MPspfe{JlYuxcGe=5puJwz|DK) zMgFxIefP7T#hQuJO6%N4>Um@&`r@Kd^>t~Ku3FAW&n3z%ciNM`UL`Mjp74gjqbjM3a_(jYT)OLd;tl zbG|{6wF##yqB*8TMvFuGRY_x--G|*kiJGNWF*KbqmmhnMzSy3i z)$2>t$O&4#{xbYk&X>`rasiJqEN1|pve9Yt^@_yXy$IqVEV1u^=owkPF@n4R?fw8U zzlZPyfxiOua{%k1Sq%d9OKdD&Q(lV?r>ewO2i8Hu*I_2h`*b>Q4W9wX9DX1_QEc3sj;j~<6W zXiK?AuN$$_RO}s!{rRz9)#g(xt6tt}nUS+czt*;2KhyT1ex~gs{XW~r`hB)f^`mW{ z@iT3Yn6kMmy`0xr8Z8SiK?FPCQxY3dUYFua(FgLn@H1ujav|=+mKfR$@`qj za9sAJPNw_I*{NpdP|2;HX6Gem7ba(y1X*qUyyfFjSB-B4zl{r$PnqZc@ON7-tKPrR1ZpJbq=^SGaWy`ie>8@rdm!X=yx$aUG|9n8`?M&P-Cr`4*-B z#0Vzv_+qD62}|K>tsO@X;Q(D0z|pm?9YL##dNY8dF0|uF9li(t2RW>R z;d7bRk9Hg>raoG}85V7e2q#~nma=*QA52cFAMH5eXFBk?Rr%45BYrjjKd&l3+Htrd z%+0{>2sqkb*dZbvhpz12psdB^NC@dXD_ldrDw zAc|+$_FyUht57cZIg|(dLAg5Pwg*v%Q0$*rVrfr6sfZp#)!B?wMl6Du!$Wui%}r-O zeFC`BLDYS0uj2q0lTr`H=6R^12T{97IT7#%N7)}zN?C|_xeD-Yq%cCWl~$Dwq8vJ ztr&>o| z9l^@f%jZMlwm%o}IrHE|;6BRHKD-mfK7l3nFp#7^{5rJn2Z(t(gtZU<1js`mVpypU zuL5ea0Jk9JIhJ}M4fI@L8YJ&DQhEa(;wYO#iu7UeG9B%wCOHfnIpkd}5uF-pggG;Gt;?g}#*X*V!)m>~A} zvi=s_;l>hMhP{tB1B*LM=)48vAB#ZdWa6?Qy=92=h=CWwol0C{LAt%IBg zX)$`3Aa!T}{AhAm2g4UBSU-B0AjR|rUg-QpIQimE$|?cApejFlm>_;m2Yz8ye)KRw z{M-uszN-A_VFFi#c>(w<0Y?WP`+yuK@TDnUoUUA7sdHo4SLDqM?p!2)2D}A*WkQ(A zNE^;fQePQxJsJT^>;bN9z+qpR26cG=nJ0*AJL|bfT|j0%l8xl-31RIk*@U+sxj6;S z7ALQ;#*YJfny?hE&b6<6iFPpW0{T3FEB6&~5xW6L+gPG5w6BPZW`NoSaMXqN6{*8u z;G@Z59ZWS8XzQtcMT(gVe7W-z;pC^W$)v3FfL}pQsvqqu;^%JQJIP^|91sv@n>;sX$LRSMBo4%i1G^mB z>jT8B4`JPb-4AGY09V?9^#o$xMDh_S8(HcYNYNeGU{ZcZ5=V8EGA*RA=AL+I3b-RF zjL@{FRiz!+K;YvXN6bi!?!d%wJ~$_k$A}_r9A_6P_TXDE9?`kvS6WsL$%h^t#)y836iiz|i+yWDOw5`cy-q zHL=9{(yv+$A;@F7765VxN}&o4BlsY|d;mk7rF0yjsZ(Ko z7G0F4RBAJnw*)|ym3j>5QvoBjQf~uzpWxh-O7Zm{hXDMUVkwp4(@aMo+(uZ`QY(dF z;l=qTk(R7_?I+Us$1~$8Aj(!F>5SCyPKzWu#2ev^TThzS27F#3lbcZ1FG9M`JS_4a zq|<5HJg*ss&FQ9juf9!??WcQPTb67rd+lf3@s6NLzIU5p5FcaZz2hKtD?`HN81n2c zA*+uJM~ShI$Hws@vc|3yt&Yl>-s8rXLi*OD%`(5=;dJ=}ycehUtNj-K3#jNuu ziK_R0wd5#ITc+M4(5HLd*a5jncxhNk(&%xjq^N#JYy(lm{?%$h8*dmu`5E0I%06y? z!B0Exu*DSoCoHDmH(uM*N)-G~SyxlRAC$8sl!8AgXRG`dJ%-X_Cu^(e?pyFaA;aUw?9iZ)(u7i-WT6`?t#?yjIB`frs?4XxW zD~Tpgo^^RXpn;hy3;{)(BBrhP_TbiiS3tg-U~4ALK&0;-xaln)m56e=3NMj zO(i+QELwv7Tv=^I--9e^i4>}mj+T%|lEefKS~>?~#K9`(KqRi%psa8`eIn6aNor~v zekIVh0J6c2k`{Q$`4+d)COT0FUyBw9bP z%F34}B+tSN>HVz0Mq4-nPo>e;Dy+51Cd&GKfw-(>k)+-1N@j5y+~ZV#om7zRzb6@9 zvG?x@Rxl;BHcQr0PBy$LkdsVMuWyo7NF=PC*sJ9oh7DGpWEtJ8-EDY8aAp;_y5Gp4 zZ%KA9t)uR<#n+?6IfiYxG0`4yPQxZwt7;PKAOF>B4Z)APH>pyQQfmp`*Wt2_ir~X# zJRV1!MF-oN<)WS+s#_sqZ{T%I$vZ1RWR&WG>%gZ2^cIJbYf+3~wSC&54921_1?Yzk zjoAJYpq#v+{Vug4>&#B99Zu>{JhEaRlDqr`NljV$+g@sUH*2P?95)b$zcg!p?a-Iy>6HOMR}~sqbZM5c`Rl9 zR`<~3D34eD6v`7+o=SP5%Ego?sa!(&c$G^jPgZ#r`7hN=q2M_sF@_0zsd{H@> z<5QILS+#jisl|3qV^dy2Eib@n!kwuc*_am)s<%m|niY*nV-s&DmF^?Eo1znC4%IU$ zzQ?7pjo+u1MN6W`2t}8t(Z%n9ffQz;>*X-C@gp#hV;Xm+WAUrRv`-cITxqJ_Y14?Y zT3QFGja1}W>HI|tVoS(i1onii=xNERgJ;bJgt_Im&AEbYd@Gd_3?-}|_H$ha+gZJT zCE@B_;rqBP{<;cSSHWRYp|qXWy{+a=(hM!AWkHc6Q?zZ z>n97kgwKl-a)pVPMC=8ygrA9wXx9YVy7~qp+13>FH`J?~ACU`0mJvR-Lx1!z6-Ti) z@oh+CTQ+th!%^|fP&~_t;~Fx?ZZBiN{tV_n?M8B3qb~!yaZR)qsNuM#)Xs(Ejr}Rs z_AxXx6I6|tyJWSFeU|LO4w4=+_Gj6mOi9uHBH9z2RvkP~2WL2?IyfM`U~`K0ZE^5G zpf!{b3~R4u-DG2MfCTBebgdz4S)Vcdp9#xolFgP{o)P0%ZTvW(l;JBiR`YKt_a?`g zt9SKrht`@niMr)s2sXNdg0FNqC4~R53;*sINAsqDV9nl@w%F>ldLd`*N21n}3#8u9 zk-~c0RTfV>K#kP0DYV|$3mMJ#DauV$*4$;8N}ntA`(sV0mKIP=bJIQ0Xh~XrD~V-t z5+o|!y6T>P?6q{Hf!xV3*N`vqs+UuweJ-OmTyfHuk84kwiXABW{uw8eb)#DrSJP z&YXob;ol+he?;b$eBamW`Mk#z=gp~ve|1NyC%0!hThao6zR#&+3BRHfh_4HAJw;9y zOZXpC{7TBC))z&>=S-zICp^L5)#NdabIw%4mnW~93RWE^3I7ZF=p+gj;`{45vr<&! zm>hC^B)}XIeScyX%2Sd0evht9DJOh>qdvY;yp)R~D<6uDqF5vBmcpjm_e&w?h>b64 z!sjn48oVB6*myD*Av#$mSp!rVpz`WRGX81FE;Nlf5 zG5R%iW`c&c0uy}{icg{aI)E*L)&*jo!uZFchV6Dkw_eN06P&S`Rv>f^NHS3MZgs{W z;S2^eJb*2N7J*?gwDST)zW-`riQJqF=&WS;Vl8}@n8z|>QvS{0-0yhx_rvoeY$i)y zV##Sjeg(u2t031PD`OQ?R@3|jjzO!(ve;VH1zp25b_BF-iAZDe6ICWGQ;8dd*bk&p zju>)ginFtXGrbDji!;)MPycb=Z%p`0DDq~a@AIp(zCTG)&I0uPizL0ih%%?s`C{pd zQNrg0u=vAb%IS63sYps9H`37a36_5H0v zq#8XIns{ThgYUN)$MgZA@VlKk0{W6Bd}`wS>Qs);FLNe*-i*aY>ki7C&mQM&X1DV$!nn+N0mVosl>zC+3Du&-_{KcJJ4vVHOn7GEp5)0m z)yPSYq`t_Rl4eVqFX_7RWMZnG{KfPyUH^Rj%hbPY{ma+Cbt}ZcGoBUF1HntT8ZSE# z@-^m(O-|ThPwLYrHeG{|)9GYlGe++!Gcl*tKW$|^2~lsy#zfXCRTEjOR8!>IlGc~> zC`p@1nj>ikNjpl~MbfU4PL*`Jq%$R*Bk2N3Pm}aaNzan>uknl%b(U2y@x<9dbuuTu zvK&DdXHI;54*m^PTYT%6W_cNqOJH_eJOkK&iLy#14u~ zTZ4R>9tTbQki}-w$;6K+)}@#^@$26qYvX=<13HqG|IL<-ss6i}Y=4!1Cf)bC@ls#S zy{<^9<)kCr1;9yJ>~pGZGN1bP$jAC2(Q^eaUK?`4XR3Y{(;~%BW|NCAgI1cn z$t7}Dr1GVdb^SKEjIyrNCYMvL>BWzSm2~qaSJ8p=wy8Nh1|G;@bTc@${rkXVq*mT? z*pGneS?_n?NzK!}IBmrB)DBcf{dMZ`!r%Fm(lTs7{TZze!Ko#4U@MiII+N?n%B6DR z;>8C5jTSZMvj3r|z~{18K`QpAp0pePvXPm(njxyVCQ{6*1yFmduSbe2r1WjWI^}oB z9TqL~rmo}8*z2%ll{a-gMeyDPCP8JSvnEqd&-)jSLuI9(@;A*Y?%Paja2_nA*3+8Z zjMlVrE1rJpDxKDz`b_0?rd}_PPwP*8w(18_Zia6)!JDj`X(Q-Z#gU;nDin)Cadaq- z3B|FYI4%^A3&ruFI3W}#hT^19JU$dBhvJk_oEnPLLUDR17Kh@DP%H_>nW0!3ie(fd z9cOy;CtpnNqx!}N9CYD^!SovDkvHtSt(#CY{cy7j3Qse&RM znQYC}l}sDW)RRmn%^V?_Jk8WMT!s0XIZ`qOn#q#P0L?Uz%bbIblGqwcPdoc1TouI< zdxn83(nOFOp}ox^EybppARTYRZ5<#IfwgHN$bM+wbvEj)l_1|k`$vGN;bG#kt-z+v z%jlX|G!BK@Dbyb7yZ|!KGfu@jDn1g}B!}+{@h*xl1h&fIAB1=}#m@tFMS$zEXPShj zZ!q{C2Ig+yI|Gi!pqyUfLpZMiKj=6ThjRLcoL_*a@3Yl3ky!Ml`KAG|rUCA$d4ZU- z(M=wpeuNLP777m(_)kVT5zw?0cyMUF5>Q17d~9faDWHEiSetmLz-Bwt_Y;y{qU8<` z9lr?ZwG_)yYWW4!KLwW2^*%=N>aSp8Hx}_6#V07<7FaKbr|(BCGm+RHfR}gRXNo|W z>_}`Wi}U4nz!w8s?QkApSsZVLAbtU`YaK2v&Gxh;eXFOr4}`}ZDbme&N(?8j0(-A2 zyj1ZYf&Jz1$g0PbUE0@s6{{YLwnPMrCm2<=*rYl&}NfBLTtsUZK!SP`~aV?H{WI;&#b=3+N{YUuPC9 zp5skltEM$x!@OoJ+NHJEZB(cg)cJ(i>!fcO>E>+^n_RB6L7b!X@t`hFrdKCZ=r>`z zZRzJL{WMT7Nu~=)qt^pYDeg{?9wd>2F53GpQAaNTJCN)s(giP9()S?zkwmh?_e#N~ z&((h&C&5^vO|eS17Pb5a>R$rOsOPPUAC7iygC(q-u4k!L zWX0X4^uC}LIywut(cB(JQv!SrITDTTyzUa1qyHQrT7DwJ?iz`A%jKfGG zbX@F!BH_O#DP`a1&foVBAnk;hy!d{}f9>+0NnY*9P584A46cKtmnM7$=KFN+`)a9t z9&z~od~oX0Yi98@%5vmZJY8Bxc;q{y=_Ak;P&Xr+u!_y@1F8YcXd=zuVP(kzZ$|UYp!n5=E-h|8 zh2m>0v4?4)NGsyTyos2w2x4{-?n+=rYo;a}P_BdJZi>Qf1nv)Ln1dOawayWEI-t1@ zmT0x?wgRsObY=kS{=NnQ-T}ayE4HEhEr4$(B}ifhdbI?*REA z1?@dIAl_Tao~5^3h+3E|AT0vaNX4}9&U7H-tT*5xjv_6mlrD}k9q`<$DBT=o zJ>YYzqI7qZ8v$>tigJvjJPUYVRg@l%@&(|Zs-omM%3*Kg&<~3=cC^wx9iFrCXpE1~> zTOH!X*-3HHTvE!u&n*RR2P4JhWzkSC#p`8)#1UN%B%d|Fg%9cxQi-;Zq z@@IhRlVgeF2r!N#-o^7@Sfp$V9v^^R0OX~B#Q|6ZV0;Q#7Jv%?oEU(5`A8!wC*y1& z7Y3-U$b14fKzUaHm{kX%lI>$+5z&*8e;VjZ$&Bj663dvHj{tq^U{+A~0ErU?PJ0hK zG%Tqttu9szr#0{{0Vi?;EU{MLA%G?XaAal4SWB!UhbzD=0%v)^)2%sQKaOWCZv%QR zkWDG*1rEIp$m0QOPCEz#nHqF9BNwZ!rZUbknDCj#7XtHrjvrqX z37=&pNJvjFPULAC^(ljkCTsnUa~yyrRJ} zOX%HuGD?Q6mA~PfzLiljVw?Ppa@cz-&w*B^5N#-26YmgUr+a6MU@s=zoI8n16g!RaK=m|6lJ6#7gf-9VYVOlGc(` zZ@%fBsyd>nD``DRkC0UFU>zxPmZS|NZ769YNgGS5ce$E~+*HzRN%g*0bCFv}dbFf1 zC2b{XYf0Nks&~lRikvHHJ4xG18ohJYNi>}$jowAmuLO4&{V|gEkTg%yo|5*Gw6~;v zB<(9{KS}#bnlEXAqyr=!DCr)lA=x^sERQi+|BuQsi|ThpI8U+fTh1Qg z$nLr=qb&V&`p1}DAmV4C_<1OP#X+HjZ#Z&Q{5MCYir;hmsrV!3K&$v42CU*CmZ{>e z93v~GwB1b2_b6Sr`cp;w1XGD!Sx+->vOYn=T6oHOhFYnWvi`}u=|>jJvaG$-N`2Mp zCFUc(UuWJdrxmr{217;ZJ4}r_W|5w`f)wsk`s>RcO8=mm>;7MAf?KipvBq+ASQ?kS z(M)yC3?-$sreq{2MfGB{X(VVHrN%$C<#}q9BWmdZs>l@u+tM1^3&Qy{q}r3y!O{+4 zX;TOthmbuj%3dNqk!s$%(Os%yoivP#tHSisuh~XScC*spT9@8xr%r}wWXjaN(6M7d9_znDoz) zNTdqsg+zgx5{d-J_axgMuG|yV4f>%OO|EpA)ogdg^~$4YS2$c6VO_X#?B&PHNZ=hi z^+F@-<&?14`$>|uD~AkP%DNDLy()Zti2ujoJan-B&kga~U%)@Nw-&k}gxaM*n?mSV z2MvX#SE^SMd8T8#%|C?84VztC_G02X8d7ZsiC#A|ms1_-=l6-Z9o{=MqpSBJ&Fpao z+9FSjT1NecF18otYH#U_YGS@b8LX+@(CCPIRl%3!uk>}zwI)?JM_TF!svnr-!dBsH z#mbT}BaiK>@h?hP=LnIC{;rtDQZ2^Dv@M8_M&l>FQqfFB)n^0Eyp$SfOVxiG=xvOh zRh{;gt(S(Ue!D5AneLj=LXOc)PiG}vP_Y8VMiY}0QC$y%L@n!KJ|Vf`p%x?6Vnd30 zqN=Y6)aHzEpv+KgM}XPd%vJUCDe9%F{*Y=3NvpI<)f&WF&D8ulXb4^zvu;mTtW8ze zDT?(c7BN|;>M2#3tXJ&BWK3h)pqR#Vs%HKX5N$Z8tNIzL?|wchk=+6lOWml{0|C{l zH>vu_Z(uB|q$)RDr#b;U;_z~{>_E$N!}W26s*3`(#uc&qhZ5$KAVEfY%x1+l5aX7@ z26>IDpP^a~9pqZ&|5CC(Zd4y1R8{Oviv3v?cC%tlzm0~g=a0H-ZdJlDBt)umyQ)V9 zb~cPVR6RFf>vKrz=}yH?4@{(atleFTUFR^_K&ag|#U3Qa#|5m(y{dlI6%|QSTNhnHscY$BWwj@ZXJgSgA60A|F=rP_wwztcI@y&YJxuzaB#}s;RO*e6 z8hVwRklF-KE9=E7SmHWD-J{e`f(UI$dsSWgyP)b~7Zw%?=>??@cT`~|Q^P7pJHqP&Xq5GVvMxwwN!@5<>-~|kw!5;;zu+|z+^0(Tm;?zaY#oup zEK%$AOEs#74VfCrCWg<-*|UkSm7w>|5nx52y{R$lY|7cnKZkM~mCxl2hE6JUjkBmS?u82at9LD9f(xCBNIM&w-)@TRK(?om+Wmm=UTTLA7?P~?MJ+-Wy6jKCGXZ!>634oDN8lBJ)&#KLyPEYb5h?LvAlC$_##n>kEZnt1WmwJo0q=Gc zT3Ig#9pz2HA32Ids9vx;wFUhSIR0Bu+X&?Y=cOs&wvG}h=tENE_+|j$iH;)SJpep+$JLDMC7&+IX5D=i^%OGa>t0=H6nM5$lW9IF%h{(M9z!I zJtK0jh}=6O_ld}TBXYlp+&?1cN92JKc~C?i9Fd1a}y<0 z_hq%{S|}2Y%A+Iln20vY(#aU!UBVIcupmJAX1t@jEOnInkS4P-O5X2jvWS9&%QPRpbnuigBlh zVzURm0ezbei>V(xJ!b5o*z6&5A?K;>7zUeAFTMqwqm{FS+)d@>l(m71SMYEpU-c`g*W=UT6aT2kZ#Tw^rP8cpd?*sBbbfjN-9e?x^WQuY zts@S~3tr1Y8>&2jdaYdfKnfO|1*{JHXe5RGYWBkJ|>xw(zW*ZAhj8$#-J zm{l^zo7>_U?0PlUxkrD0w+*#z@W8Qz!BXRskR*JLjCd(T-zQl%I7Ljj{$ah5KJ0tR45qVog-X4+fj>z{! z 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
E}fn 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�A1=pHj^te~pn3;EVt=pQ%oTjyl_ledxc zqMqc(T+t6+&5{F6_W&yT+3H)XzxKlzfO$P+;R#RT+E5c#4iSgv65o$@&}gnYW3 zw+SU*FQ4PW$(zdd6+!MV&pD4GkNXq-6HPu&&O61Dx1EG>5=Z{s3#{J+a#y(ynn?c9 zAsPSV2{x!Fg*>_)`ZJ9@tvlk=$t$HIK9fAS2t12?ri34j?{)eDF)O z8%17L=08W1mpYI5Sn{PZeEx5DVti(jAG(V8Eb@i*QK#)K{50eLx(j}{BlntvJPzdDyP|$a^6K)uYiIIGGGEb! ze4l*ZiW_-hInU`%9`+BG*OR0g*>OopFBbCV+tS-DT;Q3 z$lu9*Rl($o<+v+^d{}&}s}CkG? zxgFxe$;-=iga~poKRAj!U=5ZlntYM$XJW~Zbw;~!4E$%>zE`TY-2e;T=4E7X%tUMU%# zN&ccU@@J8^*bKLo&kbh$kB`TCv?H(Z2=zFSXT&1jk$kSKUuSanPq9CDA@`8`dfdp* z%I7k7^7vcme^2sn<$Jx&bDqp{HIw5IABsOV26=qR1BzpL{mH*=3lAV~wGw%P$UkWZ z4<^5}5$h|2{KQtohmx18jD8L$FByw^BFOtCWBo>v|0(C4qRBVP_1ReRXENVAj=c0J z&ub+v3#GMGkKOAH@cAf%JWj($REo4sXKY&FVPR4=K z3@7g(_cuk5m%V}Y5=H)HCwMe@T1B)QOFmxi(}^P=B=cSp$cHyZKO~aB48r(HCa=*6 zoSv*d%on)_94GN zdGdYqPXKxG=cqG?++{xcEtvc}`MeoIep}v8L&z6+&J_J|BgWFK>?g;pETiV*839&yw@EQRGqYQGYaf9a+DzuY~?j zApf}=Jdr%*1N1{O`Dr;nnL-{j2+NyBerX6ioxFQD^g||j`Gr{CEb{huk;nG;oa6tV z%)7QDU(y139LV=ZGGVz2=e}NUuqQjOL^{PG}-R zuOiFkOr9zCGrEvpkmp9ak-s>JaqCWQBllH$lKalb`0*mI{2J~)$C20Tk8zSf9%qaEiR8iZy~)Ysk%O?^rI3GK0QIMlPpt+|Cto7(gPG)| z)F;HRJz`%zLyWZ}SrU;6Q%tE97w`|3~&$&g2_TA&(3B49Vk0zP>y1 zyOXb!=XiLMFDZrf=tUkW=W~3>=lP>QeaYX-{>q=cNqf{2Kwh~xJczujeBKEruUZ}B zCxkpy?n??KA8`zIhLiV^`&J^z^U8UfDDq!xpnsytAIN<2Sn}xJh>s&bI|R#{K;Eqq zmMf9GN(k0_GI_^u;VI;^H)6X;Blp}1PbaTYAN6FC7naY7S>%(eW4UbQytouY zJMt07;11;Ja(|5@`5$sU*O|PLydSxcoA0r6Bd;|K{pn6VG#&lsN&fc+^n(}qjCmM8 zKIEIj(GR}l!{s?G{^UL6eJX&w=Q8w95cwAqQGYOb$RgAeLY_}PcZ8A`X^A?+$^Vr3 zq7mdvPN09H$dBAaozdiF`l6m#a>p>_i6gJl1D-(s{si(Tl21YTHp%4ccca}D@{@Ai zFpWG&j^oqGOIAfandFP)`4w5@2|r_;*rws98UI&*!S8nDm*qJ;4&+}wN4z8XQ<+cb zOkQ8k)4Grc%e;3t^8Iog{ILY`cZHEZk^G^2UQQ;jYL5*gg*>V@mMe{Xro7LlllPbB8fB8ZJEHz9 z^4@*WuI-;W$N%628UN%xKAM1Du|1q%@GOuius?m|A&5qaFm(@w(O$=jRx59Bqo(9d4vFJ-=v4|!oZALvWI z>Jl~pfATf5-UG9hkL0V~qyH1hYfnc0Wb$oteIbSXzMPjxBfr}L{gzHX zY9!jtByW5M%bP`R+XnU6%5!VX`0r5|+qE5e?61h z{Xe<+-jPJ|q0&Fe(~SRj z1>kn%)grMUa3KG_8R~Q-FBgP(XY!>o@5P0DgFHvfjlA#&sL!3e{VKHUNq+hXme-3s z@LMdG5BXua&(4=TMUJoh$(N7Aas`mLI*vMn$S?OpJ;CJV`y)Pt{MA>eGnBl+9(Xu; zy4)8NK^`#=@loV^rOs&bs=HB7EcxCJs6USUm*VgQa`zGNMDl#o;mPDt;n$?MLR@lQTozTYj4{H*j_I(frFs6UhZ&2!X~ zMcz}ctJ=zQF3tFNkk2D_c^`BnegrH*$NKC*V$= zx&q7PN&cHH+>5-ox&B3dN}dzqOMYhUM9>;?}YkK8KbpZwB$EN?LR<8AN|@>X&@ z97^8V1NpQ5&B(i5ISURmZ1rjdus{hsOMw}P==GRepMi2Ae0-QCcxc}}?*{~eklk6k)mH(qSL zjDK=>xz6QC-XsX|&g33)pR5b{xtVC!jl5Y4qh zc74fb$n|l5a{nW!CxATUbL0skKOpnXg2@ZE#(D`M-zxJSL&?MEV!6V}qw=Ai2=Z?} zM|>2yqkImHCg1Og`eVtb$a$4G@{TgkB!N7>Kcf?;!WBB$NLw_m8KLw~57arIEjp z`^VGC4@}4VNG5qlnQxp$-uD&iw9Uvl&NGIgT|4qoa-8EpUR$1b;Yj{|9_n!>f7S-; z-G#i^FEakg*U5cq?&Q&jQMV`gaUZxB`J230E+6s_AD|vz@}u(HNq_Q=MUX#${7Nq@ zZxDGOx!w^>?jxVOL&%2?LOr46f64i`aPrDBUoL{&=Ny(diac){)EQ0wRPJ+$C0`)V z$%!KmazOqBa)-U>pG5MTavmm`e10pe_Z0GvQ;|Q7Jik0&H=VqWTt~$i! z{Jia7sMqZ0CvCxYVMpFYuA@1SS4=>ij^uMb!E!m1J3Ax43;7Yb?&C&YRQAK}u${~+%d(d4D&Ja8=erU=v%M}A!HcS|6Te~tB?NM2v= z2T3MRe<|ai{A;;CD~-JJT5p^bz5BUk6NWSDQ@+Xte^M|L9*Ocuyjl9}I`HQ#cA4hUenRn+*UR#H=LbB=KNyC3yvTdV=RP0u=tqe6B`+w)tN!Gb7vM|c0-d{BqyJOL=Wam%q_KBI{psXO zSu(jxOVpV{{(A%TTN=6fzP5DoCGx#dugUBDf_~2TGUqr?EQ)pukyjiEFG=1>KEISB zza;b9tCGL^7I~b>x6a3QSD*Yq8tQCHeof9xw40L$Y+-eMN^8(!pn9wL7)@@Hk? z1Ie#UK%OtivwET3QRL0eA$~0R;Jfh2zpC!p}{EdDtPySryQGY~Ueg@jDMZUHi@-!r` zCFdoYldqTguI}lQBkyqq@q5S*$nzx*k>8(= z_!Hzu_q-TzF)5gd9f4d|9<4|GVg8(dENDhA3=S1?0a-Dq!`Q(u@{>hU| zBL5QdALY1x75U^DXmeV<`TELOk4wmZ4nhB{BF`h&H8+s| zQxEam$Tx3CJ$uN_@yQ`_o6nIaiTs+JpSel?%^%2rhupI<`uQRG!f?cAkYCvfe@#9{ zjyJN%SAK&!ZC|4uGtO%iLVp$`uRa9%%aZSv^X-+$n=C+{>g1;1>X7fAi+VmG-yri6 z2a->a`#T1cKkR{aCy|>x!Q?R+Sgvq#6Th0=R_15!BRBCsk;lmKRT8=Rp7(3y2PUKb zyfVMutd}-^*v}Ugx7Jz`D0=~Z|0m~q9N~dHPsqPph(F5rHfMYvd48rHd9cj?tUx|! zGy1It`LG|*ZbS0ly1?DZA5BJ{&g3U&qRubK`%gsOf#klOkY_Ua7WrHgLjI|&m!;(C za(o*}-em>a-A=w;zF#<&yp4Rn!_VYp@*z(WxmhpQ$m=ac{6lgRpFy4?&z<=29sbUY zpUbJ}e>?IwZ_sZI$?wW@_PUZ!mU)tc$gh;Z`WjBYMfN9?$&bpsrs?F5zeS!H@`Eq1 ze>hEUzAyeVd7GuklR|Ft+#|nN9sTu|+{EX3pR+%cDj9_slH)WpZZSu$K(C$m}C33uK zla;gIcE(^F79p=E_YIXLzgZ0ZR)PGFI;g)9xruipzw|5W=uU3p`;bS-{ShO{P5fx` zh4Q?MdE`CgP-htVS%37yR`RNc(4W!d6J`H)hWx6W$2d=3NVcy>s{ih632$Ml7}kY8(q{^>@(Le59^B%e78 z{SZt(A^<*%{CoklyO(^iiW{5N@?k`wuRdCo>H@}2TI zy)n5%9`y64>~2y%j6TPt--78^~YF z{%R-rvxex$pU8JTNByVC8_4{zbK+KOR)%dKB0h!Ue=m#r?@|0CTg1Pi_?N9wzir-} z>$lWB^iKtGE9wDKWdGY<`F-Vq%70hBO8GtIC&bOT>Mqw|&y!z}^Xd;&p1UefnS7|< zs`HL=cX5+Hcmn!oxQb6z@nIBi>RCx{>WNo*QdFLs6rU{T=bx!~`G}kSR~7Q-?0-{d z2XSk;ZmIl(DcS{y3Y0<ROMEi$75?$o~tU)8Rb`$|4w;KemmR$`aw>SWdBt|anlbbeqb&>oZO7J z@#Kr;`t=lXs~;|@I=3pnsQhQjW9qrC;*(VTi(KLheVB9noAFbU+>D>fvNFHGa+%7U{b~boUhnNx z{5h3pEXA*wkMTK~-1O%ha?_uy$%mY^DzmZKOCIil#*dJj{n&YN>#xruH2dG*Dc-F2 zC*-Eif5=UpWeWedy~ri@?EIf9Pf+dpigSO4<>G6}4-`dzZdUna3Ql$_7nGk;?UpU_ zU!5nF4^;lM@^8ht&P6Kzgo@vqOZ*`fe_X|1qFmc^}q# zKc?EPByN_=jGv||K3>ItM)79*oso+#CT~y?<94OWFSkHvw_@(!GWD44C6V%&ad?B= zjKg$tv%M57mUI7Rme-!#Y%fmYR@FyUKYXeDi1HZahn1hB{HEVhRs2sX{-0dp?d|>> zxAIXu`>$$?n|?F-KT+`qRsP}1W0kL_JiCYExO5Y_$-k5Q)mt1_93)?T5$pXdxl0C? z=Z3fybwJhg7sZ?L@P^!shY#&@u3s}ADv4Y9Wr|yND~%}LjFV0(exIsmEXAAS@X6%n zI6Ok-k*`L}&bFW8&#ps1Us3UURJ%2b=Ugt+|E}cb{jL>xawyh|hq%=byH)-mj+f5` zv&jd2hB_9hJTfIQJKG`U@)0rHuTmaU|7#U5U*(b=UrNr`@_248Zq+Z3(29a8afi7xvOu2Q_&zHXD7JdeoD_VtF` zY+uFYdb{a2vweLmZq+ZR(z5GmLGflB_EquQu&CMpZl`!t=RR^X4o{FTs)F%zPUV+N zgW37tQM}1txKz&Z@7vQ_5*wS6;?{3b*@AyQrFhfNUCB*;^PCmaZ>FCIQM~ErG32J7 zXNz0)$fdaKg4R*IY4=<%exE$AoX>xv@^4nlTSe{{vD)3F{1b7rT&7(=6~9r%Ps$~J zQ!XA$-atO+Cae4#RQ~4_Z|W&lCg=J!?o56`-fUgPt>s;>@_(Uxo$_GHWAcZo_(&BW zuRKEe&0O+isra=jzP!xG{Qvr2+^T<#il3BA{4(+rGT(JAxmm6)!T^&iQt^vb{u8;xUs3U4D*h40o8yX)WPi+cwj|#m9}3%xTm2wY z`m$U3R{0{;?o!HQw)ZvUrvJB*o9+D|x!K;Yid*$8RP8>dc(Yx+Bsbed-ikTLv)L}n zi(C2S7OCu38dJQf|EpYlJh|B}W{@B4i8|(sTkXzQ%XNg}O}ppFKl~BL$(L20c`8r7 zN;#L;te2wXCVv@nvtFu@oAuIM+^T=BYPT1~oBX45@%iLi#^F545|uwhHi-8?&PL^PjWN>)49aI zQt^{i{-W}}YSz2i?>Um2{a#&iv)}6?Zq+|g$b<`_&57!Cvj^$ z_^WoCQoPxJb|g3Z&pza4|2aYBAFlE*rg&5T_FQ})x!HbCknih&^RDN_t>qe~+I>gy zrrp9da`umVTl`*9+{!al<>^52CXY9{sdFHCze`ree`{0uzfk#CP`p|1k>sY`t>k9C z?_1Pf_uMRQ#J<;!D@Wa#;0P@#g)=L!9?BUgV~K29Q5@!TZQi zmETX*vx4Hy@@^tenrc<{@40T3$5-V^p?H%gjogffytQ(!_pWQP-E|SSS{tbH52tuD z&ohwRv^#~|VK&-ZK<+5tqxyrmX*WUIKB;_wswb85n08;P_|H|meeImfYvLP;TkZB& z@m{&akI2QxlGmAl^)-`yg!F^B71d9*8?U^t@|%>$)Sti3|Giwr$d^k!j^s;aer$Vk zlfN5z-)OWqko>oHD0Y~*wOl@`{#DBRDBnkUOuI?B_;qr#-TguS#c?!}E^gJ+TeVxI z?*H9ywa86=H}b4b*nhSbxAON=`NvSaS*}UsCjVUW-VIRSVwJzA%7235P5z7I@%63B zY;3NpJaVcr+Y8tGzx$ySxv8@%`9CsWx|X=r+Gp9B@y}-z-$S00*iXfGSMdud-YnND z@_G;ON9$D{Z)@G-~Hn%ZY^(D6>q-R$h=>e<5+LXW6oFf zB{%0Q{K?JvifO9dE~?!hDBdjBE*0Nd#s88^{9P5_NyWd*CBB#|`p4>rjw-&Ixao&a zeWxk8IWFx$ZjMU>#I1HcRlD;j-tI|3Pk! z-=343<2U>IImguvCmbg@h+E6$q3Uc%@ur@UB|9<;IPAa4EUo-O!ita7Wx5(VLlD359P2XgNXsB;^+x$p8I`KR)x zktA-_V`bP|0PQ}ac+>9RP4T+bKh0ErC*@6*w-7hu&9vKr+~n^?ZpP0Ta+7Bo`DS@8Ziu*5XJb{* zPZV$R{7i2450}U*?8g58hRWYa<JLLAVynm|vt}1`=W;y%kl8m=< z;#PGoD!wztn|k_^|19$!2dO;uRGuXiZ}O}rH_Nq+eDVPF+isP=uFC&A#hd)k$m_|6 z+BYgs9hIj}^PK%-@-!zeF5frTR@|ztw#pMk@g~oAs##GFgBUal_A`;9iaxEFbgPp}{Eqw?2K?aokMUHMwdW0vb+ zE`FN)$F~?Ki7J0JmH&fJ{_pi`NB(p%@{|>~e)~w}X{WrZ@`04c)IXBky#G!lH^&2W zDZe?-ww3%FlxcHWc@c-{&nOg&o*+ieeEaTc@6I)N6GV5gC8fK6psFSKyKn6k{?dTaZ#~WImerc zFG0RgE)rHF@7){q)FdB07@gXdd{qM4^C16GuE%r}w}wr5wO+tN4c$fBqHPeWv0os`x7ISZ-^%EYFhH+KBUb?nG{m zfBKPEl;=4QR{0%NyK5=ljKeMDW*qJ#pC`|2I->HIRr&8z{EGtEuRc-nWmLRl>zw1w z)Ki!I@mus~V{xnBN~=7>DcBsa@7mAqdS)Hz$_FQxLwQoPB3iri72&woMXDXH?< zwE4f6w;1_Ha?-bqxV5|`RGuyrZ|dnqZkBflc^UZ}G*aa+uJW&;c$5D}^18ocz3fqW z>{Xr=KQHnPs;KYZ@;&$?KNuJmy%J>u;^%b-#HlH*Hzur(CbcK;?S;OjEAM zXP9z5{v(y^?Jh>S-mc@7>-|HLa=l+lRj&8*8Ortk*+%-@`l0u$_R97CSsurn{b&09 z-BraqNn6$rc`QYCd==&1D!!_6Kjj}Om&aLV=h4S?(^R}Zo(xm2k3S=o>*L-S<@z`| zUU@B5Pm*$d{GX~^f4<02u0Ow+!EL>)KR4OSptoFqE^|`us_K!`*fv(Y{#@Bw#p}f0@ zM!5}kyV?ELR=IqgQnt5KE?)zg?Vl=_$3vyTjy;YtJ<=vIbV}r8$?K9=}c-zSK9?G4R z_f+nxT;B4tUzNvEW#`e?m%UZIoEpfE_fxK~j|VE(*Zrp{@2BbsQ{G>Br1H;|$0*nH zDB_jt`5sBieN~=R<$lUDln+vFgTuA#{u!*?UilE^av3Z;{tM-<$=n-R6b4l2<2hQM=Fn0{+03=<)f6xEB{(~lJWrMsmcSDXDA=7+(r(7to`;F z<@UgiQ<-y8Rl}}Tiq5M1LHU;sE)&J9#+bf@;+)4RN<*v$SDQ~TOwsLRfbCmlj4^bYd ze6I3o%I7H$Q$AmLr1AyIW0Wsc9fy%ckpQe19 z@-XE;DvwmYU3rZ19m?aC?^K?oJX(3G@)+eA%6BQx{^0xX?^gfsR&HMizgWIUxs&p} z%3YQ3Q{Gzne&ycE4=DFj9;-Z1`9bB=lpj(aru--6k;)G%k5PU^dA#zY%9E7GDNj`% zuRKHfG37Re@r%{Z$CcYFKcU=7`OnH-m7i4JTKOsE-pWra_fwvrJW%-=<gT)4?UmnC?xg&8<*v%_D{rm*fpYVoR=aur{r@EEKmPrnyiH~A4=rDiH=Awj z@#BBKRNR65inuGe{A%My-bD5bt(BV^Eb=5b$G+amrE9arhkU5~?x$S3BwPH+O`irT zH_L8O5V@&un)2fE-`0;1@;dT+nDP?x-`0qjPeC2Npc|C8}+ z{V1Oe_(#4LDEnp0XUJ>zD!zh>cOZ9_*PN7BRPoN_2c#ZX<&{;u8@XBD*2*1KyeGL? z_uk5#RJ;$liT6`pMaBD*o3R+EysC;1B3~!VJ5BjVDn5j~hrAZ1yqby+CpY6WQh9Y1 zA4R@SUW-v)L&e9EoBZ+0omG4S`8s(mNqJ2bpG@v4uca!lrQ*}bO+6XPYpeK7auc7u z6aP2Pdij6$?|<9M`Y~=^vsYeM<#!-A@lML?sd%|vEW2IHW%`DVtBQ9~@iILsJKpjD zd9AgIH`|=`k|(*@Uc8mpmmJm)A99o5Pk93s?@w;>2P$u<;)BS)lh>vxZ=~Ww$W8t* z<&9N*IQeJtd!%xc!}_x*^3jqjMtL)pKbG8##dzh-ReS<@q`a1-yoHKSCYP^Uu}M|_ ziHc7nH}M(D-Bo-hxf!1}c@bod^VTZfmfXbKD{rIX9mq|*lk&DI-kDquvu#|Jw^Q+M zLK?P zyq2oGn~F~(?=7!oDECtFndJXlH~A1`mFKPEZOLcKYxc^!t9S=;^M385{4*8rOm6l~ zuF6dg>(AWC&3JCDyr;_VNp9l3mG@HdKICSs_$fDiZ2g&hZA|w2k>zH42~_cBOj+?k zuZ1b^tK!4So5*XC%KNGKDDrXgT8#4kDn6Fn)E}?>a}}RJ zZa#k{DIcKXlgZ84O;tWn#ixE%a$gmnNnY5zmLLCNjekF5|NgWkH}Uq$2dQ`m z@(J>qlk&kT-kIF&J6x3yQStJ%RoUas^4hXLX|3YFQ1PDR{~Q0xhpKoVaue^Te3*)t zuY=95$MP-mTA+#_uHu8pi^*%#l>4jr5OQ;@5T^V~6(3GsM*1gG`3MysMQ-{tM)^n; zA4_ibmGR2IQt=7oHKd*-<)c)5GPybSN>%=~icceVk=HVmn`2n(rA+cJQjbjm{Gs)0 zApSG^Ut97G@|wMJbIfSH(Bhj&Gs9p{2P@&h}>*n)079P_z-dvAEw;wQ>{M>CpX(;q;m5f zV#P<1oBoecKFJD{|HYDz6cwLL-c4RhRX$b4r;&ee_W#O* zReUD7*U@|w5uSt{O#+>B>G<+D}1Ke>qyR6a+=2a%iOt7*zZRD1}z+24jKpR3}-$xZ)9 zDxas~qsR}*Yca~_tN2)QvpvQuU!dX>$UWq>B;{tETQ4P(o8#eB<%?AQG;;HPm!UjV z#b=WLZ(nJPAZz@Gsd!uRNGssq|Jf^F49fo3f!vHwC*|L(cxUns@|vsiB`V&H-0ZJf zD_^SOJ;}}Z^j5x1#ru$(ct7RKRlGmB8P9>rSE%?Pax;FWDGyiiA><}LO!-O`A5Lz@ zTcq+;Dn5$bjJFu&KdAUva&vqVuY9$NPav-?uO%s8qvDgvOUP@f%FSmi>!mdE6EZ$C zlt-xindJX_@B9!!)}KeJcw6$KX8bE(r{W#R&GI@aU$5ew$<6lYs@xoNS%2n6{=f0B ze51(j)Jgen74J-L)|adDJu2Rf+^nzG%J-^x zPja)qyp``$@jm2c`}I@4U&Z^A%da+p$`7dcAae75JxzJ6iVq<-`=2o72UUDHxv4)= zxmhRHpGA?I{Yi}SpH%)>auXk~{IH5oAa{}1l9V4&@yX=o{U}xWQ5By?ZpK4~@;DWr zNp8lQjr@l-{^M1=EqNn(&0hI274JZ9#+#G!<0{^n+-$$D%1@|xH*(Yet(E_*;yuYt z|9dMxsp5UeP5=8TKc(XR$xZ(UDnG5_gUHSPe46qE6(2%w`aewh85JK+URz#^RDM>) zN0B#?*J6~PQ}MCnwdJ*V<-e%-1acFfr2M>!PbU9FUQ1PeLB*$$yUJ@B$`e(5Cb{WP zn<5CZ#($EEwQD zs*3j^m+rFhQ+`dw`;(jg2~_^8iVq?Wlh>vxPge0E?oCncSTFNL7AY#ix;*{29tqRD346iP!V!QdPWd zQT$?U7nYlNJ-_Y_LbCsLQ1ODSx2i{mD)KzX~JB>Nokwl?{bd|I2@7dv)cKGTS>Tx6c;*Ggx_X z2H7dn&J{+*f&Z<=-f;p?r~YXXTrf*HnH~ zc`fDFl$)_^z5G;p9Ti{T|5bM`@Nreu8XurwCDOf<-D8EKsCMMZkifQ43ZD1uoZHwfB10 zn!V2Cn>}my%uZi=e$biu=6vVB);{~}$9YU-z{Yu<4Em=)9|8Jk&`$wKKs1bQRr%RrBVz7q5~pl<|yF6e&%y$STarL*L`nn6Df^ou}01N4hQKOgiK&@TtQ z74+LcZv*{d(AzsbT0q8G-ei`V01pRW*2gx9Y^IZt~(V$-e`Y6z^1U&)zRiNJp`XbO*fc^#0 zH-LUM=x>954d{CvX+CiLi$OmU^lL$nf_@$76`+3+^f>5CK)(X?>p}lI=wAZ;3D9o< z{pX

N@V-vs*pGPvY?Zw7rB=wAkX0_aOYpAGsgpkE34t)PDu^xHsx81&mge-`ww zfc_TfUj_Z|px*)dAu?#@e3ya#Sv1HA_H`$6vj{Q=OIfc_xpJ)nOJ^zVb-3;Ii- zF9-b{(7z4(zd(No^dpWoAGjP=fW8Fuhe7WF{SnZg0R20lzY6+F(BA|7yP)qclP-?u zQPA^2{~qXLL0<)WCFqZV-URyNpkD?0_d&l0^wpq01^N@9zXtjbKz|SPCqW-{jQPO% zt^s{0=syI#81$z=p9=bqKyL(nE$E9te;V{VKz|1Gm7xC^^yfie2l{V7e-`xr0sT49 zbMwsyE{EqqF93Z#=o3MI0rXj*{{-~;puY(E&7f}p{Xx)w3i?x^{|xlkKz|AJ4?*7u z`u?9bA2{EigZ^pIUj}_F=)VB{9ME3@y%qFVL0=5|YoOl+`Y%CW1^On?e**gJp!b3P z2IzYqYd-8nFTVo)DA3;oy$JNTK(7b=*Pt%|{WqZB0(u|l%R&Dw=udsZ0y`T>ReLd(WfxZRw;h^UXG9NhplR+;4eFW&`pq~PI6X=DYF9AIYdN1fjpsxpg zBi+g1!j!Q$g)6V|`QT7SBH7uz@Vd2lvggUJiP2zborOPW<&@(h0FX zi3M4TL7yCm^g0XlDWER~JtzbII=Fw5w?7Tm5AJ(p{cO;K`xRNQ1U+Ye^MUoC%vdP^ zy~?bT{I?wRYS5cNuK|4t=s_9t*SCPq`ztP<6`;=$jb9!Eo!4)c?}Gc;IR2TU@k?+Y z8tb*7=MFX>SU(r^LeS3xy%O~ELGJ*47U)YszX0@=pkD}jaNiNf69YZCUx@WO(DM#3 zA6Tyky#(~xpx1)l0D5rW3vZ_p^x%FK)`NY*UkCS@us(+cSzdtc^L}X+eKY8DgO%xZ zkPO0jJ58V;4|=d~`Rgg5Uj*wXK))FD+d*#ueGTYAjQsVRptr&L+dyvz{rCgT2adl3 z^pip7a=1jk3$BCn`hmt@1=p`x?_@!iC9s{YK&01R&=a7q2YnvsTR@)=dd@-S19LA0 z{SeSO{$N|fLGOn3r+~fy^y#4Uc7pFZK)(#uUkdu=psxgdA?O=HzXJ64LBA68zk|;4 z1fKkZ%}QJjSHb$Fpf3Ww3G^?3z7+JUL0<*>HK4x&`eM*O0{vRh50gm<$9Wy-#h`x? z^cv8YfSv&TdeH9%{Y#*)0sRKh-vs?e(6@np6X-(^F&{Yon?aul`jN$GzZP`f{(AYY2lSP&{&LWH z{SETnI?%rh>u(1AQP2k+VLoua-vj-4&{u&z5%kAEZv_2u&=-ULeb85cz8dsbKz{=C zk3jzc=!bp6eBk(>1icvaHK5mk{zK3cpg#rr?V$e%^i`m*1^pG!p9cLS(4PT4FVB47 z_C(7Qo@4)kT9KM(q9(1W_hUvC2a1z3M8=sy8H?@053<9`wK63~OX z$zRuk{!>`L8}y%nz6|u2Kwk~|M$k8b{&Uc`g8nk-c}JNK9RDvsF9H1(&}%_|74&Y< zUjuy^=)VMg4d|Ode-rfALEi@Y8=w#Ur1`+{{|fYRpuY+FEYRNqeIe+-2K{c(e*^j& z(EC7t6ZGGLz76!>fj)Go`M~l29`tdbZw7r9=x>9*5cGFIzZ-OB{5i*bxyI7Jy}!}l zwDea*-)8BN!2%i4wV*XoKRYs_E756Qn}Tm7VkWxsEoGQ*=}rUt5zqXqheLFV~NgqJk}Ji zZ%nQ|-`b$ER!MAXtTWyfPn2b@ToP=tVp?@#Of1&W-5rfai)Pn%H8;d4o#wW=6%Dk_ zXhTzdC!y<`6I~SzW!3fcPgz-YqPU~JxwB$&^{5#AN1vmGvFdnByde?oN>o&ruvFX< z@9L^ZeqEoG%Az9!YOJ}nqotzyjM$Xf(Xuj1{@*;piT^ecs%15@wZ3CuJCgRFwWF+E z>)1QHl&F;U=#Ki%`qnNbd-=xgnOK-nyGFItFGwCmRg(u&{UamhHZ;WI-3{@MM2wn% zmN*~MJG@am>VwTqEH0a0Hf{3smdff_S*)R@thz9ke&naGDJvGo&YV6ib6ttil$ARN zr7TTyrYO0A>rZ%WSG=t;#_d*FRWy3`88u}!)iqTW)6S}rJwpv(nju=$8E=R;&yQzk znrzTx6YbJ2O&FDItQKhX6oePwz79AaL zYiMtzwlUVw-o{yFwbCfP5sr>-jAyYmdnL!#suMf0NvGy~UR(1e^Ww3NL}$e)iZb3% z5sg++yq%4)ngt#4>hZ}|zqm0zr+!{bBGyQaez z*t6Lw2iJe#zEdiGbz#_JPtQ&?pK8#+{vq3%1|z;+%nEx9o* z?Q`eGJG-JqbK{9vb6XcpPa5JG{b{fozs6d-=9X1XZm60(c0zquJlO@L4@0H}tB<7B zdDY7t-;cSpzO#+GP+7+=3(Ms{If)j<#<#SzH^iEnX{MyqCz`|1e5HRX(nbdrDKeuO z$at`Nw5yTXMJSV1Fs!Oh6cwf>Ru{(?P&3g=!{uaB$vN0Sa&k19J8_Va{k&1ziHXtk zX|~zkSy5@mhrCy#v>TMxvD&q+x?SJN@EJuF)5gYPbKB-6C(&eYYwv8WZ;3T0;+^%$ z2q!mG7gK2S%gSnEG(xJHTs_hn#M2&fY%f{^}Zcqvba&L=QR8G#!wJ4cuQ8L%r-0;Vu%6_hiQPMOT znP_JmRz0>0?C8iWksaD#V`ft?Bm8Maqtp6-8s~S7Z)==U-!d=W6^-&BU@D!{sh=A! z<6})Z)CRU86? zzOo@|XwqiN!5E0-jEM?24I^p5m2otC4WH?l8`!`zqY)nXWG#zxhQ)K5sS~QI9&0y+ zG*;;!dC^IfE*gLa{p601!IGszg+C@W9O~aV%^$5YpuM+i3qkE{h`K9_pe;@nB(vOi zF|}g{t97(QPT0-s=!kd5I%uldMbpu&yCWK0RZXs;kyXYyN9Za?w#6^yvx4mn$zd7Q zlm4o>6D9#v!Gfke7@6;8xY9!H)CN2I5j$UcqS0?xysT0w=FCHJ4~FR+Lhg~N&PZ*1 zN<~-{n~|LE#OMkgjZxF*JpJGDWi_=H^sl0AfZEN>3vk=F7)nslLn9nZ6@t$;)O7S8 zfi{yX!9+Ue)Y-nEqB2O4#+mbJB0)zg^}{^Awi@vPogkRX=kEzLuOX4`_ zpBhS}?-SRK+!<4^k;&=ENN#VEEe>68%{Hu2YIUzp(8LF(LE7vlwMY7=fN62iyohQ+ zW_mSr@;_rnq^`Mx0caDYUBPM0oIg2dsC4CC8p2q8BF4vdCC!|yodvywGOG-kkD4J* zF>NzA7ANn}_KLZE;3G5G9BgeDccAHGY4xfToz16RnlZMXm^u{xGXqzf?48*EWKpu) zo3T=nr`_J+xSqHDPM=Ixz2B*w{_aarZ9(w_p2wUrtB%)Wd;NWO)*}Irt%vpb9-E5# z4+yf^I?dC$n=W>Z7O0Cdw3`9?)pZ>Vtmn@FPWR$o5IcpjHbSU zR+cC$5;Q=~CN_PnwDV6P4?Gxc)YPA-J`fym=IYRCk5u-OSaqzkd2Ul8IYCW@K-X>> z&uf~I3fNFUtUkL3Lrms4bX?j{;*O+OH{Il4^H(^nio2OH%MF*Pxd)z9k=os-Iy z)nIa-OptEiYoSY<3A%b^g%sAV$qc@~(T3}ORM^UO+v-I8lF%T7QyKl+9r(m~M^b2Q z%@}Hg%@s34haxepc`#4hp-rV`ooNG)o!aQ`t_i{(>{oVAihHt8+C3R&(VuCvS-b7d zW|$;{S4UHx#TK$_=d;*QaG8^a`c@}UwEa#Xi*3uKEWJ6dPS7yg`HV?&jO=LO^mb|smHkwWJ4*dRL2A4+u*X4yyWl*Z>nWyqTG}tAD|fTo=Os^a zX3iMtq7PpSN(Iln(HYc?rKzcg+z@b;i+-^f$}ge59SR z-r;t`ochZ+??*LRhRAX^T+lJVA!A)N3D#H7`A0{m?oS9Fx&%a7v=C-zRdiR9%+LaA za{eQiP?PhgDc_4)0T=`$_b5#wB6C-I9iSG9^5h*qua#dbLmOYELybzw44-P8QG$vQapLeo`Q>xNr^!aJZ!a_ z6PkTAHk+q+_CSoI8k^_LiPO^t4d!H98O4_oB4xM}n}O^HSZO0``{LEV(fw!Dd=YFO zooeMunkuROxlyWaPTSRk|1s3e*EcpMFGuzt)2Wbl=d`GZ+hM+2Y#LvUNsWjy&R$ZH z*}Ha!2YTDRE~yXCc6Jy%6)P(n6O7qtwo1dbDtd6Jvc_r`x&2U^^j#B@HTMq`nJaQ)>wT*13f(0KfKPI=kKAhBHs%F zqcD3&kvUp~`msAt!|vGgQ8ac|PB}p;)+}>p4I zz^&ewJ+Q7m?7S1*1+jC_?C)rM>$)niW7RQ>sA$})b!uF5_H0$oBKGaysNO%eFW=LL z!4BtQ9YPg&2)U1DkFGhGT_n4>a_axgGf>=VrcMD(nO#VY3-pggR{sbmi(8xN8UKMD zyL7@volux3|DzdaM3U!hs?UUxJCw-IKF)dCs7>N`Au@}~v)z#?hKr*a9wCMP0vVmU z)0zjzquR7;#tqu)BPQF~th*)Lp=hH~KG$J>K`rxca6U0)5A0omm(gV^o*>&}L%1cv zWmPE2r{2q|cxU+BA(3%Q25(@8%btd}d>Mj&WiF$PX!}L<3oKNKczW2Csd~CN`P&{< ze72Z2mNqyyCyPh-pDf0TN>7lRyG^2Ww}}f#TeNrJ&MexrXw6i@JCgpUGn;eoQSHD} znOv-s=sdi;U`O>A?DiUZb?bDfS`B~3yhxdA(XLYVhzdy73g}npwwV62U9^$H81_eg z#ge=<3+0}=7|TDU$#XmUHDLOc&6*kb`)6`sXRM<9T$y9lF+M-`=GcammB;h>{Btpm zjafgt=~&C0KXiPVdgwoSXj+9+q5b3=Z7BIu%UrAot^ay>_drv6{E!xKOf4ky8!o%OA_&?#{UmcAQFH`)-dHC-aKeivod-zu?{u4a>8x;SE9{xV@ zWBd6T4}b7?y3xPFqy7ee#2DL;?|Ar!(7JZ}^QebEPw{gf64cw^)m49wSNy9z{Dq3Y zz@z-fDgMuT_{$alFb{u?__6;v$-^J~?Reb(+@=TR9=y8Bze$PzWDkEr@sIHEFH-!c zc=&Hr{2inPc?Ykq{Ff>Ib`SskivJQ1|4PN*>EU0a_%HMDuUGt+d-z{b{0lw&eTx4| z5C6N0{|XQPR>fcFQU3<*W7<#bzoH)gJn`f4Tjb$CUh$9g@E0onVh{f~#Xri!U#|GS z>#_f86#r-sex2f9>%nhP{9`=$-HQJi5B_4s|6>pTQpLZ{!+*Ep|CxusSNz!j@th)P zw}V$#`@K@}kM;1cR^tDaNBrv){~I3ujf#IC(t^B$S6BXTD*jVF^53HPKj-29Nb!&J z@CS+F{{M|f`Q=CfVf)E_N>FaWtE>DDQ~Ymx`12M2J0AYwivRN-Msp2p7@Gn#H z|GP*0_bYxLQ;D2HV^+6#ecF# z|M8LH|343YWZ%s52YY$&hbVp?Q%hK>S6BVXQ~djS_>Wio`+4{a75~RP{Noh=U=M$} z;?ME$*C_r2J^Xcw{~!;4i{d}n!{4p=`J8gL^=Gl-FY@3oRs3Zh{JRzZnI8UL#ealH z{Hqi{&q=c_zqN}0NDu!8#ebGZ{+ks4P!IlQ#ecMi|9!>(DG&cP@nipSriXvfewpp> zu^#?h#ebZKf2iW;a}wFsp8~~S?y>)i6@P_?zf|!L^N4?n;veqeuT}gbJp7G{{}c~@ zhxoDn@j0Pv_g}Zdk9znQEB=ul{-uh)*u#If;vePV?^XPhJnG*n@niXq@!+pf_$40x z^@@M2hyNADKiMPyJ|+KZ5B?T~KgEOpk;0$q;oqk4OFiPx`Iu?HasQ9^@aKvj&wott z@DEk|6FvL|ioeXmU#$4g^6-}`emf1i>+-_w(A`E6177kcnNQur|s|2Bos*Oao2KSvr4Y(LsO{JCPp_P^D` zKUDFzd-w|!e}{*^Sn;3ZvHwdIf5L-5Me)z`@YgE-OFjIJioe^#-=X*yc=#78{wk01 zU!wRg^WfjE_%HYH_lRF!lJ|dJ;o$!@o`OFY)jX+CTIB%XE+O%T@e0d+>)U{x5s@3l#rS z4}Y=Zzs18}s`zj9@J~_vw|V$$760uX{zk?B6%T)h;{U3Lf1&uL8Yhq6J3Rc075*|0 z|5AnjH4pzXg@2#N^{4w4|F=B+D;57YJp5}E|6e`)>lHuW6PfM!@fF2?p@+Xu@$)^Y z+4A32{C9cm|E=Q3`g@;;KQcJ8{k_w}KScb4}XWkf5^k%t?*ZP_!leu$2|Nu zDtx{t-LC)nbePhxC?cmz%|T25E))M~c@4gxO{6WKq))uf(lj*^>5~RL7)SE62XE6l z!SNhCS9T(4%%{}SmY)ST?xv|`U6h8?2i~Ub?-M^ibAwAhexUbJ`kz;^^9uYUto8G) z&!4By$?~%{aM0mq#Rb;-)@qRw`aW5H))(uaFb!~____T4MDOkLJD)Ty{vP4)E$2aG zGm-q@jl4F|s}}z^hnf}Q*7{bMkp}u+i+`&U|9iBq9skXwY5bg{4S2J8N&Rc{ucvP` ze!&k+`PGS&%kQuB-sV3^n#O-u_~qgcUTps3^o7P>BK*M5{10edn|}epHGc7@43X5vibjV@awYV|HHxGqVWG);a^X2Y5CunC4VvbwfrMbn*ERY z|Bu4wd%`sS>MZ$xbMW&N{@)copA*#hn}yHE7cPWLTbjtP zj{M&je()S7AAfsMqIUTYqMgV2?`>^(uVYQ(2V42`y0}~@{{1X}uK2IPmFc~;TI5{v zYxQTz4>S9pK}!65pDf2@^KTP=Q2s#}cKp{k_^XAF$M1d$f0cv3PWa!q61F}@zT@C; z6n^j=G4H<|h0ph?a!&UCyZi)`F@2r3*!jQbh<}mz!|FfZXUYt_{+IkHbN?Nn#J|_R z`u#DR;*F8{+mYf`>9mAQFi=YJ^qwesJh#nafBZ?N;KTAifczSN zlfviUf3Wj^%E7P9lF!pLjsL#F=ih&@`7ML>{1*!U7A_oE?Bjnf`89sdGZYvt+~@Mb z^^br5!RFuK;2(6d@wJR|-F@|9-&1?+`v7|NQ#} zcK$Co_>X6q|2hZ1N6DXmzrg12e}KOKPm~iUVfhatzqbD)>rDA${`~s|HowBbzfkyJ zNbPy^#@_!E9sEM!cfJN_rcZ;yZWDl*1lA^uh5*XsWki684fKR;~8-{;^D7k-b$ zxA*_A9Q?fJGs};kAGY}iAE+Py8-#z8RbV!MF!{ComkNKW#Lw+7KmTd-PjT?iD>lY3 z{xAnWUoHS5zf|E*6TY3-mQjYk(JFt=6_>ap{?((+TElT=dT(>;9PzJ|_;LKo&rjOr zx7xwqoF)Hz4*q(D&(B}k{NoPN>rbw99AWu?iu_vr=~MXp{F2ST-oYOyd}?0O7Q6ia z%i%8<|D-f`=KlMOBmS)tf4TU%{`2z-cKlb+2_lj+=3lpFS$^H**UGQ-1#|pk{o(uf zZT@lx|0&^rBP9R(9sFA1WBbkbf7|?59sF4(27E&Zf1`uHQTTZL^ZlB?{#%4! z7Q!zlzgGTrKgk^b@cn-_|4Ijc#8?9k<1cXVmnwX||IFq;?BI6^-!6aJMB38p;I9=v z?*ADIzvK|T{Qpn*Gt+39$KOcuYvo_^VrKc*D*Pq~f5xc>yxdCIZa*3v{3hY|O8k8M zpQrHebnqkNjPa2W{#P9Q+zlpw1qZ5R@O?&(`?lfbZA^zaSF8>qAukHW5pJujybqfD72me;#pA~@R)#lH0@Cz0G zY=!@#ga3x`7l-hlbMVWBUoL(w|3-y>7@Z*2%KyUCjWO)}=fULH%73Zw3xPjJ;a}k3 zKPr6bhEk_ge?+NCIgDRU zey#j-ewJDPTNM6B4*mq;hmC*!>fq-KAM0P6!v6tHFtz+|6n@zF<1zAU`8Nq4`=1Vl zzt0gmf7p0a{wJB2)W3H9`#%T2PbvRSgmon?$e1$*i6MFgYH^G1tA^bw}Yx#EwAKRa9h5xjJf0^*Z_Wv3O zzemacGKD`TPtX5B;V%fuzli)={;QSz7b^UR9sK+=4EXF2ey@YSMd4qm@Q*oC&%Z%~7m zMK*72eh>Mz{7Zgr@~;y==f7CVe+u0I$VFt2zfL>T7^jFoc(M6skzeC46Fyas!AE^R`^5cK0USkg-@qf(iWRv z)@AG8RM;1!q&$~ zjf0=_OLP3<{S!|p{69MQFV`6UDXGlO8=Jq`!SC6W*?v5!@X!5>UjBPeH@vX%PYwCC z@?R}{9RK}L;Xml$51V25VdKwx9sI)AP5#LLk;4DL!Jj_U@WZZOyzAii3ct>5CVBqg zX@%cfpqKyegfGP)Tge=MG?8B`|C~26_y3O-{_75YNv%Pil_HxrcKv(B!OvIt&no;g zKda||mGJHUlQxmIj3>XAe~H3>Ug5vz;J=t9e~W`(sqkM=__qzy^Upiiq#1Vp{ATiN z`8Nq4+rJkT{^=*_{Mo{nZZuWq_WnPW{2G6mlK)Q?{__t0qrwk6{-1I1R|+4G|Cbbg zH4TtR&KQ6H`aF~J4^o+%H+KHh$gkyJ@T>ikhC1T z$@>1EApEfNFGrDI+y5Jt{r|ecf7HRRy})D{HvfCr!7qH%)IU7_f2HvE9iivHLHIpZ zfm@2Q-Zz=qF4t`6_7{mI%4hKK~Et5ai|KBM5bq@YB!Vl~Je&pbn zDE!|l{DWzL$7O2I{|DEZ{0}lOsekR`f40M)C;llZr+LFHTrMELw*M-X_%|!@mr(`N z;%}@olrVlN`89r%!hc8Me2~ZqVWIe;4c$?SpV@i z2Y;)=e_!E`AF1#EmxMnyZSR|PQ5r{nZU5)~I+@y{Bi$3M8y z7#AR%-rM|{|E};iIQZ8H|3E8$>tp132ftkSIR5>o!tWfd=f5;=61VG* zoqsF&wfxr#AN$|`Rrr5$@Ye`GZ2a@KgTF~BfBvnD9NC{iT+^w6;4-!Q-@-X&#jyVO zS%?2L@mC5jc(KcGE%~+b%jq-qr(BF&fB6{|JN`t89{*Ka_~=_YYHx`{TW0jIJNjo#2?mw{>u^nG9~`~ zmH3Z#@Ee7HKu~eyl{S&KR5|?Z;y*oYZIdfXQ^~KD|4Jo({+rZx`QPT?KO+2t5k~L1 zta15;!~c}{zh)(DeT@9f5&wFLzg7%fe-5Vq?f5UE6YSdluf51bc@_ps?`?jZ{95_t z|30(-K1AWa>fqla{F^MkU49!K{1V~UiJ$ZTxWX?Ur{_QXVq*+zzfK{)mj5#0mjnNB zg@4TFb^b!(hn4?P9)3_Je6>+oMM{;=bJg(LnBi67hFp-TJ*6F@tD)(b!E_-}Fee<}Wx(n{N~ zP?}4At^AiL@gJka{|g6y?^Z(@j4*m{AAi@B>iG{5zkUA5_FqYUE&d*fzgzfRe~wk+ zKXJUyKeo*n!^V%FCcnndd)w4sSfd{(IiRUn+d8ehKv z75;FAzj&ga|C_?6!z*p!vclym@@x5TQurej{-I?$e`trHgteb%Is66Ur|D(dV(-5R zVM(dWCE z|Ec8H^3VOl{>ixU_$yQR|8Ve^Iry}RwB^4Y`~ro4mcqYeik|;E;nVacZL#?+&%aRkVaH!3`L+C)DEz4kzt6#M z6nujQX7`PYe`+mG{<{6|&k`EPN=Pn$?vdL911 zW$B+)t@8)XGng0CXqn@OndH~<@0R?7^5gvZ?`PQc?-2)oqwvFy|K$#T&L1=DU!B4q zT%+f|Eld8s6n>M!zrn%Z>r#UW%l|qDf0@F+Na620L(hMB zmi!3$wft8q{1%0Ot%E-^Oa3AUf4#zQQ}|mP{HwF%|K7pxQ}`VU|J<2+`9CcDu>Rvg zhyTee%_kgZ5x-Z;t$%7;Jcvx4nChxel7moKbiKo zTUO-uXTB2uH4c7(81n*s%@LWO_&xu*Wu`@cu{c|qci@;{aQTKRViKPW#g|0@-K+`(U+ zW&U*zey{LlGv@h!g@3h!zeSAsA^Bh7;OEO9@WS%HTH*IN_&EyjTtKG*vEuK4ZxQzHJb`2RqDt^TZ3;{T!&|KRgX{k7w-6#ju$y!P>1 zAbvakx-8>Aj{I8uTb1~~q{Khh5&t6LkFes;w?04Uh<~N{?fqrvf3G9{()UdJfyeJn zO8kFu#J^VfW2|`X_(z|ww?A96j6X_#t^7Nb_?Ig2&lJ90e{wG~f!pP0f9`g~pYQP7 z<=^FqzekDxHYNV0j`$0O|1qol?eTlBBmNTc7g&Bf{`(y9Z$?tq;YWra z{G>8AsFB?DqzA`Shf2=G1=Ztad$BmogU#`So<={{5GyFv% z{HYFp?Hk6JU(nBgNa4pF{1@Ld{G#J9`^`}4veev@vnTBP;}6F(k*E0y@~bHv{y{1Z}J zG;e~qgVz<}w^obXBz{{De1ZP7_^t3GOU0jebg-s*wew#?e(m`0ko^0OFg~uotCajX z9-GaM-WLpM$+^bQe}_xE{>-hM-FC90@Ho@{Ex*b5gMaP(51}tKf91($|GiB4;bQy$ EAB&()w*UYD diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/10919f5bbc85001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/10919f5bbc85001814de869e8ad08251 deleted file mode 100644 index 4a1aca2..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/10919f5bbc85001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 12:14:26 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC - -# Flags for the linker: -LDFLAGS = -pthread,-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/306f093f9e8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/306f093f9e8500181eabf1ba1ea37ea1 deleted file mode 100644 index 3b5916b..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/306f093f9e8500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,85 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn - - true - - - - - - src/ttcn/ttcn/TestCodec - - false - true - - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/d0c4ab04b985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/d0c4ab04b985001814de869e8ad08251 deleted file mode 100644 index 88bfb54..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c2/d0c4ab04b985001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 11:44:06 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall-std=c++11-pthread-fPIC - -# Flags for the linker: -LDFLAGS = -pthread-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c4/e0b5cbe1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c4/e0b5cbe1978500181c21d10bc58219ba deleted file mode 100644 index 47a1613..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c4/e0b5cbe1978500181c21d10bc58219ba +++ /dev/null @@ -1,44 +0,0 @@ -/*! - * \file tcp_layer_factory.hh - * \brief Header file for ITS TCP socket based protocol layer factory. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "layer_stack_builder.hh" - -#include "tcp_layer.hh" - -/*! - * \class tcp_layer_factory - * \brief This class provides a factory class to create an tcp_layer class instance - */ -class tcp_layer_factory : public layer_factory { - static tcp_layer_factory _f; //! Reference to the unique instance of this class -public: //! \publicsection - /*! - * \brief Default constructor - * Create a new instance of the tcp_layer class - * \remark The TCP socket based layer identifier is TCP - */ - tcp_layer_factory() { - // Register factory - layer_stack_builder::register_layer_factory("TCP", this); - }; - /*! - * \fn layer* create_layer(const std::string & type, const std::string & param); - * \brief Create the layers stack based on the provided layers stack description - * \param[in] p_type The provided layers stack description - * \param[in] p_params Optional parameters - * \return 0 on success, -1 otherwise - */ - inline virtual layer* create_layer(const std::string& p_type, const std::string& p_param){ - return new tcp_layer(p_type, p_param); - }; -}; // End of class tcp_layer_factory - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c6/f0cc7e57b685001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c6/f0cc7e57b685001814de869e8ad08251 deleted file mode 100644 index 3638cc6..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c6/f0cc7e57b685001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 11:30:29 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall-std=c++11-pthread-fPIC - -# Flags for the linker: -LDFLAGS = -pthread-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c7/f1fac6e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c7/f1fac6e1978500181c21d10bc58219ba deleted file mode 100644 index c66fdc3..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c7/f1fac6e1978500181c21d10bc58219ba +++ /dev/null @@ -1,114 +0,0 @@ -/*! - * \file layer_factory.hh - * \brief Header file for ITS abstract protocol layer definition. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include -#include -#include -#include - -#include "layer.hh" - -/*! - * \class layer_factory - * \brief This class provides a factory class to create layer class instances - * \abstract - */ -class layer_factory { -public: //! \publicsection - /*! - * \fn codec(); - * \brief Default constructor - */ - layer_factory() {}; - /*! - * \fn layer* create_layer(const std::string & type, const std::string & param); - * \brief Create the layers stack based on the provided layers stack description (cf. remark) - * \param[in] p_type The provided layers stack description - * \param[in] p_params Optional parameters - * \return 0 on success, -1 otherwise - * \remark The description below introduces layers stack in case of ITS project: - * CAM layer - * next_header : btpA|btpB (overwrite BTP.type) - * header_type : tsb|gbc - * header_sub_type : sh (single hop) - * DENM layer - * next_header : btpA|btpB (overwrite BTP.type) - * header_type : tsb|gbc - * BTP layer - * type : btpA|btpB - * destination port: dst_port - * source port : src_port - * device_mode : Set to 1 if the layer shall encapsulate upper layer PDU - * GN layer - * its_aid : ITS AID as defined by ETSI TS 102 965 V1.2.1. Default: 141 - * ll_address : GeoNetworking address of the Test System - * latitude : latitude of the Test System - * longitude : longitude of the Test System - * beaconing : Set to 1 if GnLayer shall start beaconing - * Beaconing timer expiry : expiry (ms) - * device_mode : Set to 1 if the layer shall encapsulate upper layer PDU - * secured_mode : Set to 1 if message exchanges shall be signed - * encrypted_mode : Set to 1 if message exchanges shall be encrypted - * NOTE: For signed & encrypted message exchanges, both secured_mode and encrypted_mode shall be set to 1 - * certificate : Certificate identifier the Test Adapter shall use - * secure_db_path : Path to the certificates and keys storage location - * hash : Hash algorithm to be used when secured mode is set - * Authorized values are SHA-256 or SHA-384 - * Default: SHA-256 - * signature : Signature algorithm to be used when secured mode is set - * Authorized values are NISTP-256, BP-256 and BP-384 - * Default: NISTP-256 - * cypher : Cyphering algorithm to be used when secured mode is set - * Ethernet layer - * mac_src :Source MAC address - * mac_bc :Broadcast address - * eth_type : Ethernet type - * Commsignia layer - * mac_src : Device MAC address, used to discard packets - * To indicate no filering, use the value 000000000000 - * mac_bc : Broadcast address - * eth_type : Ethernet type, used to discard packets - * target_host : Device address - * target_port : Device port - * source_port : Test System port - * interface_id: Interface id, used to discard packets - * tx_power : TX power (dB) - * UDP layer (IP/UDP based on Pcap) - * dst_ip : destination IPv4 address (aa.bb.cc.dd) - * dst_port: destination port - * src_ip : source IPv4 address (aa.bb.cc.dd) - * src_port: source port - * Pcap layer - * mac_src : Source MAC address, used to exclude from capture the acket sent by the Test System - * filter : Pcap filter (compliant with tcpdump syntax) - * E.g. filter=and ether src 04e548000001 - * Online mode: - * nic: Local NIC - * If set, online mode is used - * Offline mode (nic is present but not set): - * file : File to read - * frame_offset: Frame offset, used to skip packets with frame number < frame_offset - * time_offset : Time offset, used to skip packets with time offset < time_offset - * save_mode : 1 to save sent packet, 0 otherwise - * Here are some examples: - * GeoNetworking multiple component case: - * NodeB.geoNetworkingPort.params := "GN(ll_address=04e548000001,latitude=43551050,longitude=10298730,beaconing=0,expiry=1000,its_aid=141)/COMMSIGNIA(mac_src=04e548000001,mac_bc=FFFFFFFFFFFF,eth_type=8947,target_host=10.200.1.101,target_port=7942,source_port=7943,its_aid=141,interface_id=2,tx_power=-32)/UDP(dst_ip=192.168.56.1,dst_port=12346,src_ip=192.168.156.4,src_port=12345)/ETH(mac_src=04e548000001,mac_dst=0A0027000011,eth_type=0800)/PCAP(mac_src=04e548000001,file=/home/vagrant/TriesAndDelete/etsi_its/testdata/TC_AUTO_IOT_DENM_RWW_BV_01_short.pcap,filter=and (udp port 30000 or udp port 7943))" -NodeC.geoNetworkingPort.params := "GN(ll_address=70b3d5791b48,latitude=43551050,longitude=10298730,beaconing=0,expiry=1000,its_aid=141)/COMMSIGNIA(mac_src=70b3d5791b48,mac_bc=FFFFFFFFFFFF,eth_type=8947,target_host=10.200.1.101,target_port=7942,source_port=7943,its_aid=141,interface_id=2,tx_power=-32)/UDP(dst_ip=192.168.56.1,dst_port=12346,src_ip=192.168.156.4,src_port=12345)/ETH(mac_src=70b3d5791b48,mac_dst=0A0027000011,eth_type=0800)/PCAP(mac_src=70b3d5791b48,file=/home/vagrant/TriesAndDelete/etsi_its/testdata/TC_AUTO_IOT_DENM_RWW_BV_01_short.pcap,filter=and (udp port 30000 or udp port 7943))" - * NodeB.geoNetworkingPort.params := "GN(ll_address=04e548000001,latitude=43551050,longitude=10298730,beaconing=0,expiry=1000,its_aid=141)/ETH(mac_src=04e548000001,mac_dst=0A0027000011,eth_type=0800)/PCAP(mac_src=04e548000001,file=/home/vagrant/TriesAndDelete/etsi_its/testdata/TC_AUTO_IOT_DENM_RWW_BV_01.pcap,filter=and ether src 04e548000001)" -#NodeC.geoNetworkingPort.params := "GN(ll_address=70b3d5791b48,latitude=43551050,longitude=10298730,beaconing=0,expiry=1000,its_aid=141)/ETH(mac_src=70b3d5791b48,mac_dst=0A0027000011,eth_type=0800)/PCAP(mac_src=70b3d5791b48,file=/home/vagrant/TriesAndDelete/etsi_its/testdata/TC_AUTO_IOT_DENM_RWW_BV_01.pcap,filter=and ether src 70b3d5791b48)" - * UpperTester port based on UDP - * system.utPort.params := "UT_GN/UDP(dst_ip=192.168.1.1,dst_port=12346,src_ip=192.168.156.4,src_port=12345)/ETH(mac_src=026f8338c1e5,mac_dst=0A0027000011,eth_type=0800)/PCAP(mac_src=0800275c4959,nic=enp0s8,filter=and udp port 12346)" - * \pure - */ - virtual layer* create_layer(const std::string & p_type, const std::string & p_params) = 0; -}; // End of class layer_factory - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/cf/c0b9dd8f9e8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/cf/c0b9dd8f9e8500181eabf1ba1ea37ea1 deleted file mode 100644 index a9c2b61..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/cf/c0b9dd8f9e8500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,121 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn - - true - - - - - - src/ttcn/ttcn/TestCodec - - false - true - - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d2/00bcaed3978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d2/00bcaed3978500181c21d10bc58219ba deleted file mode 100644 index 3d33cd169bc898dbeff0ab89d2d178b736619ec0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 531144 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 $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d4/b0edd64c978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d4/b0edd64c978500181c21d10bc58219ba deleted file mode 100644 index d42b6c7..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d4/b0edd64c978500181c21d10bc58219ba +++ /dev/null @@ -1,12 +0,0 @@ - - Default - - - bin/STF549_Ng112 - - - - bin - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d5/60df62189e8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d5/60df62189e8500181eabf1ba1ea37ea1 deleted file mode 100644 index 3e66c2d..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d5/60df62189e8500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,67 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn - - true - - - - - - src/ttcn/ttcn/TestCodec - - false - true - - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d8/d0adcde29d8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d8/d0adcde29d8500181eabf1ba1ea37ea1 deleted file mode 100644 index 7479a0b..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/d8/d0adcde29d8500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,40 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/dd/607dcae1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/dd/607dcae1978500181c21d10bc58219ba deleted file mode 100644 index 8e355a9..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/dd/607dcae1978500181c21d10bc58219ba +++ /dev/null @@ -1,72 +0,0 @@ -/*! - * \file t_layer.hh - * \brief Header file for ITS abstract protocol layer definition. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "layer.hh" - -/*! - * \class t_layer - * \brief This class provides basic description of an ITS port protocol layer. - * A port protocol layer is the final layer which provides the access to the physical communication channel - * A port protocol layer derives from both a layer class and a template port class - */ -template class t_layer : public layer { - typedef std::vector TPortList; - typedef typename std::vector::iterator TPortListIterator; - - TPortList upperPorts; //! The list of the upper ports - -public: //! \publicsection - /*! - * \brief Default constructor - * Create a new instance of the t_layer class - * \todo Remove logs - */ - explicit t_layer() : layer(), upperPorts() { }; - - /*! - * \brief Specialized constructor - * Create a new instance of the layer class with its type description - * \param[in] p_type The port type name (e.g. TCP for the TCP sockect based layer) - * \remark This constructor is called by the layer factory - * \see layer_factory - */ - explicit t_layer(const std::string& p_type) : layer(p_type), upperPorts() { }; - /*! - * \inline - * \fn void add_upper_port(TPort * p_port); - * \brief Add a new upper port layer - * \todo To be done - */ - inline void add_upper_port(TPort * p_port) { upperPorts.push_back(p_port); }; - /*! - * \fn void remove_upper_port(TPort*); - * \brief Remove the specified upper layer port protocol from the list of the upper layers - * \param[in] p_layer The layer protocol to be removed - */ - void remove_upper_port(TPort*); - -protected: //! \protectedsection - /*! - * \inline - * \fn void to_all_upper_ports(const TMessage& m, const params& param); - * \brief Forward the message to all available upper port layers - * \param[in] p_message The message to be forwarded - * \param[in] p_params Some lower layers parameters values when data was received - */ - template - inline void to_all_upper_ports(const TMessage& p_message, const params& p_params) { - for(TPortListIterator it=upperPorts.begin(); itreceiveMsg(p_message, p_params); - } - } -}; // End of class t_layer - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/de/00f495bbbd85001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/de/00f495bbbd85001814de869e8ad08251 deleted file mode 100644 index 7d9a07e..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/de/00f495bbbd85001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 12:24:17 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC - -# Flags for the linker: -LDFLAGS = -pthread,-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/de/d0dd7033c08500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/de/d0dd7033c08500181dc9eb7ae31560a9 deleted file mode 100644 index 4584bae..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/de/d0dd7033c08500181dc9eb7ae31560a9 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 12:41:51 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC - -# Flags for the linker: -LDFLAGS = -pthread,-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/df/108b860cbc85001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/df/108b860cbc85001814de869e8ad08251 deleted file mode 100644 index 33f24fe..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/df/108b860cbc85001814de869e8ad08251 +++ /dev/null @@ -1,71 +0,0 @@ -#include -#include - -#include "layer_stack_builder.hh" - -#include "loggers.hh" - -layer_stack_builder* layer_stack_builder::_instance = NULL; - -// static functions -layer_stack_builder * layer_stack_builder::get_instance() -{ - return _instance ? _instance : _instance = new layer_stack_builder(); -} - -void layer_stack_builder::register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory) -{ - layer_stack_builder::get_instance()->_register_layer_factory(p_type, p_layer_factory); -} - -// member functions -layer_stack_builder::layer_stack_builder() -{ -} - -void layer_stack_builder::_register_layer_factory(const std::string & p_type, layer_factory* p_layer_factory) -{ - _layer_factories[p_type] = p_layer_factory; -} - -layer* layer_stack_builder::create_layer_stack(const char* p_layer_stack_description) -{ - loggers::get_instance().log(">>> layer_stack_builder::create_layer_stack: %s", p_layer_stack_description); - - layer* entry = NULL; // Initial layer (the first declared) - layer* up = NULL; // Upper layer - // Parse the layer description - try { - std::regex rgx ("(\\w+)(\\((.*?)\\))?(\\/|$)"); - std::string str = p_layer_stack_description; - std::sregex_iterator begin(str.cbegin(), str.cend(), rgx); - std::sregex_iterator end = std::sregex_iterator(); - for (std::sregex_iterator it = begin; it != end; ++it) { - std::smatch m = *it; - loggers::get_instance().log("layer_stack_builder::create_layer_stack: %d - %s - %s - %s - %s", m.size(), m[0].str().c_str(), m[1].str().c_str(), m[2].str().c_str(), m[3].str().c_str()); - LayerFactoryMap::iterator i = _layer_factories.find(m[1].str()); - if (i == _layer_factories.end()) { - loggers::get_instance().error("layer_stack_builder::create_layer_stack: %s: Unknown layer type", m[1].str().c_str()); - } - loggers::get_instance().log("layer_stack_builder::create_layer_stack: Create layer %s, %s", m[1].str().c_str(), m[3].str().c_str()); - layer* l = i->second->create_layer(m[1].str(), m[3].str()); - if (NULL == l) { - loggers::get_instance().error("layer_stack_builder::create_layer_stack: %s: Layer creation error", m[1].str().c_str()); - } - - loggers::get_instance().log("layer_stack_builder::create_layer_stack: Setup layers for %s", l->to_string().c_str()); - l->add_upper_layer(up); - if (entry == NULL) { // Set the first declared layer - entry = l; - } - up = l; // Build the linked list of layers - } // End of 'for' statement - } - catch(const std::logic_error& e){ - if(up){ // FIXME To be reviewed - up->delete_layer(); - up = NULL; - } - } - return entry; -} diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e1/00485b1fb985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e1/00485b1fb985001814de869e8ad08251 deleted file mode 100644 index 3f01614..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e1/00485b1fb985001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 11:51:17 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC - -# Flags for the linker: -LDFLAGS = -pthread,-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e1/5056cae1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e1/5056cae1978500181c21d10bc58219ba deleted file mode 100644 index 1adf44c..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e1/5056cae1978500181c21d10bc58219ba +++ /dev/null @@ -1,73 +0,0 @@ -/*! - * \file sip_layer.hh - * \brief Header file for ITS HTTP protocol layer. - * \author ETSI STF549 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include - -#include "t_layer.hh" - -#include "sip_codec_register_request.hh" - -namespace LibSip__Interface { - class SipPort; //! Forward declaration of TITAN class -} - -namespace LibSip__SIPTypesAndValues { - class REGISTER__Request; //! Forward declaration of TITAN class -} - -class OCTETSTRING; //! Forward declaration of TITAN class - -/*! - * \class sip_layer - * \brief This class provides a factory class to create an sip_layer class instance - */ -class sip_layer : public t_layer { - params _params; - -public: //! \publicsection - /*! - * \brief Specialised constructor - * Create a new instance of the sip_layer class - * \param[in] p_type \todo - * \param[in] p_param \todo - */ - sip_layer() : t_layer(), _params() {}; - /*! - * \brief Specialised constructor - * Create a new instance of the sip_layer class - * \param[in] p_type \todo - * \param[in] p_param \todo - */ - sip_layer(const std::string& p_type, const std::string& p_param); - /*! - * \brief Default destructor - */ - virtual ~sip_layer() { }; - - /*! - * \virtual - * \fn void send_data(OCTETSTRING& data, params& p_params); - * \brief Send bytes formated data to the lower layers - * \param[in] p_data The data to be sent - * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters - */ - virtual void send_data(OCTETSTRING& data, params& p_params); - /*! - * \virtual - * \fn void receive_data(OCTETSTRING& data, params& p_params); - * \brief Receive bytes formated data from the lower layers - * \param[in] p_data The bytes formated data received - * \param[in] p_params Some lower layers parameters values when data was received - */ - virtual void receive_data(OCTETSTRING& data, params& info); -}; // End of class sip_layer - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e2/f0fac6e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e2/f0fac6e1978500181c21d10bc58219ba deleted file mode 100644 index abd4eae..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e2/f0fac6e1978500181c21d10bc58219ba +++ /dev/null @@ -1,144 +0,0 @@ -/*! - * \file layer.hh - * \brief Header file for ITS abstract protocol layer definition. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include -#include -#include -#include - -#include "params.hh" - -class OCTETSTRING; //! Forward declaration of TITAN class -class BITSTRING; //! Forward declaration of TITAN class -class CHARSTRING; //! Forward declaration of TITAN class -class INTEGER; //! Forward declaration of TITAN class - -/*! - * \class layer - * \brief This class provides basic description of an ITS protocol layer - */ -class layer { - std::vector upperLayers; //! List of the upper protocol layers - std::vector lowerLayers; //! List of the lower protocol layers - -protected: - std::string type; //! Type description, it indicates the protocol type (e.g. CAM, DENM, GN, ETH, PCAP...) - -public: //! \publicsection - /*! - * \brief Default constructor - * Create a new instance of the layer class - */ - explicit layer() : upperLayers(), lowerLayers(), type(std::string("")) { }; - - /*! - * \brief Specialized constructor - * Create a new instance of the layer class with its type description - * \param[in] p_type The port type name (e.g. GN for the GeoNetworking layer) - * \remark This constructor is called by the layer factory - * \see layer_factory - */ - explicit layer(const std::string& p_type) : upperLayers(), lowerLayers(), type(std::string(p_type.begin(), p_type.end())) { }; - - /*! - * \brief Default destructor - * \todo Remove logs - */ - virtual ~layer() { - // Double linked list, only remove layers in lowerLayers from the lowest one - std::for_each(lowerLayers.rbegin(), lowerLayers.rend(), [](layer* it) { delete it; } ); - lowerLayers.clear(); - upperLayers.clear(); - }; - - /*! - * \fn void delete_layer(); - * \brief Delete this layer - * \todo To be implemented - */ - void delete_layer() { }; - -public: //! \publicsection - /*! - * \inline - * \fn void add_upper_layer(layer* p_layer); - * \brief Add a new layer in the list of the upper layer - * \param[in] p_layer The layer protocol to be removed - */ - inline void add_upper_layer(layer* p_layer) { - if (p_layer != NULL) { - upperLayers.push_back(p_layer); - p_layer->lowerLayers.push_back(this); - }; - }; - - /*! - * \fn void remove_upper_layer(layer* p_layer); - * \brief Remove the specified upper layer protocol from the list of the upper layer - * \param[in] p_layer The layer protocol to be removed - * \todo To be implemented - */ - void remove_upper_layer(layer* p_layer) { }; - - /*! - * \virtual - * \fn void send_data(OCTETSTRING& data, params& params); - * \brief Send bytes formated data to the lower layers - * \param[in] p_data The data to be sent - * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters - * \todo Remove the logs - * \virtual - */ - virtual void send_data(OCTETSTRING& p_data, params& p_params) { }; - - /*! - * \virtual - * \fn void receive_data(OCTETSTRING& data, params& params); - * \brief Receive bytes formated data from the lower layers - * \param[in] p_data The bytes formated data received - * \param[in] p_params Some lower layers parameters values when data was received - * \todo Remove the logs - * \virtual - */ - virtual void receive_data(OCTETSTRING& p_data, params& p_params) { } - - /*! - * \inline - * \fn const std::string& to_string(); - * \brief Remove the specified upper layer protocol from the list of the upper layer - * \param[in] The layer protocol to be removed - */ - inline const std::string& to_string() const { return type; }; - -protected: //! \protectedsection - inline void to_all_layers(std::vector&layers, OCTETSTRING& data, params& params) { - for (std::vector::const_iterator it = layers.cbegin(); it != layers.cend(); ++it) { - layer* p = *it; - p->receive_data(data, params); // FIXME BUG I - } // End of 'for' statement - }; - - inline void receive_to_all_layers(OCTETSTRING& data, params& params) { - for (std::vector::const_iterator it = upperLayers.cbegin(); it != upperLayers.cend(); ++it) { - layer* p = *it; - p->receive_data(data, params); - } // End of 'for' statement - }; - - inline void send_to_all_layers(OCTETSTRING& data, params& params) { - for (std::vector::const_iterator it = lowerLayers.cbegin(); it != lowerLayers.cend(); ++it) { - layer* p = *it; - p->send_data(data, params); - } // End of 'for' statement - }; -}; // End of class layer - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e3/62d0d1e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e3/62d0d1e1978500181c21d10bc58219ba deleted file mode 100644 index 482e9dc..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e3/62d0d1e1978500181c21d10bc58219ba +++ /dev/null @@ -1,57 +0,0 @@ -#include "LibItsHttp_TypesAndValues.hh" - -#include "http_layer_factory.hh" -#include "codec_stack_builder.hh" - -#include "loggers.hh" - -#include "converter.hh" - -using namespace std; // Required for isnan() -#include "LibItsHttp_TypesAndValues.hh" -#include "LibItsHttp_TestSystem.hh" - -http_layer::http_layer(const std::string & p_type, const std::string & param) : t_layer(p_type), _params()//, _device_mode{false} -{ - loggers::get_instance().log(">>> http_layer::http_layer: %s, %s", to_string().c_str(), param.c_str()); - // Setup parameters - params::convert(_params, param); - - params::const_iterator it = _params.find(params::codecs); - if (it != _params.cend()) { - _codec.set_payload_codecs(it->second); - } -} - -void http_layer::sendMsg(const LibItsHttp__TypesAndValues::HttpMessage& p_http_message, params& p_param) { - loggers::get_instance().log_msg(">>> http_layer::sendMsg: ", p_http_message); - - // Encode HttpMessage - OCTETSTRING data; - _codec.encode(p_http_message, data); - send_data(data, _params); -} - -void http_layer::send_data(OCTETSTRING& data, params& params) { - loggers::get_instance().log_msg(">>> http_layer::send_data: ", data); - - send_to_all_layers(data, params); -} - -void http_layer::receive_data(OCTETSTRING& data, params& params) -{ - loggers::get_instance().log_msg(">>> http_layer::receive_data: ", data); - - // Decode HTTP message - LibItsHttp__TypesAndValues::HttpMessage http_message; - if (_codec.decode(data, http_message) == -1) { - loggers::get_instance().warning("http_layer::receive_data: Failed to decode data"); - return; - } - - // Pass it to the ports - to_all_upper_ports(http_message, params); -} - -http_layer_factory http_layer_factory::_f; - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e5/f0352becc08500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e5/f0352becc08500181dc9eb7ae31560a9 deleted file mode 100644 index 31ae9ac..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e5/f0352becc08500181dc9eb7ae31560a9 +++ /dev/null @@ -1,132 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - None - -Wall -std=c++11 -pthread -fPIC - - pcap - ssl - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - -pthread -fPIC - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn - - true - - - - - - src/ttcn/ttcn/TestCodec - - false - true - - - - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e6/20b7df769e8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e6/20b7df769e8500181eabf1ba1ea37ea1 deleted file mode 100644 index ac4d24b..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/e6/20b7df769e8500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,103 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn - - true - - - - - - src/ttcn/ttcn/TestCodec - - false - true - - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ea/3019ff6bc28500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ea/3019ff6bc28500181dc9eb7ae31560a9 deleted file mode 100644 index f348652..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ea/3019ff6bc28500181dc9eb7ae31560a9 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 12:57:47 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -std=c++11-pthread-fPIC - -# Flags for the linker: -LDFLAGS = -pthread-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ea/e0dffc35c08500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ea/e0dffc35c08500181dc9eb7ae31560a9 deleted file mode 100644 index adf32e0..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ea/e0dffc35c08500181dc9eb7ae31560a9 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 12:41:58 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall -std=c++11 -pthread -fPIC - -# Flags for the linker: -LDFLAGS = -pthread -fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ed/20ffc4e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ed/20ffc4e1978500181c21d10bc58219ba deleted file mode 100644 index 1a4d430..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ed/20ffc4e1978500181c21d10bc58219ba +++ /dev/null @@ -1,74 +0,0 @@ -/*! - * \file codec_stack_builder.hh - * \brief Header file for ITS protocol stack builder. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "codec_factory.hh" - -class Record_Type; //! TITAN forward declaration - -/*! - * \class codec_stack_builder - * \brief This class provides a factory class to create Codec class instances - */ -class codec_stack_builder { -private: //! \privatesection - static codec_stack_builder* _instance; //! Smart pointer to the unique instance of the logger framework - std::map _codecs; //! The list of the registered \see t_codec factories - - /*! - * \brief Default constructor - * Create a new instance of the codec_stack_builder class - * \private - */ - codec_stack_builder() { }; // can not be created manually -public: //! \publicsection - /*! - * \fn codec_stack_builder* get_instance(); - * \brief Accessor for the unique instance of the logger framework - * \static - */ - static codec_stack_builder* get_instance() { return _instance ? _instance : _instance = new codec_stack_builder(); }; - - /*! - * \fn void register_codec_factory(const std::string & p_type, codec_factory* p_codec_factory); - * \brief Add a new codec factory - * \param[in] p_type The codec identifier (e.g. GN for the GeoNetworking codec...) - * \param[in] p_codec_factory A reference to the \see codec_factory - * \static - */ - static void register_codec_factory(const std::string & p_type, codec_factory* p_codec_factory) { codec_stack_builder::get_instance()->_register_codec_factory(p_type, p_codec_factory); }; - -private: //! \privatesection - /*! - * \fn void _register_codec_factory(const std::string & p_type, codec_factory* p_codec_factory); - * \brief Add a new codec factory - * \param[in] p_type The codec identifier (e.g. GN for the GeoNetworking codec...) - * \param[in] p_codec_factory A reference to the \see codec_factory - */ - void _register_codec_factory(const std::string & p_type, codec_factory* p_codec_factory) { _codecs[p_type] = p_codec_factory; }; - -public: //! \publicsection - /*! - * \fn codec* get_codec(const char* p_codec_name); - * \brief Retrieve the specified codec name from the list of the registered codecs - * \param[in] p_codec_name The codec indentifier - * \return The pointer to the codec object on success, nullptr otherwise - */ - inline codec* get_codec(const char* p_codec_name) { // NOTE A virtual method cannot not be a template ==> polymorphism required here - typename std::map::const_iterator it = _codecs.find(p_codec_name); - if (it != _codecs.cend()) { - return it->second->create_codec(); - } - - return nullptr; - } -}; // End of class codec_stack_builder - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ed/90c20963bc85001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ed/90c20963bc85001814de869e8ad08251 deleted file mode 100644 index edfcb37..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ed/90c20963bc85001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 12:14:27 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC - -# Flags for the linker: -LDFLAGS = -pthread,-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ee/6087e5dfb08500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ee/6087e5dfb08500181eabf1ba1ea37ea1 deleted file mode 100644 index c4500d7..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ee/6087e5dfb08500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 08:51:35 UTC 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -std=c++11-pthread-gPIC - -# Flags for the linker: -LDFLAGS = -pthread-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ef/9064abdfb08500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ef/9064abdfb08500181eabf1ba1ea37ea1 deleted file mode 100644 index e82745c..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ef/9064abdfb08500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 08:51:36 UTC 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -std=c++11-pthread-gPIC - -# Flags for the linker: -LDFLAGS = -pthread-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ef/d087d51db885001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ef/d087d51db885001814de869e8ad08251 deleted file mode 100644 index 55a4a35..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ef/d087d51db885001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 11:31:24 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall-std=c++11-pthread-fPIC - -# Flags for the linker: -LDFLAGS = -pthread-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f2/61d0d1e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f2/61d0d1e1978500181c21d10bc58219ba deleted file mode 100644 index 25d8278..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f2/61d0d1e1978500181c21d10bc58219ba +++ /dev/null @@ -1,516 +0,0 @@ -#include -#include -#include - -#include "codec_stack_builder.hh" - -#include "http_codec.hh" - -#include "loggers.hh" - -#include "LibItsHttp_TypesAndValues.hh" -#include "LibItsHttp_MessageBodyTypes.hh" -#include "LibItsHttp_XmlMessageBodyTypes.hh" - -int http_codec::encode (const LibItsHttp__TypesAndValues::HttpMessage& msg, OCTETSTRING& data) -{ - loggers::get_instance().log_msg(">>> http_codec::encode: ", (const Base_Type&)msg); - - TTCN_EncDec::clear_error(); - TTCN_Buffer encoding_buffer; - - _ec.reset(); - - int result; - if (msg.ischosen(LibItsHttp__TypesAndValues::HttpMessage::ALT_request)) { - result = encode_request(msg.request(), encoding_buffer); - } else if (msg.ischosen(LibItsHttp__TypesAndValues::HttpMessage::ALT_response)) { - result = encode_response(msg.response(), encoding_buffer); - } else { - loggers::get_instance().warning("http_codec::encode: Unbound HttpMessage"); - return -1; - } - - data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()); - - loggers::get_instance().log_msg("<<< http_codec::encode: data=", data); - return result; -} - -int http_codec::decode (const OCTETSTRING& data, LibItsHttp__TypesAndValues::HttpMessage& msg, params* params) -{ - loggers::get_instance().log_msg(">>> http_codec::decode: data=", data); - - TTCN_EncDec::clear_error(); - TTCN_Buffer decoding_buffer(data); - loggers::get_instance().log_to_hexa("http_codec::decode: decoding_buffer=", decoding_buffer); - - _dc.reset(); - - _params = params; - - // Get the first line (e.g. HTTP/1.1 302 Found or POST / HTTP/1.1) - CHARSTRING message_id; - if (get_line(decoding_buffer, message_id) == -1) { - return -1; - } - loggers::get_instance().log_msg("http_codec::decode: message_id: ", message_id); - // Extract parameters - try { - std::string str(static_cast(message_id)); - std::regex rgx ("\\s*(\\w+)/"); - std::sregex_iterator begin(str.cbegin(), str.cend(), rgx); - std::smatch m = *begin; - loggers::get_instance().log("http_codec::decode: %d - %s", m.size(), m[0].str().c_str()); - if (m[0].str().compare("HTTP/") == 0) { // HTTP response - LibItsHttp__TypesAndValues::Response response; - std::regex rgx ("\\s*HTTP/(\\d+)\\.(\\d+)\\s+(\\d+)\\s+([\\w\\s\\t\\v\\f]+)*"); - std::sregex_iterator begin(str.cbegin(), str.cend(), rgx); - std::smatch m = *begin; - loggers::get_instance().log("http_codec::decode: Process response: %d", m.size()); - if (m.size() != 5) { - loggers::get_instance().error("http_codec::decode: Unsupported tag"); - return -1; - } - response.version__major() = std::stoi(m[1].str().c_str()); - response.version__minor() = std::stoi(m[2].str().c_str()); - response.statuscode() = std::stoi(m[3].str().c_str()); - response.statustext() = CHARSTRING(m[4].str().c_str()); - LibItsHttp__TypesAndValues::HeaderLines headers; - decode_headers(decoding_buffer, headers); - response.header() = headers; - loggers::get_instance().log_to_hexa("Before decoding Body: ", decoding_buffer); - LibItsHttp__MessageBodyTypes::HttpMessageBody body; - if (decode_body(decoding_buffer, body) == -1) { - response.body().set_to_omit(); - } else { - response.body() = OPTIONAL(body); - } - msg.response() = response; - } else { // HTTP request - LibItsHttp__TypesAndValues::Request request; - std::regex rgx ("\\s*(\\w+)\\s+(.+)\\s+HTTP/(\\d)\\.(\\d)"); - std::sregex_iterator begin(str.cbegin(), str.cend(), rgx); - std::smatch m = *begin; - if (m.size() != 5) { - loggers::get_instance().error("http_codec::decode: Unsupported tag"); - return -1; - } - request.method() = CHARSTRING(m[1].str().c_str()); - request.uri() = CHARSTRING(m[2].str().c_str()); - request.version__major() = std::stoi(m[3].str().c_str()); - request.version__minor() = std::stoi(m[4].str().c_str()); - LibItsHttp__TypesAndValues::HeaderLines headers; - decode_headers(decoding_buffer, headers); - request.header() = headers; - OPTIONAL body; - body.set_to_omit(); - if (decode_body(decoding_buffer, body) == -1) { - request.body().set_to_omit(); - } else { - request.body() = body; - } - msg.request() = request; - } - - loggers::get_instance().log_msg("<<< http_codec::decode: ", (const Base_Type&)msg); - return 0; - } - catch(const std::logic_error& e) { - return -1; - } -} - -int http_codec::encode_request(const LibItsHttp__TypesAndValues::Request& p_request, TTCN_Buffer& p_encoding_buffer) -{ - loggers::get_instance().log_msg(">>> http_codec::encode_request: ", (const Base_Type&)p_request); - - const OPTIONAL& v = p_request.body(); - OCTETSTRING os; - if (v.ispresent()) { - const LibItsHttp__MessageBodyTypes::HttpMessageBody& body = static_cast(*v.get_opt_value()); - loggers::get_instance().log_msg("http_codec::encode_request: body: ", body); - if (encode_body(body, os) == -1) { - _ec.length = 0; - } - } - - // Encode generic part - p_encoding_buffer.put_cs(p_request.method()); - p_encoding_buffer.put_c(' '); - p_encoding_buffer.put_cs(p_request.uri()); - p_encoding_buffer.put_cs(" HTTP/"); - p_encoding_buffer.put_cs(int2str(p_request.version__major())); - p_encoding_buffer.put_c('.'); - p_encoding_buffer.put_cs(int2str(p_request.version__minor())); - p_encoding_buffer.put_cs("\r\n"); - // Encode headers - const LibItsHttp__TypesAndValues::HeaderLines& headers = p_request.header(); - for (int i = 0; i < headers.size_of(); i++) { - const LibItsHttp__TypesAndValues::HeaderLine& header = headers[i]; - loggers::get_instance().log_msg("http_codec::encode_request: Processing header ", header.header__name()); - p_encoding_buffer.put_cs(header.header__name()); - p_encoding_buffer.put_cs(": "); - if (std::string(static_cast(header.header__name())).compare("Content-Length") == 0) { - if (_ec.length != 0) { - p_encoding_buffer.put_cs(int2str(_ec.length + 2/*Stand for the last CRLF*/)); - } else { - p_encoding_buffer.put_cs("0"); - } - _ec.is_content_length_present = 0x01; - } else { - const OPTIONAL& o = header.header__value(); - if (o.ispresent()) { - const LibItsHttp__TypesAndValues::charstring__list& v = dynamic_cast &>(o); - if (v.size_of() > 0) { - loggers::get_instance().log_msg("http_codec::encode_request: Processing value ", v[0]); - p_encoding_buffer.put_cs(v[0]); - int j = 1; - while (j < v.size_of()) { - p_encoding_buffer.put_cs(", "); - loggers::get_instance().log_msg("http_codec::encode_request: Processing value ", v[j]); - p_encoding_buffer.put_cs(v[j]); - j += 1; - } // End of 'while' statement - } - } // else, do not include it - } - p_encoding_buffer.put_cs("\r\n"); - } // End of 'for' statement - - p_encoding_buffer.put_cs("\r\n"); - if (_ec.length != 0) { - p_encoding_buffer.put_os(os); - p_encoding_buffer.put_cs("\r\n"); - } - - return 0; -} - -int http_codec::encode_response (const LibItsHttp__TypesAndValues::Response& p_response, TTCN_Buffer& p_encoding_buffer) { - loggers::get_instance().log_msg(">>> http_codec::encode_response: ", (const Base_Type&)p_response); - - const OPTIONAL& v = p_response.body(); - OCTETSTRING os; - if (v.ispresent()) { - const LibItsHttp__MessageBodyTypes::HttpMessageBody& body = static_cast(*v.get_opt_value()); - loggers::get_instance().log_msg("http_codec::encode_response: body: ", body); - if (encode_body(body, os) == -1) { - _ec.length = 0; - } - } - - // Encode generic part - p_encoding_buffer.put_cs("HTTP/"); - p_encoding_buffer.put_cs(int2str(p_response.version__major())); - p_encoding_buffer.put_c('.'); - p_encoding_buffer.put_cs(int2str(p_response.version__minor())); - p_encoding_buffer.put_cs(" "); - p_encoding_buffer.put_cs(int2str(p_response.statuscode())); - p_encoding_buffer.put_cs(" "); - if (p_response.statustext().lengthof() != 0) { - p_encoding_buffer.put_cs(p_response.statustext()); - } - p_encoding_buffer.put_cs("\r\n"); - // Encode headers - const LibItsHttp__TypesAndValues::HeaderLines& headers = p_response.header(); - for (int i = 0; i < headers.size_of(); i++) { - const LibItsHttp__TypesAndValues::HeaderLine& header = headers[i]; - loggers::get_instance().log_msg("http_codec::encode_response: Processing header ", header.header__name()); - p_encoding_buffer.put_cs(header.header__name()); - p_encoding_buffer.put_cs(": "); - if (std::string(static_cast(header.header__name())).compare("Content-Length") == 0) { - if (_ec.length != 0) { - p_encoding_buffer.put_cs(int2str(_ec.length + 2/*Stand for the last CRLF*/)); - } else { - p_encoding_buffer.put_cs("0"); - } - _ec.is_content_length_present = 0x01; - } else { - const OPTIONAL& o = header.header__value(); - if (o.ispresent()) { - const LibItsHttp__TypesAndValues::charstring__list& v = dynamic_cast &>(o); - if (v.size_of() > 0) { - loggers::get_instance().log_msg("http_codec::encode_response: Processing value ", v[0]); - p_encoding_buffer.put_cs(v[0]); - int j = 1; - while (j < v.size_of()) { - p_encoding_buffer.put_cs(", "); - loggers::get_instance().log_msg("http_codec::encode_response: Processing value ", v[j]); - p_encoding_buffer.put_cs(v[j]); - j += 1; - } // End of 'while' statement - } - } // else, do not include it - } - p_encoding_buffer.put_cs("\r\n"); - } // End of 'for' statement - - p_encoding_buffer.put_cs("\r\n"); - if (_ec.length != 0) { - p_encoding_buffer.put_os(os); - p_encoding_buffer.put_cs("\r\n"); - } - - return 0; -} - -int http_codec::decode_headers(TTCN_Buffer& decoding_buffer, LibItsHttp__TypesAndValues::HeaderLines& headers) { - loggers::get_instance().log(">>> http_codec::decode_headers"); - loggers::get_instance().log_to_hexa("http_codec::decode_headers", decoding_buffer); - - CHARSTRING cstr; - int i = 0; - while (true) { - switch(get_line(decoding_buffer, cstr, true)) { - case 0: { - loggers::get_instance().log_msg("http_codec::decode_headers: ", cstr); - LibItsHttp__TypesAndValues::HeaderLine header; - if (decode_header(cstr, header) == -1) { - loggers::get_instance().warning("http_codec::decode_headers: Failed to decode header %s", static_cast(cstr)); - return -1; - } - headers[i++] = header; - } - break; - case 1: - loggers::get_instance().log_msg("<<< http_codec::decode_headers: ", headers); - return 0; - case -1: - loggers::get_instance().warning("http_codec::decode_headers: Failed to decode headers"); - return -1; - } // End of 'switch' statement - } // End of 'while' statement -} - -int http_codec::decode_header(CHARSTRING& header_line, LibItsHttp__TypesAndValues::HeaderLine& header) { - loggers::get_instance().log_msg(">>> http_codec::decode_header", header_line); - - try { - std::string str(static_cast(header_line)); - std::regex rgx ("([0-9a-zA-Z-]+)\\:\\s+(.+)(,(.+))*"); - std::sregex_iterator begin(str.cbegin(), str.cend(), rgx); - std::smatch m = *begin; - if (m.size() < 5) { - loggers::get_instance().warning("http_codec::decode_header: Failed to decode header %s", str.c_str()); - return -1; - } - loggers::get_instance().log("http_codec::decode_header: %d", m.size()); - header.header__name() = CHARSTRING(m[1].str().c_str()); - LibItsHttp__TypesAndValues::charstring__list v; - for (unsigned int j = 0; j < m.size(); j++) { - if (m[j + 2].str().length() == 0) { - break; - } - v[j] = CHARSTRING(m[j + 2].str().c_str()); - } // End of 'for' statement - header.header__value() = OPTIONAL(v); - - if (m[1].str().compare("Content-Length") == 0) { - // Save the the body length - loggers::get_instance().log("http_codec::decode_header: decoded Content-Length %s", m[2].str().c_str()); - _dc.length = std::stoi(m[2].str()); - } - return 0; - } - catch(const std::logic_error& e) { - return -1; - } -} - -int http_codec::encode_body(const LibItsHttp__MessageBodyTypes::HttpMessageBody& p_message_body, OCTETSTRING& p_encoding_buffer) { - loggers::get_instance().log_msg(">>> http_codec::encode_body: ", (const Base_Type&)p_message_body); - loggers::get_instance().log("http_codec::encode_body: # of codecs=%d", _codecs.size()); - - if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_binary__body)) { - p_encoding_buffer = p_message_body.binary__body().raw(); - } else if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_html__body)) { - p_encoding_buffer = OCTETSTRING(p_message_body.html__body().lengthof(), (unsigned char*)static_cast(p_message_body.html__body())); - } else if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_text__body)) { - p_encoding_buffer = OCTETSTRING(p_message_body.text__body().lengthof(), (unsigned char*)static_cast(p_message_body.text__body())); - } else if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_xml__body)) { - const LibItsHttp__XmlMessageBodyTypes::XmlBody& xml_body = p_message_body.xml__body(); - if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_raw)) { - p_encoding_buffer = OCTETSTRING(xml_body.raw().lengthof(), (unsigned char*)static_cast(xml_body.raw())); - } else { - std::map > >::const_iterator it = _codecs.find("held"); - if (it != _codecs.cend()) { - loggers::get_instance().log("http_codec::encode_body: Call 'held_codec'"); - _codecs["held"]->encode((Record_Type&)xml_body, p_encoding_buffer); - } else { - loggers::get_instance().warning("http_codec::encode_body: Unsupported HTTP codec, use raw field as default"); - p_encoding_buffer = OCTETSTRING(xml_body.raw().lengthof(), (unsigned char*)static_cast(xml_body.raw())); - // TODO Add new HTTP message codec here - } - } - } else { - loggers::get_instance().warning("http_codec::encode_body: Failed to encode HTTP message body"); - return -1; - } - loggers::get_instance().log_msg("http_codec::encode_body: HTTP message ", p_encoding_buffer); - _ec.length = p_encoding_buffer.lengthof(); - loggers::get_instance().log("http_codec::encode_body: HTTP message length: %d", _ec.length); - - return 0; -} - -int http_codec::decode_body(TTCN_Buffer& decoding_buffer, LibItsHttp__MessageBodyTypes::HttpMessageBody& message_body) { - loggers::get_instance().log(">>> http_codec::decode_body"); - loggers::get_instance().log_to_hexa("http_codec::decode_body", decoding_buffer); - loggers::get_instance().log("http_codec::decode_body: # of codecs=%d", _codecs.size()); - - // Sanity check - if (decoding_buffer.get_len() - decoding_buffer.get_pos() <= 0) { - return -1; - } - - OCTETSTRING s(decoding_buffer.get_len() - decoding_buffer.get_pos(), decoding_buffer.get_data() + decoding_buffer.get_pos()); - loggers::get_instance().log_msg("http_codec::decode_body: raw body=", s); - // Align the payload length with the specified Content-lenght value - loggers::get_instance().log("http_codec::decode_body: _dc.length=%d - body length=%d", _dc.length, s.lengthof()); - OCTETSTRING body; - if (_dc.length != 0) { - const unsigned char* p = static_cast(s); - if ((unsigned int)s.lengthof() <= _dc.length) { - body = OCTETSTRING(s.lengthof(), p); - } else { - body = OCTETSTRING(_dc.length, p); - } - } else { - loggers::get_instance().warning("http_codec::decode_body: No Conten-Length header, process all remaining bytes"); - body = s; - } - loggers::get_instance().log_msg("http_codec::decode_body: Aligned body=", body); - // Remove CRLF if any - int counter = 0; - if ((body[body.lengthof() - 1].get_octet() == 0x0d) || (body[body.lengthof() - 1].get_octet() == 0x0a)) { - counter += 1; - if ((body[body.lengthof() - 2].get_octet() == 0x0d) || (body[body.lengthof() - 2].get_octet() == 0x0a)) { - counter += 1; - } - } - loggers::get_instance().log("http_codec::decode_body: Counter=%d", counter); - body = OCTETSTRING(body.lengthof() - counter, static_cast(body)); - loggers::get_instance().log_msg("http_codec::decode_body: Finalised body=", body); - // Check if HTTP message body contains binary characters - for (int i = 0; i < body.lengthof(); i++) { - unsigned char c = body[i].get_octet(); - if (!std::isprint(c) && !std::isspace(c) && !std::ispunct(c)) { - loggers::get_instance().log("http_codec::decode_body: Byte #%d is not printable: 0x%02x", i, body[i].get_octet()); - _dc.is_binary = 0x01; - break; - } - } // End of 'for' statement - loggers::get_instance().log("http_codec::decode_body: Binary mode: %x", _dc.is_binary); - LibItsHttp__MessageBodyTypes::HttpMessageBody v; - if (_dc.is_binary == 0x01) { - LibItsHttp__BinaryMessageBodyTypes::BinaryBody bb; - bb.raw() = body; - message_body.binary__body() = bb; - } else { - // Convert into string - params p; - p["decode_str"] = std::string(static_cast(body), body.lengthof() + static_cast(body)); - // Try to identify xml - if (p["decode_str"].find("" - if (p["decode_str"].find("xmlns=\"urn:ietf:params:xml:ns:geopriv:held\">") != std::string::npos) { - loggers::get_instance().log("http_codec::decode_body: Find 'urn:ietf:params:xml:ns:geopriv:held'"); - if (_codecs["held"].get() != nullptr) { - loggers::get_instance().log("http_codec::decode_body: Call 'held_codec'"); - if (_codecs["held"]->decode(body, (Record_Type&)xml_body, &p) == -1) { - loggers::get_instance().warning("http_codec::decode_body: Failed to decode HELD message"); - xml_body.raw() = CHARSTRING(body.lengthof(), (char*)static_cast(body)); - } else { - loggers::get_instance().log_msg("http_codec::decode_body: Decoded message:", xml_body); - message_body.xml__body() = xml_body; - } - } else { - loggers::get_instance().warning("http_codec::decode_body: No codec for HELD"); - xml_body.raw() = CHARSTRING(body.lengthof(), (char*)static_cast(body)); - } - message_body.xml__body() = xml_body; - } - } else if (p["decode_str"].find("") != std::string::npos) { // Try to identify HTML - loggers::get_instance().log("http_codec::decode_body: Find html message"); - LibItsHttp__MessageBodyTypes::TextBody txt_body; - loggers::get_instance().error("http_codec::decode_body: Not supported"); - } else { - loggers::get_instance().log("http_codec::decode_body: Use textBdy as default"); - LibItsHttp__MessageBodyTypes::TextBody text_body; - message_body.text__body() = CHARSTRING(body.lengthof(), (char*)static_cast(body)); - } - } - - return 0; -} - -int http_codec::get_line(TTCN_Buffer& buffer, CHARSTRING& to, const bool concatenate_header_lines) { - unsigned int i = 0; - const unsigned char *cc_to = buffer.get_read_data(); - - // Sanity checks - if(buffer.get_read_len() == 0) { - return -1; - } - - while (true) { - // Skip spaces, and empty lines - for( ; i < buffer.get_read_len() && cc_to[i] != '\0' && cc_to[i] != '\r' && cc_to[i] != '\n'; i++); - if(i >= buffer.get_read_len()) { // No more characters to process - to = CHARSTRING(""); - return -1; - } else if(cc_to[i] == '\n') { // New line found, we don't care is '\r' is missing - if ((i > 0) && ((i + 1) < buffer.get_read_len()) && concatenate_header_lines && ((cc_to[i + 1] == ' ') || (cc_to[i + 1] == '\t'))) { - i += 1; // Skip it - } else { - to = CHARSTRING(i, (const char*)cc_to); - buffer.set_pos(buffer.get_pos() + i + 1); - return i == 0 ? 1 : 0; - } - } else { - if ((i + 1) < buffer.get_read_len() && cc_to[i + 1] != '\n') { - return -1; - } else if(i > 0 && (i + 2) < buffer.get_read_len() && concatenate_header_lines && (cc_to[i+2] == ' ' || cc_to[i+2] == '\t')) { - i += 2; - } else { - to = CHARSTRING(i, (const char*)cc_to); - buffer.set_pos(buffer.get_pos() + i + 2); - return i == 0 ? 1 : 0; - } - } - } // End of 'while' statement -} - -void http_codec::set_payload_codecs(const std::string& p_codecs) { - loggers::get_instance().log(">>> http_codec::set_payload_codecs: %s", p_codecs.c_str()); - - // Sanity check - if (p_codecs.length() == 0) { - return; - } - - // Extract codecs - try { - std::regex rgx("(\\w+)(:(\\w+))*(;((\\w+)(:(\\w+))*))*"); - std::sregex_iterator begin(p_codecs.cbegin(), p_codecs.cend(), rgx); - std::sregex_iterator end = std::sregex_iterator(); - // E.g. 9 - xml - :held_codec - held_codec - ;html:html_codec - html:html_codec - html - :html_codec - html_codec - for (std::sregex_iterator it = begin; it != end; ++it) { - std::smatch m = *it; - loggers::get_instance().log("http_codec::set_payload_codecs: %d - %s - %s - %s - %s - %s - %s - %s - %s", m.size(), m[1].str().c_str(), m[2].str().c_str(), m[3].str().c_str(), m[4].str().c_str(), m[5].str().c_str(), m[6].str().c_str(), m[7].str().c_str(), m[8].str().c_str()); - for (unsigned int j = 1; j < m.size() - 1; j += 5) { // Exclude m[0] - loggers::get_instance().log("http_codec::set_payload_codecs: insert (%s, %s), j = %d", m[j].str().c_str(), m[j + 2].str().c_str(), j); - std::string key(m[j].str()); - _codecs.insert(std::make_pair(key, std::unique_ptr >(codec_stack_builder::get_instance()->get_codec(m[j + 2].str().c_str())))); - } // End of 'for' statement - } // End of 'for' statement - //loggers::get_instance().log("http_codec::set_payload_codecs: _codecs length=%d", _codecs.size()); - } - catch(const std::logic_error& e){ - loggers::get_instance().warning("http_codec::set_payload_codecs: std::logic_error: %s", e.what()); - _codecs.clear(); - } -} diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f6/b0a5281cb985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f6/b0a5281cb985001814de869e8ad08251 deleted file mode 100644 index 318f839..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f6/b0a5281cb985001814de869e8ad08251 +++ /dev/null @@ -1,159 +0,0 @@ -11:31:00.784752 EXECUTOR - TTCN-3 Host Controller started on vagrant. Version: CRL 113 200/6 R4A. -11:31:00.784785 EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error -11:31:00.784790 EXECUTOR - Maximum number of open file descriptors: 1048576, FD_SETSIZE = 1024 -11:31:00.784904 WARNING - Warning: The address of MC was set to a local IP address. This may cause incorrect behavior if a HC from a remote host also connects to MC. -11:31:00.784912 EXECUTOR - The address of MC was set to 127.0.0.1:0. -11:31:00.791043 EXECUTOR - Connected to MC. -11:31:00.791150 EXECUTOR - This host supports UNIX domain sockets for local communication. -11:31:00.794161 EXECUTOR - Processing configuration data received from MC. -11:31:00.795044 EXECUTOR - Module LibCommon_Sync has the following parameters: { PX_TSYNC_TIME_LIMIT := 120.000000, PX_TSHUT_DOWN_TIME_LIMIT := 120.000000 } -11:31:00.795100 EXECUTOR - Module LibCommon_Time has the following parameters: { PX_TDONE := 120.000000, PX_TAC := 30.000000, PX_TNOAC := 10.000000, PX_TWAIT := 120.000000, PX_LOOP := 1.000000 } -11:31:00.795158 EXECUTOR - Module LibItsHttp_Pics has the following parameters: { PICS_HEADER_HOST := "ptsv2.com", PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8" } -11:31:00.795210 EXECUTOR - Module LibNg112_Pics has the following parameters: { PICS_LIS_IUT := true, PICS_ECRF_IUT := false, PICS_HTTP_POST_REQUEST := true, PICS_LOCATION_HELD := true, PICS_SERVICE_LOST := true, PICS_LIS_REQUEST_URIs := { "/t/9rk8l-1531130342/post", "/t/r143f-1528105031/post", "/t/6ouem-1531201238/post" }, PICS_ECRF_URI := "/service" } -11:31:00.795273 EXECUTOR - Module LibNg112_Pixits has the following parameters: { PX_DOUBLE_CMP_EPSILON := 1.000000e-05, PX_DEVICE_URI_SIP := "sip:user@example.net;gr=kjh29x97us97d", PX_DEVICE_URI_TEL := "+436501234567", PX_UNKNOWN_DEVICE_URI := "sip:no_one@example.net;gr=kjh29x97us97d", PX_DEVICE_POSITION := { -34.407000, 150.883000, 24.800000 }, PX_CIRCLE_POS := { 48.215388, 16.290300 }, PX_CIRCLE_UOM := "urn:ogc:def:uom:EPSG::9001", PX_CIRCLE_BASE := 23.600000, PX_SRS_NAME := "urn:ogc:def:crs:EPSG::4326" } -11:31:00.795375 EXECUTOR - Module LibSip_PIXITS has the following parameters: { PX_SIP_SDP_USER_NAME := "voicesession", PX_SIP_SDP_SESSION_ID := "30000", PX_SIP_SDP_DYN := "0", PX_SIP_SDP_B_MODIFIER := "AS", PX_SIP_SDP_B_BANDWIDTH := 64, PX_SIP_SDP_ENCODING := "PCMU", PX_SIP_SDP_CLOCKRATE := "8000", PX_MB_LENGTH_FROM_ENCVAL := true, PX_USE_FX_FOR_XML_LENGTH := false, PX_SIP_TRANSPORT := "UDP", PX_SIP_REGISTRATION := false, PX_AUTH_ALGORITHM := "AKAv1-MD5", PX_SIP_REGISTER_AUTHENTICATION_ENABLED := true, PX_SIP_INVITE_AUTHENTICATION_ENABLED := false, PX_SIP_TWAIT := 30.000000, PX_SIP_TACK := 8.000000, PX_SIP_TRESP := 15.000000, PX_SIP_TNOACT := 1.000000, PX_SIP_MIME_BOUNDARY := "boundary1" } -11:31:00.795494 EXECUTOR - Initializing module AtsNg112_TestCases. -11:31:00.795542 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibItsHttp_Functions. -11:31:00.795594 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_TypesAndValues. -11:31:00.795645 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0 Initializing module LibItsHttp_MessageBodyTypes. -11:31:00.795698 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XmlMessageBodyTypes. -11:31:00.795757 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XMLTypes. -11:31:00.795831 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held. -11:31:00.795900 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initializing module http_www_w3_org_XML_1998_namespace. -11:31:00.796014 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initializing module XSD. -11:31:00.796090 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn:0 Initializing module UsefulTtcn3Types. -11:31:00.796174 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn:0 Initialization of module UsefulTtcn3Types finished. -11:31:00.796252 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initialization of module XSD finished. -11:31:00.796324 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initialization of module http_www_w3_org_XML_1998_namespace finished. -11:31:00.796394 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held finished. -11:31:00.796550 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held_id. -11:31:00.796620 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held_id finished. -11:31:00.796686 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10. -11:31:00.796750 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy. -11:31:00.796820 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy finished. -11:31:00.796891 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10 finished. -11:31:00.803032 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc. -11:31:00.803181 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc finished. -11:31:00.803259 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf. -11:31:00.806217 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf finished. -11:31:00.806349 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XMLTypes finished. -11:31:00.806418 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XmlMessageBodyTypes finished. -11:31:00.806570 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_BinaryMessageBodyTypes. -11:31:00.806644 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_BinaryMessageBodyTypes finished. -11:31:00.806705 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0 Initialization of module LibItsHttp_MessageBodyTypes finished. -11:31:00.806762 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_TypesAndValues finished. -11:31:00.806813 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_Pics. -11:31:00.806864 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_Pics finished. -11:31:00.806915 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibItsHttp_Functions finished. -11:31:00.807032 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Templates. -11:31:00.807076 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Templates finished. -11:31:00.807096 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Functions. -11:31:00.807117 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_Templates. -11:31:00.807138 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_Templates finished. -11:31:00.807158 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_XmlTemplates. -11:31:00.807178 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape. -11:31:00.807200 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0 Initializing module http_www_opengis_net_pidflo_1_0. -11:31:00.807237 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn:0 Initializing module http_www_opengis_net_gml. -11:31:00.807262 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn:0 Initialization of module http_www_opengis_net_gml finished. -11:31:00.807286 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0 Initialization of module http_www_opengis_net_pidflo_1_0 finished. -11:31:00.807309 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape finished. -11:31:00.807334 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_XmlTemplates finished. -11:31:00.807354 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TypesAndValues. -11:31:00.807374 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TypesAndValues finished. -11:31:00.807393 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TestSystem. -11:31:00.807414 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibItsHttp_TestSystem. -11:31:00.807436 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Sync. -11:31:00.810148 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initializing module LibCommon_AbstractData. -11:31:00.810253 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0->../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initializing module LibCommon_BasicTypesAndValues. -11:31:00.810326 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0->../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initialization of module LibCommon_BasicTypesAndValues finished. -11:31:00.810409 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_AbstractData finished. -11:31:00.810531 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initializing module LibCommon_VerdictControl. -11:31:00.810599 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_VerdictControl finished. -11:31:00.810667 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Sync finished. -11:31:00.810728 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Time. -11:31:00.810790 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Time finished. -11:31:00.810850 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibItsHttp_TestSystem finished. -11:31:00.810906 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibSip_Interface. -11:31:00.811072 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_SIPTypesAndValues. -11:31:00.811157 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0 Initializing module LibSip_MessageBodyTypes. -11:31:00.811229 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SDPTypes. -11:31:00.811301 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn:0 Initializing module LibSip_Common. -11:31:00.811385 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn:0 Initialization of module LibSip_Common finished. -11:31:00.811508 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SDPTypes finished. -11:31:00.811582 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SimpleMsgSummaryTypes. -11:31:00.811654 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SimpleMsgSummaryTypes finished. -11:31:00.811726 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_XMLTypes. -11:31:00.811799 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_resource_lists. -11:31:00.811875 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_resource_lists finished. -11:31:00.811967 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_xcap. -11:31:00.812051 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_ietf_params_xml_ns_common_policy. -11:31:00.812142 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_ietf_params_xml_ns_common_policy finished. -11:31:00.812221 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_oma_xml_xdm_common_policy. -11:31:00.812311 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_oma_xml_xdm_common_policy finished. -11:31:00.812534 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_xcap finished. -11:31:00.815136 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_mcid. -11:31:00.815275 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_mcid finished. -11:31:00.815355 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module NoTargetNamespace. -11:31:00.815433 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module NoTargetNamespace finished. -11:31:00.815573 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_3gpp_ns_cw_1_0. -11:31:00.815649 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_3gpp_ns_cw_1_0 finished. -11:31:00.815725 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_conference_info. -11:31:00.815798 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_conference_info finished. -11:31:00.815868 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_pstn. -11:31:00.815950 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_pstn finished. -11:31:00.824022 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_comm_div_info. -11:31:00.824161 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_comm_div_info finished. -11:31:00.824246 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_reginfo. -11:31:00.824319 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_reginfo finished. -11:31:00.824389 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_XMLTypes finished. -11:31:00.824502 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0 Initialization of module LibSip_MessageBodyTypes finished. -11:31:00.824570 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_SIPTypesAndValues finished. -11:31:00.824631 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_PIXITS. -11:31:00.824691 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initializing module LibCommon_DataStrings. -11:31:00.824754 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initialization of module LibCommon_DataStrings finished. -11:31:00.824818 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_PIXITS finished. -11:31:00.824879 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibSip_Interface finished. -11:31:00.824935 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TestSystem finished. -11:31:00.825037 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Functions finished. -11:31:00.825081 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pics. -11:31:00.825125 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pics finished. -11:31:00.825169 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pixits. -11:31:00.825212 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pixits finished. -11:31:00.825773 EXECUTOR - Initialization of module AtsNg112_TestCases finished. -11:31:00.825829 EXECUTOR - Initializing module AtsNg112_TestControl. -11:31:00.825872 EXECUTOR - Initialization of module AtsNg112_TestControl finished. -11:31:00.825915 EXECUTOR - Initializing module LibCommon_TextStrings. -11:31:00.826000 EXECUTOR - Initialization of module LibCommon_TextStrings finished. -11:31:00.826046 EXECUTOR - Initializing module LibItsHttp_BinaryTemplates. -11:31:00.826088 EXECUTOR - Initialization of module LibItsHttp_BinaryTemplates finished. -11:31:00.826130 EXECUTOR - Initializing module LibItsHttp_BinaryTypes. -11:31:00.826171 EXECUTOR - Initialization of module LibItsHttp_BinaryTypes finished. -11:31:00.826213 EXECUTOR - Initializing module LibItsHttp_EncdecDeclarations. -11:31:00.826255 EXECUTOR - Initialization of module LibItsHttp_EncdecDeclarations finished. -11:31:00.826297 EXECUTOR - Initializing module LibNg112_EncdecDeclarations. -11:31:00.826339 EXECUTOR - Initialization of module LibNg112_EncdecDeclarations finished. -11:31:00.826381 EXECUTOR - Initializing module LibSip_EncdecDeclarations. -11:31:00.826426 EXECUTOR ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn:0 Initializing module LibSip_SMSTypesAndValues. -11:31:00.827039 EXECUTOR ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn:0 Initialization of module LibSip_SMSTypesAndValues finished. -11:31:00.827122 EXECUTOR - Initialization of module LibSip_EncdecDeclarations finished. -11:31:00.829723 EXECUTOR - Initializing module LibSip_Library. -11:31:00.829826 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_SMSTemplates. -11:31:00.829888 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn:0 Initializing module LibSip_SMSFunctions. -11:31:00.829984 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn:0 Initialization of module LibSip_SMSFunctions finished. -11:31:00.832419 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_SMSTemplates finished. -11:31:00.839154 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_Steps. -11:31:00.839218 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn:0 Initializing module LibSip_Templates. -11:31:00.853331 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn:0 Initialization of module LibSip_Templates finished. -11:31:00.853598 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_Steps finished. -11:31:00.853699 EXECUTOR - Initialization of module LibSip_Library finished. -11:31:00.853789 EXECUTOR - Initializing module PreGenRecordOf. -11:31:00.853877 EXECUTOR - Initialization of module PreGenRecordOf finished. -11:31:00.853966 EXECUTOR - Initializing module TitanLoggerApi. -11:31:00.854055 EXECUTOR - Initialization of module TitanLoggerApi finished. -11:31:00.854141 EXECUTOR - Initializing module urn_ietf_params_xml_ns_geopriv_conf. -11:31:00.854231 EXECUTOR - Initialization of module urn_ietf_params_xml_ns_geopriv_conf finished. -11:31:00.854377 EXECUTOR - Configuration data was processed successfully. -11:31:00.854729 EXECUTOR - MTC was created. Process id: 21691. -11:31:01.998763 EXECUTOR - Exit was requested from MC. Terminating HC. -11:31:01.999234 EXECUTOR - Disconnected from MC. -11:31:01.999278 EXECUTOR - TTCN-3 Host Controller finished. diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f8/20784e69c28500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f8/20784e69c28500181dc9eb7ae31560a9 deleted file mode 100644 index 9b788a8..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/f8/20784e69c28500181dc9eb7ae31560a9 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 12:47:13 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall-std=c++11-pthread-fPIC - -# Flags for the linker: -LDFLAGS = -pthread-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/fa/5174c5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/fa/5174c5e1978500181c21d10bc58219ba deleted file mode 100644 index 703fa8f..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/fa/5174c5e1978500181c21d10bc58219ba +++ /dev/null @@ -1,46 +0,0 @@ -/*! - * \file held_codec_factory.hh - * \brief Header file for ITS HELD/IP protocol codec factory. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "codec_stack_builder.hh" - -#include "held_codec.hh" - -class Record_Type; //! TITAN forward declaration - -/*! - * \class held_codec_factory - * \brief This class provides a factory class to create an held_codec class instance - */ -class held_codec_factory: public codec_factory { - static held_codec_factory _f; //! Reference to the unique instance of this class -public: //! \publicsection - /*! - * \brief Default constructor - * Create a new instance of the held_codec_factory class - * \remark The HELD/IP codec identifier is HELD - */ - held_codec_factory() { - // register factory - codec_stack_builder::register_codec_factory("held_codec", this); - }; - /*! - * \fn codec* create_codec(const std::string & type, const std::string & param); - * \brief Create the codecs stack based on the provided codecs stack description - * \param[in] p_type The provided codecs stack description - * \param[in] p_params Optional parameters - * \return 0 on success, -1 otherwise - * \inline - */ - inline virtual codec* create_codec() { - return (codec*)new held_codec(); - }; -}; // End of class held_codec_factory -- GitLab From 2d3e31f7b3a7ec02047d0ff7afc8a4d013b2e53d Mon Sep 17 00:00:00 2001 From: garciay Date: Thu, 12 Jul 2018 14:22:54 +0200 Subject: [PATCH 53/72] Update TITAN resoure URIs --- scripts/titan_repos.txt | 48 ++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/scripts/titan_repos.txt b/scripts/titan_repos.txt index 288a316..67f6bac 100644 --- a/scripts/titan_repos.txt +++ b/scripts/titan_repos.txt @@ -55,27 +55,27 @@ https://github.com/eclipse/titan.ProtocolModules.SRTP.git https://github.com/eclipse/titan.ProtocolModules.WebSocket.git https://github.com/eclipse/titan.ProtocolModules.HTTP2.0.git https://github.com/eclipse/titan.Libraries.TCCUsefulFunctions.git -git://git.eclipse.org/gitroot/titan/titan.ProtocolModules.CoAP.git -git://git.eclipse.org/gitroot/titan/titan.ProtocolModules.DSS1_ETSI.git -git://git.eclipse.org/gitroot/titan/titan.ProtocolModules.DUA.git -git://git.eclipse.org/gitroot/titan/titan.ProtocolModules.EAP.git -git://git.eclipse.org/gitroot/titan/titan.ProtocolModules.GRE.git -git://git.eclipse.org/gitroot/titan/titan.ProtocolModules.M2PA.git -git://git.eclipse.org/gitroot/titan/titan.ProtocolModules.M2UA.git -git://git.eclipse.org/gitroot/titan/titan.ProtocolModules.MobileL3_v13.4.0.git -git://git.eclipse.org/gitroot/titan/titan.ProtocolModules.MongoDB.git -git://git.eclipse.org/gitroot/titan/titan.ProtocolModules.MQTT.git -git://git.eclipse.org/gitroot/titan/titan.ProtocolModules.NDP.git -git://git.eclipse.org/gitroot/titan/titan.ProtocolModules.NTAF.git -git://git.eclipse.org/gitroot/titan/titan.ProtocolModules.ROSE.git -git://git.eclipse.org/gitroot/titan/titan.ProtocolModules.SCTP.git -git://git.eclipse.org/gitroot/titan/titan.ProtocolModules.SDP.git -git://git.eclipse.org/gitroot/titan/titan.ProtocolModules.SNDCP_v7.0.0.git -git://git.eclipse.org/gitroot/titan/titan.ProtocolModules.STOMP.git -git://git.eclipse.org/gitroot/titan/titan.ProtocolModules.STUN_RFC5389.git -git://git.eclipse.org/gitroot/titan/titan.ProtocolModules.SUA.git -git://git.eclipse.org/gitroot/titan/titan.ProtocolModules.TLS.git -git://git.eclipse.org/gitroot/titan/titan.ProtocolModules.WTP.git -git://git.eclipse.org/gitroot/titan/titan.TestPorts.GPIO.git -git://git.eclipse.org/gitroot/titan/titan.TestPorts.MTP3asp.git -git://git.eclipse.org/gitroot/titan/titan.TestPorts.Serial.git +https://git.eclipse.org/r/titan/titan.ProtocolModules.CoAP.git +https://git.eclipse.org/r/titan/titan.ProtocolModules.DSS1_ETSI.git +https://git.eclipse.org/r/titan/titan.ProtocolModules.DUA.git +https://git.eclipse.org/r/titan/titan.ProtocolModules.EAP.git +https://git.eclipse.org/r/titan/titan.ProtocolModules.GRE.git +https://git.eclipse.org/r/titan/titan.ProtocolModules.M2PA.git +https://git.eclipse.org/r/titan/titan.ProtocolModules.M2UA.git +https://git.eclipse.org/r/titan/titan.ProtocolModules.MobileL3_v13.4.0.git +https://git.eclipse.org/r/titan/titan.ProtocolModules.MongoDB.git +https://git.eclipse.org/r/titan/titan.ProtocolModules.MQTT.git +https://git.eclipse.org/r/titan/titan.ProtocolModules.NDP.git +https://git.eclipse.org/r/titan/titan.ProtocolModules.NTAF.git +https://git.eclipse.org/r/titan/titan.ProtocolModules.ROSE.git +https://git.eclipse.org/r/titan/titan.ProtocolModules.SCTP.git +https://git.eclipse.org/r/titan/titan.ProtocolModules.SDP.git +https://git.eclipse.org/r/titan/titan.ProtocolModules.SNDCP_v7.0.0.git +https://git.eclipse.org/r/titan/titan.ProtocolModules.STOMP.git +https://git.eclipse.org/r/titan/titan.ProtocolModules.STUN_RFC5389.git +https://git.eclipse.org/r/titan/titan.ProtocolModules.SUA.git +https://git.eclipse.org/r/titan/titan.ProtocolModules.TLS.git +https://git.eclipse.org/r/titan/titan.ProtocolModules.WTP.git +https://git.eclipse.org/r/titan/titan.TestPorts.GPIO.git +https://git.eclipse.org/r/titan/titan.TestPorts.MTP3asp.git +https://git.eclipse.org/r/titan/titan.TestPorts.Serial.git -- GitLab From dbda472746e18325a5f548e89b89997f54e37a36 Mon Sep 17 00:00:00 2001 From: garciay Date: Thu, 12 Jul 2018 14:50:54 +0200 Subject: [PATCH 54/72] Bugs fixes in scripts --- scripts/run_all.bash | 6 +++--- scripts/update_emcom_project.bash | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/run_all.bash b/scripts/run_all.bash index 9329847..55c00e0 100755 --- a/scripts/run_all.bash +++ b/scripts/run_all.bash @@ -4,7 +4,7 @@ clear -export LD_LIBRARY_PATH=/home/vagrant/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH +export LD_LIBRARY_PATH=/home/${USER}/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH if ! [[ $1 =~ "^[0-9]+$" ]] then @@ -28,8 +28,8 @@ rm ../logs/merged.log.* for i in $(seq 1 1 $COUNTER) do - LD_LIBRARY_PATH=/home/vagrant/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH ../bin/run_mtc.bash & - LD_LIBRARY_PATH=/home/vagrant/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH ../bin/run_ptcs.bash $2 + LD_LIBRARY_PATH=/home/${USER}/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH ../bin/run_mtc.bash & + LD_LIBRARY_PATH=/home/${USER}/frameworks/osip/src/osipparser2/.libs:$LD_LIBRARY_PATH ../bin/run_ptcs.bash $2 dup=$(ps -ef | grep "$0" | grep -v grep | wc -l) while [ ${dup} -eq 3 ] diff --git a/scripts/update_emcom_project.bash b/scripts/update_emcom_project.bash index 6c68b5d..21318c5 100755 --- a/scripts/update_emcom_project.bash +++ b/scripts/update_emcom_project.bash @@ -12,7 +12,7 @@ OLDPWD=`pwd` # Execution path RUN_PATH="${0%/*}" -CHOWN_USER_GROUP=vagrant:vagrant +CHOWN_USER_GROUP=${USER}:${USER} SRC_EMCOM_PATH=${HOME}/dev/STF549_Ng112 if [ "${PATH_DEV_EMCOM}" == "" ] -- GitLab From 1dfd0cc642eba7a229752c500dc5fb59ca0d5400 Mon Sep 17 00:00:00 2001 From: garciay Date: Thu, 12 Jul 2018 14:54:59 +0200 Subject: [PATCH 55/72] Remove useless file to be tracked by Git --- workspace_stf549/.metadata/.log | 274 -- .../.plugins/org.eclipse.cdt.core/.log | 6 - .../STF549_Ng112/.indexes/7/history.index | Bin 1222 -> 0 bytes .../STF549_Ng112/.indexes/af/history.index | Bin 292 -> 0 bytes .../.indexes/e4/22/properties.index | Bin 1883 -> 0 bytes .../.indexes/e4/84/22/e4/history.index | Bin 74 -> 0 bytes .../.indexes/e4/84/22/properties.index | Bin 3689 -> 0 bytes .../.indexes/e4/84/bb/a8/history.index | Bin 72 -> 0 bytes .../.indexes/e4/84/bb/ba/history.index | Bin 78 -> 0 bytes .../.indexes/e4/84/bb/properties.index | Bin 12738 -> 0 bytes .../.indexes/e4/84/e8/properties.index | Bin 3686 -> 0 bytes .../.indexes/e4/84/f2/properties.index | Bin 3684 -> 0 bytes .../.indexes/e4/84/properties.index | Bin 7282 -> 0 bytes .../.indexes/e4/94/94/properties.index | Bin 3680 -> 0 bytes .../.indexes/e4/94/properties.index | Bin 1863 -> 0 bytes .../STF549_Ng112/.indexes/e4/a8/history.index | Bin 1606 -> 0 bytes .../STF549_Ng112/.indexes/e4/e4/history.index | Bin 1242 -> 0 bytes .../.indexes/e4/eb/eb/74/54/properties.index | Bin 3710 -> 0 bytes .../.indexes/e4/eb/eb/74/properties.index | Bin 1883 -> 0 bytes .../.indexes/e4/eb/eb/8d/properties.index | Bin 300 -> 0 bytes .../.indexes/e4/eb/eb/b0/properties.index | Bin 122 -> 0 bytes .../.indexes/e4/eb/eb/cb/eb/properties.index | Bin 890 -> 0 bytes .../.indexes/e4/eb/eb/cb/properties.index | Bin 3688 -> 0 bytes .../.indexes/e4/eb/eb/properties.index | Bin 16471 -> 0 bytes .../.indexes/e4/eb/properties.index | Bin 1865 -> 0 bytes .../STF549_Ng112/.indexes/e4/properties.index | Bin 7254 -> 0 bytes .../STF549_Ng112/.indexes/history.index | Bin 651 -> 0 bytes .../STF549_Ng112/.indexes/properties.index | Bin 8472 -> 0 bytes .../.root/.indexes/history.version | 1 - .../.root/.indexes/properties.index | Bin 104 -> 0 bytes .../.root/.indexes/properties.version | 1 - .../org.eclipse.core.resources/.root/6.tree | Bin 41583 -> 0 bytes .../.safetable/org.eclipse.core.resources | Bin 1054 -> 0 bytes .../org.eclipse.e4.workbench/workbench.xmi | 3143 ----------------- workspace_stf549/.metadata/version.ini | 3 - 35 files changed, 3428 deletions(-) delete mode 100644 workspace_stf549/.metadata/.log delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.cdt.core/.log delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/7/history.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/af/history.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/22/properties.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/22/e4/history.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/22/properties.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/bb/a8/history.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/bb/ba/history.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/bb/properties.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/e8/properties.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/f2/properties.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/properties.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/94/94/properties.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/94/properties.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/a8/history.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/e4/history.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/74/54/properties.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/74/properties.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/8d/properties.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/b0/properties.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/cb/eb/properties.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/cb/properties.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/properties.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/properties.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/properties.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/history.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/properties.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.root/6.tree delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources delete mode 100644 workspace_stf549/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi delete mode 100644 workspace_stf549/.metadata/version.ini diff --git a/workspace_stf549/.metadata/.log b/workspace_stf549/.metadata/.log deleted file mode 100644 index 726dada..0000000 --- a/workspace_stf549/.metadata/.log +++ /dev/null @@ -1,274 +0,0 @@ - -!ENTRY org.eclipse.titan.common 4 0 2018-07-12 08:52:43.620 -!MESSAGE When trying to execute the `sh -c make all ' shell command an error occured. -Possible reasons are: -- the command does not exist -- you have no right to execute the command -- the error occured during executing the command -and many more. -Please check the TITAN console to identify the problem. -!SESSION 2018-07-12 10:56:05.141 ----------------------------------------------- -eclipse.buildId=4.7.2.M20171130-0510 -java.version=10.0.1 -java.vendor=Oracle Corporation -BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US -Framework arguments: -product org.eclipse.epp.package.cpp.product -Command-line arguments: -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.cpp.product - -!ENTRY org.eclipse.epp.logging.aeri.ide 2 17 2018-07-12 10:57:14.939 -!MESSAGE Server ‘org.eclipse.epp.logging.aeri.ide.server’ failed with exception: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty. ; version: 2.0.6.v20170906-1226 -!STACK 0 -javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty - at java.base/sun.security.ssl.Alerts.getSSLException(Alerts.java:214) - at java.base/sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1974) - at java.base/sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1926) - at java.base/sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1909) - at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1436) - at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413) - at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:394) - at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:353) - at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:141) - at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353) - at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380) - at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) - at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) - at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88) - at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) - at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) - at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) - at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55) - at org.apache.http.client.fluent.Request.internalExecute(Request.java:173) - at org.apache.http.client.fluent.Executor.execute(Executor.java:262) - at org.eclipse.epp.internal.logging.aeri.ide.server.mars.IO.request(IO.java:170) - at org.eclipse.epp.internal.logging.aeri.ide.server.mars.IO.refreshConfiguration(IO.java:64) - at org.eclipse.epp.internal.logging.aeri.ide.server.mars.ServerConnection.startUp(ServerConnection.java:124) - at com.google.common.util.concurrent.AbstractIdleService$DelegateService$1.run(AbstractIdleService.java:62) - at com.google.common.util.concurrent.Callables$4.run(Callables.java:122) - at java.base/java.lang.Thread.run(Thread.java:844) -Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty - at java.base/sun.security.validator.PKIXValidator.(PKIXValidator.java:89) - at java.base/sun.security.validator.Validator.getInstance(Validator.java:181) - at java.base/sun.security.ssl.X509TrustManagerImpl.getValidator(X509TrustManagerImpl.java:330) - at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrustedInit(X509TrustManagerImpl.java:180) - at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:192) - at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:133) - at java.base/sun.security.ssl.ClientHandshaker.checkServerCerts(ClientHandshaker.java:1947) - at java.base/sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1777) - at java.base/sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:264) - at java.base/sun.security.ssl.Handshaker.processLoop(Handshaker.java:1098) - at java.base/sun.security.ssl.Handshaker.processRecord(Handshaker.java:1026) - at java.base/sun.security.ssl.SSLSocketImpl.processInputRecord(SSLSocketImpl.java:1137) - at java.base/sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1074) - at java.base/sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973) - at java.base/sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1402) - at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1429) - ... 21 more -Caused by: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty - at java.base/java.security.cert.PKIXParameters.setTrustAnchors(PKIXParameters.java:200) - at java.base/java.security.cert.PKIXParameters.(PKIXParameters.java:120) - at java.base/java.security.cert.PKIXBuilderParameters.(PKIXBuilderParameters.java:104) - at java.base/sun.security.validator.PKIXValidator.(PKIXValidator.java:86) - ... 36 more - -!ENTRY org.eclipse.launchbar.core 2 0 2018-07-12 11:30:52.825 -!MESSAGE Enablement expression is missing for descriptor type org.eclipse.cdt.debug.core.coreBuildDescriptorType - -!ENTRY org.eclipse.launchbar.core 2 0 2018-07-12 11:30:52.827 -!MESSAGE Enablement expression is missing for config provider for org.eclipse.cdt.debug.core.coreBuildDescriptorType - -!ENTRY org.eclipse.launchbar.core 2 0 2018-07-12 11:30:52.837 -!MESSAGE Enablement expression is missing for config provider for org.eclipse.cdt.debug.core.coreBuildDescriptorType - -!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:31:02.995 -!MESSAGE Execution terminated from outside - -!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:31:22.439 -!MESSAGE Execution terminated from outside - -!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:31:30.881 -!MESSAGE Execution terminated from outside - -!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:31:31.940 -!MESSAGE Execution terminated from outside - -!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:49:08.773 -!MESSAGE When trying to execute the `sh -c make all ' shell command an error occured. -Possible reasons are: -- the command does not exist -- you have no right to execute the command -- the error occured during executing the command -and many more. -Please check the TITAN console to identify the problem. - -!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:49:09.469 -!MESSAGE When trying to execute the `sh -c make all ' shell command an error occured. -Possible reasons are: -- the command does not exist -- you have no right to execute the command -- the error occured during executing the command -and many more. -Please check the TITAN console to identify the problem. - -!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:50:50.643 -!MESSAGE When trying to execute the `sh -c make all ' shell command an error occured. -Possible reasons are: -- the command does not exist -- you have no right to execute the command -- the error occured during executing the command -and many more. -Please check the TITAN console to identify the problem. - -!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:50:53.936 -!MESSAGE When trying to execute the `sh -c make all ' shell command an error occured. -Possible reasons are: -- the command does not exist -- you have no right to execute the command -- the error occured during executing the command -and many more. -Please check the TITAN console to identify the problem. - -!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:50:55.230 -!MESSAGE When trying to execute the `sh -c make all ' shell command an error occured. -Possible reasons are: -- the command does not exist -- you have no right to execute the command -- the error occured during executing the command -and many more. -Please check the TITAN console to identify the problem. - -!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:50:55.971 -!MESSAGE When trying to execute the `sh -c make all ' shell command an error occured. -Possible reasons are: -- the command does not exist -- you have no right to execute the command -- the error occured during executing the command -and many more. -Please check the TITAN console to identify the problem. - -!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:50:56.923 -!MESSAGE When trying to execute the `sh -c make all ' shell command an error occured. -Possible reasons are: -- the command does not exist -- you have no right to execute the command -- the error occured during executing the command -and many more. -Please check the TITAN console to identify the problem. - -!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:51:28.281 -!MESSAGE When trying to execute the `sh -c make all ' shell command an error occured. -Possible reasons are: -- the command does not exist -- you have no right to execute the command -- the error occured during executing the command -and many more. -Please check the TITAN console to identify the problem. - -!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:51:28.939 -!MESSAGE When trying to execute the `sh -c make all ' shell command an error occured. -Possible reasons are: -- the command does not exist -- you have no right to execute the command -- the error occured during executing the command -and many more. -Please check the TITAN console to identify the problem. - -!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:56:27.074 -!MESSAGE Execution terminated from outside - -!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:56:38.707 -!MESSAGE Execution terminated from outside - -!ENTRY org.eclipse.ui.navigator 4 0 2018-07-12 11:56:39.748 -!MESSAGE Cannot find navigator content extension (using triggerPoints) for object "" parent path: "F/STF549_Ng112/logs". Check that you have an expression for this object in a navigatorContent triggerPoints or enablement. - -!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:56:44.489 -!MESSAGE Execution terminated from outside - -!ENTRY org.eclipse.titan.common 4 0 2018-07-12 11:56:45.491 -!MESSAGE Execution terminated from outside - -!ENTRY org.eclipse.titan.common 4 0 2018-07-12 12:14:27.800 -!MESSAGE Execution terminated from outside - -!ENTRY org.eclipse.titan.common 4 0 2018-07-12 12:14:39.144 -!MESSAGE Execution terminated from outside - -!ENTRY org.eclipse.titan.common 4 0 2018-07-12 12:14:43.982 -!MESSAGE Execution terminated from outside - -!ENTRY org.eclipse.titan.common 4 0 2018-07-12 12:14:44.989 -!MESSAGE Execution terminated from outside -!SESSION 2018-07-12 12:39:05.533 ----------------------------------------------- -eclipse.buildId=4.7.2.M20171130-0510 -java.version=10.0.1 -java.vendor=Oracle Corporation -BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US -Framework arguments: -product org.eclipse.epp.package.cpp.product -Command-line arguments: -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.cpp.product - -!ENTRY org.eclipse.epp.logging.aeri.ide 2 17 2018-07-12 12:40:19.402 -!MESSAGE Server ‘org.eclipse.epp.logging.aeri.ide.server’ failed with exception: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty. ; version: 2.0.6.v20170906-1226 -!STACK 0 -javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty - at java.base/sun.security.ssl.Alerts.getSSLException(Alerts.java:214) - at java.base/sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1974) - at java.base/sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1926) - at java.base/sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1909) - at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1436) - at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413) - at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:394) - at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:353) - at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:141) - at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353) - at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380) - at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) - at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) - at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88) - at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) - at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) - at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) - at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55) - at org.apache.http.client.fluent.Request.internalExecute(Request.java:173) - at org.apache.http.client.fluent.Executor.execute(Executor.java:262) - at org.eclipse.epp.internal.logging.aeri.ide.server.mars.IO.request(IO.java:170) - at org.eclipse.epp.internal.logging.aeri.ide.server.mars.IO.refreshConfiguration(IO.java:64) - at org.eclipse.epp.internal.logging.aeri.ide.server.mars.ServerConnection.startUp(ServerConnection.java:124) - at com.google.common.util.concurrent.AbstractIdleService$DelegateService$1.run(AbstractIdleService.java:62) - at com.google.common.util.concurrent.Callables$4.run(Callables.java:122) - at java.base/java.lang.Thread.run(Thread.java:844) -Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty - at java.base/sun.security.validator.PKIXValidator.(PKIXValidator.java:89) - at java.base/sun.security.validator.Validator.getInstance(Validator.java:181) - at java.base/sun.security.ssl.X509TrustManagerImpl.getValidator(X509TrustManagerImpl.java:330) - at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrustedInit(X509TrustManagerImpl.java:180) - at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:192) - at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:133) - at java.base/sun.security.ssl.ClientHandshaker.checkServerCerts(ClientHandshaker.java:1947) - at java.base/sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1777) - at java.base/sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:264) - at java.base/sun.security.ssl.Handshaker.processLoop(Handshaker.java:1098) - at java.base/sun.security.ssl.Handshaker.processRecord(Handshaker.java:1026) - at java.base/sun.security.ssl.SSLSocketImpl.processInputRecord(SSLSocketImpl.java:1137) - at java.base/sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1074) - at java.base/sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973) - at java.base/sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1402) - at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1429) - ... 21 more -Caused by: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty - at java.base/java.security.cert.PKIXParameters.setTrustAnchors(PKIXParameters.java:200) - at java.base/java.security.cert.PKIXParameters.(PKIXParameters.java:120) - at java.base/java.security.cert.PKIXBuilderParameters.(PKIXBuilderParameters.java:104) - at java.base/sun.security.validator.PKIXValidator.(PKIXValidator.java:86) - ... 36 more - -!ENTRY org.eclipse.launchbar.core 2 0 2018-07-12 12:42:24.834 -!MESSAGE Enablement expression is missing for descriptor type org.eclipse.cdt.debug.core.coreBuildDescriptorType - -!ENTRY org.eclipse.launchbar.core 2 0 2018-07-12 12:42:24.836 -!MESSAGE Enablement expression is missing for config provider for org.eclipse.cdt.debug.core.coreBuildDescriptorType - -!ENTRY org.eclipse.launchbar.core 2 0 2018-07-12 12:42:24.838 -!MESSAGE Enablement expression is missing for config provider for org.eclipse.cdt.debug.core.coreBuildDescriptorType - -!ENTRY org.eclipse.titan.common 4 0 2018-07-12 12:44:12.911 -!MESSAGE Execution terminated from outside diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.cdt.core/.log b/workspace_stf549/.metadata/.plugins/org.eclipse.cdt.core/.log deleted file mode 100644 index 86bc1df..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.cdt.core/.log +++ /dev/null @@ -1,6 +0,0 @@ -*** SESSION Jul 12, 2018 05:34:11.39 ------------------------------------------- -*** SESSION Jul 12, 2018 05:40:31.95 ------------------------------------------- -*** SESSION Jul 12, 2018 05:58:07.58 ------------------------------------------- -*** SESSION Jul 12, 2018 06:09:58.35 ------------------------------------------- -*** SESSION Jul 12, 2018 10:57:04.23 ------------------------------------------- -*** SESSION Jul 12, 2018 12:40:10.53 ------------------------------------------- diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/7/history.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/7/history.index deleted file mode 100644 index faf422f3f573e63e760a61f090fcd9df7fa08aaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1222 zcmZwEZAep59LMovu3V|GAZevr7p2#mTj{8%MFbipS9>vGzL@6h4l7o#DoRFCMvyE* zSd_U63LC;*4?a}pMG`RrFIn4AY6rv>EcEsONf~A5Z}2~G-+uV=JLlfBf)J8J3T;h+ zW3~g0t^St45kGOr3CE3*3&d<0&z_zs^7Z%(n>(6w2oZNCuVWWy%9uw_y*aAqzI!J) zk0hbDZ}`)S`-L%Z;bct!yQ^#?+t=#5H3i*ADh3w}UGvy!9=JF^`Wbt;p@{9!^x{_R z+J10Sn!g3Ru^L=`A9P}ml!FJe4{g{#b(+||Obe73OZQy&;o_~!>bY7`Sjk+xlX^CU zTq*%4-#c|(y&2{__#>C?gy@b#&(Tg~-{O^j?-Cwa&G|qvxan%Q7x(J=Wq(}GIUW1S zcF1;5dJyfWCbG=kyDXfWo_u63?7hDU_r^>HcB;I(uJq(_E+wE>TKY=xj^JN**V%mR zu10Ws|I`{ik6xSLJW>mN=**B2_wEXCVfv9l&()VP&VzN7eHWcOZXH1X=TZ&0+WyXh zT^fDMdU>aj2Mf@`naJlKuXlW^{Np%S}m5?rl1Sb<$01}D|qoO-UV z`sUE{(4McHlgfT}uJ-FeDvs`Nc7jJ=Ws}&Yt~l$(@wr)fskg?yJhk3!yY2ohGdE=p eb8emjCk-Bo`~U81pG{-8C!h~E$2eDZgZ~8*H2jhP diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/af/history.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/af/history.index deleted file mode 100644 index 15792df0aa277576fe5d6ed70b9250dd36dbd35e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 292 zcmZQ#U|?Wo(9qAxPcPOF4skOzv5faiH#9WTD@#l-O3W+K%}9>VO)W}KP0<6YVPLu- zs3Nnol|e$}UfaB`3r&FntFH8>FfuSCtckz25lQ?4=W4JxgCbtD!GvfPqns24t?nyL^2F?GW6JQPz;Y=@W% E0NcB2hX4Qo diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/22/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/22/properties.index deleted file mode 100644 index 55082adc591737c8a1581deb9c30cb0afca162b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1883 zcmbuAK}!QM5QV397yp7s&jq)LD2k%iV!hO|(BMIllBUxV$R;64i~f7FE}Pa`7gG0@ zg?zku^JdZlfEFBgtzlh<)=l)%Xl2pK( zwAnz3ng27Q1(%Dyk}H&sD{0}r;XX<_68eZT7K6JAcI;Nw|%uY9-Tg` z*-{`JWSxp~8BY<;I@FL-JEZmKS!a@yD);-UB3Nia9YWjH;lGKtsnS$MwM}Zy zMLfr-rG~?|-pT8GO=;RsyCX1EY{Tt@i5eAe_BX1kD<#9wwLLX$%wN#t^ZMudZ78os zh4v+@(7*Vhsg~$^Xxc?>S$q}<>5tB~w{raC5&vp2Y7tVm-Y)0SW|2?5@i@fyO_W&* ICYLkv1%f<|NdN!< diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/22/e4/history.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/22/e4/history.index deleted file mode 100644 index d45805b5e99136ae07ff0e002910ea5745883d51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74 zcmZQ#U|?Wm(9|z3O4d(K29a(>iMgre`9;}av7E%p)S~#b#N?9vqDsBwWClio?lzu1 Ytqc+(_uA%lU1$oN@!q*3g^_^)0ABhTO#lD@ diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/22/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/22/properties.index deleted file mode 100644 index 697186d538e2c6ee581e3b0b7ac14ab49499e1e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3689 zcmeHK(MlsR6uq`H_zQjT3ko|Tvf{GhT8s5XOTplSi%6PYOE8m!B(3`Q&X}FF=s1w^ zZJC#O2;^|?x#!-K*#Uqa4EC*I`;3*}iJ>_@EAv#I!Jr4H$}BTvf@_PJ@Fj^j~;vko<+)IL-w=g}x*m1`vnQ3`ErA)llG!^?(1vJP;gXlfTP4vnND6q@3u()MtZm1L!(AjQYPuE|{Wo|q_;Q!%5Z z%?qB8Y7x+WMb{cgB^yrh&Ab$9zO5Hq21@a!_h7SP93ahx4>RI@-|QmYlZc zFK{aS`sMm-^imMHoDtZoO;awJSS=6+ejJ;6(4}JAl@&s^OU19AZ1p>%OU2KR+j^z` WMOl}M?>_+b8g;1{pF{t7D!u`=c>SCJ diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/bb/a8/history.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/bb/a8/history.index deleted file mode 100644 index 9b5a56f1eed52e04513a73d899a0817efc222335..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72 zcmZQ#U|?WmP}eUmO4d(K29W_p`6cV!Z diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/bb/ba/history.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/bb/ba/history.index deleted file mode 100644 index 37cc6b537a28760114a4efdecc41345b0b1efab6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78 zcmZQ#U|?Wm(A6(4O4d(K29W_p`6cU3BENj|_E*PTiVPh0kxeW%{GLll(e?K{jl`qAe zGAM=Jmp+90aCLO=Jvvu9B7~ffXML@BpY!H#uB4G%3f<2+tI6px`5@IS11^eMLuLxY zs%#3nm{p)M``C|0?;?;R z8zv#|I)D_^Qkm^f2b1xOuW~vUK#sFBhw>&KMHp?MCMna`Ez0L;l%XtZSy@snH`r&A#c|C;xivoe9}9x+?E4Lv$N}* zy1YL$Dhg#Sm;ur=ZSud5rpd+RQng20oY(Op+{WJu)++XM~ts=)0zk7Do^)m i&7QHTF=!IeBrc!T;@I?o@|sHVH*em|nU?5QG~M&HRROZ)+j%cQ6{R?N_tVeHr9*iAY&2kTX#6Z zOEi#?i1i=TZm8i^Lm=BlxN$PI%X^1LQV|QyabIb7xan51%2ANxU1Zm0u4Ye6l_{xM zP(w@fJR#R2qFp4{8cAh)PU+3O5^8m*7u!Ti>81~03qKB!7bmw15`5p46~R&q>JWym zHvgAonF6O^)gh^I&eCy=+G=?BXZ+#!-x{TDKQ&umrr3en851>By4a6Up{|_FV%Iuy zI+(x6$@}%y_1jWj4Hes$?PCAZhbAo1{m=}{TC#L65Hgv6e7=>_Cy$_Yj9P@;?YGOP zWUZ!28BD{pFmG(=dx|4d^4W>%NK!+ehMS_geG9=p*svW!tRO WQ;zkK_;~#{Yt%<#dI-JoNPGamEc;IY diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/f2/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/84/f2/properties.index deleted file mode 100644 index 52dd290ac1e8fc6328c123214aee46db6886d007..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3684 zcmeHJ!D<^Z5S`e&TOf%@F_$;KRroHe#&$E|hV0G~=r!*Kjg`Yh^YCGQqXQ!f{7su|~@` z5>2r%N~3WcZ8241?f=Ya$>nCE}n7!;=g<#RfUaMq!QoZ5#PCLn}q4L^W>`0@>EXO`}6Q`(aT_D*Qon>`po!ZoZMMQ558O#T1{+bD^&Le6h6;DPHsrtSMi}i<7G*ak?KH6~VF+)FMo5 zEB@EfG`X0ZR41gxc^;3W)uw`bU#5>ge{E5Q`cqf}7mD@R&X{PS;>q4YxpU>@!e?z{ zOuhQ^G1YoK*nS6&*FyR9Wm})W_@Z%5v@4oP*-{p-1wv+vr~6$wzVZkf%cw!fZP#6% zMUzE-Ry}iw&zoqp;tl7g}+V6-n;y~lm^4SHAA@Dv~#AP!O~!O zyOs&_l?KCZaTR7L4TiC^W*Q825!TWl2E%!?fBLTUx8#P&4c$ICtx5g6Lb#-yf%$7v gp4OxXde3=UllEV!!fM)?eOi<5Kk0?Z`uA(nU#j5Nod5s; diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/94/94/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/94/94/properties.index deleted file mode 100644 index d96f55f0634af6b74c8dca0de8674f22f7dba2df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3680 zcmeHJ(Q4Z;6unJs`UNfhhQeIZva+$UEelOw+7PJN!^SA8a%%*#BqSxYe_y+*l{9e; za^H#{{9@4I+;h*p=k5W(01i&9VJGPPH+FWGk4C3(G=Lw<F(0lu{W8Pv+S z?Wg0L+2~p=mI7gr9eb27@hHMshZ<69Z)=p_(I^vDXeCQgN^NW@qJxA5xS!qO2rtk; zLIT!1sQsaaR}Fz=72w9v)Gi(z8c9VcG{tqL-QlK7$tp)diuZwCo4J}jF;%9ZVonV$ zu;dA;76I*Rbgh9@vgQ=u%uAu}HuYk8pcHR<4>m8y0n+UFc22zSyRsr!Xh9vq(ADPu z9xapS|Qj+{2; zFK{aT`sVs=DX)eK?MqgnfAK@(m*{$EhD9w|ycY5Z^aZc`1lo%?KR6iqeYbL@kiPksri1_4_>Rx~xLH_Idc$vDUmT`aIk{YnzpN V39&v8pHKg0jru%{PoNK;hfga0_|5i$r5COYm15Fj>=?#mS+-8k{YGaIF2?MDX}QN zOlZz!HdJzr(s3m%JT}y$q;r8)=~N@*OU`~13RUHE+W<1Cm2vx}gX!e_RV`Km;V9`< zlT6o$`aIaoewAB*RQc~rD0mw6lL+Q<2v{&u>F}HOh}KTKoBh zFHLnsw@cH_Ys`2q8> Bg>3); diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/a8/history.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/a8/history.index deleted file mode 100644 index 2e4609c13d4012a2b6d5a60497c1ce524c54e80c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1606 zcma)+y-or_5XTo|N23KQ1{E-&umDO+No*`MqKWOX?5*5|lRNkJOh}|LTKEJOz66bp zjhcuWjfHO@Z=kJ>;vTtU!cM{i{C4*LF*8L7$&lreFIdTLF()v2iA#%%7MF%Y+guba zizGI-d;O~mvXIGrBztG++x6nhrI{G8c|clHdLd;TQYKx|Ry4gv=*4lGxh7|d+LH(c zXL^k4W@f!-{f{*>W1ThZr#bLb$#f$>Z{GAHA?({axO(uahgZPlO5K-YV6Cz5vL=_x zsBZEOpk!zIT!oVYXzXlx^Bw?EnoHvV2(o+npa-GCz|<-9Qtx^gCKBhV#LaFYInIN> zj+V97L9B$o{LevoVhDa5a6dFNkM$-E<}tT*!i5~JN4bDhbrnFWXNE5+YZ~>ycFZA8 z@`y$_Gb)ZUW)~|AG{$io4K93zBqo~^wOc_Ha}#O{ogCMe{e7Gyb&ES@m_{fL+kNOr zR5S(kvHgPwBOV31UByPir3f<|y>8z>PkM!GApFs~HEe%S9niZR*1H0D1>R;Lpn~1# YIq-r<1w9J;FoW$DJRI?P{6eJu0XNh(&;S4c diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/e4/history.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/e4/history.index deleted file mode 100644 index f0329b1dc084a12503b1aaceea76c00780fc5cd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1242 zcmaizy-Ncz7{*g^b18n&`dJqdgjx{6MW~~TA2>Q(uen%D&)%6!g${xg9h`L2QE+k* zK|~RSLJ{0l{C3h+m-ZhJFS%=Skp_o@8}j6Np5ObX2>=iQ9U~5g>?;_yX6i+R;}C+- z$Jfi}?k0%z4BWR|m!cQr@tZ9phcL(5{!?SePJV+8^|~d^SXC)RMrh?%5q7QOZpJb`l``&)y?Gf01ks5a z+*SUCAgH+p)zJsZU_b0b=;jqB(+Fw`WPf zha&__gwz#ou;kB`6zqKM-D}>;gV{RPmmM~V@~~nO;(EcAa+*Dq3-CN${QAGW-B952 zND39H`Qs2OM3xZFBNFI7r}FCMUcp5Z`<0kbKok4Lps^KY9P~RyEkVt+G8u#&x?MX5 z6}is0&$x{TtDmOKj++&b196aPcrS*O@kri-bchafTDp)m4ezOZ z%$!JN!bAQhN4fIPY$$>JnIwu$`2+3eqDFQ!X|kk1E&SN}Ym4sNv2c+AS>Jwa_zZpl DtG>79 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/74/54/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/74/54/properties.index deleted file mode 100644 index 20c83d4c157ada786bcb64b4e5827ffd6268ef6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3710 zcmeHK(Q4Z;6unJs_6z-h?xiq?Y;1IFY|BEkmn;M-_RunlqTCvRED1>o-QQ2HW+k+) zhrGAp7h?=MoO|xM_sAyzFoLs*HEiM>li{)Co6Cx+YT{p3<#hUba&NbAI)YEilm#-u zwZ+15M`f`^%S(x-SR19$IF7bhD6#clRoGZCU>9~>>zI2>NNjCz+(JPIN-*NU7 z0Zu$)fDau&2DLKo@zL4UYWiJmcLHHloClPPbQIyNLk&5#w++hIWR$t8w31#FuZ{I0 zI>=ar``jOn@CprNBx3yowI9^*x*?G5Bit;R+U31NBdLgm=6I;IKipy`S?wsu@h-CK zGFQ7N7Rppqtf`?DdY+JL5z*c!*BVJ>2TtkD{3g`qST9yaO6jH#U~4}PkQe8-YZ83l zmleTE3+fQYt}*||WSIh|VAU~caNeck7`4;z;%4^h`e%dEwV&E8uvF|w?Tm>ADqZXc zs8Cl61s$ zIz}x*?hf1KZL(P8mp%%I^uCGOOHt%{M&RXNleJD=I1O{z)r=t?`|hrownIEVcXw-F f9z#4nz2&wm^(WJYczpO1XxC_n$Mit@&*Sko-6I2( diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/74/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/74/properties.index deleted file mode 100644 index f80468390f342d8e1c0de14d77007fab3dc4ebaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1883 zcmbuAT}vY|6o!v>2LHld?sdT_RaRCMwHE75Ed_%YyDTM5k3%3|Bx%uqZ^kfb@nay} zxfq5(9^Uhw_nbKZfCKnBaFz|cXDYs?e0e9CmV@vytB1oA_;CnV+SU~^!HvVpb5B*Z zLdR=`wwhaQ(0Y!pnrN{KCo?L!s>fPwPQ1^ zGTWx8DMqzNTFzNM$Lh6#qrao$KmS@v*M9ms0#nU)+%A}CQTb-SqhehpnWnDoscC2a zlBST?Z`W@}c`Yinuh^vi9^bESGHN? S)$IHn^7|&5EG3hh8F>TDevCl? diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/8d/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/8d/properties.index deleted file mode 100644 index 197e7cb076b99fbe27f35cde1223328991155483..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 300 zcma)$u?oUK5JWfX2lyQpcZHp0ilC5yMG8BKcS~5f%N@HLFn{j_!A?jsGsW;`DgfBS z*$O+W>ZY%>^t!5MTl}W7#^)o39%BxJqL{S_)ecUHM}sa<7BosaOvaJ0^iBfedjJvN+TJyY;-P@WO&hV8EHm;BqU%4hh?yKLaa(4ojMVx9c58T|obOJw5! diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/b0/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/b0/properties.index deleted file mode 100644 index c25544a33d6815a07e69274dbcafff1c91e01cb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122 zcmX}iK?(vf3_#IT<^Y~UB)!83vvMJLfI-tR1lnXsQ_$Os2yQ-a@e=?fIOpz^BS?R_ z%JX8andZON`&$XW3#0>_%r|7JvUkRicqkU`vMD>>+;;X5?zl*0IP#0?D7?6}c}OiV Hg%AD!X`3lm diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/cb/eb/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/cb/eb/properties.index deleted file mode 100644 index 7a11fa40ea1101cc50d3a114ea4218c528732c4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 890 zcmb7@O-lnY5Qb-^Cr|zkv00&lJ@jIg1;K?vidRXKVHwC5`2hRxUELN`a1$>fhvAv` zoq4ALfJ<1nF~~M0X{YCf4xIe={~Pc5{^&72SoJD&#>hU)p}Bx-7Y2q>laI&}C1IJu zNQ1?|cENcJiN^AdG{P0WOPv*V!I^C)tzeNtM!2gJfW~W)PQ6#qG^2X>6S}E@(n!QU z4m=wp!tu-E$=N*owhZ6@kXusQmVx|fS1)i`<~=%NoUO8ZQ>O8R{+x>W+1;06J;o>o g+&cA-oz$hM%T^|GcG6l*QO#{UPkZ@&8?#gR03c;0egFUf diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/cb/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/cb/properties.index deleted file mode 100644 index 1504acb1e28e73cc7bfbb6575e00a7b6318912fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3688 zcmeHJ(Q4Z;6unJs_6ylQp)iM0R$5lNWnt+{8Uhi0=qN=|Zh}CTgrtP*?`KD|5?a?F z@2&X74+b61J@?#u?im2|;N#F5Hgt|j|C#dTg6rYlu3*rETV*yGGQqXQ%yCC$wnED{ z5=}NYN~3WcZ8lM2Rs5OJoXgEv$sJ0^m9+4q;XO*a6zHEWG%~*C>@@OC=0CZ}Rf z4b8FO38@wV?K-;FKq@(Mif`tfP|H)j*d|blH@yd&7vlhFcK$pk-uG=;5zMuq4x#TV z^WQ|vOziqtA~|6-v{7s<*&Yu@kiuCMu|Su@6wbu9Qqe*IIHq znZLlP@avoFx1qcWDzq=zh5p44jbEb2q3P$9Wbs}gWIVfgxs~H5kDzsoT7=Xcx69XP zvB)2N5)Scw6Q!4e$mNW{r}{W8^A!eu7@IoKWn$Zf6(Y9F#J3K%`i;?L;_K74Ua5aU U)@9=1{IA!j%f$E;dgqz=7bZ#k#{d8T diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/eb/properties.index deleted file mode 100644 index 7db9cb797e23e12e93be3036bf0de06fe5235f60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16471 zcmeI3QE$^Q5XWy@BE$>g1(=ZFjh6{B4Fm##fUa7{!>B4X;sJyz*Y%1eCypF<8s8qL zUfecyGr4HeG~LS{I^}dZpYP}Y`LY85_uD0X z>AD5jF-`(}Y%!!*A(d`E+8OqbzRSr>FxX8Ftd;lSR)j7!DVMm-37$h*D?kKV17k6t5Npq6=rP6YSc_rDiH8!o6tB7H_(}x!x?N zRYpO~&YgE{$>q<9o>UnT1ENUAjGqt}!dd$e{I1TaXyH@%Vx9^)UXB-?I+wze-WnU2 z?ErCdFdC#b@3-|TWmzGJX0WI0`Mb8#R-gPS za3<+ev?D5NQ{lm$o3if}r)O@}w)AOf|2dybzHThPEw5Lba?2N8xb+L)G`5H?HqBmE zhb%l7(zM%u)2zzjJ1=FWrle#L>qT{W8yu|kZ?Oc2@O2YaF1a9Adjy^}U|JAO|BM75 zkN#*~z`os&ZHs_d+_q*p$|4pwo!R_F1F^V%y7fouie-q!xdQOV2(cIrqPvd8rpD~( zvOhgKdW}F_5zLNYPClVdY;+y`HK&%HPLiQcyz0{U&lWBqj}p6xrpsqJFkReJZ|pIzd4bM$i-?Lq?UJPj1I?muGurUcZ}yzgNsHf z4mpnRtd94hOhlQ8GSQ3?<5a6}0Dnc>Ar7x^58qxKK3>P+HymeeesO|4L>?j!k%t?u qNRfwu-?H3Z9=>SsaPgG~o!=*7_tY~>fp|nbA|4Tsh{rqrwZ}iBTtImM diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.projects/STF549_Ng112/.indexes/e4/eb/properties.index deleted file mode 100644 index dfbe1d33faa954f96ce1bc4666f03cd673a5a690..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1865 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 CtR0sC diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version deleted file mode 100644 index 25cb955..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index deleted file mode 100644 index 2219f353f3428f574a0e92663077e783b4d3e0d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 104 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 diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources deleted file mode 100644 index 7511d68e9a6ec7c04e0b8086a47622c66f991c8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1054 zcmZ?R*xjhShe1S2b=vdAllRFf=Oz}Hq!uZZBqrsgaw&&olqz_Y<|r5%0g;udrIn$j zg0pLIh=P%Up#@iRPHJM2OKMI@Vtjs4x?XB>PG&)Is$LNgC+8QX+LjcRrgEi#isbiL9{h}&^^5N;&cavX|4p^%oDlUhv3G>Dam0K;KkPG(+dMM-{sPO%=y{+!ID zjQlcSpy6{vZe>noo?b~}aW=vg`g$crsj0SRTn8e4e+EZ=;OCy|-Q~v|Xqgn!5_5`a to)!pO0*^V;5(C6w91#OI6R#?i - - - activeSchemeId:org.eclipse.ui.defaultAcceleratorConfiguration - ModelMigrationProcessor.001 - - - - - - - - topLevel - shellMaximized - - - - - persp.actionSet:org.eclipse.mylyn.doc.actionSet - persp.actionSet:org.eclipse.mylyn.tasks.ui.navigation - persp.actionSet:org.eclipse.ui.cheatsheets.actionSet - persp.actionSet:org.eclipse.rse.core.search.searchActionSet - persp.actionSet:org.eclipse.search.searchActionSet - persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation - persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation - persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo - persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet - persp.actionSet:org.eclipse.ui.actionSet.keyBindings - persp.actionSet:org.eclipse.ui.actionSet.openFiles - persp.actionSet:org.eclipse.cdt.ui.SearchActionSet - persp.actionSet:org.eclipse.cdt.ui.CElementCreationActionSet - persp.actionSet:org.eclipse.ui.NavigateActionSet - persp.viewSC:org.eclipse.ui.console.ConsoleView - persp.viewSC:org.eclipse.search.ui.views.SearchView - persp.viewSC:org.eclipse.ui.views.ContentOutline - persp.viewSC:org.eclipse.ui.views.ProblemView - persp.viewSC:org.eclipse.cdt.ui.CView - persp.viewSC:org.eclipse.ui.views.ResourceNavigator - persp.viewSC:org.eclipse.ui.views.PropertySheet - persp.viewSC:org.eclipse.ui.views.TaskList - persp.newWizSC:org.eclipse.cdt.autotools.ui.wizards.conversionWizard - persp.newWizSC:org.eclipse.cdt.ui.wizards.ConvertToMakeWizard - persp.newWizSC:org.eclipse.cdt.ui.wizards.NewMakeFromExisting - persp.newWizSC:org.eclipse.cdt.ui.wizard.project - persp.newWizSC:org.eclipse.cdt.ui.wizards.NewSourceFolderCreationWizard - persp.newWizSC:org.eclipse.cdt.ui.wizards.NewFolderCreationWizard - persp.newWizSC:org.eclipse.cdt.ui.wizards.NewSourceFileCreationWizard - persp.newWizSC:org.eclipse.cdt.ui.wizards.NewHeaderFileCreationWizard - persp.newWizSC:org.eclipse.cdt.ui.wizards.NewFileCreationWizard - persp.newWizSC:org.eclipse.cdt.ui.wizards.NewClassCreationWizard - persp.actionSet:org.eclipse.debug.ui.profileActionSet - persp.viewSC:org.eclipse.mylyn.tasks.ui.views.tasks - persp.newWizSC:org.eclipse.mylyn.tasks.ui.wizards.new.repository.task - persp.perspSC:org.eclipse.debug.ui.DebugPerspective - persp.perspSC:org.eclipse.team.ui.TeamSynchronizingPerspective - persp.actionSet:org.eclipse.debug.ui.launchActionSet - persp.actionSet:org.eclipse.cdt.ui.buildConfigActionSet - persp.actionSet:org.eclipse.cdt.ui.NavigationActionSet - persp.actionSet:org.eclipse.cdt.ui.OpenActionSet - persp.actionSet:org.eclipse.cdt.ui.CodingActionSet - persp.actionSet:org.eclipse.ui.edit.text.actionSet.presentation - persp.showIn:org.eclipse.cdt.ui.includeBrowser - persp.showIn:org.eclipse.cdt.ui.CView - persp.showIn:org.eclipse.ui.navigator.ProjectExplorer - persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer - persp.viewSC:org.eclipse.cdt.ui.includeBrowser - persp.showIn:org.eclipse.cdt.codan.internal.ui.views.ProblemDetails - persp.viewSC:org.eclipse.cdt.codan.internal.ui.views.ProblemDetails - persp.actionSet:org.eclipse.debug.ui.breakpointActionSet - persp.viewSC:org.eclipse.cdt.make.ui.views.MakeView - persp.actionSet:org.eclipse.cdt.make.ui.makeTargetActionSet - persp.viewSC:org.eclipse.tm.terminal.view.ui.TerminalsView - persp.showIn:org.eclipse.tm.terminal.view.ui.TerminalsView - - - noFocus - - - - - - - - - - - - - - - - - - - - - - - - - - - - persp.actionSet:org.eclipse.mylyn.doc.actionSet - persp.actionSet:org.eclipse.mylyn.tasks.ui.navigation - persp.actionSet:org.eclipse.ui.cheatsheets.actionSet - persp.actionSet:org.eclipse.rse.core.search.searchActionSet - persp.actionSet:org.eclipse.search.searchActionSet - persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation - persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation - persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo - persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet - persp.actionSet:org.eclipse.ui.actionSet.keyBindings - persp.actionSet:org.eclipse.ui.actionSet.openFiles - persp.actionSet:org.eclipse.debug.ui.launchActionSet - persp.newWizSC:org.eclipse.titan.designer.wizards.NewTITANProjectWizard - persp.newWizSC:org.eclipse.titan.designer.wizards.NewASN1ModuleWizard - persp.newWizSC:org.eclipse.titan.designer.wizards.NewTTCN3ModuleWizard - persp.newWizSC:org.eclipse.titan.designer.wizards.NewConfigFileWizard - persp.newWizSC:org.eclipse.ui.wizards.new.folder - persp.newWizSC:org.eclipse.ui.wizards.new.file - persp.perspSC:org.eclipse.titan.executor.perspectives.ExecutingPerspective - persp.viewSC:org.eclipse.ui.views.ProblemView - persp.viewSC:org.eclipse.ui.console.ConsoleView - persp.viewSC:org.eclipse.ui.views.ProgressView - persp.viewSC:org.eclipse.ui.views.TaskList - persp.viewSC:org.eclipse.ui.views.ContentOutline - persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer - persp.viewSC:org.eclipse.pde.runtime.LogView - persp.showIn:org.eclipse.tm.terminal.view.ui.TerminalsView - - - active - noFocus - - - - - - - General - - - - - - - - - - - - - persp.actionSet:org.eclipse.mylyn.doc.actionSet - persp.actionSet:org.eclipse.mylyn.tasks.ui.navigation - persp.actionSet:org.eclipse.ui.cheatsheets.actionSet - persp.actionSet:org.eclipse.rse.core.search.searchActionSet - persp.actionSet:org.eclipse.search.searchActionSet - persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation - persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation - persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo - persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet - persp.actionSet:org.eclipse.ui.actionSet.keyBindings - persp.actionSet:org.eclipse.ui.actionSet.openFiles - persp.perspSC:org.eclipse.titan.designer.perspectives.EditingPerspective - persp.viewSC:org.eclipse.ui.console.ConsoleView - persp.viewSC:org.eclipse.ui.views.TaskList - persp.viewSC:org.eclipse.ui.views.ProblemView - persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer - persp.viewSC:org.eclipse.pde.runtime.LogView - persp.viewSC:org.eclipse.titan.executor.views.executorMonitor.ExecutorMonitorView - persp.viewSC:org.eclipse.titan.executor.views.testExecution.TestExecutionView - persp.viewSC:org.eclipse.titan.executor.views.notification.NotificationView - persp.actionSet:org.eclipse.debug.ui.launchActionSet - persp.showIn:org.eclipse.tm.terminal.view.ui.TerminalsView - - - - - - - noFocus - - - - - - - - - - - - - - - - - - - - - - - persp.actionSet:org.eclipse.mylyn.doc.actionSet - persp.actionSet:org.eclipse.mylyn.tasks.ui.navigation - persp.actionSet:org.eclipse.ui.cheatsheets.actionSet - persp.actionSet:org.eclipse.rse.core.search.searchActionSet - persp.actionSet:org.eclipse.search.searchActionSet - persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation - persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation - persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo - persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet - persp.actionSet:org.eclipse.ui.actionSet.keyBindings - persp.actionSet:org.eclipse.ui.actionSet.openFiles - persp.actionSet:org.eclipse.titan.log.viewer.search.SearchActionSet - persp.showIn:org.eclipse.tm.terminal.view.ui.TerminalsView - - - - - - - - - - - - - - - - - - General - TITAN Log Viewer - - - - - - - - - - - Minimized - - - - - - - - - - - - - - View - categoryTag:Help - - - - - - View - categoryTag:General - - ViewMenu - menuContribution:menu - - - - - - - View - categoryTag:Help - - - - org.eclipse.e4.primaryDataStack - EditorStack - - - - - - - View - categoryTag:General - active - activeOnClose - - ViewMenu - menuContribution:menu - - - - - - - View - categoryTag:C/C++ - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - - View - categoryTag:General - - ViewMenu - menuContribution:menu - - - - - - - View - categoryTag:General - - - - - - View - categoryTag:General - - ViewMenu - menuContribution:menu - - - - - - - View - categoryTag:General - - - - - - View - categoryTag:General - - ViewMenu - menuContribution:menu - - - - - - - View - categoryTag:C/C++ - - - - - View - categoryTag:Mylyn - - ViewMenu - menuContribution:menu - - - - - - - View - categoryTag:Make - - ViewMenu - menuContribution:menu - - - - - - - View - categoryTag:Terminal - - - - - - View - categoryTag:General - - ViewMenu - menuContribution:menu - - - - - - - - View - categoryTag:General - - ViewMenu - menuContribution:menu - - - - - - - - View - categoryTag:TITAN Monitors - - ViewMenu - menuContribution:menu - - - - - - - View - categoryTag:TITAN Monitors - - ViewMenu - menuContribution:menu - - - - - - - - View - categoryTag:TITAN Monitors - - ViewMenu - menuContribution:menu - - - - - - - View - categoryTag:TITAN Log Viewer - - - - - View - categoryTag:TITAN Log Viewer - - - - - View - categoryTag:TITAN Log Viewer - - - - - View - categoryTag:TITAN Log Viewer - - - - - View - categoryTag:TITAN Log Viewer - - - - - View - categoryTag:TITAN Log Viewer - - - - - - View - categoryTag:General - - ViewMenu - menuContribution:menu - - - - - - - - View - categoryTag:TITAN Log Viewer - - ViewMenu - menuContribution:menu - - - - - - - - View - categoryTag:TITAN Log Viewer - - ViewMenu - menuContribution:menu - - - - - - - - View - categoryTag:TITAN Log Viewer - - ViewMenu - menuContribution:menu - - - - - - - View - categoryTag:TITAN Log Viewer - - ViewMenu - menuContribution:menu - - - - - - - View - categoryTag:TITAN Log Viewer - - ViewMenu - menuContribution:menu - - - - - - - View - categoryTag:TITAN Log Viewer - - ViewMenu - menuContribution:menu - - - - - - toolbarSeparator - - - - Draggable - - - - toolbarSeparator - - - - Draggable - - - Draggable - - - Draggable - - - Draggable - - - toolbarSeparator - - - - Draggable - - - - toolbarSeparator - - - - toolbarSeparator - - - - Draggable - - - stretch - SHOW_RESTORE_MENU - - - Draggable - HIDEABLE - SHOW_RESTORE_MENU - - - - - stretch - - - Draggable - - - Draggable - - - - - TrimStack - Draggable - - - TrimStack - Draggable - - - TrimStack - Draggable - - - - - TrimStack - Draggable - - - TrimStack - Draggable - - - TrimStack - Draggable - - - TrimStack - Draggable - - - - - - platform:gtk - - - - - - - - - - - platform:gtk - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Editor - - - - - View - categoryTag:C/C++ - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Make - - - - - View - categoryTag:C/C++ - - - - - View - categoryTag:C/C++ - - - - - View - categoryTag:C/C++ - - - - - View - categoryTag:C/C++ - - - - - View - categoryTag:C/C++ - - - - - View - categoryTag:General - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Git - - - - - View - categoryTag:Git - - - - - View - categoryTag:Git - - - - - View - categoryTag:Git - - - - - View - categoryTag:Git - - - - - View - categoryTag:Help - - - - - View - categoryTag:C/C++ - - - - - View - categoryTag:C/C++ - - - - - View - categoryTag:Charts - - - - - View - categoryTag:Profiling - - - - - View - categoryTag:Profiling - - - - - View - categoryTag:Man pages - - - - - View - categoryTag:Profiling - - - - - View - categoryTag:Profiling - - - - - View - categoryTag:Profiling - - - - - View - categoryTag:Profiling - - - - - View - categoryTag:Profiling - - - - - View - categoryTag:Profiling - - - - - View - categoryTag:Profiling - - - - - View - categoryTag:SystemTap - - - - - View - categoryTag:SystemTap - - - - - View - categoryTag:SystemTap - - - - - View - categoryTag:Profiling - - - - - View - categoryTag:Mylyn - - - - - View - categoryTag:Mylyn - - - - - View - categoryTag:Mylyn - - - - - View - categoryTag:Oomph - - - - - View - categoryTag:Connections - - - - - View - categoryTag:Remote Systems - - - - - View - categoryTag:Remote Systems - - - - - View - categoryTag:Remote Systems - - - - - View - categoryTag:Remote Systems - - - - - View - categoryTag:Remote Systems - - - - - View - categoryTag:Remote Systems - - - - - View - categoryTag:Remote Systems - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:Team - - - - - View - categoryTag:Team - - - - - View - categoryTag:Terminal - - - - - View - categoryTag:Other - - - - - View - categoryTag:LTTng - - - - - View - categoryTag:LTTng - - - - - View - categoryTag:Tracing - - - - - View - categoryTag:LTTng - - - - - View - categoryTag:LTTng - - - - - View - categoryTag:LTTng - - - - - View - categoryTag:LTTng - - - - - View - categoryTag:LTTng - - - - - View - categoryTag:LTTng - - - - - View - categoryTag:LTTng - - - - - View - categoryTag:LTTng - - - - - View - categoryTag:LTTng - - - - - View - categoryTag:Tracing - - - - - View - categoryTag:Tracing - - - - - View - categoryTag:Tracing - - - - - View - categoryTag:Tracing - - - - - View - categoryTag:Tracing - - - - - View - categoryTag:LTTng - - - - - View - categoryTag:Tracing - - - - - View - categoryTag:LTTng - - - - - View - categoryTag:LTTng - - - - - View - categoryTag:LTTng - - - - - View - categoryTag:Tracing - - - - - View - categoryTag:Tracing - - - - - View - categoryTag:Tracing - - - - - View - categoryTag:Tracing - - - - - View - categoryTag:Tracing - - - - - View - categoryTag:Tracing - - - - - View - categoryTag:Tracing - - - - - View - categoryTag:Tracing - - - - - View - categoryTag:Tracing - - - - - View - categoryTag:Tracing - - - - - View - categoryTag:Tracing - - - - - View - categoryTag:Tracing - - - - - View - categoryTag:Tracing - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:Help - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:XML - - - - - View - categoryTag:XML - - - - - View - categoryTag:TITAN Monitors - - - - - View - categoryTag:TITAN Monitors - - - - - View - categoryTag:TITAN Monitors - - - - - View - categoryTag:TITAN Log Viewer - - - - - View - categoryTag:TITAN Log Viewer - - - - - View - categoryTag:TITAN Log Viewer - - - - - View - categoryTag:TITAN Log Viewer - - - - - View - categoryTag:Titanium - - - - - View - categoryTag:Titanium - - - - - View - categoryTag:Titanium - - - - - - - glue - move_after:PerspectiveSpacer - SHOW_RESTORE_MENU - - - move_after:Spacer Glue - HIDEABLE - SHOW_RESTORE_MENU - - - glue - move_after:SearchField - SHOW_RESTORE_MENU - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/workspace_stf549/.metadata/version.ini b/workspace_stf549/.metadata/version.ini deleted file mode 100644 index 1f704bf..0000000 --- a/workspace_stf549/.metadata/version.ini +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Jul 12 12:39:45 CEST 2018 -org.eclipse.core.runtime=2 -org.eclipse.platform=4.7.2.v20171130-0510 -- GitLab From 5e3b4f735fc8c8319fefda4a221635c5beb9bda0 Mon Sep 17 00:00:00 2001 From: garciay Date: Fri, 13 Jul 2018 06:55:47 +0200 Subject: [PATCH 56/72] Bugs fixes in scripts --- scripts/update_emcom_project.bash | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/update_emcom_project.bash b/scripts/update_emcom_project.bash index 21318c5..7234e5b 100755 --- a/scripts/update_emcom_project.bash +++ b/scripts/update_emcom_project.bash @@ -12,6 +12,7 @@ OLDPWD=`pwd` # Execution path RUN_PATH="${0%/*}" +USER=`whoami` CHOWN_USER_GROUP=${USER}:${USER} SRC_EMCOM_PATH=${HOME}/dev/STF549_Ng112 -- GitLab From 89ec37aa3f6b842358249b3a2c7d068f3fa99dab Mon Sep 17 00:00:00 2001 From: garciay Date: Fri, 13 Jul 2018 07:27:37 +0200 Subject: [PATCH 57/72] Bug fixed in Dockerfile --- docker/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 8422437..5e3597f 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -71,7 +71,7 @@ RUN echo "docker-titan-STF549" > /etc/hostname \ && cd /home/etsi \ && echo "" >> /home/etsi/.bashrc \ && echo "export HOME=/home/etsi" >> /home/etsi/.bashrc \ - && echo "export LD_LIBRARY_PATH=/home/etsi/dev/etsi_emco/lib:$LD_LIBRARY_PATH" >> /home/etsi/.bashrc \ + && echo "export LD_LIBRARY_PATH=/home/etsi/dev/etsi_emcom/lib:$LD_LIBRARY_PATH" >> /home/etsi/.bashrc \ && echo "export PATH=/home/etsi/bin:$PATH" >> /home/etsi/.bashrc \ && echo "cd /home/etsi" >> /home/etsi/.bashrc \ && echo ". ./devenv.bash" >> /home/etsi/.bashrc \ @@ -110,7 +110,7 @@ RUN cd /home/etsi/dev \ && ./build_titan.bash \ && . /home/etsi/devenv.bash \ && ./update_emcom_project.bash \ - && cd ${HOME}/dev/etsi_emco/src/AtsNg112/objs \ + && cd ${HOME}/dev/etsi_emcom/src/AtsNg112/objs \ && ../bin/ng112.bash \ && ../bin/run_all.bash -- GitLab From 20ea5c75484d0a93867e9f1ad80f2e4e6a46c668 Mon Sep 17 00:00:00 2001 From: garciay Date: Fri, 13 Jul 2018 09:42:01 +0200 Subject: [PATCH 58/72] Set env TERM to xterm --- docker/Dockerfile | 7 +++++-- scripts/devenv.bash.ubuntu | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 5e3597f..cbd70f2 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -4,7 +4,7 @@ MAINTAINER ETSI STF 549 LABEL description="STF549 Docker Image" -ENV TERM=linux +ENV TERM=xterm ENV HOSTNAME docker-titan-STF549 RUN echo "docker-titan-STF549" > /etc/hostname \ @@ -77,7 +77,10 @@ RUN echo "docker-titan-STF549" > /etc/hostname \ && echo ". ./devenv.bash" >> /home/etsi/.bashrc \ && . /home/etsi/.bashrc \ && mkdir -p bin lib include tmp frameworks docs man dev \ - && chown etsi:etsi bin lib include tmp frameworks docs man dev + && chown etsi:etsi bin lib include tmp frameworks docs man dev \ + && echo "**********************************************************************" \ + && ls -l /etc/sudoers.d \ + && for i in `ls /etc/sudoers.d`; do cat /etc/sudoers.d/$i; echo ""; done USER etsi diff --git a/scripts/devenv.bash.ubuntu b/scripts/devenv.bash.ubuntu index 9667d0d..6ae44cd 100755 --- a/scripts/devenv.bash.ubuntu +++ b/scripts/devenv.bash.ubuntu @@ -9,6 +9,7 @@ set -e #export PS1="\w\$ " #export PS1="\D{%Y-%m-%d %H:%M:%S} \w\n\$ " +export TERM=xterm export EDITOR=emacs set -o emacs -- GitLab From fbced3a4e02a89e87287eddd3653279f82fd3263 Mon Sep 17 00:00:00 2001 From: garciay Date: Fri, 13 Jul 2018 10:11:40 +0200 Subject: [PATCH 59/72] Add changes on /etc/sudoers file --- docker/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index cbd70f2..82ae118 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -79,8 +79,8 @@ RUN echo "docker-titan-STF549" > /etc/hostname \ && mkdir -p bin lib include tmp frameworks docs man dev \ && chown etsi:etsi bin lib include tmp frameworks docs man dev \ && echo "**********************************************************************" \ - && ls -l /etc/sudoers.d \ - && for i in `ls /etc/sudoers.d`; do cat /etc/sudoers.d/$i; echo ""; done + && echo "etsi ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers \ + && echo "**********************************************************************" USER etsi -- GitLab From dfc2f6db43be8ed3a44083adcf34d969dc88e240 Mon Sep 17 00:00:00 2001 From: garciay Date: Mon, 16 Jul 2018 16:42:57 +0200 Subject: [PATCH 60/72] Add RFC 5222 - LoST --- docker/Dockerfile | 4 +- scripts/merge_emcom_project.bash | 4 +- ttcn/AtsNg112/AtsNg112_TestCases.ttcn | 16 +- .../ttcn/LibNg112_EncdecDeclarations.ttcn | 50 +- .../LibNg112/ttcn/LibNg112_Pixits.ttcn | 15 +- ttcn/LibEmcom/LibNg112/xsd/RFC5222_lost.xsd | 345 +++++++++ .../xsd/urn_ietf_params_xml_ns_lost1.ttcn | 719 ++++++++++++++++++ 7 files changed, 1133 insertions(+), 20 deletions(-) create mode 100644 ttcn/LibEmcom/LibNg112/xsd/RFC5222_lost.xsd create mode 100644 ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_lost1.ttcn diff --git a/docker/Dockerfile b/docker/Dockerfile index 82ae118..d44f69f 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -78,9 +78,7 @@ RUN echo "docker-titan-STF549" > /etc/hostname \ && . /home/etsi/.bashrc \ && mkdir -p bin lib include tmp frameworks docs man dev \ && chown etsi:etsi bin lib include tmp frameworks docs man dev \ - && echo "**********************************************************************" \ - && echo "etsi ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers \ - && echo "**********************************************************************" + && echo "etsi ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers USER etsi diff --git a/scripts/merge_emcom_project.bash b/scripts/merge_emcom_project.bash index 6ca93da..2b24b81 100755 --- a/scripts/merge_emcom_project.bash +++ b/scripts/merge_emcom_project.bash @@ -27,7 +27,7 @@ chmod 775 ${VAGRANT_DIR} # Execution path RUN_PATH="${0%/*}" -PATH_DEV_EMCOM=`pwd`/../etsi_emcom +PATH_DEV_EMCOM=`pwd`/../../etsi_emcom # Update ETSI Framework files echo 'Merging ETSI Framework files' @@ -234,6 +234,6 @@ do rm $i done -chmod -R 664 ${VAGRANT_DIR} +chmod -R 664 ${VAGRANT_DIR}/*.* exit 0 diff --git a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn index 138b233..c5b6016 100644 --- a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn +++ b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn @@ -29,7 +29,6 @@ module AtsNg112_TestCases { with { extension "File:../xsd/RFC4119_geopriv10_basic_policy.xsd"; } - import from urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc language "XSD" all with { extension "File:../xsd/RFC4119_geopriv10_civicloc.xsd"; @@ -42,8 +41,19 @@ module AtsNg112_TestCases { } // OpenGIS - import from urn_ietf_params_xml_ns_pidf_geopriv10_geoShape language "XSD" all; - import from http_www_opengis_net_gml language "XSD" all; + import from urn_ietf_params_xml_ns_pidf_geopriv10_geoShape language "XSD" all + with { + extension "File:../xsd/OGC_GLM_Geoshape.xsd"; + } + import from http_www_opengis_net_gml language "XSD" all + with { + extension "File:../xsd/gmlBase.xsd"; + extension "File:../xsd/basicTypes.xsd"; + extension "File:../xsd/measures.xsd"; + extension "File:../xsd/geometryPrimitives.xsd"; + extension "File:../xsd/geometryBasic0d1d.xsd"; + extension "File:../xsd/geometryBasic2d.xsd"; + } // Libcommon import from LibCommon_Time all; diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn index 1a502a8..1386730 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn @@ -3,19 +3,49 @@ module LibNg112_EncdecDeclarations { import from XSD all; // RFC5985 Held - import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all; - import from urn_ietf_params_xml_ns_geopriv_held_id language "XSD" all; - import from urn_ietf_params_xml_ns_pidf_geopriv10 language "XSD" all; - import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy language "XSD" all; + import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all + with { + extension "File:../xsd/RFC5985_held.xsd"; + } + // RFC6155 Held ID + import from urn_ietf_params_xml_ns_geopriv_held_id language "XSD" all + with { + extension "File:../xsd/RFC6155_held_id.xsd"; + } + import from urn_ietf_params_xml_ns_pidf_geopriv10 language "XSD" all + with { + extension "File:../xsd/RFC4119_geopriv10.xsd"; + } + import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy language "XSD" all + with { + extension "File:../xsd/RFC4119_geopriv10_basic_policy.xsd"; + } - import from urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc language "XSD" all; - - // - import from urn_ietf_params_xml_ns_pidf language "XSD" all; + import from urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc language "XSD" all + with { + extension "File:../xsd/RFC4119_geopriv10_civicloc.xsd"; + } + + // RFC3863 + import from urn_ietf_params_xml_ns_pidf language "XSD" all + with { + extension "File:../xsd/RFC3863_pidf.xsd"; + } // OpenGIS - import from urn_ietf_params_xml_ns_pidf_geopriv10_geoShape language "XSD" all; - import from http_www_opengis_net_gml language "XSD" all; + import from urn_ietf_params_xml_ns_pidf_geopriv10_geoShape language "XSD" all + with { + extension "File:../xsd/OGC_GLM_Geoshape.xsd"; + } + import from http_www_opengis_net_gml language "XSD" all + with { + extension "File:../xsd/gmlBase.xsd"; + extension "File:../xsd/basicTypes.xsd"; + extension "File:../xsd/measures.xsd"; + extension "File:../xsd/geometryPrimitives.xsd"; + extension "File:../xsd/geometryBasic0d1d.xsd"; + extension "File:../xsd/geometryBasic2d.xsd"; + } external function enc_LocationRequest(in LocationRequest p_loction_request) return octetstring with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn index 6bed37a..29339ea 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn @@ -3,8 +3,19 @@ module LibNg112_Pixits { import from XSD all; // OpenGIS - import from urn_ietf_params_xml_ns_pidf_geopriv10_geoShape language "XSD" all; - import from http_www_opengis_net_gml language "XSD" all; + import from urn_ietf_params_xml_ns_pidf_geopriv10_geoShape language "XSD" all + with { + extension "File:../xsd/OGC_GLM_Geoshape.xsd"; + } + import from http_www_opengis_net_gml language "XSD" all + with { + extension "File:../xsd/gmlBase.xsd"; + extension "File:../xsd/basicTypes.xsd"; + extension "File:../xsd/measures.xsd"; + extension "File:../xsd/geometryPrimitives.xsd"; + extension "File:../xsd/geometryBasic0d1d.xsd"; + extension "File:../xsd/geometryBasic2d.xsd"; + } /** * @desc Epsilon for Double valules comparison diff --git a/ttcn/LibEmcom/LibNg112/xsd/RFC5222_lost.xsd b/ttcn/LibEmcom/LibNg112/xsd/RFC5222_lost.xsd new file mode 100644 index 0000000..58e1f05 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/RFC5222_lost.xsd @@ -0,0 +1,345 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Exception pattern. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Any element not in the LoST namespace. + + + + + + + + + + + A wildcard pattern for including any element + from any other namespace. + + + + + + + + + + A wildcard pattern for including any element + from any other namespace. + + + + + + + + A point where future extensions + (elements from other namespaces) + can be added. + + + + + + + diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_lost1.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_lost1.ttcn new file mode 100644 index 0000000..fd9616d --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_lost1.ttcn @@ -0,0 +1,719 @@ +/******************************************************************************* +* Copyright (c) 2000-2018 Ericsson Telecom AB +* +* XSD to TTCN-3 Translator version: CRL 113 200/6 R4A +* +* All rights reserved. This program and the accompanying materials +* are made available under the terms of the Eclipse Public License v2.0 +* which accompanies this distribution, and is available at +* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html +*******************************************************************************/ +// +// File: urn_ietf_params_xml_ns_lost1.ttcn +// Description: +// References: +// Rev: +// Prodnr: +// Updated: Tue Jul 10 13:34:10 2018 +// Contact: http://ttcn.ericsson.se +// +//////////////////////////////////////////////////////////////////////////////// +// Generated from file(s): +// - RelaxNG.xsd +// /* xml version = "1.0" encoding = "UTF-8" */ +// /* targetnamespace = "urn:ietf:params:xml:ns:lost1" */ +//////////////////////////////////////////////////////////////////////////////// +// Modification header(s): +//----------------------------------------------------------------------------- +// Modified by: +// Modification date: +// Description: +// Modification contact: +//------------------------------------------------------------------------------ +//////////////////////////////////////////////////////////////////////////////// + + +module urn_ietf_params_xml_ns_lost1 { + + +import from XSD all; + + +import from http_www_w3_org_XML_1998_namespace all; + + +type record FindService +{ + XSD.Boolean recursive_ optional, + enumerated { + reference, + value_ + } serviceBoundary optional, + XSD.Boolean validateLocation optional, + record length(1 .. infinity) of Location location_list, + Path path optional, + Service service optional, + record of NotLost notLost_list +} +with { + variant "name as uncapitalized"; + variant "element"; + variant (recursive_) "name as 'recursive'"; + variant (recursive_) "attribute"; + //variant (recursive_) "text 'true' as '1'"; + //variant (recursive_) "text 'false' as '0'"; + variant (serviceBoundary) "text 'value_' as 'value'"; + variant (serviceBoundary) "attribute"; + variant (validateLocation) "attribute"; + //variant (validateLocation) "text 'true' as '1'"; + //variant (validateLocation) "text 'false' as '0'"; + variant (location_list) "untagged"; + variant (location_list[-]) "name as 'location'"; + variant (notLost_list) "untagged"; +}; + + +type record ListServices +{ + Path path optional, + Service service optional, + record of NotLost notLost_list +} +with { + variant "name as uncapitalized"; + variant "element"; + variant (notLost_list) "untagged"; +}; + + +type record ListServicesByLocation +{ + XSD.Boolean recursive_ optional, + record length(1 .. infinity) of Location location_list, + Path path optional, + Service service optional, + record of NotLost notLost_list +} +with { + variant "name as uncapitalized"; + variant "element"; + variant (recursive_) "name as 'recursive'"; + variant (recursive_) "attribute"; + //variant (recursive_) "text 'true' as '1'"; + //variant (recursive_) "text 'false' as '0'"; + variant (location_list) "untagged"; + variant (location_list[-]) "name as 'location'"; + variant (notLost_list) "untagged"; +}; + + +type record GetServiceBoundary +{ + XSD.Token key, + record of NotLost notLost_list +} +with { + variant "name as uncapitalized"; + variant "element"; + variant (key) "attribute"; + variant (notLost_list) "untagged"; +}; + + +type record FindServiceResponse +{ + record length(1 .. infinity) of Mapping mapping_list, + LocationValidation locationValidation optional, + record of Warnings warnings_list, + Path path, + record of NotLost notLost_list, + LocationUsed locationUsed optional +} +with { + variant "name as uncapitalized"; + variant "element"; + variant (mapping_list) "untagged"; + variant (mapping_list[-]) "name as 'mapping'"; + variant (warnings_list) "untagged"; + variant (warnings_list[-]) "name as 'warnings'"; + variant (notLost_list) "untagged"; +}; + + +type record ListServicesResponse +{ + ServiceList serviceList, + record of Warnings warnings_list, + Path path, + record of NotLost notLost_list +} +with { + variant "name as uncapitalized"; + variant "element"; + variant (warnings_list) "untagged"; + variant (warnings_list[-]) "name as 'warnings'"; + variant (notLost_list) "untagged"; +}; + + +type record ListServicesByLocationResponse +{ + ServiceList serviceList, + record of Warnings warnings_list, + Path path, + record of NotLost notLost_list, + LocationUsed locationUsed optional +} +with { + variant "name as uncapitalized"; + variant "element"; + variant (warnings_list) "untagged"; + variant (warnings_list[-]) "name as 'warnings'"; + variant (notLost_list) "untagged"; +}; + + +type record GetServiceBoundaryResponse +{ + record length(1 .. infinity) of ServiceBoundary serviceBoundary_list, + record of Warnings warnings_list, + Path path, + record of NotLost notLost_list +} +with { + variant "name as uncapitalized"; + variant "element"; + variant (serviceBoundary_list) "untagged"; + variant (serviceBoundary_list[-]) "name as 'serviceBoundary'"; + variant (warnings_list) "untagged"; + variant (warnings_list[-]) "name as 'warnings'"; + variant (notLost_list) "untagged"; +}; + + +type record CommonRequestPattern +{ + Path path optional, + Service service optional, + record of NotLost notLost_list +} +with { + variant "untagged"; + variant (notLost_list) "untagged"; +}; + + +type record CommonResponsePattern +{ + record of Warnings warnings_list, + Path path, + record of NotLost notLost_list +} +with { + variant "untagged"; + variant (warnings_list) "untagged"; + variant (warnings_list[-]) "name as 'warnings'"; + variant (notLost_list) "untagged"; +}; + + +type record RequestLocation +{ + record length(1 .. infinity) of Location location_list +} +with { + variant "untagged"; + variant (location_list) "untagged"; + variant (location_list[-]) "name as 'location'"; +}; + + +type record Location +{ + XSD.Token id, + XSD.NMTOKEN profile optional, + record length(1 .. infinity) of ExtensionPoint extensionPoint_list +} +with { + variant "name as uncapitalized"; + variant "element"; + variant (id) "attribute"; + variant (profile) "attribute"; + variant (extensionPoint_list) "untagged"; +}; + + +type record LocationInformation +{ + XSD.NMTOKEN profile optional, + record length(1 .. infinity) of ExtensionPoint extensionPoint_list +} +with { + variant "name as uncapitalized"; + variant (profile) "attribute"; + variant (extensionPoint_list) "untagged"; +}; + + +type record ServiceBoundary_1 +{ + record length(1 .. infinity) of ServiceBoundary serviceBoundary_list +} +with { + variant "untagged"; + variant (serviceBoundary_list) "untagged"; + variant (serviceBoundary_list[-]) "name as 'serviceBoundary'"; +}; + + +type LocationInformation ServiceBoundary +with { + variant "name as uncapitalized"; + variant "element"; +}; + + +type record ServiceBoundaryReference +{ + XSD.Token key, + AppUniqueString source, + record of NotLost notLost_list +} +with { + variant "name as uncapitalized"; + variant "element"; + variant (key) "attribute"; + variant (source) "attribute"; + variant (notLost_list) "untagged"; +}; + + +type record Path +{ + record length(1 .. infinity) of Via via_list +} +with { + variant "name as uncapitalized"; + variant "element"; + variant (via_list) "untagged"; + variant (via_list[-]) "name as 'via'"; +}; + + +type record Via +{ + AppUniqueString source, + record of NotLost notLost_list +} +with { + variant "name as uncapitalized"; + variant "element"; + variant (source) "attribute"; + variant (notLost_list) "untagged"; +}; + + +type record LocationUsed_1 +{ + LocationUsed locationUsed optional +} +with { + variant "untagged"; +}; + + +type record LocationUsed +{ + XSD.Token id +} +with { + variant "name as uncapitalized"; + variant "element"; + variant (id) "attribute"; +}; + + +type record of XSD.QName QnameList +with { + variant "name as uncapitalized"; + variant "list"; +}; + + +type record Mapping +{ + Lang lang optional, + /* xs:simpleType> + + + + + + + + + + + + + Date: Wed, 18 Jul 2018 12:15:10 +0200 Subject: [PATCH 61/72] Create first ECRF test --- ccsrc/Protocols/Held/held_codec.cc | 12 +- ccsrc/Protocols/Http/http_codec.cc | 36 ++++- ccsrc/Protocols/Lost/lost_codec.cc | 78 ++++++++++ ccsrc/Protocols/Lost/lost_codec.hh | 23 +++ ccsrc/Protocols/Lost/lost_codec_factory.hh | 46 ++++++ ttcn/AtsNg112/AtsNg112_TestCases.ttcn | 40 ++++-- .../LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn | 15 +- .../LibNg112/ttcn/LibNg112_Pixits.ttcn | 23 ++- .../xsd/urn_ietf_params_xml_ns_lost1.ttcn | 35 ++--- ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn | 12 +- .../LibItsHttp_XmlMessageBodyTypes.ttcn | 57 +++++--- .../LibItsHttp_XmlTemplates.ttcn | 136 +++++++++++++++++- 12 files changed, 433 insertions(+), 80 deletions(-) create mode 100644 ccsrc/Protocols/Lost/lost_codec.cc create mode 100644 ccsrc/Protocols/Lost/lost_codec.hh create mode 100644 ccsrc/Protocols/Lost/lost_codec_factory.hh diff --git a/ccsrc/Protocols/Held/held_codec.cc b/ccsrc/Protocols/Held/held_codec.cc index 8b65a0f..63aded1 100644 --- a/ccsrc/Protocols/Held/held_codec.cc +++ b/ccsrc/Protocols/Held/held_codec.cc @@ -59,13 +59,13 @@ int held_codec::decode (const OCTETSTRING& p_data, LibItsHttp__XmlMessageBodyTyp } if (it->second.find("second.find("second.find("(xml_body.raw())); + } else if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_findServiceRequest)) { + std::map > >::const_iterator it = _codecs.find("lost"); + if (it != _codecs.cend()) { + loggers::get_instance().log("http_codec::encode_body: Call 'lost_codec'"); + _codecs["lost"]->encode((Record_Type&)xml_body, p_encoding_buffer); + } else { + loggers::get_instance().warning("http_codec::encode_body: Unsupported HTTP codec, use raw field as default"); + p_encoding_buffer = OCTETSTRING(xml_body.raw().lengthof(), (unsigned char*)static_cast(xml_body.raw())); + // TODO Add new HTTP message codec here + } } else { std::map > >::const_iterator it = _codecs.find("held"); if (it != _codecs.cend()) { @@ -431,7 +441,23 @@ int http_codec::decode_body(TTCN_Buffer& decoding_buffer, LibItsHttp__MessageBod loggers::get_instance().warning("http_codec::decode_body: No codec for HELD"); xml_body.raw() = CHARSTRING(body.lengthof(), (char*)static_cast(body)); } - message_body.xml__body() = xml_body; + message_body.xml__body() = xml_body; + } else if (p["decode_str"].find("xmlns=\"urn:ietf:params:xml:ns:lost1\">") != std::string::npos) { + loggers::get_instance().log("http_codec::decode_body: Find 'urn:ietf:params:xml:ns:loat1'"); + if (_codecs["lost"].get() != nullptr) { + loggers::get_instance().log("http_codec::decode_body: Call 'lost_codec'"); + if (_codecs["lost"]->decode(body, (Record_Type&)xml_body, &p) == -1) { + loggers::get_instance().warning("http_codec::decode_body: Failed to decode LOST message"); + xml_body.raw() = CHARSTRING(body.lengthof(), (char*)static_cast(body)); + } else { + loggers::get_instance().log_msg("http_codec::decode_body: Decoded message:", xml_body); + message_body.xml__body() = xml_body; + } + } else { + loggers::get_instance().warning("http_codec::decode_body: No codec for LOST"); + xml_body.raw() = CHARSTRING(body.lengthof(), (char*)static_cast(body)); + } + message_body.xml__body() = xml_body; } } else if (p["decode_str"].find("") != std::string::npos) { // Try to identify HTML loggers::get_instance().log("http_codec::decode_body: Find html message"); @@ -494,17 +520,17 @@ void http_codec::set_payload_codecs(const std::string& p_codecs) { // Extract codecs try { - std::regex rgx("(\\w+)(:(\\w+))*(;((\\w+)(:(\\w+))*))*"); + std::regex rgx("(\\w+):(\\w+)(;(\\w+):(\\w+))*"); std::sregex_iterator begin(p_codecs.cbegin(), p_codecs.cend(), rgx); std::sregex_iterator end = std::sregex_iterator(); // E.g. 9 - xml - :held_codec - held_codec - ;html:html_codec - html:html_codec - html - :html_codec - html_codec for (std::sregex_iterator it = begin; it != end; ++it) { std::smatch m = *it; loggers::get_instance().log("http_codec::set_payload_codecs: %d - %s - %s - %s - %s - %s - %s - %s - %s", m.size(), m[1].str().c_str(), m[2].str().c_str(), m[3].str().c_str(), m[4].str().c_str(), m[5].str().c_str(), m[6].str().c_str(), m[7].str().c_str(), m[8].str().c_str()); - for (unsigned int j = 1; j < m.size() - 1; j += 5) { // Exclude m[0] - loggers::get_instance().log("http_codec::set_payload_codecs: insert (%s, %s), j = %d", m[j].str().c_str(), m[j + 2].str().c_str(), j); + for (unsigned int j = 1; j < m.size() - 1; j += 3) { // Exclude m[0] + loggers::get_instance().log("http_codec::set_payload_codecs: insert (%s, %s), j = %d", m[j].str().c_str(), m[j + 1].str().c_str(), j); std::string key(m[j].str()); - _codecs.insert(std::make_pair(key, std::unique_ptr >(codec_stack_builder::get_instance()->get_codec(m[j + 2].str().c_str())))); + _codecs.insert(std::make_pair(key, std::unique_ptr >(codec_stack_builder::get_instance()->get_codec(m[j + 1].str().c_str())))); } // End of 'for' statement } // End of 'for' statement //loggers::get_instance().log("http_codec::set_payload_codecs: _codecs length=%d", _codecs.size()); diff --git a/ccsrc/Protocols/Lost/lost_codec.cc b/ccsrc/Protocols/Lost/lost_codec.cc new file mode 100644 index 0000000..edf0643 --- /dev/null +++ b/ccsrc/Protocols/Lost/lost_codec.cc @@ -0,0 +1,78 @@ +#include +#include +#include + +#include "lost_codec_factory.hh" + +#include "loggers.hh" + +#include "LibItsHttp_XmlMessageBodyTypes.hh" + +#include "urn_ietf_params_xml_ns_lost1.hh" + +int lost_codec::encode (const LibItsHttp__XmlMessageBodyTypes::XmlBody& msg, OCTETSTRING& data) +{ + loggers::get_instance().log_msg(">>> lost_codec::encode: ", (const Base_Type&)msg); + + TTCN_EncDec::clear_error(); + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); + TTCN_Buffer encoding_buffer; + + if (msg.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_findServiceRequest)) { + const urn__ietf__params__xml__ns__lost1::FindService& find_service = msg.findServiceRequest(); + loggers::get_instance().log_msg("lost_codec::encode: Process FindService", (const Base_Type&)find_service); + find_service.encode(urn__ietf__params__xml__ns__lost1::FindService_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + } else if (msg.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_findServiceResponse)) { + const urn__ietf__params__xml__ns__lost1::FindServiceResponse& find_service_response = msg.findServiceResponse(); + loggers::get_instance().log_msg("lost_codec::encode: Process FindServiceResponse", (const Base_Type&)find_service_response); + find_service_response.encode(urn__ietf__params__xml__ns__lost1::FindServiceResponse_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + } else { + loggers::get_instance().warning("lost_codec::encode: Unsupported variant"); + return -1; + } + data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()); + loggers::get_instance().log_msg("lost_codec::decode: After encoding: ", data); + + loggers::get_instance().log("<<< lost_codec::encode"); + return 0; +} + +int lost_codec::decode (const OCTETSTRING& p_data, LibItsHttp__XmlMessageBodyTypes::XmlBody& msg, params* p_params) +{ + loggers::get_instance().log_msg(">>> lost_codec::decode: p_data=", p_data); + + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); + TTCN_EncDec::clear_error(); + TTCN_Buffer decoding_buffer(p_data); + + // Sanity checks + params::const_iterator it; + if (p_params == nullptr) { + loggers::get_instance().warning("lost_codec::decode: Failed to access p_params (null pointer)"); + return -1; + } else { + it = p_params->find("decode_str"); + if (it == p_params->cend()) { + loggers::get_instance().warning("lost_codec::decode: Failed to access p_params item (decode_str)"); + return -1; + } + } + + if (it->second.find("second.find(" +{ +public: + explicit lost_codec() : codec() { }; + virtual ~lost_codec() { }; + + virtual int encode (const LibItsHttp__XmlMessageBodyTypes::XmlBody&, OCTETSTRING& data); + virtual int decode (const OCTETSTRING& p_data, LibItsHttp__XmlMessageBodyTypes::XmlBody&, params* p_params = NULL); + +}; // End of class lost_codec diff --git a/ccsrc/Protocols/Lost/lost_codec_factory.hh b/ccsrc/Protocols/Lost/lost_codec_factory.hh new file mode 100644 index 0000000..5015116 --- /dev/null +++ b/ccsrc/Protocols/Lost/lost_codec_factory.hh @@ -0,0 +1,46 @@ +/*! + * \file lost_codec_factory.hh + * \brief Header file for ITS LOST/IP protocol codec factory. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "codec_stack_builder.hh" + +#include "lost_codec.hh" + +class Record_Type; //! TITAN forward declaration + +/*! + * \class lost_codec_factory + * \brief This class provides a factory class to create an lost_codec class instance + */ +class lost_codec_factory: public codec_factory { + static lost_codec_factory _f; //! Reference to the unique instance of this class +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the lost_codec_factory class + * \remark The LOST/IP codec identifier is LOST + */ + lost_codec_factory() { + // register factory + codec_stack_builder::register_codec_factory("lost_codec", this); + }; + /*! + * \fn codec* create_codec(const std::string & type, const std::string & param); + * \brief Create the codecs stack based on the provided codecs stack description + * \param[in] p_type The provided codecs stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + * \inline + */ + inline virtual codec* create_codec() { + return (codec*)new lost_codec(); + }; +}; // End of class lost_codec_factory diff --git a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn index c5b6016..99b7b70 100644 --- a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn +++ b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn @@ -39,11 +39,17 @@ module AtsNg112_TestCases { with { extension "File:../xsd/RFC3863_pidf.xsd"; } - + + // RFC5222 + import from urn_ietf_params_xml_ns_lost1 language "XSD" all + with { + extension "File:../xsd/RFC5222_lost.xsd"; + } + // OpenGIS - import from urn_ietf_params_xml_ns_pidf_geopriv10_geoShape language "XSD" all + import from http_www_opengis_net_pidflo_1_0 language "XSD" all with { - extension "File:../xsd/OGC_GLM_Geoshape.xsd"; + extension "File:../xsd/GLM_pidf_lo_shape.xsd"; } import from http_www_opengis_net_gml language "XSD" all with { @@ -451,17 +457,26 @@ module AtsNg112_TestCases { // Preamble f_init_default_headers_list(v_headers); - f_remove_headears_list({ c_header_accept }, v_headers); httpPort.send( m_http_request( m_http_request_post( - PICS_ECRF_URI, + PICS_ECRF_REQUEST_URIs[0], v_headers, m_http_message_body_xml( - m_body_xml_location_request( - m_locationRequest( - m_device({ PX_DEVICE_URI_TEL }).elem_list - ))) + m_body_xml_find_service_request( + m_find_service_request( + { + m_location( + PX_LOST_ID, + { m_extension_point( { m_notLost(encvalue_unichar(valueof(m_point(PX_LOST_NO_LOST, PX_SRS_NAME, "point1")))) } ) }, + "geodetic-2d" // TODO Use a Pixit + ) + }, + { m_notLost(encvalue_unichar(valueof(m_point(PX_LOST_NO_LOST, PX_SRS_NAME, "point1")))) }, + PX_LOST_SERVICE, + true, + value_ + ))) ))); f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success); @@ -472,9 +487,10 @@ module AtsNg112_TestCases { mw_http_response( mw_http_response_ok( mw_http_message_body_xml( - mw_body_xml_location_response( - mw_locationResponse - ))))) { + mw_body_xml_find_service_response( + mw_find_service_response( + { mw_mapping } + )))))) { tc_ac.stop; // TODO Need to decode content log("*** " & testcasename() & ": PASS: IUT successfully responds with a Point ***"); diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn index c710754..dac202f 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn @@ -10,7 +10,7 @@ module LibNg112_Pics { /** * @desc Has the IUT the role of ECRF? */ - modulepar boolean PICS_ECRF_IUT := false; + modulepar boolean PICS_ECRF_IUT := true; /** * @desc Does the IUT support HTTP POST request? @@ -27,15 +27,26 @@ module LibNg112_Pics { */ modulepar boolean PICS_SERVICE_LOST := true; + /** + * @desc + */ + modulepar charstring PICS_LIS_URI := "/service"; + /** * @desc HTTP POST Uris * @see RFC 2616 Hypertext Transfer Protocol -- HTTP/1.1 */ modulepar request_uri_list PICS_LIS_REQUEST_URIs := { "/t/9rk8l-1531130342/post", "/t/r143f-1528105031/post", "/t/6ouem-1531201238/post" }; - + /** * @desc */ modulepar charstring PICS_ECRF_URI := "/service"; + /** + * @desc HTTP POST Uris + * @see RFC 2616 Hypertext Transfer Protocol -- HTTP/1.1 + */ + modulepar request_uri_list PICS_ECRF_REQUEST_URIs := { "/t/0ahy0-1531830377/post" }; + } // End of module LibNg112_Pics diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn index 29339ea..bab5ffc 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn @@ -2,11 +2,17 @@ module LibNg112_Pixits { import from XSD all; + // RFC5222 + import from urn_ietf_params_xml_ns_lost1 language "XSD" all + with { + extension "File:../xsd/RFC5222_lost.xsd"; + } + // OpenGIS - import from urn_ietf_params_xml_ns_pidf_geopriv10_geoShape language "XSD" all - with { - extension "File:../xsd/OGC_GLM_Geoshape.xsd"; - } + import from http_www_opengis_net_pidflo_1_0 language "XSD" all + with { + extension "File:../xsd/GLM_pidf_lo_shape.xsd"; + } import from http_www_opengis_net_gml language "XSD" all with { extension "File:../xsd/gmlBase.xsd"; @@ -49,7 +55,14 @@ module LibNg112_Pixits { modulepar XSD.AnyURI PX_CIRCLE_UOM := "urn:ogc:def:uom:EPSG::9001"; modulepar XSD.Double PX_CIRCLE_BASE := 23.600000381469727; - + modulepar XSD.AnyURI PX_SRS_NAME := "urn:ogc:def:crs:EPSG::4326"; + modulepar XSD.Token PX_LOST_ID := "6020688f1ce1896d"; + + modulepar XSD.AnyURI PX_LOST_SERVICE := "urn:service:sos.police"; + + modulepar DoubleList PX_LOST_NO_LOST := { 48.2153879, 16.2903 }; + + } // End of module LibNg112_Pixits diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_lost1.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_lost1.ttcn index fd9616d..191bf87 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_lost1.ttcn +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_lost1.ttcn @@ -343,21 +343,18 @@ with { type record Mapping { Lang lang optional, - /* xs:simpleType> - - - - - - - - - - - - - Date: Wed, 18 Jul 2018 12:19:41 +0200 Subject: [PATCH 62/72] Update to optimize Dockerfile --- docker/Dockerfile | 233 ++++++++++++++++++++++------------------------ 1 file changed, 113 insertions(+), 120 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index d44f69f..038ace0 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,120 +1,113 @@ -FROM ubuntu:18.04 - -MAINTAINER ETSI STF 549 - -LABEL description="STF549 Docker Image" - -ENV TERM=xterm -ENV HOSTNAME docker-titan-STF549 - -RUN echo "docker-titan-STF549" > /etc/hostname \ - && echo "root:etsi" | chpasswd \ - && DEBIAN_FRONTEND=noninteractive apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ - && DEBIAN_FRONTEND=noninteractive apt-get install software-properties-common -y \ - && DEBIAN_FRONTEND=noninteractive add-apt-repository ppa:linuxuprising/java -y \ - && DEBIAN_FRONTEND=noninteractive apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated install -y \ - autoconf \ - bison \ - build-essential \ - cmake \ - curl \ - dos2unix \ - doxygen \ - emacs \ - expect \ - flex \ - g++-8 \ - gcc-8 \ - gdb \ - git-core \ - gnutls-bin \ - graphviz \ - inetutils-ping \ - libglib2.0-dev \ - libpcap-dev \ - libgcrypt-dev \ - libncurses5-dev \ - libssl-dev \ - libtool-bin \ - libtool \ - libwireshark-dev \ - libxml2-dev \ - lsof \ - ntp \ - openssh-server \ - pkg-config \ - qt5-default \ - qtmultimedia5-dev \ - libqt5svg5-dev \ - subversion \ - sudo \ - sshpass \ - tcpdump \ - texlive-font-utils \ - tshark \ - tzdata \ - valgrind \ - vim \ - vsftpd \ - xutils-dev \ - tree \ - unzip \ - wget \ - xsltproc \ - && DEBIAN_FRONTEND=noninteractive apt-get autoremove --purge -y \ - && DEBIAN_FRONTEND=noninteractive apt-get autoclean \ - && useradd --create-home --shell /bin/bash --groups sudo etsi \ - && echo "etsi:etsi" | chpasswd \ - && adduser etsi sudo \ - && cd /home/etsi \ - && echo "" >> /home/etsi/.bashrc \ - && echo "export HOME=/home/etsi" >> /home/etsi/.bashrc \ - && echo "export LD_LIBRARY_PATH=/home/etsi/dev/etsi_emcom/lib:$LD_LIBRARY_PATH" >> /home/etsi/.bashrc \ - && echo "export PATH=/home/etsi/bin:$PATH" >> /home/etsi/.bashrc \ - && echo "cd /home/etsi" >> /home/etsi/.bashrc \ - && echo ". ./devenv.bash" >> /home/etsi/.bashrc \ - && . /home/etsi/.bashrc \ - && mkdir -p bin lib include tmp frameworks docs man dev \ - && chown etsi:etsi bin lib include tmp frameworks docs man dev \ - && echo "etsi ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers - -USER etsi - -RUN cd /home/etsi/dev \ - && git clone https://forge.etsi.org/gitlab/emergency-communications/NG112 ./STF549_Ng112 \ - && cd /home/etsi/dev/STF549_Ng112 \ - && git checkout TTCN_3_Developments \ - && cd /home/etsi/dev/STF549_Ng112/ttcn \ - && svn co --username svnusers --password svnusers --non-interactive --trust-server-cert https://oldforge.etsi.org/svn/LibSip/trunk ./LibSip \ - && svn co --username svnusers --password svnusers --non-interactive --trust-server-cert https://oldforge.etsi.org/svn/LibCommon/trunk/ttcn ./LibCommon \ - && svn co --username svnusers --password svnusers --non-interactive --trust-server-cert https://oldforge.etsi.org/svn/LibIts/branches/STF525/ttcn/Http ./LibHttp \ - && cd /home/etsi/dev/STF549_Ng112/scripts \ - && chmod 775 *.bash devenv.bash.* \ - && cd /home/etsi \ - && ln -sf /home/etsi/dev/STF549_Ng112/scripts/devenv.bash.ubuntu /home/etsi/devenv.bash \ - && ls -ltr /home/etsi \ - && export HOME=/home/etsi \ - && cd /home/etsi/frameworks \ - && git clone https://github.com/YannGarcia/osip.git ./osip \ - && cd osip \ - && ./autogen.sh \ - && ./configure --prefix=/home/etsi \ - && make && make install \ - && cd /home/etsi/frameworks \ - && wget 'http://ftp.halifax.rwth-aachen.de/eclipse//technology/epp/downloads/release/oxygen/2/eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz' -Oeclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ - && tar -zxvf ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ - && rm -f ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ - && . /home/etsi/devenv.bash \ - && cd /home/etsi/dev/STF549_Ng112/scripts \ - && ./build_titan.bash \ - && . /home/etsi/devenv.bash \ - && ./update_emcom_project.bash \ - && cd ${HOME}/dev/etsi_emcom/src/AtsNg112/objs \ - && ../bin/ng112.bash \ - && ../bin/run_all.bash - -CMD ["/bin/bash"] - -# That's all Floks +FROM ubuntu:18.04 + +MAINTAINER ETSI STF 549 + +LABEL description="STF549 Docker Image" + +ENV TERM=xterm +ENV HOSTNAME docker-titan-STF549 + +RUN echo "docker-titan-STF549" > /etc/hostname \ + && echo "root:etsi" | chpasswd \ + && DEBIAN_FRONTEND=noninteractive apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ + && DEBIAN_FRONTEND=noninteractive apt-get install software-properties-common -y \ + && DEBIAN_FRONTEND=noninteractive add-apt-repository ppa:linuxuprising/java -y \ + && DEBIAN_FRONTEND=noninteractive apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated install -y \ + autoconf \ + bison \ + build-essential \ + cmake \ + curl \ + dos2unix \ + doxygen \ + emacs \ + expect \ + flex \ + g++-8 \ + gcc-8 \ + gdb \ + git-core \ + gnutls-bin \ + graphviz \ + inetutils-ping \ + libglib2.0-dev \ + libpcap-dev \ + libgcrypt-dev \ + libncurses5-dev \ + libssl-dev \ + libtool-bin \ + libtool \ + libwireshark-dev \ + libxml2-dev \ + lsof \ + ntp \ + openssh-server \ + pkg-config \ + qt5-default \ + qtmultimedia5-dev \ + libqt5svg5-dev \ + subversion \ + sudo \ + sshpass \ + tcpdump \ + texlive-font-utils \ + tshark \ + tzdata \ + valgrind \ + vim \ + vsftpd \ + xutils-dev \ + tree \ + unzip \ + wget \ + xsltproc \ + && DEBIAN_FRONTEND=noninteractive apt-get autoremove --purge -y \ + && DEBIAN_FRONTEND=noninteractive apt-get autoclean \ + && useradd --create-home --shell /bin/bash --groups sudo etsi \ + && echo "etsi:etsi" | chpasswd \ + && adduser etsi sudo \ + && cd /home/etsi \ + && echo "" >> /home/etsi/.bashrc \ + && echo "export HOME=/home/etsi" >> /home/etsi/.bashrc \ + && echo "export LD_LIBRARY_PATH=/home/etsi/dev/etsi_emcom/lib:$LD_LIBRARY_PATH" >> /home/etsi/.bashrc \ + && echo "export PATH=/home/etsi/bin:$PATH" >> /home/etsi/.bashrc \ + && echo "cd /home/etsi" >> /home/etsi/.bashrc \ + && echo ". ./devenv.bash" >> /home/etsi/.bashrc \ + && . /home/etsi/.bashrc \ + && mkdir -p bin lib include tmp frameworks docs man dev \ + && chown etsi:etsi bin lib include tmp frameworks docs man dev \ + && echo "etsi ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers + +USER etsi + +RUN cd /home/etsi/dev \ + && git clone https://forge.etsi.org/gitlab/emergency-communications/NG112 ./STF549_Ng112 \ + && cd /home/etsi/dev/STF549_Ng112 \ + && git checkout TTCN_3_Developments \ + && cd /home/etsi/dev/STF549_Ng112/ttcn \ + && svn co --username svnusers --password svnusers --non-interactive --trust-server-cert https://oldforge.etsi.org/svn/LibSip/trunk ./LibSip \ + && svn co --username svnusers --password svnusers --non-interactive --trust-server-cert https://oldforge.etsi.org/svn/LibCommon/trunk/ttcn ./LibCommon \ + && svn co --username svnusers --password svnusers --non-interactive --trust-server-cert https://oldforge.etsi.org/svn/LibIts/branches/STF525/ttcn/Http ./LibHttp \ + && cd /home/etsi/dev/STF549_Ng112/scripts \ + && chmod 775 *.bash devenv.bash.* \ + && cd /home/etsi \ + && ln -sf /home/etsi/dev/STF549_Ng112/scripts/devenv.bash.ubuntu /home/etsi/devenv.bash \ + && ls -ltr /home/etsi \ + && export HOME=/home/etsi \ + && cd /home/etsi/frameworks \ + && git clone https://github.com/YannGarcia/osip.git ./osip \ + && cd osip \ + && ./autogen.sh \ + && ./configure --prefix=/home/etsi \ + && make && make install \ + && cd /home/etsi/frameworks \ + && wget 'http://ftp.halifax.rwth-aachen.de/eclipse//technology/epp/downloads/release/oxygen/2/eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz' -Oeclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ + && tar -zxvf ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ + && rm -f ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ + && . /home/etsi/devenv.bash \ + && cd /home/etsi/dev/STF549_Ng112/scripts \ + && ./build_titan.bash + +# That's all Floks -- GitLab From 7be52ae02d651bb28dee7a765d502022ed8bf2a0 Mon Sep 17 00:00:00 2001 From: Yann Garcia Date: Wed, 18 Jul 2018 12:21:24 +0200 Subject: [PATCH 63/72] Update run-container.sh --- docker/run-container.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docker/run-container.sh b/docker/run-container.sh index e1b7f49..93f8a0f 100755 --- a/docker/run-container.sh +++ b/docker/run-container.sh @@ -5,7 +5,12 @@ #set -e #set -vx -docker run -it --rm stf549_ng112:latest /bin/bash +docker run stf549_ng112:latest "/bin/bash" \ + -c "source /home/etsi/devenv.bash \ + && /home/etsi/dev/STF549_Ng112/scripts/update_emcom_project.bash \ + && cd ${HOME}/dev/etsi_emcom/src/AtsNg112/objs \ + && ../bin/ng112.bash \ + && ../bin/run_all.bash" # That's all Floks exit 0 -- GitLab From 9807b277b4bcf9b77c9052b40793c3966b4a42c3 Mon Sep 17 00:00:00 2001 From: Yann Garcia Date: Wed, 18 Jul 2018 12:23:08 +0200 Subject: [PATCH 64/72] Update build-container.sh --- docker/build-container.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/build-container.sh b/docker/build-container.sh index 5590d2e..a1774f4 100755 --- a/docker/build-container.sh +++ b/docker/build-container.sh @@ -8,7 +8,7 @@ DOCKER_FILE=./Dockerfile if [ -f ${DOCKER_FILE} ] then - docker build --tag stf549_ng112 --force-rm . + docker build --tag stf549_ng112 . if [ "$?" != "0" ] then echo "Docker build failed: $?" -- GitLab From 916bd59db0db051215582a5a514494987c05d554 Mon Sep 17 00:00:00 2001 From: Yann Garcia Date: Wed, 18 Jul 2018 12:24:08 +0200 Subject: [PATCH 65/72] Update build-container.sh --- docker/build-container.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/build-container.sh b/docker/build-container.sh index a1774f4..549a490 100755 --- a/docker/build-container.sh +++ b/docker/build-container.sh @@ -8,7 +8,7 @@ DOCKER_FILE=./Dockerfile if [ -f ${DOCKER_FILE} ] then - docker build --tag stf549_ng112 . + docker build --tag stf549_ng112 . # --force-rm if [ "$?" != "0" ] then echo "Docker build failed: $?" -- GitLab From 922367bf475cf52d3522184f2e8c513a9b4ec973 Mon Sep 17 00:00:00 2001 From: garciay Date: Wed, 18 Jul 2018 14:22:45 +0200 Subject: [PATCH 66/72] Create first ECRF TTCN-3 test --- .../xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn | 2 +- .../xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn | 5 ++++- .../xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn | 2 +- .../LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn | 10 +++++----- .../xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn | 2 +- ..._ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn | 2 +- ...urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn | 2 +- 7 files changed, 14 insertions(+), 11 deletions(-) diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn index 3bdcf2b..3250680 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn @@ -14,7 +14,7 @@ // References: // Rev: // Prodnr: -// Updated: Mon Jul 2 13:12:58 2018 +// Updated: Wed Jul 18 13:53:23 2018 // Contact: http://ttcn.ericsson.se // //////////////////////////////////////////////////////////////////////////////// diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn index 52ab380..f920beb 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn @@ -14,7 +14,7 @@ // References: // Rev: // Prodnr: -// Updated: Mon Jul 2 13:12:58 2018 +// Updated: Wed Jul 18 13:53:23 2018 // Contact: http://ttcn.ericsson.se // //////////////////////////////////////////////////////////////////////////////// @@ -109,6 +109,9 @@ type record of enumerated locationURI } LocationTypeList with { + variant ([-]) ; + variant ([-]) ; + variant ([-]) ; variant "name as uncapitalized"; variant "list"; }; diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn index 56cbddf..dbcf055 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn @@ -14,7 +14,7 @@ // References: // Rev: // Prodnr: -// Updated: Mon Jul 2 13:12:58 2018 +// Updated: Wed Jul 18 13:53:23 2018 // Contact: http://ttcn.ericsson.se // //////////////////////////////////////////////////////////////////////////////// diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn index a077855..e15272f 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn @@ -14,7 +14,7 @@ // References: // Rev: // Prodnr: -// Updated: Mon Jul 2 13:12:58 2018 +// Updated: Wed Jul 18 13:53:23 2018 // Contact: http://ttcn.ericsson.se // //////////////////////////////////////////////////////////////////////////////// @@ -151,10 +151,10 @@ with { /* Global Attributes */ -/* This attribute may be used on any element within an optional */ -/* PIDF extension to indicate that the corresponding element must */ -/* be understood by the PIDF processor if the enclosing optional */ -/* element is to be handled. */ +/* This attribute may be used on any element within an optional + PIDF extension to indicate that the corresponding element must + be understood by the PIDF processor if the enclosing optional + element is to be handled. */ type XSD.Boolean MustUnderstand with { variant "defaultForEmpty as c_defaultForEmpty_1"; diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn index c405e1a..5539bcc 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn @@ -14,7 +14,7 @@ // References: // Rev: // Prodnr: -// Updated: Mon Jul 2 13:12:58 2018 +// Updated: Wed Jul 18 13:53:23 2018 // Contact: http://ttcn.ericsson.se // //////////////////////////////////////////////////////////////////////////////// diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn index c3a4637..af01be9 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn @@ -14,7 +14,7 @@ // References: // Rev: // Prodnr: -// Updated: Mon Jul 2 13:12:58 2018 +// Updated: Wed Jul 18 13:53:23 2018 // Contact: http://ttcn.ericsson.se // //////////////////////////////////////////////////////////////////////////////// diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn index 25c17b7..07b6cb2 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn @@ -14,7 +14,7 @@ // References: // Rev: // Prodnr: -// Updated: Mon Jul 2 13:12:58 2018 +// Updated: Wed Jul 18 13:53:23 2018 // Contact: http://ttcn.ericsson.se // //////////////////////////////////////////////////////////////////////////////// -- GitLab From 55d430bc3b66414b45f484ae2e80e94d65e7177b Mon Sep 17 00:00:00 2001 From: garciay Date: Thu, 19 Jul 2018 09:23:49 +0200 Subject: [PATCH 67/72] Remove useless code --- .../LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn | 3 --- 1 file changed, 3 deletions(-) diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn index f920beb..09b1e63 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn @@ -109,9 +109,6 @@ type record of enumerated locationURI } LocationTypeList with { - variant ([-]) ; - variant ([-]) ; - variant ([-]) ; variant "name as uncapitalized"; variant "list"; }; -- GitLab From 921a35cd27ea3b730f280ae639151484f50d8c96 Mon Sep 17 00:00:00 2001 From: garciay Date: Thu, 19 Jul 2018 09:27:58 +0200 Subject: [PATCH 68/72] Optimize Dockerfile --- docker/Dockerfile | 58 +++++++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 038ace0..611fe5d 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -7,13 +7,11 @@ LABEL description="STF549 Docker Image" ENV TERM=xterm ENV HOSTNAME docker-titan-STF549 -RUN echo "docker-titan-STF549" > /etc/hostname \ - && echo "root:etsi" | chpasswd \ - && DEBIAN_FRONTEND=noninteractive apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ +RUN DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install software-properties-common -y \ - && DEBIAN_FRONTEND=noninteractive add-apt-repository ppa:linuxuprising/java -y \ - && DEBIAN_FRONTEND=noninteractive apt-get update \ + && DEBIAN_FRONTEND=noninteractive add-apt-repository ppa:linuxuprising/java -y + +RUN DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated install -y \ autoconf \ bison \ @@ -65,10 +63,16 @@ RUN echo "docker-titan-STF549" > /etc/hostname \ xsltproc \ && DEBIAN_FRONTEND=noninteractive apt-get autoremove --purge -y \ && DEBIAN_FRONTEND=noninteractive apt-get autoclean \ - && useradd --create-home --shell /bin/bash --groups sudo etsi \ + && rm -rf /var/lib/apt/lists/* + +RUN echo "docker-titan-STF549" > /etc/hostname \ + && echo "root:etsi" | chpasswd + +RUN useradd --create-home --shell /bin/bash --groups sudo etsi \ && echo "etsi:etsi" | chpasswd \ - && adduser etsi sudo \ - && cd /home/etsi \ + && adduser etsi sudo + +RUN cd /home/etsi \ && echo "" >> /home/etsi/.bashrc \ && echo "export HOME=/home/etsi" >> /home/etsi/.bashrc \ && echo "export LD_LIBRARY_PATH=/home/etsi/dev/etsi_emcom/lib:$LD_LIBRARY_PATH" >> /home/etsi/.bashrc \ @@ -80,12 +84,28 @@ RUN echo "docker-titan-STF549" > /etc/hostname \ && chown etsi:etsi bin lib include tmp frameworks docs man dev \ && echo "etsi ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers +COPY . /home/etsi/dev/STF549_Ng112/ +RUN chown -R etsi /home/etsi/dev/STF549_Ng112/ + +COPY . /home/etsi/dev/STF549_Ng112/ +RUN chown -R etsi /home/etsi/dev/STF549_Ng112/ + USER etsi + +RUN cd /home/etsi/frameworks \ + && git clone https://github.com/YannGarcia/osip.git ./osip \ + && cd osip \ + && ./autogen.sh \ + && ./configure --prefix=/home/etsi \ + && make && make install + +RUN cd /home/etsi/frameworks \ + && wget -q 'http://ftp.halifax.rwth-aachen.de/eclipse//technology/epp/downloads/release/oxygen/2/eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz' -Oeclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ + && tar -zxvf ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ + && rm -f ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz -RUN cd /home/etsi/dev \ - && git clone https://forge.etsi.org/gitlab/emergency-communications/NG112 ./STF549_Ng112 \ - && cd /home/etsi/dev/STF549_Ng112 \ - && git checkout TTCN_3_Developments \ +RUN cd /home/etsi/dev/STF549_Ng112 \ + && ls \ && cd /home/etsi/dev/STF549_Ng112/ttcn \ && svn co --username svnusers --password svnusers --non-interactive --trust-server-cert https://oldforge.etsi.org/svn/LibSip/trunk ./LibSip \ && svn co --username svnusers --password svnusers --non-interactive --trust-server-cert https://oldforge.etsi.org/svn/LibCommon/trunk/ttcn ./LibCommon \ @@ -96,18 +116,8 @@ RUN cd /home/etsi/dev \ && ln -sf /home/etsi/dev/STF549_Ng112/scripts/devenv.bash.ubuntu /home/etsi/devenv.bash \ && ls -ltr /home/etsi \ && export HOME=/home/etsi \ - && cd /home/etsi/frameworks \ - && git clone https://github.com/YannGarcia/osip.git ./osip \ - && cd osip \ - && ./autogen.sh \ - && ./configure --prefix=/home/etsi \ - && make && make install \ - && cd /home/etsi/frameworks \ - && wget 'http://ftp.halifax.rwth-aachen.de/eclipse//technology/epp/downloads/release/oxygen/2/eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz' -Oeclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ - && tar -zxvf ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ - && rm -f ./eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz \ && . /home/etsi/devenv.bash \ && cd /home/etsi/dev/STF549_Ng112/scripts \ - && ./build_titan.bash + && ./build_titan.bash # That's all Floks -- GitLab From 93403cbcf3b349e6b6bb77432e5e4db5e89ac421 Mon Sep 17 00:00:00 2001 From: garciay Date: Thu, 19 Jul 2018 14:52:22 +0200 Subject: [PATCH 69/72] Add missing package to rebuild Wireshark --- docker/Dockerfile | 1 + vagrant/provisioner.bash | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 611fe5d..0cfc2cf 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -44,6 +44,7 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get update \ openssh-server \ pkg-config \ qt5-default \ + qttools5-dev \ qtmultimedia5-dev \ libqt5svg5-dev \ subversion \ diff --git a/vagrant/provisioner.bash b/vagrant/provisioner.bash index 869c9d4..929341f 100755 --- a/vagrant/provisioner.bash +++ b/vagrant/provisioner.bash @@ -9,7 +9,7 @@ sudo DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y sudo DEBIAN_FRONTEND=noninteractive apt-get install software-properties-common -y sudo DEBIAN_FRONTEND=noninteractive add-apt-repository ppa:linuxuprising/java -y sudo DEBIAN_FRONTEND=noninteractive apt-get update -sudo DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated install emacs openjdk-11-jre gcc-8 g++-8 git subversion lsof ntp gdb make cmake flex bison autoconf doxygen graphviz libtool libncurses5-dev expect libssl-dev libxml2-dev xutils-dev tcpdump libpcap-dev libwireshark-dev wget tree unzip sshpass kubuntu-desktop valgrind qt5-default qtmultimedia5-dev libqt5svg5-dev vim tzdata dos2unix xsltproc -y +sudo DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated install emacs openjdk-11-jre gcc-8 g++-8 git subversion lsof ntp gdb make cmake flex bison autoconf doxygen graphviz libtool libncurses5-dev expect libssl-dev libxml2-dev xutils-dev tcpdump libpcap-dev libwireshark-dev wget tree unzip sshpass kubuntu-desktop valgrind qt5-default qttools5-dev qtmultimedia5-dev libqt5svg5-dev vim tzdata dos2unix xsltproc -y # Install java #sudo DEBIAN_FRONTEND=noninteractive apt-get install oracle-java9-installer oracle-java9-set-default -y #sudo DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated install oracle-java10-installer oracle-java10-set-default -y -- GitLab From 1f2a55c1aec32c7531c907e9f7293a95dd9c3030 Mon Sep 17 00:00:00 2001 From: garciay Date: Mon, 23 Jul 2018 15:00:03 +0200 Subject: [PATCH 70/72] First LIS validation against real equipment --- etc/AtsNg112/AtsNg112.cfg | 11 +- test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 | 637 ++++--- test_purposes/ESRP_HTTP_POST_BV_xx.tplan2 | 180 ++ test_purposes/LIS_HTTP_GET_BV_xx.tplan2 | 124 ++ test_purposes/LIS_HTTP_POST_BV_xx.tplan2 | 726 +++++--- test_purposes/PSAP_SIP_BV_xx.tplan2 | 118 ++ ttcn/AtsNg112/AtsNg112_TestCases.ttcn | 102 +- .../LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn | 4 +- .../LibNg112/ttcn/LibNg112_Pixits.ttcn | 10 +- vagrant/provisioner.bash | 2 +- validation/TC_LIS_HTTP_POST_BV_01.pcapng | Bin 0 -> 2448 bytes validation/TC_LIS_HTTP_POST_BV_01_merged.log | 1531 +++++++++++++++++ validation/TC_LIS_HTTP_POST_BV_03.pcapng | Bin 0 -> 1828 bytes validation/TC_LIS_HTTP_POST_BV_03_merged.log | 1363 +++++++++++++++ 14 files changed, 4210 insertions(+), 598 deletions(-) create mode 100644 test_purposes/ESRP_HTTP_POST_BV_xx.tplan2 create mode 100644 test_purposes/LIS_HTTP_GET_BV_xx.tplan2 create mode 100644 test_purposes/PSAP_SIP_BV_xx.tplan2 create mode 100644 validation/TC_LIS_HTTP_POST_BV_01.pcapng create mode 100644 validation/TC_LIS_HTTP_POST_BV_01_merged.log create mode 100644 validation/TC_LIS_HTTP_POST_BV_03.pcapng create mode 100644 validation/TC_LIS_HTTP_POST_BV_03_merged.log diff --git a/etc/AtsNg112/AtsNg112.cfg b/etc/AtsNg112/AtsNg112.cfg index 8bdd7f6..a385944 100644 --- a/etc/AtsNg112/AtsNg112.cfg +++ b/etc/AtsNg112/AtsNg112.cfg @@ -2,7 +2,8 @@ # This section shall contain the values of all parameters that are defined in your TTCN-3 modules. LibCommon_Time.PX_TAC := 30.0 -LibItsHttp_Pics.PICS_HEADER_HOST := "ptsv2.com" +LibItsHttp_Pics.PICS_HEADER_HOST := "location-information-service.azurewebsites.net" +LibNg112_Pixits.PX_DEVICE_URI_TEL := "+331234567890" [LOGGING] # In this section you can specify the name of the log file and the classes of events @@ -20,7 +21,8 @@ LogEventTypes:= Yes [TESTPORT_PARAMETERS] # In this section you can specify parameters that are passed to Test Ports. -system.httpPort.params := "HTTP(codecs=held:held_codec;html:html_codec;json:json_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0)" +system.httpPort.params := "HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server=location-information-service.azurewebsites.net,port=80,use_ssl=0)" +#system.httpPort.params := "HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server=ptsv2.com,port=80,use_ssl=0)" #system.SIPP.params := "SIP/UDP(dst_ip=192.168.1.250,dst_port=5060,src_ip=192.168.1.253,src_port=5060)/ETH(mac_src=080027d2b658,mac_dst=90fd61e61902,eth_type=0800)/PCAP(mac_src=080027d2b658,nic=eth1,filter=and udp port 12345)" [DEFINE] @@ -47,8 +49,9 @@ system.httpPort.params := "HTTP(codecs=held:held_codec;html:html_codec;json:json [EXECUTE] # In this section you can specify what parts of your test suite you want to execute. AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_01 -AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_02 -AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_03 +#AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_02 +#AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_03 +#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_01 [GROUPS] # In this section you can specify groups of hosts. These groups can be used inside the diff --git a/test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 b/test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 index 34a8ff6..5407811 100644 --- a/test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 +++ b/test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 @@ -1,319 +1,318 @@ -/* ETSI Software License -* As long as the hereunder conditions are respected, non-exclusive permission is hereby granted, -* free of charge, to use, reproduce and modify this software source code, under the following conditions: -* This source code is provided AS IS with no warranties, express or implied, including but not limited to, -* the warranties of merchantability, fitness for a particular purpose and warranties for non-infringement -* of intellectual property rights. -* ETSI shall not be held liable in any event for any direct or indirect damages whatsoever (including, without -* limitation, damages for loss of profits, business interruption, loss of information, or any other pecuniary -* loss) arising out of or related to the use of or inability to use the source code. -* This permission is granted to facilitate the implementation of the related ETSI standard, provided that -* ETSI is given the right to use, reproduce and amend the modified source code under the same conditions -* as the present permission. -* This permission does not apply to any documentation associated with this source code for which ETSI keeps -* all rights reserved. -* The present ETSI Source Code license shall be included in all copies of whole or part of this source code -* and shall not imply any sub-license right. -* (c) ETSI 2018 -*/ - - -Package NG112_ECRF { - Domain { - pics: - - PICS_ECRF_IUT - - PICS_HTTP_POST_REQUEST - - PICS_SERVICE_LOST - ; - entities: - - IUT - - MTC - ; - events: - - receives //for packets coming from the network to the IUT - - sends //for packets sent by the IUT to the network - - havingServiceBoundaryFor //IUT is provisioned with the relevant service boundary - - serviceMappingFor //IUT is provisioned with the relevant service mapping - - isRequestedToSend //an upper layer requests the IUT to send a packet - - generates //for internal event generation - ; - } - -// Const { -// SERVICE_URN_1: "urn:service:sos.police"; -// SIP_URI_1: "sip:police@city.com"; -// SERVICE_URN_2: "urn:service:sos.fire"; -// SIP_URI_2: "sip:fire@city.com"; -// SERVICE_BOUNDARY_1: "[ -// [ -// [ -// 10.00, -// 50.00 -// ], -// [ -// 15.00, -// 50.00 -// ], -// [ -// 15.00, -// 55.00 -// ], -// [ -// 10.00, -// 55.00 -// ], -// [ -// 10.00, -// 50.00 -// ] -// ] -// ]"; -// SERVICE_BOUNDARY_2: "[ -// [ -// [ -// 20.00, -// 50.00 -// ], -// [ -// 25.00, -// 50.00 -// ], -// [ -// 25.00, -// 55.00 -// ], -// [ -// 20.00, -// 55.00 -// ], -// [ -// 20.00, -// 50.00 -// ] -// ] -// ]"; -// POINT_IN_SERVICE_BOUNDARY_1: "12.00, 53.00" -// CIRCLE_IN_SERVICE_BOUNDARY_2_POS: "22.00 52.00"; -// CIRCLE_IN_SERVICE_BOUNDARY_2_RADIUS: "1"; -// } - -// Data { -// type PDU; -// } -// Configuration { -// Interface Type defaultGT accepts PDU; -// Component Type NG112Comp with gate g of type defaultGT; -// Test Configuration CFG_ESRP_01 -// containing -// Tester component BCF of type NG112Comp -// Tester component LIS of type NG112Comp -// Tester component ECRF of type NG112Comp -// SUT component IUT of type NG112Comp -// connection between BCF.g and IUT.g -// connection between LIS.g and IUT.g -// connection between ECRF.g and IUT.g; -// } - -Test Purpose { -TP Id TP_ECRF_HTTP_POST_BV_01 -Test objective - "IUT successfully responds with a service URI for a Point in the service boundary" -Reference - "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause XXX EMERGENCY CALL ROUTING FUNCTION (ECRF)", - "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.4", - "https://tools.ietf.org/html/rfc5222" -//Config Id CFG_ECRF_01 -PICS Selection PICS_HTTP_POST_REQUEST PICS_SERVICE_LOST -Initial conditions with { - the IUT entity havingServiceBoundaryFor the SERVICE_BOUNDARY_1 containing - serviceMappingFor SERVICE_URN_1 containing - URI indicating value SIP_URI_1; - ; - and the IUT entity havingServiceBoundaryFor the SERVICE_BOUNDARY_2 containing - serviceMappingFor SERVICE_URN_2 containing - URI indicating value SIP_URI_2; - ; -} -Expected behaviour - ensure that { - when { - the IUT entity receives a POST containing - Uri indicating value "/service", - Host, - not Accept, - Content_type indicating value "application/lost+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "findService" inNamespace "urn:ietf:params:xml:ns:lost1" containing - element "location" containing - element "Point" inNamespace "http://www.opengis.net/gml" containing - attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", - element "pos" indicating value POINT_POS; - , - element "service" indicating value SERVICE_URN_1; - ; - ; - ; - ; - } - then { - the IUT entity sends a httpResponse containing - Status_Code indicating value "200 OK", - version indicating value "1.0", - Content_type indicating value "application/lost+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "findServiceResponse" inNamespace "urn:ietf:params:xml:ns:lost1" containing - element "mapping" containing - attribute "source", - attribute "sourceId", - attribute "lastUpdated", - attribute "expires", - element "service" indicating value SERVICE_URN_1, - element "uri" indicating value SIP_URI_1; - , - element "locationUsed" - ; - ; - ; - ; - } - } -} //End of TP_ECRF_HTTP_POST_BV_01 - -Test Purpose { -TP Id TP_ECRF_HTTP_POST_BV_02 -Test objective - "IUT successfully responds with a service URI for a Circle in the service boundary" -Reference - "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause XXX EMERGENCY CALL ROUTING FUNCTION (ECRF)", - "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.4", - "https://tools.ietf.org/html/rfc5222" -//Config Id CFG_ECRF_01 -PICS Selection PICS_HTTP_POST_REQUEST PICS_SERVICE_LOST -Initial conditions with { - the IUT entity havingServiceBoundaryFor the SERVICE_BOUNDARY_1 containing - serviceMappingFor SERVICE_URN_1 containing - URI indicating value SIP_URI_1; - ; - and the IUT entity havingServiceBoundaryFor the SERVICE_BOUNDARY_2 containing - serviceMappingFor SERVICE_URN_2 containing - URI indicating value SIP_URI_2; - ; -} -Expected behaviour - ensure that { - when { - the IUT entity receives a POST containing - Uri indicating value "/service", - Host, - not Accept, - Content_type indicating value "application/lost+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "findService" inNamespace "urn:ietf:params:xml:ns:lost1" containing - element "location" containing - element "Circle" inNamespace "http://www.opengis.net/pidflo/1.0" containing - attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", - element "pos" inNamespace "http://www.opengis.net/gml" indicating value CIRCLE_IN_SERVICE_BOUNDARY_2_POS, - element "radius" indicating value CIRCLE_IN_SERVICE_BOUNDARY_2_RADIUS containing - attribute "uom" indicating value "urn:ogc:def:uom:EPSG::9001" - ; - ; - , - element "service" indicating value SERVICE_URN_2; - ; - ; - ; - ; - } - then { - the IUT entity sends a httpResponse containing - Status_Code indicating value "200 OK", - version indicating value "1.0", - Content_type indicating value "application/lost+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "findServiceResponse" inNamespace "urn:ietf:params:xml:ns:lost1" containing - element "mapping" containing - attribute "source", - attribute "sourceId", - attribute "lastUpdated", - attribute "expires", - element "service" indicating value SERVICE_URN_2, - element "uri" indicating value SIP_URI_2; - , - element "locationUsed" - ; - ; - ; - ; - } - } -} //End of TP_ECRF_HTTP_POST_BV_02 - -Test Purpose { -TP Id TP_ECRF_HTTP_POST_BV_03 -Test objective - "IUT successfully responds with an error response for an unknown Service URN in the service boundary" -Reference - "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause XXX EMERGENCY CALL ROUTING FUNCTION (ECRF)", - "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.4", - "https://tools.ietf.org/html/rfc5222" -//Config Id CFG_ECRF_01 -PICS Selection PICS_HTTP_POST_REQUEST PICS_SERVICE_LOST -Initial conditions with { - the IUT entity havingServiceBoundaryFor the SERVICE_BOUNDARY_1 containing - serviceMappingFor SERVICE_URN_1 containing - URI indicating value SIP_URI_1; - ; - and the IUT entity havingServiceBoundaryFor the SERVICE_BOUNDARY_2 containing - serviceMappingFor SERVICE_URN_2 containing - URI indicating value SIP_URI_2; - ; -} -Expected behaviour - ensure that { - when { - the IUT entity receives a POST containing - Uri indicating value "/service", - Host, - not Accept, - Content_type indicating value "application/lost+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "findService" inNamespace "urn:ietf:params:xml:ns:lost1" containing - element "location" containing - element "Point" inNamespace "http://www.opengis.net/gml" containing - attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", - element "pos" indicating value POINT_POS; - , - element "service" indicating value SERVICE_URN_2; - ; - ; - ; - ; - } - then { - the IUT entity sends a httpResponse containing - Status_Code indicating value "200 OK", - version indicating value "1.0", - Content_type indicating value "application/lost+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "errors" inNamespace "urn:ietf:params:xml:ns:lost1" containing - element "serviceNotImplemented" - ; - ; - ; - ; - } - } -} //End of TP_ECRF_HTTP_POST_BV_03 -} +/* ETSI Software License +* As long as the hereunder conditions are respected, non-exclusive permission is hereby granted, +* free of charge, to use, reproduce and modify this software source code, under the following conditions: +* This source code is provided AS IS with no warranties, express or implied, including but not limited to, +* the warranties of merchantability, fitness for a particular purpose and warranties for non-infringement +* of intellectual property rights. +* ETSI shall not be held liable in any event for any direct or indirect damages whatsoever (including, without +* limitation, damages for loss of profits, business interruption, loss of information, or any other pecuniary +* loss) arising out of or related to the use of or inability to use the source code. +* This permission is granted to facilitate the implementation of the related ETSI standard, provided that +* ETSI is given the right to use, reproduce and amend the modified source code under the same conditions +* as the present permission. +* This permission does not apply to any documentation associated with this source code for which ETSI keeps +* all rights reserved. +* The present ETSI Source Code license shall be included in all copies of whole or part of this source code +* and shall not imply any sub-license right. +* (c) ETSI 2018 +*/ + + +Package NG112_ECRF { + Domain { + pics: + - PICS_HTTP_POST_REQUEST + - PICS_SERVICE_LOST + ; + entities: + - IUT + - MTC + ; + events: + - receives //for packets coming from the network to the IUT + - sends //for packets sent by the IUT to the network + - havingServiceBoundaryFor //IUT is provisioned with the relevant service boundary + - serviceMappingFor //IUT is provisioned with the relevant service mapping + - isRequestedToSend //an upper layer requests the IUT to send a packet + - generates //for internal event generation + ; + } + +// Const { +// SERVICE_URN_1: "urn:service:sos.police"; +// SIP_URI_1: "sip:police@city.com"; +// SERVICE_URN_2: "urn:service:sos.fire"; +// SIP_URI_2: "sip:fire@city.com"; +// SERVICE_BOUNDARY_1: "[ +// [ +// [ +// 10.00, +// 50.00 +// ], +// [ +// 15.00, +// 50.00 +// ], +// [ +// 15.00, +// 55.00 +// ], +// [ +// 10.00, +// 55.00 +// ], +// [ +// 10.00, +// 50.00 +// ] +// ] +// ]"; +// SERVICE_BOUNDARY_2: "[ +// [ +// [ +// 20.00, +// 50.00 +// ], +// [ +// 25.00, +// 50.00 +// ], +// [ +// 25.00, +// 55.00 +// ], +// [ +// 20.00, +// 55.00 +// ], +// [ +// 20.00, +// 50.00 +// ] +// ] +// ]"; +// POINT_IN_SERVICE_BOUNDARY_1: "12.00, 53.00" +// CIRCLE_IN_SERVICE_BOUNDARY_2_POS: "22.00 52.00"; +// CIRCLE_IN_SERVICE_BOUNDARY_2_RADIUS: "1"; +// } + +// Data { +// type PDU; +// } +// Configuration { +// Interface Type defaultGT accepts PDU; +// Component Type NG112Comp with gate g of type defaultGT; +// Test Configuration CFG_ESRP_01 +// containing +// Tester component BCF of type NG112Comp +// Tester component LIS of type NG112Comp +// Tester component ECRF of type NG112Comp +// SUT component IUT of type NG112Comp +// connection between BCF.g and IUT.g +// connection between LIS.g and IUT.g +// connection between ECRF.g and IUT.g; +// } + +Test Purpose { +TP Id TP_ECRF_HTTP_POST_BV_01 +Test objective + "IUT successfully responds with a service URI for a Point in the service boundary" +Reference + "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause XXX EMERGENCY CALL ROUTING FUNCTION (ECRF)", + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.4", + "https://tools.ietf.org/html/rfc5222" +//Config Id CFG_ECRF_01 +PICS Selection PICS_HTTP_POST_REQUEST PICS_SERVICE_LOST +Initial conditions with { + the IUT entity havingServiceBoundaryFor the SERVICE_BOUNDARY_1 containing + serviceMappingFor SERVICE_URN_1 containing + URI indicating value SIP_URI_1; + ; + and the IUT entity havingServiceBoundaryFor the SERVICE_BOUNDARY_2 containing + serviceMappingFor SERVICE_URN_2 containing + URI indicating value SIP_URI_2; + ; +} +Expected behaviour + ensure that { + when { + the IUT entity receives a POST containing + Uri indicating value "/service", + Host, + not Accept, + Content_type indicating value "application/lost+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "findService" inNamespace "urn:ietf:params:xml:ns:lost1" containing + element "location" containing + element "Point" inNamespace "http://www.opengis.net/gml" containing + attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", + element "pos" indicating value POINT_IN_SERVICE_BOUNDARY_1; + , + element "service" indicating value SERVICE_URN_1; + ; + ; + ; + ; + } + then { + the IUT entity sends a httpResponse containing + Status_Code indicating value "200 OK", + version indicating value "1.0", + Content_type indicating value "application/lost+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "findServiceResponse" inNamespace "urn:ietf:params:xml:ns:lost1" containing + element "mapping" containing + attribute "source", + attribute "sourceId", + attribute "lastUpdated", + attribute "expires", + element "service" indicating value SERVICE_URN_1, + element "uri" indicating value SIP_URI_1; + , + element "locationUsed" + ; + ; + ; + ; + } + } +} //End of TP_ECRF_HTTP_POST_BV_01 + +Test Purpose { +TP Id TP_ECRF_HTTP_POST_BV_02 +Test objective + "IUT successfully responds with a service URI for a Circle in the service boundary" +Reference + "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause XXX EMERGENCY CALL ROUTING FUNCTION (ECRF)", + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.4", + "https://tools.ietf.org/html/rfc5222" +//Config Id CFG_ECRF_01 +PICS Selection PICS_HTTP_POST_REQUEST PICS_SERVICE_LOST +Initial conditions with { + the IUT entity havingServiceBoundaryFor the SERVICE_BOUNDARY_1 containing + serviceMappingFor SERVICE_URN_1 containing + URI indicating value SIP_URI_1; + ; + and the IUT entity havingServiceBoundaryFor the SERVICE_BOUNDARY_2 containing + serviceMappingFor SERVICE_URN_2 containing + URI indicating value SIP_URI_2; + ; +} +Expected behaviour + ensure that { + when { + the IUT entity receives a POST containing + Uri indicating value "/service", + Host, + not Accept, + Content_type indicating value "application/lost+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "findService" inNamespace "urn:ietf:params:xml:ns:lost1" containing + element "location" containing + element "Circle" inNamespace "http://www.opengis.net/pidflo/1.0" containing + attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", + element "pos" inNamespace "http://www.opengis.net/gml" indicating value CIRCLE_IN_SERVICE_BOUNDARY_2_POS, + element "radius" indicating value CIRCLE_IN_SERVICE_BOUNDARY_2_RADIUS containing + attribute "uom" indicating value "urn:ogc:def:uom:EPSG::9001" + ; + ; + , + element "service" indicating value SERVICE_URN_2; + ; + ; + ; + ; + } + then { + the IUT entity sends a httpResponse containing + Status_Code indicating value "200 OK", + version indicating value "1.0", + Content_type indicating value "application/lost+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "findServiceResponse" inNamespace "urn:ietf:params:xml:ns:lost1" containing + element "mapping" containing + attribute "source", + attribute "sourceId", + attribute "lastUpdated", + attribute "expires", + element "service" indicating value SERVICE_URN_2, + element "uri" indicating value SIP_URI_2; + , + element "locationUsed" + ; + ; + ; + ; + } + } +} //End of TP_ECRF_HTTP_POST_BV_02 + +Test Purpose { +TP Id TP_ECRF_HTTP_POST_BV_03 +Test objective + "IUT successfully responds with an error response for an unknown Service URN in the service boundary" +Reference + "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause XXX EMERGENCY CALL ROUTING FUNCTION (ECRF)", + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.4", + "https://tools.ietf.org/html/rfc5222" +//Config Id CFG_ECRF_01 +PICS Selection PICS_HTTP_POST_REQUEST PICS_SERVICE_LOST +Initial conditions with { + the IUT entity havingServiceBoundaryFor the SERVICE_BOUNDARY_1 containing + serviceMappingFor SERVICE_URN_1 containing + URI indicating value SIP_URI_1; + ; + and the IUT entity havingServiceBoundaryFor the SERVICE_BOUNDARY_2 containing + serviceMappingFor SERVICE_URN_2 containing + URI indicating value SIP_URI_2; + ; +} +Expected behaviour + ensure that { + when { + the IUT entity receives a POST containing + Uri indicating value "/service", + Host, + not Accept, + Content_type indicating value "application/lost+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "findService" inNamespace "urn:ietf:params:xml:ns:lost1" containing + element "location" containing + element "Point" inNamespace "http://www.opengis.net/gml" containing + attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", + element "pos" indicating value POINT_IN_SERVICE_BOUNDARY_1; + , + element "service" indicating value SERVICE_URN_2; + ; + ; + ; + ; + } + then { + the IUT entity sends a httpResponse containing + Status_Code indicating value "200 OK", + version indicating value "1.0", + Content_type indicating value "application/lost+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "errors" inNamespace "urn:ietf:params:xml:ns:lost1" containing + element "serviceNotImplemented" + ; + ; + ; + ; + } + } +} //End of TP_ECRF_HTTP_POST_BV_03 +} diff --git a/test_purposes/ESRP_HTTP_POST_BV_xx.tplan2 b/test_purposes/ESRP_HTTP_POST_BV_xx.tplan2 new file mode 100644 index 0000000..3a0d08e --- /dev/null +++ b/test_purposes/ESRP_HTTP_POST_BV_xx.tplan2 @@ -0,0 +1,180 @@ +/* ETSI Software License +* As long as the hereunder conditions are respected, non-exclusive permission is hereby granted, +* free of charge, to use, reproduce and modify this software source code, under the following conditions: +* This source code is provided AS IS with no warranties, express or implied, including but not limited to, +* the warranties of merchantability, fitness for a particular purpose and warranties for non-infringement +* of intellectual property rights. +* ETSI shall not be held liable in any event for any direct or indirect damages whatsoever (including, without +* limitation, damages for loss of profits, business interruption, loss of information, or any other pecuniary +* loss) arising out of or related to the use of or inability to use the source code. +* This permission is granted to facilitate the implementation of the related ETSI standard, provided that +* ETSI is given the right to use, reproduce and amend the modified source code under the same conditions +* as the present permission. +* This permission does not apply to any documentation associated with this source code for which ETSI keeps +* all rights reserved. +* The present ETSI Source Code license shall be included in all copies of whole or part of this source code +* and shall not imply any sub-license right. +* (c) ETSI 2018 +*/ + + +Package NG112_ESRP { + Domain { + pics: + - PICS_SERVICE_ESRP + ; + entities: + - IUT + - ECRF + - PSAP + ; + events: + - receives //for packets coming from the network to the IUT + - sends //for packets sent by the IUT to the network + - forwards //forwards the previously received message to the next hop + - isConfiguredWith //IUT is configured to use the ECRF + - isReachableWith // the PSAP is reachable via the specified URI + - receivedInitialInviteRequestAndSentLostQueryToEcrf // [ref esrp.txt:RECEIVED_INITITAL_INVITE_AND_SENT_LOST_REQUEST] + - receivesLostResponseFor // IUT receives a LoST response for the give target URI [ref esrp.txt:RECEIVES_LOST_RESPONSE_FOR] + ; + } + +// Const { +// SDP_AND_PIDF_MULTIPART [ref esrp.txt:SDP_AND_PIDF_MULTIPART]; +// SERVICE_URN_1: "urn:service:sos.police"; +// SIP_URI_1: "sip:police@city.com"; +// LOCATION_1: "12.00, 53.00" +// } + +// Data { +// type PDU; +// } +// Configuration { +// Interface Type defaultGT accepts PDU; +// Component Type NG112Comp with gate g of type defaultGT; +// Test Configuration CFG_ESRP_01 +// containing +// Tester component BCF of type NG112Comp +// Tester component LIS of type NG112Comp +// Tester component ECRF of type NG112Comp +// SUT component IUT of type NG112Comp +// connection between BCF.g and IUT.g +// connection between LIS.g and IUT.g +// connection between ECRF.g and IUT.g; +// } + +Test Purpose { +TP Id TP_ESRP_SIP_INVITE_BV_01 +Test objective + "IUT successfully forwards an incoming SIP INVITE to the correct downstream element, based on the ECRF response" +Reference + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.3", + "https://tools.ietf.org/html/rfc5222" +//Config Id CFG_ESRP_01 +PICS Selection PICS_SERVICE_ESRP +Initial conditions with { + the IUT entity isConfiguredWith the ECRF + and the PSAP entity isReachableWith the SIP_URI_1 + and the IUT entity receivedInitialInviteRequestAndSentLostQueryToEcrf +} +Expected behaviour + ensure that { + when { + the IUT entity receives a SIP_INVITE containing + Request_URI indicating value SERVICE_URN_1, + Content_Type indicating value "multipart/mixed", + body containing + SDP_AND_PIDF_MULTIPART + ; + ; + and the IUT entity sends a POST containing + Content_type indicating value "application/lost+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "findService" inNamespace "urn:ietf:params:xml:ns:lost1" containing + element "location" containing + element "Point" inNamespace "http://www.opengis.net/gml" containing + attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", + element "pos" indicating value LOCATION_1; + , + element "service" indicating value SERVICE_URN_1; + ; + ; + ; + ; to the ECRF entity + and the IUT entity receives a httpResponse containing + Status_Code indicating value "200 OK", + version indicating value "1.0", + Content_type indicating value "application/lost+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "findServiceResponse" inNamespace "urn:ietf:params:xml:ns:lost1" containing + element "mapping" containing + attribute "source", + attribute "sourceId", + attribute "lastUpdated", + attribute "expires", + element "service" indicating value SERVICE_URN_1, + element "uri" indicating value SIP_URI_1; + , + element "locationUsed" + ; + ; + ; + ; from the ECRF entity + } + then { + the IUT entity forwards a SIP_INVITE containing + Request_URI indicating value SERVICE_URN_1, + Content_Type indicating value "multipart/mixed", + Route_Header indicating value SIP_URI_1 + body containing + SDP_AND_PIDF_MULTIPART + ; + ; to the PSAP entity + } + } +} //End of TP_ESRP_SIP_INVITE_BV_01 + +Test Purpose { +TP Id TP_ESRP_SIP_INVITE_BV_02 +Test objective + "IUT adds Incident-ID and Call-ID INFO headers" +Reference + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.3", + "https://tools.ietf.org/html/rfc5222" +//Config Id CFG_ESRP_01 +PICS Selection PICS_SERVICE_ESRP +Initial conditions with { + the IUT entity isConfiguredWith the ECRF + and the PSAP entity isReachableWith the SIP_URI_1 + and the IUT entity receivedInitialInviteRequestAndSentLostQueryToEcrf +} +Expected behaviour + ensure that { + when { + the IUT entity receivesLostResponseFor the SIP_URI_1 from the ECRF entity + } + then { + the IUT entity forwards the SIP_INVITE containing + Request_URI indicating value SERVICE_URN_1, + Content_Type indicating value "multipart/mixed", + Route indicating value SIP_URI_1, + Call_Info containing + uri indicating value valid "Incident Tracking Identifier", + purpose "EES-IncidentId" + ;, + Call_Info containing + uri indicating value valid "Call Identifier", + purpose "EES-CallId" + ;, + body containing + SDP_AND_PIDF_MULTIPART + ; + ; to the PSAP entity + } + } +} //End of TP_ESRP_SIP_INVITE_BV_02 +} diff --git a/test_purposes/LIS_HTTP_GET_BV_xx.tplan2 b/test_purposes/LIS_HTTP_GET_BV_xx.tplan2 new file mode 100644 index 0000000..9402dc7 --- /dev/null +++ b/test_purposes/LIS_HTTP_GET_BV_xx.tplan2 @@ -0,0 +1,124 @@ +/* ETSI Software License +* As long as the hereunder conditions are respected, non-exclusive permission is hereby granted, +* free of charge, to use, reproduce and modify this software source code, under the following conditions: +* This source code is provided AS IS with no warranties, express or implied, including but not limited to, +* the warranties of merchantability, fitness for a particular purpose and warranties for non-infringement +* of intellectual property rights. +* ETSI shall not be held liable in any event for any direct or indirect damages whatsoever (including, without +* limitation, damages for loss of profits, business interruption, loss of information, or any other pecuniary +* loss) arising out of or related to the use of or inability to use the source code. +* This permission is granted to facilitate the implementation of the related ETSI standard, provided that +* ETSI is given the right to use, reproduce and amend the modified source code under the same conditions +* as the present permission. +* This permission does not apply to any documentation associated with this source code for which ETSI keeps +* all rights reserved. +* The present ETSI Source Code license shall be included in all copies of whole or part of this source code +* and shall not imply any sub-license right. +* (c) ETSI 2018 +*/ + + +Package NG112_LIS { + Domain { + pics: + - PICS_HTTP_POST_REQUEST + - PICS_LOCATION_HELD + ; + entities: + - IUT + - MTC + ; + events: + - receives //for packets coming from the network to the IUT + - sends //for packets sent by the IUT to the network + - havingLocationMappingFor //IUT is provisioned with the relevant location data + - havingReturnedLocationUriFor //[ref lis.txt:havingReturnedLocationUriFor] IUT returned a locationURI for the relevant location data after a HELD request + ; + } + +// Const { +// DEVICE_NUMBER_POINT: "+331234567890"; +// POINT_POS: "43.616891, 7.053179"; // lat: 43.616891, lon: 7.053179 +// DEVICE_NUMBER_CIRCLE: "+331234567891"; +// CIRCLE_POS: "43.617174, 7.052750"; // lat: 43.617174, lon: 7.052750 +// CIRCLE_RADIUS: "15"; +// } + +// Data { +// type PDU; +// } +// Configuration { +// Interface Type defaultGT accepts PDU; +// Component Type NG112Comp with gate g of type defaultGT; +// Test Configuration CFG_ESRP_01 +// containing +// Tester component BCF of type NG112Comp +// Tester component LIS of type NG112Comp +// Tester component ECRF of type NG112Comp +// SUT component IUT of type NG112Comp +// connection between BCF.g and IUT.g +// connection between LIS.g and IUT.g +// connection between ECRF.g and IUT.g; +// } + +Test Purpose { +TP Id TP_LIS_HTTP_GET_BV_01 +Test objective + "IUT successfully returns the location when a locationURI is dereferenced" +Reference + "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", + "https://tools.ietf.org/html/rfc5985" +//Config Id CFG_LIS_01 +PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD +Initial conditions with { + the IUT entity havingLocationMappingFor the DEVICE_NUMBER_CIRCLE containing + "circle" containing + "position" indicating value CIRCLE_POS, + "radius" indicating value CIRCLE_RADIUS + ; + ; and the IUT entity havingReturnedLocationUriFor the DEVICE_NUMBER_CIRCLE containing + element "locationURI" indicating value LOCATION_URI + ; +} +Expected behaviour + ensure that { + when { + the IUT entity receives a GET containing + Uri indicating value LOCATION_URI + ; + } + then { + the IUT entity sends a httpResponse containing + Status_Code indicating value "200 OK", + version indicating value "1.0", + Content_type indicating value "application/pidf+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "presence" inNamespace "urn:ietf:params:xml:ns:pidf" containing + attribute "entity" indicating value valid "pres:" uri, + element "tuple" containing + attribute "id", + element "status" containing + element "geopriv" inNamespace "urn:ietf:params:xml:ns:pidf:geopriv10" containing + element "location-info" containing + element "Circle" inNamespace "http://www.opengis.net/pidflo/1.0" containing + attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", + element "pos" inNamespace "http://www.opengis.net/gml" indicating value CIRCLE_POS, + element "radius" indicating value CIRCLE_RADIUS containing + attribute "uom" indicating value "urn:ogc:def:uom:EPSG::9001" + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + } + } +} //End of TP_LIS_HTTP_GET_BV_01 +} diff --git a/test_purposes/LIS_HTTP_POST_BV_xx.tplan2 b/test_purposes/LIS_HTTP_POST_BV_xx.tplan2 index 5db1621..a4d8edf 100644 --- a/test_purposes/LIS_HTTP_POST_BV_xx.tplan2 +++ b/test_purposes/LIS_HTTP_POST_BV_xx.tplan2 @@ -1,264 +1,462 @@ -/* ETSI Software License -* As long as the hereunder conditions are respected, non-exclusive permission is hereby granted, -* free of charge, to use, reproduce and modify this software source code, under the following conditions: -* This source code is provided AS IS with no warranties, express or implied, including but not limited to, -* the warranties of merchantability, fitness for a particular purpose and warranties for non-infringement -* of intellectual property rights. -* ETSI shall not be held liable in any event for any direct or indirect damages whatsoever (including, without -* limitation, damages for loss of profits, business interruption, loss of information, or any other pecuniary -* loss) arising out of or related to the use of or inability to use the source code. -* This permission is granted to facilitate the implementation of the related ETSI standard, provided that -* ETSI is given the right to use, reproduce and amend the modified source code under the same conditions -* as the present permission. -* This permission does not apply to any documentation associated with this source code for which ETSI keeps -* all rights reserved. -* The present ETSI Source Code license shall be included in all copies of whole or part of this source code -* and shall not imply any sub-license right. -* (c) ETSI 2018 -*/ - - -Package NG112_LIS { - Domain { - pics: - - PICS_LIS_IUT - - PICS_HTTP_POST_REQUEST - - PICS_LOCATION_HELD - ; - entities: - - IUT - - MTC - ; - events: - - receives //for packets coming from the network to the IUT - - sends //for packets sent by the IUT to the network - - havingLocationMappingFor //IUT is provisioned with the relevant location data - - isRequestedToSend //an upper layer requests the IUT to send a packet - - generates //for internal event generation - ; - } - -// Const { -// DEVICE_NUMBER: "+331234567890" -// POINT_POS: "-34.400 134.4000"; -// CIRCLE_POS: "-35.500 135.5000"; -// CIRCLE_RADIUS: "15"; -// } - -// Data { -// type PDU; -// } -// Configuration { -// Interface Type defaultGT accepts PDU; -// Component Type NG112Comp with gate g of type defaultGT; -// Test Configuration CFG_ESRP_01 -// containing -// Tester component BCF of type NG112Comp -// Tester component LIS of type NG112Comp -// Tester component ECRF of type NG112Comp -// SUT component IUT of type NG112Comp -// connection between BCF.g and IUT.g -// connection between LIS.g and IUT.g -// connection between ECRF.g and IUT.g; -// } - -Test Purpose { -TP Id TP_LIS_HTTP_POST_BV_01 -Test objective - "IUT successfully responds with a Point when it receives a HTTP POST location request without location type" -Reference - "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", - "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", - "https://tools.ietf.org/html/rfc5985" -//Config Id CFG_LIS_01 -PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD -Initial conditions with { - the IUT entity havingLocationMappingFor the DEVICE_NUMBER containing - "point" containing - "position" indicating value POINT_POS - ; - ; -} -Expected behaviour - ensure that { - when { - the IUT entity receives a POST containing - Uri indicating value "/location", - Host, - not Accept, - Content_type indicating value "application/held+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "locationRequest" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing - element "device" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" containing - element "uri" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" indicating value DEVICE_NUMBER - ; - ; - ; - ; - ; - } - then { - the IUT entity sends a httpResponse containing - Status_Code indicating value "200 OK", - version indicating value "1.0", - Content_type indicating value "application/held+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "locationResponse" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing - element "presence" inNamespace "urn:ietf:params:xml:ns:pidf" containing - attribute "entity" indicating value valid "pres:" uri, - element "tuple" containing - attribute "id", - element "status" containing - element "geopriv" inNamespace "urn:ietf:params:xml:ns:pidf:geopriv10" containing - element "location-info" containing - element "Point" inNamespace "http://www.opengis.net/gml" containing - attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", - element "pos" indicating value POINT_POS - ; - ; - ; - ; - ; - ; - ; - ; - ; - ; - } - } -} // End of TP TP_LIS_HTTP_POST_BV_01 - -Test Purpose { -TP Id TP_LIS_HTTP_POST_BV_02 -Test objective - "IUT successfully responds with a Circle when it receives a HTTP POST location request without location type" -Reference - "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", - "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", - "https://tools.ietf.org/html/rfc5985" -//Config Id CFG_LIS_01 -PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD -Initial conditions with { - the IUT entity havingLocationMappingFor the DEVICE_NUMBER containing - "circle" containing - "position" indicating value CIRCLE_POS, - "radius" indicating value CIRCLE_RADIUS - ; - ; -} -Expected behaviour - ensure that { - when { - the IUT entity receives a POST containing - Uri indicating value "/location", - Host, - not Accept, - Content_type indicating value "application/held+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "locationRequest" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing - element "device" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" containing - element "uri" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" indicating value DEVICE_NUMBER - ; - ; - ; - ; - ; - } - then { - the IUT entity sends a httpResponse containing - Status_Code indicating value "200 OK", - version indicating value "1.0", - Content_type indicating value "application/held+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "locationResponse" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing - element "presence" inNamespace "urn:ietf:params:xml:ns:pidf" containing - attribute "entity" indicating value valid "pres:" uri, - element "tuple" containing - attribute "id", - element "status" containing - element "geopriv" inNamespace "urn:ietf:params:xml:ns:pidf:geopriv10" containing - element "location-info" containing - element "Circle" inNamespace "http://www.opengis.net/pidflo/1.0" containing - attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", - element "pos" inNamespace "http://www.opengis.net/gml" indicating value CIRCLE_POS, - element "radius" indicating value CIRCLE_RADIUS containing - attribute "uom" indicating value "urn:ogc:def:uom:EPSG::9001" - ; - ; - ; - ; - ; - ; - ; - ; - ; - ; - ; - } - } -} // End of TP TP_LIS_HTTP_POST_BV_02 - -Test Purpose { -TP Id TP_LIS_HTTP_POST_BV_03 -Test objective - "IUT successfully responds with an error response when it receives a HTTP POST location request for an unknown device" -Reference - "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", - "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", - "https://tools.ietf.org/html/rfc5985" -//Config Id CFG_LIS_01 -PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD -Initial conditions with { - the IUT entity havingLocationMappingFor the "deviceNumber" containing - "circle" containing - "position" indicating value CIRCLE_POS, - "radius" indicating value CIRCLE_RADIUS - ; - ; -} -Expected behaviour - ensure that { - when { - the IUT entity receives a POST containing - Uri indicating value "/location", - Host, - not Accept, - Content_type indicating value "application/held+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "locationRequest" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing - element "device" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" containing - element "uri" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" indicating value DEVICE_NUMBER - ; - ; - ; - ; - ; - } - then { - the IUT entity sends a httpResponse containing - Status_Code indicating value "200 OK", - version indicating value "1.0", - Content_type indicating value "application/held+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "error" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing - attribute "code" indicating value "locationUnknown" - ; - ; - ; - ; - } - } -} // End of TP TP_LIS_HTTP_POST_BV_03 -} // End of Package NG112_LIS \ No newline at end of file +/* ETSI Software License +* As long as the hereunder conditions are respected, non-exclusive permission is hereby granted, +* free of charge, to use, reproduce and modify this software source code, under the following conditions: +* This source code is provided AS IS with no warranties, express or implied, including but not limited to, +* the warranties of merchantability, fitness for a particular purpose and warranties for non-infringement +* of intellectual property rights. +* ETSI shall not be held liable in any event for any direct or indirect damages whatsoever (including, without +* limitation, damages for loss of profits, business interruption, loss of information, or any other pecuniary +* loss) arising out of or related to the use of or inability to use the source code. +* This permission is granted to facilitate the implementation of the related ETSI standard, provided that +* ETSI is given the right to use, reproduce and amend the modified source code under the same conditions +* as the present permission. +* This permission does not apply to any documentation associated with this source code for which ETSI keeps +* all rights reserved. +* The present ETSI Source Code license shall be included in all copies of whole or part of this source code +* and shall not imply any sub-license right. +* (c) ETSI 2018 +*/ + + +Package NG112_LIS { + Domain { + pics: + - PICS_HTTP_POST_REQUEST + - PICS_LOCATION_HELD + ; + entities: + - IUT + - MTC + ; + events: + - receives //for packets coming from the network to the IUT + - sends //for packets sent by the IUT to the network + - havingLocationMappingFor //IUT is provisioned with the relevant location data + - havingReturnedLocationUriFor //[ref lis.txt:havingReturnedLocationUriFor] IUT returned a locationURI for the relevant location data after a HELD request + ; + } + +// Const { +// DEVICE_NUMBER_POINT: "+331234567890"; +// POINT_POS: "43.616891, 7.053179"; // lat: 43.616891, lon: 7.053179 +// DEVICE_NUMBER_CIRCLE: "+331234567891"; +// CIRCLE_POS: "43.617174, 7.052750"; // lat: 43.617174, lon: 7.052750 +// CIRCLE_RADIUS: "15"; +// } + +// Data { +// type PDU; +// } +// Configuration { +// Interface Type defaultGT accepts PDU; +// Component Type NG112Comp with gate g of type defaultGT; +// Test Configuration CFG_ESRP_01 +// containing +// Tester component BCF of type NG112Comp +// Tester component LIS of type NG112Comp +// Tester component ECRF of type NG112Comp +// SUT component IUT of type NG112Comp +// connection between BCF.g and IUT.g +// connection between LIS.g and IUT.g +// connection between ECRF.g and IUT.g; +// } + +Test Purpose { +TP Id TP_LIS_HTTP_POST_BV_01 +Test objective + "IUT successfully responds with a Point when it receives a HTTP POST location request without location type" +Reference + "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", + "https://tools.ietf.org/html/rfc5985" +//Config Id CFG_LIS_01 +PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD +Initial conditions with { + the IUT entity havingLocationMappingFor the DEVICE_NUMBER containing + "point" containing + "position" indicating value POINT_POS + ; + ; +} +Expected behaviour + ensure that { + when { + the IUT entity receives a POST containing + Uri indicating value "/location", + Host, + not Accept, + Content_type indicating value "application/held+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "locationRequest" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing + element "device" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" containing + element "uri" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" indicating value DEVICE_NUMBER + ; + ; + ; + ; + ; + } + then { + the IUT entity sends a httpResponse containing + Status_Code indicating value "200 OK", + version indicating value "1.0", + Content_type indicating value "application/held+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "locationResponse" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing + element "presence" inNamespace "urn:ietf:params:xml:ns:pidf" containing + attribute "entity" indicating value valid "pres:" uri, + element "tuple" containing + attribute "id", + element "status" containing + element "geopriv" inNamespace "urn:ietf:params:xml:ns:pidf:geopriv10" containing + element "location-info" containing + element "Point" inNamespace "http://www.opengis.net/gml" containing + attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", + element "pos" indicating value POINT_POS + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + } + } +} //End of TP_LIS_HTTP_POST_BV_01 + +Test Purpose { +TP Id TP_LIS_HTTP_POST_BV_02 +Test objective + "IUT successfully responds with a Circle when it receives a HTTP POST location request without location type" +Reference + "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", + "https://tools.ietf.org/html/rfc5985" +//Config Id CFG_LIS_01 +PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD +Initial conditions with { + the IUT entity havingLocationMappingFor the DEVICE_NUMBER_CIRCLE containing + "circle" containing + "position" indicating value CIRCLE_POS, + "radius" indicating value CIRCLE_RADIUS + ; + ; +} +Expected behaviour + ensure that { + when { + the IUT entity receives a POST containing + Uri indicating value "/location", + Host, + not Accept, + Content_type indicating value "application/held+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "locationRequest" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing + element "device" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" containing + element "uri" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" indicating value DEVICE_NUMBER + ; + ; + ; + ; + ; + } + then { + the IUT entity sends a httpResponse containing + Status_Code indicating value "200 OK", + version indicating value "1.0", + Content_type indicating value "application/held+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "locationResponse" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing + element "presence" inNamespace "urn:ietf:params:xml:ns:pidf" containing + attribute "entity" indicating value valid "pres:" uri, + element "tuple" containing + attribute "id", + element "status" containing + element "geopriv" inNamespace "urn:ietf:params:xml:ns:pidf:geopriv10" containing + element "location-info" containing + element "Circle" inNamespace "http://www.opengis.net/pidflo/1.0" containing + attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", + element "pos" inNamespace "http://www.opengis.net/gml" indicating value CIRCLE_POS, + element "radius" indicating value CIRCLE_RADIUS containing + attribute "uom" indicating value "urn:ogc:def:uom:EPSG::9001" + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + } + } +} //End of TP_LIS_HTTP_POST_BV_02 + +Test Purpose { +TP Id TP_LIS_HTTP_POST_BV_03 +Test objective + "IUT successfully responds with a reference when it receives a HTTP POST location request with location type locationURI and exact attribute" +Reference + "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", + "https://tools.ietf.org/html/rfc5985" +//Config Id CFG_LIS_01 +PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD +Initial conditions with { + the IUT entity havingLocationMappingFor the DEVICE_NUMBER_CIRCLE containing + "circle" containing + "position" indicating value CIRCLE_POS, + "radius" indicating value CIRCLE_RADIUS + ; + ; +} +Expected behaviour + ensure that { + when { + the IUT entity receives a POST containing + Uri indicating value "/location", + Host, + not Accept, + Content_type indicating value "application/held+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "locationRequest" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing + element "locationType" indicating value "locationURI" containing + attribute "exact" indicating value "true" + ;, + element "device" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" containing + element "uri" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" indicating value DEVICE_NUMBER + ; + ; + ; + ; + ; + } + then { + the IUT entity sends a httpResponse containing + Status_Code indicating value "200 OK", + version indicating value "1.0", + Content_type indicating value "application/held+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "locationResponse" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing + element "locationUriSet" containing + attribute "expires", + element "locationURI" indicating value valid urn + ; + ; + ; + ; + ; + } + } +} //End of TP_LIS_HTTP_POST_BV_03 + +Test Purpose { +TP Id TP_LIS_HTTP_POST_BV_04 +Test objective + "IUT successfully responds with a reference and geodetic location when it receives a HTTP POST location request with location types locationURI and geodetic and exact attribute" +Reference + "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", + "https://tools.ietf.org/html/rfc5985" +//Config Id CFG_LIS_01 +PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD +Initial conditions with { + the IUT entity havingLocationMappingFor the DEVICE_NUMBER_CIRCLE containing + "circle" containing + "position" indicating value CIRCLE_POS, + "radius" indicating value CIRCLE_RADIUS + ; + ; +} +Expected behaviour + ensure that { + when { + the IUT entity receives a POST containing + Uri indicating value "/location", + Host, + not Accept, + Content_type indicating value "application/held+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "locationRequest" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing + element "locationType" indicating value "locationURI geodetic" containing + attribute "exact" indicating value "true" + ;, + element "device" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" containing + element "uri" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" indicating value DEVICE_NUMBER + ; + ; + ; + ; + ; + } + then { + the IUT entity sends a httpResponse containing + Status_Code indicating value "200 OK", + version indicating value "1.0", + Content_type indicating value "application/held+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "locationResponse" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing + element "locationUriSet" containing + attribute "expires", + element "locationURI" indicating value valid urn + ; + ;, + element "presence" inNamespace "urn:ietf:params:xml:ns:pidf" containing + attribute "entity" indicating value valid "pres:" uri, + element "tuple" containing + attribute "id", + element "status" containing + element "geopriv" inNamespace "urn:ietf:params:xml:ns:pidf:geopriv10" containing + element "location-info" containing + element "Circle" inNamespace "http://www.opengis.net/pidflo/1.0" containing + attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", + element "pos" inNamespace "http://www.opengis.net/gml" indicating value CIRCLE_POS, + element "radius" indicating value CIRCLE_RADIUS containing + attribute "uom" indicating value "urn:ogc:def:uom:EPSG::9001" + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + } + } +} //End of TP_LIS_HTTP_POST_BV_04 + +Test Purpose { +TP Id TP_LIS_HTTP_POST_BV_05 +Test objective + "IUT successfully responds with an error response when it receives a HTTP POST location request for an unknown device" +Reference + "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", + "https://tools.ietf.org/html/rfc5985" +//Config Id CFG_LIS_01 +PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD +Initial conditions with { + the IUT entity not havingLocationMappingFor the DEVICE_NUMBER +} +Expected behaviour + ensure that { + when { + the IUT entity receives a POST containing + Uri indicating value "/location", + Host, + not Accept, + Content_type indicating value "application/held+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "locationRequest" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing + element "device" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" containing + element "uri" inNamespace "urn:ietf:params:xml:ns:geopriv:held:id" indicating value DEVICE_NUMBER + ; + ; + ; + ; + ; + } + then { + the IUT entity sends a httpResponse containing + Status_Code indicating value "200 OK", + version indicating value "1.0", + Content_type indicating value "application/held+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "error" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing + attribute "code" indicating value "locationUnknown" + ; + ; + ; + ; + } + } +} //End of TP_LIS_HTTP_POST_BV_05 + +Test Purpose { +TP Id TP_LIS_HTTP_GET_BV_01 +Test objective + "IUT successfully returns the location when a locationURI is dereferenced" +Reference + "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)", + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10", + "https://tools.ietf.org/html/rfc5985" +//Config Id CFG_LIS_01 +PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD +Initial conditions with { + the IUT entity havingLocationMappingFor the DEVICE_NUMBER_CIRCLE containing + "circle" containing + "position" indicating value CIRCLE_POS, + "radius" indicating value CIRCLE_RADIUS + ; + ; and the IUT entity havingReturnedLocationUriFor the DEVICE_NUMBER_CIRCLE containing + element "locationURI" indicating value LOCATION_URI + ; +} +Expected behaviour + ensure that { + when { + the IUT entity receives a GET containing + Uri indicating value LOCATION_URI + ; + } + then { + the IUT entity sends a httpResponse containing + Status_Code indicating value "200 OK", + version indicating value "1.0", + Content_type indicating value "application/pidf+xml;charset=utf-8", + body containing + xmlMessage containing + version indicating value "1.0", + element "presence" inNamespace "urn:ietf:params:xml:ns:pidf" containing + attribute "entity" indicating value valid "pres:" uri, + element "tuple" containing + attribute "id", + element "status" containing + element "geopriv" inNamespace "urn:ietf:params:xml:ns:pidf:geopriv10" containing + element "location-info" containing + element "Circle" inNamespace "http://www.opengis.net/pidflo/1.0" containing + attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", + element "pos" inNamespace "http://www.opengis.net/gml" indicating value CIRCLE_POS, + element "radius" indicating value CIRCLE_RADIUS containing + attribute "uom" indicating value "urn:ogc:def:uom:EPSG::9001" + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + } + } +} //End of TP_LIS_HTTP_GET_BV_01 +} diff --git a/test_purposes/PSAP_SIP_BV_xx.tplan2 b/test_purposes/PSAP_SIP_BV_xx.tplan2 new file mode 100644 index 0000000..1cbc2e1 --- /dev/null +++ b/test_purposes/PSAP_SIP_BV_xx.tplan2 @@ -0,0 +1,118 @@ +/* ETSI Software License +* As long as the hereunder conditions are respected, non-exclusive permission is hereby granted, +* free of charge, to use, reproduce and modify this software source code, under the following conditions: +* This source code is provided AS IS with no warranties, express or implied, including but not limited to, +* the warranties of merchantability, fitness for a particular purpose and warranties for non-infringement +* of intellectual property rights. +* ETSI shall not be held liable in any event for any direct or indirect damages whatsoever (including, without +* limitation, damages for loss of profits, business interruption, loss of information, or any other pecuniary +* loss) arising out of or related to the use of or inability to use the source code. +* This permission is granted to facilitate the implementation of the related ETSI standard, provided that +* ETSI is given the right to use, reproduce and amend the modified source code under the same conditions +* as the present permission. +* This permission does not apply to any documentation associated with this source code for which ETSI keeps +* all rights reserved. +* The present ETSI Source Code license shall be included in all copies of whole or part of this source code +* and shall not imply any sub-license right. +* (c) ETSI 2018 +*/ + + +Package NG112_PSAP { + Domain { + pics: + - PICS_SERVICE_PSAP + ; + entities: + - IUT + - MTC + ; + events: + - acceptingIncomingCalls //PSAP ready to receive incoming calls + - receives //for packets coming from the network to the IUT + - sends //for packets sent by the IUT to the network + - establishesIncomingCall //[ref psap.txt:establishesIncomingCall] the incoming call is established + ; + } + +// Const { +// SDP: [ref psap.txt:SDP]; +// SDP_AND_PIDF_MULTIPART [ref psap.txt:SDP_AND_PIDF_MULTIPART]; +// } + + +// Data { +// type PDU; +// } +// Configuration { +// Interface Type defaultGT accepts PDU; +// Component Type NG112Comp with gate g of type defaultGT; +// Test Configuration CFG_ESRP_01 +// containing +// Tester component BCF of type NG112Comp +// Tester component LIS of type NG112Comp +// Tester component ECRF of type NG112Comp +// SUT component IUT of type NG112Comp +// connection between BCF.g and IUT.g +// connection between LIS.g and IUT.g +// connection between ECRF.g and IUT.g; +// } + +Test Purpose { +TP Id TP_PSAP_SIP_INVITE_BV_01 +Test objective + "IUT successfully handles SIP INVITE with service urn" +Reference + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.7", + "https://tools.ietf.org/html/rfc5031" +//Config Id CFG_PSAP_01 +PICS Selection PICS_SERVICE_PSAP +Initial conditions with { + the IUT entity acceptingIncomingCalls +} +Expected behaviour + ensure that { + when { + the IUT entity receives a SIP_INVITE containing + Request_URI indicating value "urn:service:sos.police", + Content_Type indicating value "application/sdp", + body containing + SDP + ; + ; + } + then { + the IUT entity establishesIncomingCall + } + } +} //End of TP_PSAP_SIP_INVITE_BV_01 + +Test Purpose { +TP Id TP_PSAP_SIP_INVITE_BV_02 +Test objective + "IUT successfully handles SIP INVITE with SDP and PIDF-LO content" +Reference + "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.7", + "https://tools.ietf.org/html/rfc5031" +//Config Id CFG_PSAP_01 +PICS Selection PICS_SERVICE_PSAP +Initial conditions with { + the IUT entity acceptingIncomingCalls +} +Expected behaviour + ensure that { + when { + the IUT entity receives a SIP_INVITE containing + Request_URI indicating value "urn:service:sos.police", + Content_Type indicating value "multipart/mixed", + body containing + SDP_AND_PIDF_MULTIPART + ; + ; + } + then { + the IUT entity establishesIncomingCall + } + } +} //End of TP_PSAP_SIP_INVITE_BV_02 +} diff --git a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn index 99b7b70..ea3851c 100644 --- a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn +++ b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn @@ -108,6 +108,8 @@ module AtsNg112_TestCases { // Local variables var HeaderLines v_headers; var HttpMessage v_response; + + // Test control if (not(PICS_LIS_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_LOCATION_HELD)) { @@ -123,10 +125,11 @@ module AtsNg112_TestCases { // Preamble f_init_default_headers_list(v_headers); + f_remove_headears_list({ c_header_accept }, v_headers); httpPort.send( m_http_request( m_http_request_post( - PICS_LIS_REQUEST_URIs[0], + PICS_LIS_URI, v_headers, m_http_message_body_xml(m_body_xml_location_request( m_locationRequest( @@ -248,10 +251,11 @@ module AtsNg112_TestCases { // Preamble f_init_default_headers_list(v_headers); + f_remove_headears_list({ c_header_accept }, v_headers); httpPort.send( m_http_request( m_http_request_post( - PICS_LIS_REQUEST_URIs[1], + PICS_LIS_URI, v_headers, m_http_message_body_xml(m_body_xml_location_request( m_locationRequest( @@ -377,11 +381,11 @@ module AtsNg112_TestCases { httpPort.send( m_http_request( m_http_request_post( - PICS_LIS_REQUEST_URIs[2], + PICS_LIS_URI, v_headers, m_http_message_body_xml(m_body_xml_location_request( m_locationRequest( - { encvalue_unichar(valueof(m_device({ PX_DEVICE_URI_TEL }))) }, + { encvalue_unichar(valueof(m_device({ PX_UNKNOWN_DEVICE_URI }))) }, m_locationTypeType(m_locationTypeBase_geodetic, true) ) ) @@ -473,7 +477,7 @@ module AtsNg112_TestCases { ) }, { m_notLost(encvalue_unichar(valueof(m_point(PX_LOST_NO_LOST, PX_SRS_NAME, "point1")))) }, - PX_LOST_SERVICE, + PX_LOST_SERVICE_URN_1, true, value_ ))) @@ -507,6 +511,94 @@ module AtsNg112_TestCases { f_cf_01_http_down(); } // End of testcase TC_ECRF_HTTP_POST_BV_01 + /** + * @desc "IUT successfully responds with a service URI for a Circle in the service boundary" + * @reference + * "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause XXX EMERGENCY CALL ROUTING FUNCTION (ECRF)", + * "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.4", + * "https://tools.ietf.org/html/rfc5222" + * @remark PICS Selection PICS_HTTP_POST_REQUEST PICS_SERVICE_LOST + *
+     * Initial conditions with {
+     *   the IUT entity havingServiceBoundaryFor the SERVICE_BOUNDARY_1 containing
+     *     serviceMappingFor SERVICE_URN_1 containing
+     *        URI indicating value SIP_URI_1;
+     *   ;
+     *   and the IUT entity havingServiceBoundaryFor the SERVICE_BOUNDARY_2 containing
+     *     serviceMappingFor SERVICE_URN_2 containing
+     *        URI indicating value SIP_URI_2;
+     *   ;
+     * }
+     * 
+ */ + testcase TC_ECRF_HTTP_POST_BV_02() runs on HttpComponent system TestAdapter { + // Local variables + var HeaderLines v_headers; + + // Test control + if (not(PICS_ECRF_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_SERVICE_LOST)) { + log("*** " & testcasename() & ": PICS_ECRF_IUT and PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_01_http_up(); + + // Test adapter configuration + + // Preamble + f_init_default_headers_list(v_headers); + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ECRF_REQUEST_URIs[1], + v_headers, + m_http_message_body_xml( + m_body_xml_find_service_request( + m_find_service_request( + { + m_location( + PX_LOST_ID, + { m_extension_point( { m_notLost(encvalue_unichar(valueof(m_circle(m_center_group_pos(PX_CIRCLE_POS), m_radius(PX_CIRCLE_UOM, PX_CIRCLE_BASE), PX_SRS_NAME, "circle1")))) } ) }, + "geodetic-2d" // TODO Use a Pixit + ) + }, + { m_notLost(encvalue_unichar(valueof(m_circle(mw_center_group_pos(PX_CIRCLE_POS), m_radius(PX_CIRCLE_UOM, PX_CIRCLE_BASE), PX_SRS_NAME, "circle1")))) }, + PX_LOST_SERVICE_URN_2, + true, + value_ + ))) + ))); + f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success); + + // Test body + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_body_xml_find_service_response( + mw_find_service_response( + { mw_mapping } + )))))) { + tc_ac.stop; + // TODO Need to decode content + log("*** " & testcasename() & ": PASS: IUT successfully responds with a Circle ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_ECRF_HTTP_POST_BV_02 + } // End of group ecrf_role } // End of module AtsNg112_TestCases diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn index dac202f..914d8f9 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn @@ -30,13 +30,13 @@ module LibNg112_Pics { /** * @desc */ - modulepar charstring PICS_LIS_URI := "/service"; + modulepar charstring PICS_LIS_URI := "/api/held"; /** * @desc HTTP POST Uris * @see RFC 2616 Hypertext Transfer Protocol -- HTTP/1.1 */ - modulepar request_uri_list PICS_LIS_REQUEST_URIs := { "/t/9rk8l-1531130342/post", "/t/r143f-1528105031/post", "/t/6ouem-1531201238/post" }; + // modulepar request_uri_list PICS_LIS_REQUEST_URIs := { "/api/held", "/api/held", "/api/held" }; //{ "/t/9rk8l-1531130342/post", "/t/r143f-1528105031/post", "/t/6ouem-1531201238/post" }; /** * @desc diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn index bab5ffc..92a82af 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn @@ -30,7 +30,7 @@ module LibNg112_Pixits { /** * @desc Device identifier using SIP uri */ - modulepar charstring PX_DEVICE_URI_SIP := "sip:user@example.net;gr=kjh29x97us97d"; + modulepar charstring PX_DEVICE_URI_SIP := "sip:user@example.net;gr=kjh29x97us97d"; /** * @desc Device identifier using TEL uri @@ -40,12 +40,12 @@ module LibNg112_Pixits { /** * @desc Unknown device identifier */ - modulepar charstring PX_UNKNOWN_DEVICE_URI := "sip:no_one@example.net;gr=kjh29x97us97d"; + modulepar charstring PX_UNKNOWN_DEVICE_URI := "sip:no_one@example.net;gr=kjh29x97us97d"; /** * @desc Device point position */ - modulepar DoubleList PX_DEVICE_POSITION := { -34.407, 150.883, 24.8 }; + modulepar DoubleList PX_DEVICE_POSITION := { -34.400, 134.400 }; /** * @desc Device position with a circle of conficence @@ -60,6 +60,10 @@ module LibNg112_Pixits { modulepar XSD.Token PX_LOST_ID := "6020688f1ce1896d"; + modulepar XSD.AnyURI PX_LOST_SERVICE_URN_1 := "urn:service:sos.police"; + + modulepar XSD.AnyURI PX_LOST_SERVICE_URN_2 := "urn:service:sos.police"; + modulepar XSD.AnyURI PX_LOST_SERVICE := "urn:service:sos.police"; modulepar DoubleList PX_LOST_NO_LOST := { 48.2153879, 16.2903 }; diff --git a/vagrant/provisioner.bash b/vagrant/provisioner.bash index 929341f..46aa240 100755 --- a/vagrant/provisioner.bash +++ b/vagrant/provisioner.bash @@ -9,7 +9,7 @@ sudo DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y sudo DEBIAN_FRONTEND=noninteractive apt-get install software-properties-common -y sudo DEBIAN_FRONTEND=noninteractive add-apt-repository ppa:linuxuprising/java -y sudo DEBIAN_FRONTEND=noninteractive apt-get update -sudo DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated install emacs openjdk-11-jre gcc-8 g++-8 git subversion lsof ntp gdb make cmake flex bison autoconf doxygen graphviz libtool libncurses5-dev expect libssl-dev libxml2-dev xutils-dev tcpdump libpcap-dev libwireshark-dev wget tree unzip sshpass kubuntu-desktop valgrind qt5-default qttools5-dev qtmultimedia5-dev libqt5svg5-dev vim tzdata dos2unix xsltproc -y +sudo DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated install emacs openjdk-11-jre gcc-8 g++-8 git subversion lsof ntp gdb make cmake flex bison autoconf doxygen graphviz libtool libncurses5-dev expect libssl-dev libgcrypt-dev libxml2-dev xutils-dev tcpdump libpcap-dev libwireshark-dev wget tree unzip sshpass kubuntu-desktop valgrind qt5-default qttools5-dev qtmultimedia5-dev libqt5svg5-dev vim tzdata dos2unix xsltproc -y # Install java #sudo DEBIAN_FRONTEND=noninteractive apt-get install oracle-java9-installer oracle-java9-set-default -y #sudo DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated install oracle-java10-installer oracle-java10-set-default -y diff --git a/validation/TC_LIS_HTTP_POST_BV_01.pcapng b/validation/TC_LIS_HTTP_POST_BV_01.pcapng new file mode 100644 index 0000000000000000000000000000000000000000..c4b03436912a9d6e1427ad5ec3fd2ba1901ebb58 GIT binary patch literal 2448 zcmb_e&2QX96rZL^m9DxH;#3tRMk`PfrCxt~ZO6M!vPqf(X|3#55zx8VGc zus&?H){UyR0KiGG2rNVD5C*T2IHbc2)?f>#yClHSN5KwM&%;hmq7c?BMFrEK3fA&L z5}*XmUn42b`Y7F5;Nq>S3g>r=SyH5)Z7HZ`cXX~pjEDRYHh(ytpF9Cz3TWW^8WyUq zU-mcNe%Eqps@|-vN_uUzDH-azBCR%?j$~}Ct*kn>vtg|?Zv$|eOFG5nocWKo^DBjZ zao3v?I{?18F#|sP_6|J9_u_f)qeq{7fA5b+U(GsaXTds{I`jT-%ix1kFMRXxb1+?g z>tko(KJXvheeUJQkDJ&(yS#euO91>Utu~ZVLgYT?k=ksxeOaxl<)}Oxf2hz@r@j34003V%oRuVxjcKeb%g^YD3$p3S?=I=V$%1)6>7c0>A_;P*W6m<+X!czCO;SZE6QZ5so7u0iVKzsA8PD zaEk;f&1jcNmoBwrRjDfFQVTPlZn{Ibu$ArYm2Q{BgzeRB-R@X5EyOijHBn%Oif$ms z&^jI4GEmo2Ra@t4WavQ`X@+XnR6}@!w%4rk66DhFKsfGT#2K-r8PQ0B(6{J zbKDAeL-Oemr#O^W_qc^Ezj}GS{SRh`meX;RKrwNEkYRK*1KS`)i6z@sQ;JQYl!iHZqfKW)O7f29`U5AHdHm&)Lo?pFK%%scuig4 zH3E5ZGG3eYidt1F5XS)xN!+VfuC_NMy8<(Y;t)kN#`Q`}D;FC4-Xx6MI7?`p;ZZHr zE5|6o3cnBe@Dkp$xiVgTF%v1T2!cE8M0+_U`Atkwb}Ov>i{yla-HF6PD$A1yLtc~> zrm|t!-wV_Doj_01!(0U?_lxD(*cw5Z3~$^qj-h(eTvX+0@%zFip(+sf3~l?2J|!`O zS(;r&10HG-O4!Rx#x@PUiq|d?a%JOhHtkQ%RDJj~v+#5tkS+lP! zp;<%Hjj91v@%Cgv7$s)Hb9naT!nz|kJoz|IdU=L=SW5EE>E!0$;NaN@Wxi`E>C+H=vLfB*VNcmli#nl$I%)HH)hN_Rsip:user@example.net;gr=kjh29x97us97d", + PX_DEVICE_URI_TEL := "+331234567890", + PX_UNKNOWN_DEVICE_URI := "sip:no_one@example.net;gr=kjh29x97us97d", + PX_DEVICE_POSITION := { + -34.400000, + 134.400000 + }, + PX_CIRCLE_POS := { + 48.215388, + 16.290300 + }, + PX_CIRCLE_UOM := "urn:ogc:def:uom:EPSG::9001", + PX_CIRCLE_BASE := 23.600000, + PX_SRS_NAME := "urn:ogc:def:crs:EPSG::4326", + PX_LOST_ID := "6020688f1ce1896d", + PX_LOST_SERVICE_URN_1 := "urn:service:sos.police", + PX_LOST_SERVICE_URN_2 := "urn:service:sos.police", + PX_LOST_SERVICE := "urn:service:sos.police", + PX_LOST_NO_LOST := { + 48.215388, + 16.290300 + } +} +14:53:07.358899 hc EXECUTOR - Module LibSip_PIXITS has the following parameters: { + PX_SIP_SDP_USER_NAME := "voicesession", + PX_SIP_SDP_SESSION_ID := "30000", + PX_SIP_SDP_DYN := "0", + PX_SIP_SDP_B_MODIFIER := "AS", + PX_SIP_SDP_B_BANDWIDTH := 64, + PX_SIP_SDP_ENCODING := "PCMU", + PX_SIP_SDP_CLOCKRATE := "8000", + PX_MB_LENGTH_FROM_ENCVAL := true, + PX_USE_FX_FOR_XML_LENGTH := false, + PX_SIP_TRANSPORT := "UDP", + PX_SIP_REGISTRATION := false, + PX_AUTH_ALGORITHM := "AKAv1-MD5", + PX_SIP_REGISTER_AUTHENTICATION_ENABLED := true, + PX_SIP_INVITE_AUTHENTICATION_ENABLED := false, + PX_SIP_TWAIT := 30.000000, + PX_SIP_TACK := 8.000000, + PX_SIP_TRESP := 15.000000, + PX_SIP_TNOACT := 1.000000, + PX_SIP_MIME_BOUNDARY := "boundary1" +} +14:53:07.359386 hc EXECUTOR - Initializing module AtsNg112_TestCases. +14:53:07.359798 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0 Initializing module LibItsHttp_Functions. +14:53:07.360303 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_TypesAndValues. +14:53:07.360951 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0 Initializing module LibItsHttp_MessageBodyTypes. +14:53:07.361506 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XmlMessageBodyTypes. +14:53:07.362298 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XMLTypes. +14:53:07.362720 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XMLTypes finished. +14:53:07.363634 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held. +14:53:07.364311 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../ttcn/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initializing module http_www_w3_org_XML_1998_namespace. +14:53:07.364908 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../ttcn/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../ttcn/http_www_w3_org_XML_1998_namespace.ttcn:0 Initializing module XSD. +14:53:07.365640 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../ttcn/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../ttcn/http_www_w3_org_XML_1998_namespace.ttcn:0->../ttcn/XSD.ttcn:0 Initializing module UsefulTtcn3Types. +14:53:07.365986 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../ttcn/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../ttcn/http_www_w3_org_XML_1998_namespace.ttcn:0->../ttcn/XSD.ttcn:0 Initialization of module UsefulTtcn3Types finished. +14:53:07.366548 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../ttcn/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../ttcn/http_www_w3_org_XML_1998_namespace.ttcn:0 Initialization of module XSD finished. +14:53:07.367054 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../ttcn/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initialization of module http_www_w3_org_XML_1998_namespace finished. +14:53:07.367375 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held finished. +14:53:07.367630 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_lost1. +14:53:07.368080 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_lost1 finished. +14:53:07.368589 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XmlMessageBodyTypes finished. +14:53:07.368932 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_BinaryMessageBodyTypes. +14:53:07.369414 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_BinaryMessageBodyTypes finished. +14:53:07.369742 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0 Initialization of module LibItsHttp_MessageBodyTypes finished. +14:53:07.370097 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_TypesAndValues finished. +14:53:07.370703 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_Pics. +14:53:07.371018 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_Pics finished. +14:53:07.371252 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0 Initialization of module LibItsHttp_Functions finished. +14:53:07.371500 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Templates. +14:53:07.371670 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Templates finished. +14:53:07.372371 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Functions. +14:53:07.372636 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_Templates. +14:53:07.372948 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_Templates finished. +14:53:07.373442 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_XmlTemplates. +14:53:07.373652 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held_id. +14:53:07.373885 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held_id finished. +14:53:07.374336 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10. +14:53:07.374824 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0->../ttcn/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy. +14:53:07.375115 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0->../ttcn/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy finished. +14:53:07.375723 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10 finished. +14:53:07.376318 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc. +14:53:07.376695 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc finished. +14:53:07.377345 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf. +14:53:07.377602 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf finished. +14:53:07.378100 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0 Initializing module http_www_opengis_net_pidflo_1_0. +14:53:07.378419 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0->../ttcn/http_www_opengis_net_pidflo_1_0.ttcn:0 Initializing module http_www_opengis_net_gml. +14:53:07.378855 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0->../ttcn/http_www_opengis_net_pidflo_1_0.ttcn:0 Initialization of module http_www_opengis_net_gml finished. +14:53:07.379135 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0 Initialization of module http_www_opengis_net_pidflo_1_0 finished. +14:53:07.379652 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_XmlTemplates finished. +14:53:07.380562 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TypesAndValues. +14:53:07.380901 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TypesAndValues finished. +14:53:07.381322 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TestSystem. +14:53:07.381555 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibItsHttp_TestSystem. +14:53:07.382090 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Sync. +14:53:07.382849 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon_Sync.ttcn:0 Initializing module LibCommon_AbstractData. +14:53:07.383248 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon_Sync.ttcn:0->../ttcn/LibCommon_AbstractData.ttcn:0 Initializing module LibCommon_BasicTypesAndValues. +14:53:07.384141 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon_Sync.ttcn:0->../ttcn/LibCommon_AbstractData.ttcn:0 Initialization of module LibCommon_BasicTypesAndValues finished. +14:53:07.384576 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_AbstractData finished. +14:53:07.385100 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon_Sync.ttcn:0 Initializing module LibCommon_VerdictControl. +14:53:07.385458 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_VerdictControl finished. +14:53:07.386087 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Sync finished. +14:53:07.386575 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Time. +14:53:07.386934 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Time finished. +14:53:07.387213 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibItsHttp_TestSystem finished. +14:53:07.387445 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibSip_Interface. +14:53:07.387698 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_SIPTypesAndValues. +14:53:07.387942 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0 Initializing module LibSip_MessageBodyTypes. +14:53:07.388209 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SDPTypes. +14:53:07.388510 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_SDPTypes.ttcn:0 Initializing module LibSip_Common. +14:53:07.388805 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_SDPTypes.ttcn:0 Initialization of module LibSip_Common finished. +14:53:07.389062 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SDPTypes finished. +14:53:07.389390 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SimpleMsgSummaryTypes. +14:53:07.389693 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SimpleMsgSummaryTypes finished. +14:53:07.390005 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_XMLTypes. +14:53:07.390340 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_resource_lists. +14:53:07.390613 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_resource_lists finished. +14:53:07.392369 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_xcap. +14:53:07.392631 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_ietf_params_xml_ns_common_policy. +14:53:07.392950 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_ietf_params_xml_ns_common_policy finished. +14:53:07.393346 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_oma_xml_xdm_common_policy. +14:53:07.393681 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_oma_xml_xdm_common_policy finished. +14:53:07.393989 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_xcap finished. +14:53:07.394214 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_mcid. +14:53:07.395093 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_mcid finished. +14:53:07.395885 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initializing module NoTargetNamespace. +14:53:07.397575 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module NoTargetNamespace finished. +14:53:07.398762 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_3gpp_ns_cw_1_0. +14:53:07.399210 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_3gpp_ns_cw_1_0 finished. +14:53:07.399715 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_conference_info. +14:53:07.400141 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_conference_info finished. +14:53:07.400894 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_pstn. +14:53:07.401409 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_pstn finished. +14:53:07.402115 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_comm_div_info. +14:53:07.402847 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_comm_div_info finished. +14:53:07.403409 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_reginfo. +14:53:07.403714 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_reginfo finished. +14:53:07.404154 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_XMLTypes finished. +14:53:07.404733 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0 Initialization of module LibSip_MessageBodyTypes finished. +14:53:07.405370 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_SIPTypesAndValues finished. +14:53:07.405667 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_PIXITS. +14:53:07.406129 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_PIXITS.ttcn:0 Initializing module LibCommon_DataStrings. +14:53:07.406434 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_PIXITS.ttcn:0 Initialization of module LibCommon_DataStrings finished. +14:53:07.406885 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_PIXITS finished. +14:53:07.413386 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibSip_Interface finished. +14:53:07.413860 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TestSystem finished. +14:53:07.417463 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Functions finished. +14:53:07.418014 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pics. +14:53:07.418489 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pics finished. +14:53:07.418722 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pixits. +14:53:07.419145 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pixits finished. +14:53:07.419406 hc EXECUTOR - Initialization of module AtsNg112_TestCases finished. +14:53:07.419789 hc EXECUTOR - Initializing module AtsNg112_TestControl. +14:53:07.420063 hc EXECUTOR - Initialization of module AtsNg112_TestControl finished. +14:53:07.420323 hc EXECUTOR - Initializing module LibCommon_TextStrings. +14:53:07.420802 hc EXECUTOR - Initialization of module LibCommon_TextStrings finished. +14:53:07.421246 hc EXECUTOR - Initializing module LibItsHttp_BinaryTemplates. +14:53:07.421545 hc EXECUTOR - Initialization of module LibItsHttp_BinaryTemplates finished. +14:53:07.421885 hc EXECUTOR - Initializing module LibItsHttp_BinaryTypes. +14:53:07.422170 hc EXECUTOR - Initialization of module LibItsHttp_BinaryTypes finished. +14:53:07.422645 hc EXECUTOR - Initializing module LibItsHttp_EncdecDeclarations. +14:53:07.422917 hc EXECUTOR - Initialization of module LibItsHttp_EncdecDeclarations finished. +14:53:07.429428 hc EXECUTOR - Initializing module LibNg112_EncdecDeclarations. +14:53:07.430093 hc EXECUTOR ../ttcn/LibNg112_EncdecDeclarations.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape. +14:53:07.430721 hc EXECUTOR ../ttcn/LibNg112_EncdecDeclarations.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape finished. +14:53:07.431057 hc EXECUTOR - Initialization of module LibNg112_EncdecDeclarations finished. +14:53:07.431329 hc EXECUTOR - Initializing module LibSip_EncdecDeclarations. +14:53:07.431606 hc EXECUTOR ../ttcn/LibSip_EncdecDeclarations.ttcn:0 Initializing module LibSip_SMSTypesAndValues. +14:53:07.432060 hc EXECUTOR ../ttcn/LibSip_EncdecDeclarations.ttcn:0 Initialization of module LibSip_SMSTypesAndValues finished. +14:53:07.432346 hc EXECUTOR - Initialization of module LibSip_EncdecDeclarations finished. +14:53:07.432602 hc EXECUTOR - Initializing module LibSip_Library. +14:53:07.432851 hc EXECUTOR ../ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_SMSTemplates. +14:53:07.434067 hc EXECUTOR ../ttcn/LibSip_Library.ttcn:0->../ttcn/LibSip_SMSTemplates.ttcn:0 Initializing module LibSip_SMSFunctions. +14:53:07.434550 hc EXECUTOR ../ttcn/LibSip_Library.ttcn:0->../ttcn/LibSip_SMSTemplates.ttcn:0 Initialization of module LibSip_SMSFunctions finished. +14:53:07.454866 hc EXECUTOR ../ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_SMSTemplates finished. +14:53:07.461369 hc EXECUTOR ../ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_Steps. +14:53:07.462318 hc EXECUTOR ../ttcn/LibSip_Library.ttcn:0->../ttcn/LibSip_Steps.ttcn:0 Initializing module LibSip_Templates. +14:53:07.488340 hc EXECUTOR ../ttcn/LibSip_Library.ttcn:0->../ttcn/LibSip_Steps.ttcn:0 Initialization of module LibSip_Templates finished. +14:53:07.489256 hc EXECUTOR ../ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_Steps finished. +14:53:07.489774 hc EXECUTOR - Initialization of module LibSip_Library finished. +14:53:07.490586 hc EXECUTOR - Initializing module PreGenRecordOf. +14:53:07.490838 hc EXECUTOR - Initialization of module PreGenRecordOf finished. +14:53:07.491127 hc EXECUTOR - Initializing module TitanLoggerApi. +14:53:07.491683 hc EXECUTOR - Initialization of module TitanLoggerApi finished. +14:53:07.492194 hc EXECUTOR - Initializing module urn_ietf_params_xml_ns_geopriv_conf. +14:53:07.492714 hc EXECUTOR - Initialization of module urn_ietf_params_xml_ns_geopriv_conf finished. +14:53:07.493687 hc EXECUTOR - Configuration data was processed successfully. +14:53:07.496327 hc EXECUTOR - MTC was created. Process id: 10284. +14:53:07.499777 mtc EXECUTOR - TTCN-3 Main Test Component started on vagrant. Version: CRL 113 200/6 R4A. +14:53:07.500083 mtc EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error +14:53:07.500328 mtc EXECUTOR - Connected to MC. +14:53:07.501034 mtc EXECUTOR - Executing test case TC_LIS_HTTP_POST_BV_01 in module AtsNg112_TestCases. +14:53:07.501512 mtc TESTCASE ../ttcn/AtsNg112_TestCases.ttcn:107(testcase:TC_LIS_HTTP_POST_BV_01) Test case TC_LIS_HTTP_POST_BV_01 started. +14:53:07.501945 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:107(testcase:TC_LIS_HTTP_POST_BV_01) Initializing variables, timers and ports of component type LibItsHttp_TestSystem.HttpComponent inside testcase TC_LIS_HTTP_POST_BV_01. +14:53:07.502618 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:107(testcase:TC_LIS_HTTP_POST_BV_01) Port syncPort was started. +14:53:07.502938 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:107(testcase:TC_LIS_HTTP_POST_BV_01) Port syncSendPort was started. +14:53:07.503361 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:107(testcase:TC_LIS_HTTP_POST_BV_01) >>> HttpPort::user_start +14:53:07.503848 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:107(testcase:TC_LIS_HTTP_POST_BV_01) Port httpPort was started. +14:53:07.504177 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:107(testcase:TC_LIS_HTTP_POST_BV_01) Component type LibItsHttp_TestSystem.HttpComponent was initialized. +14:53:07.504621 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Mapping port mtc:httpPort to system:httpPort. +14:53:07.505271 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) HttpPort::set_parameter: params=HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server=location-information-service.azurewebsites.net,port=80,use_ssl=0) +14:53:07.505955 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> HttpPort::user_map: httpPort +14:53:07.506422 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) HttpPort::user_map: HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server=location-information-service.azurewebsites.net,port=80,use_ssl=0) +14:53:07.507167 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server=location-information-service.azurewebsites.net,port=80,use_ssl=0) +14:53:07.510497 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - codecs=lost:lost_codec;held:held_codec)/TCP(debug=1, - codecs - lost:lost_codec;held:held_codec)/TCP(debug=1 - , +14:53:07.511552 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - server=location-information-service.azurewebsites.net, - server - location-information-service.azurewebsites.net - , +14:53:07.511948 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - port=80, - port - 80 - , +14:53:07.512432 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - use_ssl=0) - use_ssl - 0) - +14:53:07.513427 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert +14:53:07.514183 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> layer_stack_builder::create_layer_stack: HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server=location-information-service.azurewebsites.net,port=80,use_ssl=0) +14:53:07.517357 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: 5 - HTTP(codecs=lost:lost_codec;held:held_codec)/ - HTTP - (codecs=lost:lost_codec;held:held_codec) - codecs=lost:lost_codec;held:held_codec +14:53:07.518144 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Create layer HTTP, codecs=lost:lost_codec;held:held_codec +14:53:07.518888 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> http_layer::http_layer: HTTP, codecs=lost:lost_codec;held:held_codec +14:53:07.519227 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: codecs=lost:lost_codec;held:held_codec +14:53:07.522032 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - codecs=lost:lost_codec;held:held_codec - codecs - lost:lost_codec;held:held_codec - +14:53:07.523128 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert +14:53:07.523481 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> http_codec::set_payload_codecs: lost:lost_codec;held:held_codec +14:53:07.531731 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) http_codec::set_payload_codecs: 6 - lost - lost_codec - ;held:held_codec - held - held_codec - - - +14:53:07.532433 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) http_codec::set_payload_codecs: insert (lost, lost_codec), j = 1 +14:53:07.533225 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) http_codec::set_payload_codecs: insert (held, held_codec), j = 4 +14:53:07.533855 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Setup layers for HTTP +14:53:07.534630 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: 5 - TCP(debug=1,server=location-information-service.azurewebsites.net,port=80,use_ssl=0) - TCP - (debug=1,server=location-information-service.azurewebsites.net,port=80,use_ssl=0) - debug=1,server=location-information-service.azurewebsites.net,port=80,use_ssl=0 +14:53:07.535329 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Create layer TCP, debug=1,server=location-information-service.azurewebsites.net,port=80,use_ssl=0 +14:53:07.535929 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::tcp_layer: TCP, debug=1,server=location-information-service.azurewebsites.net,port=80,use_ssl=0 +14:53:07.536604 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: debug=1,server=location-information-service.azurewebsites.net,port=80,use_ssl=0 +14:53:07.539517 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - debug=1, - debug - 1 - , +14:53:07.540499 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - server=location-information-service.azurewebsites.net, - server - location-information-service.azurewebsites.net - , +14:53:07.541249 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - port=80, - port - 80 - , +14:53:07.541880 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - use_ssl=0 - use_ssl - 0 - +14:53:07.542474 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert +14:53:07.542990 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::log +14:53:07.543502 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (debug, 1) +14:53:07.543926 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (port, 80) +14:53:07.544487 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (server, location-information-service.azurewebsites.net) +14:53:07.545009 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (use_ssl, 0) +14:53:07.545971 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(server, location-information-service.azurewebsites.net) +14:53:07.546513 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(server, location-information-service.azurewebsites.net) +14:53:07.548385 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(server, location-information-service.azurewebsites.net) +14:53:07.549745 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(server, location-information-service.azurewebsites.net) +14:53:07.550222 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(port, 80) +14:53:07.550611 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(port, 80) +14:53:07.551100 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(port, 80) +14:53:07.551522 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(port, 80) +14:53:07.551817 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(use_connection_ASPs, yes) +14:53:07.552081 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(use_connection_ASPs, yes) +14:53:07.552966 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(use_connection_ASPs, yes) +14:53:07.553804 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(use_connection_ASPs, yes) +14:53:07.554155 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(server_backlog, 1024) +14:53:07.554874 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(server_backlog, 1024) +14:53:07.555521 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(server_backlog, 1024) +14:53:07.555876 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(server_backlog, 1024) +14:53:07.556625 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::map_user() +14:53:07.556993 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::map_user() +14:53:07.557333 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::open_client_connection(remoteAddr: location-information-service.azurewebsites.net/80, localAddr: UNSPEC/UNSPEC) called +14:53:07.741217 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Number of remote addresses: 1 + +14:53:07.743126 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Using address family for socket 6: IPv4 +14:53:07.746039 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Connecting to server from address UNSPEC/UNSPEC +14:53:07.806514 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Connection established (addr): 10.0.2.15/55332 -> location-information-service.azurewebsites.net/80 + +14:53:07.809612 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: connected to: host location-information-service.azurewebsites.net service 80 via address family IPv4 + +14:53:07.811083 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_add_peer: Adding client 6 to peer list +14:53:07.813065 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_get_last_peer: Finding last peer of the peer array +14:53:07.815671 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_get_last_peer: No active peer found +14:53:07.816762 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_resize_list: Resizing to 7 +14:53:07.818461 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_resize_list: New length is 7 +14:53:07.819492 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::open_client_connection(). Handler set to socket fd 6 +14:53:07.819982 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::add_user_data: 6 +14:53:07.820356 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) tcp_layer::add_user_data: Non secured mode +14:53:07.820606 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::client_connection_opened: 6 +14:53:07.820897 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Setup layers for TCP +14:53:07.821425 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Port httpPort was mapped to system:httpPort. +14:53:07.821775 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Map operation of mtc:httpPort to system:httpPort finished. +14:53:07.822227 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../ttcn/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../ttcn/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Connecting ports mtc:syncSendPort and mtc:syncPort. +14:53:07.822970 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../ttcn/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../ttcn/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Port syncPort has established the connection with local port syncSendPort. +14:53:07.823592 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../ttcn/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../ttcn/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Port syncSendPort has established the connection with local port syncPort. +14:53:07.823965 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../ttcn/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../ttcn/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Connect operation on mtc:syncSendPort and mtc:syncPort finished. +14:53:07.824497 mtc DEFAULTOP ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:28(function:f_cf_01_http_up) Altstep a_cf_01_http_down was activated as default, id 1 +14:53:07.824912 mtc DEFAULTOP ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:29(function:f_cf_01_http_up) Altstep a_default_requests was activated as default, id 2 +14:53:07.825706 mtc DEFAULTOP ../ttcn/AtsNg112_TestCases.ttcn:122(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:30(function:f_cf_01_http_up) Altstep a_default_responses was activated as default, id 3 +14:53:07.827422 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) Warning: No UTF-8 Byte Order Mark(BOM) detected. It may result decoding errors +14:53:07.830270 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) Sent on httpPort to system @LibItsHttp_TypesAndValues.HttpMessage : { + request := { + method := "POST", + uri := "/api/held", + version_major := 1, + version_minor := 1, + header := { + { + header_name := "Host", + header_value := { + "location-information-service.azurewebsites.net" + } + }, + { + header_name := "Content-type", + header_value := { + "application/held+xml;charset=utf-8" + } + }, + { + header_name := "Content-length", + header_value := { + "0" + } + }, + { + header_name := "Connection", + header_value := { + "keep-alive" + } + }, + { + header_name := "Pragma", + header_value := { + "no-cache" + } + }, + { + header_name := "Cache-Control", + header_value := { + "no-cache" + } + } + }, + body := { + xml_body := { + locationRequest := { + responseTime := omit, + attr := omit, + locationType := { + exact := true, + base := { + alt_1 := { + geodetic (1) + } + } + }, + elem_list := { + " + +331234567890 + + +" + } + } + } + } + } +} +14:53:07.831695 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) >>> HttpPort::outgoing_send: payload={ + request := { + method := "POST", + uri := "/api/held", + version_major := 1, + version_minor := 1, + header := { + { + header_name := "Host", + header_value := { + "location-information-service.azurewebsites.net" + } + }, + { + header_name := "Content-type", + header_value := { + "application/held+xml;charset=utf-8" + } + }, + { + header_name := "Content-length", + header_value := { + "0" + } + }, + { + header_name := "Connection", + header_value := { + "keep-alive" + } + }, + { + header_name := "Pragma", + header_value := { + "no-cache" + } + }, + { + header_name := "Cache-Control", + header_value := { + "no-cache" + } + } + }, + body := { + xml_body := { + locationRequest := { + responseTime := omit, + attr := omit, + locationType := { + exact := true, + base := { + alt_1 := { + geodetic (1) + } + } + }, + elem_list := { + " + +331234567890 + + +" + } + } + } + } + } +} +14:53:07.833060 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_layer::sendMsg: { + request := { + method := "POST", + uri := "/api/held", + version_major := 1, + version_minor := 1, + header := { + { + header_name := "Host", + header_value := { + "location-information-service.azurewebsites.net" + } + }, + { + header_name := "Content-type", + header_value := { + "application/held+xml;charset=utf-8" + } + }, + { + header_name := "Content-length", + header_value := { + "0" + } + }, + { + header_name := "Connection", + header_value := { + "keep-alive" + } + }, + { + header_name := "Pragma", + header_value := { + "no-cache" + } + }, + { + header_name := "Cache-Control", + header_value := { + "no-cache" + } + } + }, + body := { + xml_body := { + locationRequest := { + responseTime := omit, + attr := omit, + locationType := { + exact := true, + base := { + alt_1 := { + geodetic (1) + } + } + }, + elem_list := { + " + +331234567890 + + +" + } + } + } + } + } +} +14:53:07.835130 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode: { + request := { + method := "POST", + uri := "/api/held", + version_major := 1, + version_minor := 1, + header := { + { + header_name := "Host", + header_value := { + "location-information-service.azurewebsites.net" + } + }, + { + header_name := "Content-type", + header_value := { + "application/held+xml;charset=utf-8" + } + }, + { + header_name := "Content-length", + header_value := { + "0" + } + }, + { + header_name := "Connection", + header_value := { + "keep-alive" + } + }, + { + header_name := "Pragma", + header_value := { + "no-cache" + } + }, + { + header_name := "Cache-Control", + header_value := { + "no-cache" + } + } + }, + body := { + xml_body := { + locationRequest := { + responseTime := omit, + attr := omit, + locationType := { + exact := true, + base := { + alt_1 := { + geodetic (1) + } + } + }, + elem_list := { + " + +331234567890 + + +" + } + } + } + } + } +} +14:53:07.836542 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode_request: { + method := "POST", + uri := "/api/held", + version_major := 1, + version_minor := 1, + header := { + { + header_name := "Host", + header_value := { + "location-information-service.azurewebsites.net" + } + }, + { + header_name := "Content-type", + header_value := { + "application/held+xml;charset=utf-8" + } + }, + { + header_name := "Content-length", + header_value := { + "0" + } + }, + { + header_name := "Connection", + header_value := { + "keep-alive" + } + }, + { + header_name := "Pragma", + header_value := { + "no-cache" + } + }, + { + header_name := "Cache-Control", + header_value := { + "no-cache" + } + } + }, + body := { + xml_body := { + locationRequest := { + responseTime := omit, + attr := omit, + locationType := { + exact := true, + base := { + alt_1 := { + geodetic (1) + } + } + }, + elem_list := { + " + +331234567890 + + +" + } + } + } + } +} +14:53:07.838013 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_request: body: { + xml_body := { + locationRequest := { + responseTime := omit, + attr := omit, + locationType := { + exact := true, + base := { + alt_1 := { + geodetic (1) + } + } + }, + elem_list := { + " + +331234567890 + + +" + } + } + } +} +14:53:07.838654 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::encode_body: { + xml_body := { + locationRequest := { + responseTime := omit, + attr := omit, + locationType := { + exact := true, + base := { + alt_1 := { + geodetic (1) + } + } + }, + elem_list := { + " + +331234567890 + + +" + } + } + } +} +14:53:07.839617 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_body: # of codecs=2 +14:53:07.840309 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_body: Call 'held_codec' +14:53:07.842679 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) >>> held_codec::encode: { + locationRequest := { + responseTime := omit, + attr := omit, + locationType := { + exact := true, + base := { + alt_1 := { + geodetic (1) + } + } + }, + elem_list := { + " + +331234567890 + + +" + } + } +} +14:53:07.843188 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) held_codec::encode: Process LocationRequestType{ + responseTime := omit, + attr := omit, + locationType := { + exact := true, + base := { + alt_1 := { + geodetic (1) + } + } + }, + elem_list := { + " + +331234567890 + + +" + } +} +14:53:07.844246 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) held_codec::decode: After encoding: '3C68656C643A6C6F636174696F6E5265717565737420786D6C6E733A68656C643D2775726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64273E0A093C68656C643A6C6F636174696F6E547970652065786163743D2774727565273E67656F64657469633C2F68656C643A6C6F636174696F6E547970653E0A093C69643A64657669636520786D6C6E733A69643D2775726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C643A6964273E0A093C7572693E2B3333313233343536373839303C2F7572693E0A3C2F69643A6465766963653E0A0A0A3C2F68656C643A6C6F636174696F6E526571756573743E0A0A'O (" + geodetic + + +331234567890 + + + + + +") +14:53:07.851913 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) <<< held_codec::encode +14:53:07.852234 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_body: HTTP message '3C68656C643A6C6F636174696F6E5265717565737420786D6C6E733A68656C643D2775726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64273E0A093C68656C643A6C6F636174696F6E547970652065786163743D2774727565273E67656F64657469633C2F68656C643A6C6F636174696F6E547970653E0A093C69643A64657669636520786D6C6E733A69643D2775726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C643A6964273E0A093C7572693E2B3333313233343536373839303C2F7572693E0A3C2F69643A6465766963653E0A0A0A3C2F68656C643A6C6F636174696F6E526571756573743E0A0A'O (" + geodetic + + +331234567890 + + + + + +") +14:53:07.858449 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_body: HTTP message length: 263 +14:53:07.858704 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_request: length=263 +14:53:07.859312 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_request: Processing header "Host" +14:53:07.859735 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_request: Processing value "location-information-service.azurewebsites.net" +14:53:07.860137 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_request: Processing header "Content-type" +14:53:07.860459 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_request: Processing value "application/held+xml;charset=utf-8" +14:53:07.861067 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_request: Processing header "Content-length" +14:53:07.861453 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_request: Processing header "Connection" +14:53:07.861722 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_request: Processing value "keep-alive" +14:53:07.862268 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_request: Processing header "Pragma" +14:53:07.862618 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_request: Processing value "no-cache" +14:53:07.864039 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_request: Processing header "Cache-Control" +14:53:07.866951 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::encode_request: Processing value "no-cache" +14:53:07.867420 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) <<< http_codec::encode: data='504F5354202F6170692F68656C6420485454502F312E310D0A486F73743A206C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A436F6E74656E742D747970653A206170706C69636174696F6E2F68656C642B786D6C3B636861727365743D7574662D380D0A436F6E74656E742D6C656E6774683A203236350D0A436F6E6E656374696F6E3A206B6565702D616C6976650D0A507261676D613A206E6F2D63616368650D0A43616368652D436F6E74726F6C3A206E6F2D63616368650D0A0D0A3C68656C643A6C6F636174696F6E5265717565737420786D6C6E733A68656C643D2775726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64273E0A093C68656C643A6C6F636174696F6E547970652065786163743D2774727565273E67656F64657469633C2F68656C643A6C6F636174696F6E547970653E0A093C69643A64657669636520786D6C6E733A69643D2775726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C643A6964273E0A093C7572693E2B3333313233343536373839303C2F7572693E0A3C2F69643A6465766963653E0A0A0A3C2F68656C643A6C6F636174696F6E526571756573743E0A0A0D0A'O ("POST /api/held HTTP/1.1\r +Host: location-information-service.azurewebsites.net\r +Content-type: application/held+xml;charset=utf-8\r +Content-length: 265\r +Connection: keep-alive\r +Pragma: no-cache\r +Cache-Control: no-cache\r +\r + + geodetic + + +331234567890 + + + + + +\r +") +14:53:07.886794 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_layer::send_data: '504F5354202F6170692F68656C6420485454502F312E310D0A486F73743A206C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A436F6E74656E742D747970653A206170706C69636174696F6E2F68656C642B786D6C3B636861727365743D7574662D380D0A436F6E74656E742D6C656E6774683A203236350D0A436F6E6E656374696F6E3A206B6565702D616C6976650D0A507261676D613A206E6F2D63616368650D0A43616368652D436F6E74726F6C3A206E6F2D63616368650D0A0D0A3C68656C643A6C6F636174696F6E5265717565737420786D6C6E733A68656C643D2775726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64273E0A093C68656C643A6C6F636174696F6E547970652065786163743D2774727565273E67656F64657469633C2F68656C643A6C6F636174696F6E547970653E0A093C69643A64657669636520786D6C6E733A69643D2775726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C643A6964273E0A093C7572693E2B3333313233343536373839303C2F7572693E0A3C2F69643A6465766963653E0A0A0A3C2F68656C643A6C6F636174696F6E526571756573743E0A0A0D0A'O ("POST /api/held HTTP/1.1\r +Host: location-information-service.azurewebsites.net\r +Content-type: application/held+xml;charset=utf-8\r +Content-length: 265\r +Connection: keep-alive\r +Pragma: no-cache\r +Cache-Control: no-cache\r +\r + + geodetic + + +331234567890 + + + + + +\r +") +14:53:07.905610 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) >>> tcp_layer::send_data: '504F5354202F6170692F68656C6420485454502F312E310D0A486F73743A206C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A436F6E74656E742D747970653A206170706C69636174696F6E2F68656C642B786D6C3B636861727365743D7574662D380D0A436F6E74656E742D6C656E6774683A203236350D0A436F6E6E656374696F6E3A206B6565702D616C6976650D0A507261676D613A206E6F2D63616368650D0A43616368652D436F6E74726F6C3A206E6F2D63616368650D0A0D0A3C68656C643A6C6F636174696F6E5265717565737420786D6C6E733A68656C643D2775726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64273E0A093C68656C643A6C6F636174696F6E547970652065786163743D2774727565273E67656F64657469633C2F68656C643A6C6F636174696F6E547970653E0A093C69643A64657669636520786D6C6E733A69643D2775726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C643A6964273E0A093C7572693E2B3333313233343536373839303C2F7572693E0A3C2F69643A6465766963653E0A0A0A3C2F68656C643A6C6F636174696F6E526571756573743E0A0A0D0A'O ("POST /api/held HTTP/1.1\r +Host: location-information-service.azurewebsites.net\r +Content-type: application/held+xml;charset=utf-8\r +Content-length: 265\r +Connection: keep-alive\r +Pragma: no-cache\r +Cache-Control: no-cache\r +\r + + geodetic + + +331234567890 + + + + + +\r +") +14:53:07.948949 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) tcp_layer::send_data: SSL mode: 0 +14:53:07.949525 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) Abstract socket: entering Abstract_Socket::send_outgoing() +14:53:07.949893 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) Abstract socket: Sending data: Size: 484, Msg: 50 4f 53 54 20 2f 61 70 69 2f 68 65 6c 64 20 48 54 54 50 2f 31 2e 31 0d 0a 48 6f 73 74 3a 20 6c 6f 63 61 74 69 6f 6e 2d 69 6e 66 6f 72 6d 61 74 69 6f 6e 2d 73 65 72 76 69 63 65 2e 61 7a 75 72 65 77 65 62 73 69 74 65 73 2e 6e 65 74 0d 0a 43 6f 6e 74 65 6e 74 2d 74 79 70 65 3a 20 61 70 70 6c 69 63 61 74 69 6f 6e 2f 68 65 6c 64 2b 78 6d 6c 3b 63 68 61 72 73 65 74 3d 75 74 66 2d 38 0d 0a 43 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 3a 20 32 36 35 0d 0a 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 6b 65 65 70 2d 61 6c 69 76 65 0d 0a 50 72 61 67 6d 61 3a 20 6e 6f 2d 63 61 63 68 65 0d 0a 43 61 63 68 65 2d 43 6f 6e 74 72 6f 6c 3a 20 6e 6f 2d 63 61 63 68 65 0d 0a 0d 0a 3c 68 65 6c 64 3a 6c 6f 63 61 74 69 6f 6e 52 65 71 75 65 73 74 20 78 6d 6c 6e 73 3a 68 65 6c 64 3d 27 75 72 6e 3a 69 65 74 66 3a 70 61 72 61 6d 73 3a 78 6d 6c 3a 6e 73 3a 67 65 6f 70 72 69 76 3a 68 65 6c 64 27 3e 0a 09 3c 68 65 6c 64 3a 6c 6f 63 61 74 69 6f 6e 54 79 70 65 20 65 78 61 63 74 3d 27 74 72 75 65 27 3e 67 65 6f 64 65 74 69 63 3c 2f 68 65 6c 64 3a 6c 6f 63 61 74 69 6f 6e 54 79 70 65 3e 0a 09 3c 69 64 3a 64 65 76 69 63 65 20 78 6d 6c 6e 73 3a 69 64 3d 27 75 72 6e 3a 69 65 74 66 3a 70 61 72 61 6d 73 3a 78 6d 6c 3a 6e 73 3a 67 65 6f 70 72 69 76 3a 68 65 6c 64 3a 69 64 27 3e 0a 09 3c 75 72 69 3e 2b 33 33 31 32 33 34 35 36 37 38 39 30 3c 2f 75 72 69 3e 0a 3c 2f 69 64 3a 64 65 76 69 63 65 3e 0a 0a 0a 3c 2f 68 65 6c 64 3a 6c 6f 63 61 74 69 6f 6e 52 65 71 75 65 73 74 3e 0a 0a 0d 0a +14:53:07.957888 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) >>> tcp_layer::send_message_on_fd: 6 +14:53:07.958187 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) tcp_layer::send_message_on_fd: Non secured mode +14:53:07.958778 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) Abstract socket: Nr of bytes sent = 484 +14:53:07.959239 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) Abstract socket: leaving Abstract_Socket::send_outgoing() +14:53:07.959972 mtc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:129(testcase:TC_LIS_HTTP_POST_BV_01) HttpPort::outgoing_send: Execution duration: 84.540001 ms +14:53:07.961063 mtc VERDICTOP ../ttcn/AtsNg112_TestCases.ttcn:144(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibCommon_Sync.ttcn:448(function:f_selfOrClientSyncAndVerdictTestBody)->../ttcn/LibCommon_Sync.ttcn:1153(function:f_selfSyncAndVerdictTestBody)->../ttcn/LibCommon_VerdictControl.ttcn:49(function:f_setVerdict) setverdict(pass): none -> pass +14:53:07.963333 mtc USER ../ttcn/AtsNg112_TestCases.ttcn:144(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibCommon_Sync.ttcn:448(function:f_selfOrClientSyncAndVerdictTestBody)->../ttcn/LibCommon_Sync.ttcn:1154(function:f_selfSyncAndVerdictTestBody)->../ttcn/LibCommon_Sync.ttcn:1197(function:f_selfSync) **** f_selfSync: Successfully passed PREAMBLE synchronization point. **** +14:53:07.964909 mtc TIMEROP ../ttcn/AtsNg112_TestCases.ttcn:147(testcase:TC_LIS_HTTP_POST_BV_01) Start timer tc_ac: 30 s +14:53:08.334760 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) >>> tcp_layer::Handle_Fd_Event: 6 +14:53:08.337062 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) Abstract socket: entering Abstract_Socket::Handle_Socket_Event(): fd: 6 readable +14:53:08.338133 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) Abstract socket: receiving data +14:53:08.339118 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) >>> tcp_layer::receive_message_on_fd: 6 +14:53:08.340810 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) tcp_layer::receive_message_on_fd: Non secured mode +14:53:08.342290 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) Abstract socket: Message received from address (addr) 10.0.2.15/55332 +14:53:08.343916 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) Abstract socket: Message received, buffer content: Size: 1351, Msg: 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d 0a 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 3a 20 38 35 32 0d 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 61 70 70 6c 69 63 61 74 69 6f 6e 2f 68 65 6c 64 2b 78 6d 6c 3b 20 63 68 61 72 73 65 74 3d 75 74 66 2d 38 0d 0a 53 65 72 76 65 72 3a 20 4d 69 63 72 6f 73 6f 66 74 2d 49 49 53 2f 31 30 2e 30 0d 0a 53 65 74 2d 43 6f 6f 6b 69 65 3a 20 41 52 52 41 66 66 69 6e 69 74 79 3d 38 33 38 62 36 37 32 64 65 37 38 31 35 61 63 35 64 30 33 34 61 39 34 32 62 62 38 36 34 61 66 36 31 31 38 33 62 62 38 61 34 33 63 66 61 32 34 31 35 37 31 34 33 39 34 31 36 63 66 66 34 38 63 61 3b 50 61 74 68 3d 2f 3b 48 74 74 70 4f 6e 6c 79 3b 44 6f 6d 61 69 6e 3d 6c 6f 63 61 74 69 6f 6e 2d 69 6e 66 6f 72 6d 61 74 69 6f 6e 2d 73 65 72 76 69 63 65 2e 61 7a 75 72 65 77 65 62 73 69 74 65 73 2e 6e 65 74 0d 0a 58 2d 50 6f 77 65 72 65 64 2d 42 79 3a 20 41 53 50 2e 4e 45 54 0d 0a 53 65 74 2d 43 6f 6f 6b 69 65 3a 20 41 52 52 41 66 66 69 6e 69 74 79 3d 38 64 36 39 62 39 30 63 30 35 65 63 61 61 34 34 62 32 34 65 38 62 30 35 39 62 32 62 39 35 31 30 34 32 64 37 32 65 30 36 66 36 39 34 32 32 30 30 39 39 66 30 33 34 61 38 31 31 34 35 35 61 30 31 3b 50 61 74 68 3d 2f 3b 48 74 74 70 4f 6e 6c 79 3b 44 6f 6d 61 69 6e 3d 6c 6f 63 61 74 69 6f 6e 2d 69 6e 66 6f 72 6d 61 74 69 6f 6e 2d 73 65 72 76 69 63 65 2e 61 7a 75 72 65 77 65 62 73 69 74 65 73 2e 6e 65 74 0d 0a 44 61 74 65 3a 20 4d 6f 6e 2c 20 32 33 20 4a 75 6c 20 32 30 31 38 20 31 32 3a 35 33 3a 30 37 20 47 4d 54 0d 0a 0d 0a 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 31 2e 30 22 20 65 6e 63 6f 64 69 6e 67 3d 22 55 54 46 2d 38 22 20 73 74 61 6e 64 61 6c 6f 6e 65 3d 22 6e 6f 22 3f 3e 0d 0a 3c 6c 6f 63 61 74 69 6f 6e 52 65 73 70 6f 6e 73 65 20 78 6d 6c 6e 73 3d 22 75 72 6e 3a 69 65 74 66 3a 70 61 72 61 6d 73 3a 78 6d 6c 3a 6e 73 3a 67 65 6f 70 72 69 76 3a 68 65 6c 64 22 3e 0d 0a 20 20 20 20 3c 70 72 65 73 65 6e 63 65 20 65 6e 74 69 74 79 3d 22 70 72 65 73 3a 77 62 6c 79 75 6f 69 75 78 65 6f 61 73 7a 64 22 20 78 6d 6c 6e 73 3d 22 75 72 6e 3a 69 65 74 66 3a 70 61 72 61 6d 73 3a 78 6d 6c 3a 6e 73 3a 70 69 64 66 22 3e 0d 0a 20 20 20 20 20 20 20 20 3c 74 75 70 6c 65 20 69 64 3d 22 74 31 74 77 64 68 79 64 72 6e 6a 63 33 72 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 74 61 74 75 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 67 65 6f 70 72 69 76 20 78 6d 6c 6e 73 3d 22 75 72 6e 3a 69 65 74 66 3a 70 61 72 61 6d 73 3a 78 6d 6c 3a 6e 73 3a 70 69 64 66 3a 67 65 6f 70 72 69 76 31 30 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 6f 63 61 74 69 6f 6e 2d 69 6e 66 6f 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 50 6f 69 6e 74 20 73 72 73 4e 61 6d 65 3d 22 75 72 6e 3a 6f 67 63 3a 64 65 66 3a 63 72 73 3a 45 50 53 47 3a 3a 34 33 32 36 22 20 78 6d 6c 6e 73 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 6f 70 65 6e 67 69 73 2e 6e 65 74 2f 67 6d 6c 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 6f 73 3e 2d 33 34 2e 34 20 31 33 34 2e 34 3c 2f 70 6f 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 50 6f 69 6e 74 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 6c 6f 63 61 74 69 6f 6e 2d 69 6e 66 6f 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 73 61 67 65 2d 72 75 6c 65 73 2f 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6d 65 74 68 6f 64 3e 75 6e 6b 6e 6f 77 6e 3c 2f 6d 65 74 68 6f 64 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 67 65 6f 70 72 69 76 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 73 74 61 74 75 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 74 69 6d 65 73 74 61 6d 70 3e 31 39 37 30 2d 30 31 2d 31 35 54 30 36 3a 35 36 3a 30 37 2b 30 30 3a 30 30 3c 2f 74 69 6d 65 73 74 61 6d 70 3e 0d 0a 20 20 20 20 20 20 20 20 3c 2f 74 75 70 6c 65 3e 0d 0a 20 20 20 20 3c 2f 70 72 65 73 65 6e 63 65 3e 0d 0a 3c 2f 6c 6f 63 61 74 69 6f 6e 52 65 73 70 6f 6e 73 65 3e 0d 0a +14:53:08.378344 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) >>> tcp_layer::message_incoming +14:53:08.381450 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) tcp_layer::message_incoming: 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d 0a 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 3a 20 38 35 32 0d 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 61 70 70 6c 69 63 61 74 69 6f 6e 2f 68 65 6c 64 2b 78 6d 6c 3b 20 63 68 61 72 73 65 74 3d 75 74 66 2d 38 0d 0a 53 65 72 76 65 72 3a 20 4d 69 63 72 6f 73 6f 66 74 2d 49 49 53 2f 31 30 2e 30 0d 0a 53 65 74 2d 43 6f 6f 6b 69 65 3a 20 41 52 52 41 66 66 69 6e 69 74 79 3d 38 33 38 62 36 37 32 64 65 37 38 31 35 61 63 35 64 30 33 34 61 39 34 32 62 62 38 36 34 61 66 36 31 31 38 33 62 62 38 61 34 33 63 66 61 32 34 31 35 37 31 34 33 39 34 31 36 63 66 66 34 38 63 61 3b 50 61 74 68 3d 2f 3b 48 74 74 70 4f 6e 6c 79 3b 44 6f 6d 61 69 6e 3d 6c 6f 63 61 74 69 6f 6e 2d 69 6e 66 6f 72 6d 61 74 69 6f 6e 2d 73 65 72 76 69 63 65 2e 61 7a 75 72 65 77 65 62 73 69 74 65 73 2e 6e 65 74 0d 0a 58 2d 50 6f 77 65 72 65 64 2d 42 79 3a 20 41 53 50 2e 4e 45 54 0d 0a 53 65 74 2d 43 6f 6f 6b 69 65 3a 20 41 52 52 41 66 66 69 6e 69 74 79 3d 38 64 36 39 62 39 30 63 30 35 65 63 61 61 34 34 62 32 34 65 38 62 30 35 39 62 32 62 39 35 31 30 34 32 64 37 32 65 30 36 66 36 39 34 32 32 30 30 39 39 66 30 33 34 61 38 31 31 34 35 35 61 30 31 3b 50 61 74 68 3d 2f 3b 48 74 74 70 4f 6e 6c 79 3b 44 6f 6d 61 69 6e 3d 6c 6f 63 61 74 69 6f 6e 2d 69 6e 66 6f 72 6d 61 74 69 6f 6e 2d 73 65 72 76 69 63 65 2e 61 7a 75 72 65 77 65 62 73 69 74 65 73 2e 6e 65 74 0d 0a 44 61 74 65 3a 20 4d 6f 6e 2c 20 32 33 20 4a 75 6c 20 32 30 31 38 20 31 32 3a 35 33 3a 30 37 20 47 4d 54 0d 0a 0d 0a 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 31 2e 30 22 20 65 6e 63 6f 64 69 6e 67 3d 22 55 54 46 2d 38 22 20 73 74 61 6e 64 61 6c 6f 6e 65 3d 22 6e 6f 22 3f 3e 0d 0a 3c 6c 6f 63 61 74 69 6f 6e 52 65 73 70 6f 6e 73 65 20 78 6d 6c 6e 73 3d 22 75 72 6e 3a 69 65 74 66 3a 70 61 72 61 6d 73 3a 78 6d 6c 3a 6e 73 3a 67 65 6f 70 72 69 76 3a 68 65 6c 64 22 3e 0d 0a 20 20 20 20 3c 70 72 65 73 65 6e 63 65 20 65 6e 74 69 74 79 3d 22 70 72 65 73 3a 77 62 6c 79 75 6f 69 75 78 65 6f 61 73 7a 64 22 20 78 6d 6c 6e 73 3d 22 75 72 6e 3a 69 65 74 66 3a 70 61 72 61 6d 73 3a 78 6d 6c 3a 6e 73 3a 70 69 64 66 22 3e 0d 0a 20 20 20 20 20 20 20 20 3c 74 75 70 6c 65 20 69 64 3d 22 74 31 74 77 64 68 79 64 72 6e 6a 63 33 72 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 74 61 74 75 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 67 65 6f 70 72 69 76 20 78 6d 6c 6e 73 3d 22 75 72 6e 3a 69 65 74 66 3a 70 61 72 61 6d 73 3a 78 6d 6c 3a 6e 73 3a 70 69 64 66 3a 67 65 6f 70 72 69 76 31 30 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 6f 63 61 74 69 6f 6e 2d 69 6e 66 6f 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 50 6f 69 6e 74 20 73 72 73 4e 61 6d 65 3d 22 75 72 6e 3a 6f 67 63 3a 64 65 66 3a 63 72 73 3a 45 50 53 47 3a 3a 34 33 32 36 22 20 78 6d 6c 6e 73 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 6f 70 65 6e 67 69 73 2e 6e 65 74 2f 67 6d 6c 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 6f 73 3e 2d 33 34 2e 34 20 31 33 34 2e 34 3c 2f 70 6f 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 50 6f 69 6e 74 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 6c 6f 63 61 74 69 6f 6e 2d 69 6e 66 6f 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 73 61 67 65 2d 72 75 6c 65 73 2f 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6d 65 74 68 6f 64 3e 75 6e 6b 6e 6f 77 6e 3c 2f 6d 65 74 68 6f 64 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 67 65 6f 70 72 69 76 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 73 74 61 74 75 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 74 69 6d 65 73 74 61 6d 70 3e 31 39 37 30 2d 30 31 2d 31 35 54 30 36 3a 35 36 3a 30 37 2b 30 30 3a 30 30 3c 2f 74 69 6d 65 73 74 61 6d 70 3e 0d 0a 20 20 20 20 20 20 20 20 3c 2f 74 75 70 6c 65 3e 0d 0a 20 20 20 20 3c 2f 70 72 65 73 65 6e 63 65 3e 0d 0a 3c 2f 6c 6f 63 61 74 69 6f 6e 52 65 73 70 6f 6e 73 65 3e 0d 0a + +14:53:08.402108 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) >>> tcp_layer::receive_data: '485454502F312E3120323030204F4B0D0A436F6E74656E742D4C656E6774683A203835320D0A436F6E74656E742D547970653A206170706C69636174696F6E2F68656C642B786D6C3B20636861727365743D7574662D380D0A5365727665723A204D6963726F736F66742D4949532F31302E300D0A5365742D436F6F6B69653A20415252416666696E6974793D383338623637326465373831356163356430333461393432626238363461663631313833626238613433636661323431353731343339343136636666343863613B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A582D506F77657265642D42793A204153502E4E45540D0A5365742D436F6F6B69653A20415252416666696E6974793D386436396239306330356563616134346232346538623035396232623935313034326437326530366636393432323030393966303334613831313435356130313B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A446174653A204D6F6E2C203233204A756C20323031382031323A35333A303720474D540D0A0D0A3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D226E6F223F3E0D0A3C6C6F636174696F6E526573706F6E736520786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64223E0D0A202020203C70726573656E636520656E746974793D22707265733A77626C79756F697578656F61737A642220786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A70696466223E0D0A20202020202020203C7475706C652069643D227431747764687964726E6A63337272223E0D0A2020202020202020202020203C7374617475733E0D0A202020202020202020202020202020203C67656F7072697620786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A706964663A67656F707269763130223E0D0A20202020202020202020202020202020202020203C6C6F636174696F6E2D696E666F3E0D0A2020202020202020202020202020202020202020202020203C506F696E74207372734E616D653D2275726E3A6F67633A6465663A6372733A455053473A3A343332362220786D6C6E733D22687474703A2F2F7777772E6F70656E6769732E6E65742F676D6C223E0D0A202020202020202020202020202020202020202020202020202020203C706F733E2D33342E34203133342E343C2F706F733E0D0A2020202020202020202020202020202020202020202020203C2F506F696E743E0D0A20202020202020202020202020202020202020203C2F6C6F636174696F6E2D696E666F3E0D0A20202020202020202020202020202020202020203C75736167652D72756C65732F3E0D0A20202020202020202020202020202020202020203C6D6574686F643E756E6B6E6F776E3C2F6D6574686F643E0D0A202020202020202020202020202020203C2F67656F707269763E0D0A2020202020202020202020203C2F7374617475733E0D0A2020202020202020202020203C74696D657374616D703E313937302D30312D31355430363A35363A30372B30303A30303C2F74696D657374616D703E0D0A20202020202020203C2F7475706C653E0D0A202020203C2F70726573656E63653E0D0A3C2F6C6F636174696F6E526573706F6E73653E0D0A'O ("HTTP/1.1 200 OK\r +Content-Length: 852\r +Content-Type: application/held+xml; charset=utf-8\r +Server: Microsoft-IIS/10.0\r +Set-Cookie: ARRAffinity=838b672de7815ac5d034a942bb864af61183bb8a43cfa241571439416cff48ca;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net\r +X-Powered-By: ASP.NET\r +Set-Cookie: ARRAffinity=8d69b90c05ecaa44b24e8b059b2b951042d72e06f694220099f034a811455a01;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net\r +Date: Mon, 23 Jul 2018 12:53:07 GMT\r +\r +\r +\r + \r + \r + \r + \r + \r + \r + -34.4 134.4\r + \r + \r + \r + unknown\r + \r + \r + 1970-01-15T06:56:07+00:00\r + \r + \r +\r +") +14:53:08.539144 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_layer::receive_data: '485454502F312E3120323030204F4B0D0A436F6E74656E742D4C656E6774683A203835320D0A436F6E74656E742D547970653A206170706C69636174696F6E2F68656C642B786D6C3B20636861727365743D7574662D380D0A5365727665723A204D6963726F736F66742D4949532F31302E300D0A5365742D436F6F6B69653A20415252416666696E6974793D383338623637326465373831356163356430333461393432626238363461663631313833626238613433636661323431353731343339343136636666343863613B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A582D506F77657265642D42793A204153502E4E45540D0A5365742D436F6F6B69653A20415252416666696E6974793D386436396239306330356563616134346232346538623035396232623935313034326437326530366636393432323030393966303334613831313435356130313B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A446174653A204D6F6E2C203233204A756C20323031382031323A35333A303720474D540D0A0D0A3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D226E6F223F3E0D0A3C6C6F636174696F6E526573706F6E736520786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64223E0D0A202020203C70726573656E636520656E746974793D22707265733A77626C79756F697578656F61737A642220786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A70696466223E0D0A20202020202020203C7475706C652069643D227431747764687964726E6A63337272223E0D0A2020202020202020202020203C7374617475733E0D0A202020202020202020202020202020203C67656F7072697620786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A706964663A67656F707269763130223E0D0A20202020202020202020202020202020202020203C6C6F636174696F6E2D696E666F3E0D0A2020202020202020202020202020202020202020202020203C506F696E74207372734E616D653D2275726E3A6F67633A6465663A6372733A455053473A3A343332362220786D6C6E733D22687474703A2F2F7777772E6F70656E6769732E6E65742F676D6C223E0D0A202020202020202020202020202020202020202020202020202020203C706F733E2D33342E34203133342E343C2F706F733E0D0A2020202020202020202020202020202020202020202020203C2F506F696E743E0D0A20202020202020202020202020202020202020203C2F6C6F636174696F6E2D696E666F3E0D0A20202020202020202020202020202020202020203C75736167652D72756C65732F3E0D0A20202020202020202020202020202020202020203C6D6574686F643E756E6B6E6F776E3C2F6D6574686F643E0D0A202020202020202020202020202020203C2F67656F707269763E0D0A2020202020202020202020203C2F7374617475733E0D0A2020202020202020202020203C74696D657374616D703E313937302D30312D31355430363A35363A30372B30303A30303C2F74696D657374616D703E0D0A20202020202020203C2F7475706C653E0D0A202020203C2F70726573656E63653E0D0A3C2F6C6F636174696F6E526573706F6E73653E0D0A'O ("HTTP/1.1 200 OK\r +Content-Length: 852\r +Content-Type: application/held+xml; charset=utf-8\r +Server: Microsoft-IIS/10.0\r +Set-Cookie: ARRAffinity=838b672de7815ac5d034a942bb864af61183bb8a43cfa241571439416cff48ca;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net\r +X-Powered-By: ASP.NET\r +Set-Cookie: ARRAffinity=8d69b90c05ecaa44b24e8b059b2b951042d72e06f694220099f034a811455a01;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net\r +Date: Mon, 23 Jul 2018 12:53:07 GMT\r +\r +\r +\r + \r + \r + \r + \r + \r + \r + -34.4 134.4\r + \r + \r + \r + unknown\r + \r + \r + 1970-01-15T06:56:07+00:00\r + \r + \r +\r +") +14:53:08.651537 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::decode: data='485454502F312E3120323030204F4B0D0A436F6E74656E742D4C656E6774683A203835320D0A436F6E74656E742D547970653A206170706C69636174696F6E2F68656C642B786D6C3B20636861727365743D7574662D380D0A5365727665723A204D6963726F736F66742D4949532F31302E300D0A5365742D436F6F6B69653A20415252416666696E6974793D383338623637326465373831356163356430333461393432626238363461663631313833626238613433636661323431353731343339343136636666343863613B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A582D506F77657265642D42793A204153502E4E45540D0A5365742D436F6F6B69653A20415252416666696E6974793D386436396239306330356563616134346232346538623035396232623935313034326437326530366636393432323030393966303334613831313435356130313B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A446174653A204D6F6E2C203233204A756C20323031382031323A35333A303720474D540D0A0D0A3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D226E6F223F3E0D0A3C6C6F636174696F6E526573706F6E736520786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64223E0D0A202020203C70726573656E636520656E746974793D22707265733A77626C79756F697578656F61737A642220786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A70696466223E0D0A20202020202020203C7475706C652069643D227431747764687964726E6A63337272223E0D0A2020202020202020202020203C7374617475733E0D0A202020202020202020202020202020203C67656F7072697620786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A706964663A67656F707269763130223E0D0A20202020202020202020202020202020202020203C6C6F636174696F6E2D696E666F3E0D0A2020202020202020202020202020202020202020202020203C506F696E74207372734E616D653D2275726E3A6F67633A6465663A6372733A455053473A3A343332362220786D6C6E733D22687474703A2F2F7777772E6F70656E6769732E6E65742F676D6C223E0D0A202020202020202020202020202020202020202020202020202020203C706F733E2D33342E34203133342E343C2F706F733E0D0A2020202020202020202020202020202020202020202020203C2F506F696E743E0D0A20202020202020202020202020202020202020203C2F6C6F636174696F6E2D696E666F3E0D0A20202020202020202020202020202020202020203C75736167652D72756C65732F3E0D0A20202020202020202020202020202020202020203C6D6574686F643E756E6B6E6F776E3C2F6D6574686F643E0D0A202020202020202020202020202020203C2F67656F707269763E0D0A2020202020202020202020203C2F7374617475733E0D0A2020202020202020202020203C74696D657374616D703E313937302D30312D31355430363A35363A30372B30303A30303C2F74696D657374616D703E0D0A20202020202020203C2F7475706C653E0D0A202020203C2F70726573656E63653E0D0A3C2F6C6F636174696F6E526573706F6E73653E0D0A'O ("HTTP/1.1 200 OK\r +Content-Length: 852\r +Content-Type: application/held+xml; charset=utf-8\r +Server: Microsoft-IIS/10.0\r +Set-Cookie: ARRAffinity=838b672de7815ac5d034a942bb864af61183bb8a43cfa241571439416cff48ca;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net\r +X-Powered-By: ASP.NET\r +Set-Cookie: ARRAffinity=8d69b90c05ecaa44b24e8b059b2b951042d72e06f694220099f034a811455a01;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net\r +Date: Mon, 23 Jul 2018 12:53:07 GMT\r +\r +\r +\r + \r + \r + \r + \r + \r + \r + -34.4 134.4\r + \r + \r + \r + unknown\r + \r + \r + 1970-01-15T06:56:07+00:00\r + \r + \r +\r +") +14:53:08.751488 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode: decoding_buffer=Buffer: size: 1351, pos: 0, len: 1351 data: ( | 485454502F312E3120323030204F4B0D0A436F6E74656E742D4C656E6774683A203835320D0A436F6E74656E742D547970653A206170706C69636174696F6E2F68656C642B786D6C3B20636861727365743D7574662D380D0A5365727665723A204D6963726F736F66742D4949532F31302E300D0A5365742D436F6F6B69653A20415252416666696E6974793D383338623637326465373831356163356430333461393432626238363461663631313833626238613433636661323431353731343339343136636666343863613B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A582D506F77657265642D42793A204153502E4E45540D0A5365742D436F6F6B69653A20415252416666696E6974793D386436396239306330356563616134346232346538623035396232623935313034326437326530366636393432323030393966303334613831313435356130313B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A446174653A204D6F6E2C203233204A756C20323031382031323A35333A303720474D540D0A0D0A3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D226E6F223F3E0D0A3C6C6F636174696F6E526573706F6E736520786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64223E0D0A202020203C70726573656E636520656E746974793D22707265733A77626C79756F697578656F61737A642220786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A70696466223E0D0A20202020202020203C7475706C652069643D227431747764687964726E6A63337272223E0D0A2020202020202020202020203C7374617475733E0D0A202020202020202020202020202020203C67656F7072697620786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A706964663A67656F707269763130223E0D0A20202020202020202020202020202020202020203C6C6F636174696F6E2D696E666F3E0D0A2020202020202020202020202020202020202020202020203C506F696E74207372734E616D653D2275726E3A6F67633A6465663A6372733A455053473A3A343332362220786D6C6E733D22687474703A2F2F7777772E6F70656E6769732E6E65742F676D6C223E0D0A202020202020202020202020202020202020202020202020202020203C706F733E2D33342E34203133342E343C2F706F733E0D0A2020202020202020202020202020202020202020202020203C2F506F696E743E0D0A20202020202020202020202020202020202020203C2F6C6F636174696F6E2D696E666F3E0D0A20202020202020202020202020202020202020203C75736167652D72756C65732F3E0D0A20202020202020202020202020202020202020203C6D6574686F643E756E6B6E6F776E3C2F6D6574686F643E0D0A202020202020202020202020202020203C2F67656F707269763E0D0A2020202020202020202020203C2F7374617475733E0D0A2020202020202020202020203C74696D657374616D703E313937302D30312D31355430363A35363A30372B30303A30303C2F74696D657374616D703E0D0A20202020202020203C2F7475706C653E0D0A202020203C2F70726573656E63653E0D0A3C2F6C6F636174696F6E526573706F6E73653E0D0A) +14:53:08.810366 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode: message_id: "HTTP/1.1 200 OK" +14:53:08.816762 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode: 2 - HTTP/ +14:53:08.833237 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode: Process response: 5 +14:53:08.834283 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::decode_headers +14:53:08.834711 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_headersBuffer: size: 1351, pos: 17, len: 1351 data: (485454502F312E3120323030204F4B0D0A | 436F6E74656E742D4C656E6774683A203835320D0A436F6E74656E742D547970653A206170706C69636174696F6E2F68656C642B786D6C3B20636861727365743D7574662D380D0A5365727665723A204D6963726F736F66742D4949532F31302E300D0A5365742D436F6F6B69653A20415252416666696E6974793D383338623637326465373831356163356430333461393432626238363461663631313833626238613433636661323431353731343339343136636666343863613B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A582D506F77657265642D42793A204153502E4E45540D0A5365742D436F6F6B69653A20415252416666696E6974793D386436396239306330356563616134346232346538623035396232623935313034326437326530366636393432323030393966303334613831313435356130313B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A446174653A204D6F6E2C203233204A756C20323031382031323A35333A303720474D540D0A0D0A3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D226E6F223F3E0D0A3C6C6F636174696F6E526573706F6E736520786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64223E0D0A202020203C70726573656E636520656E746974793D22707265733A77626C79756F697578656F61737A642220786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A70696466223E0D0A20202020202020203C7475706C652069643D227431747764687964726E6A63337272223E0D0A2020202020202020202020203C7374617475733E0D0A202020202020202020202020202020203C67656F7072697620786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A706964663A67656F707269763130223E0D0A20202020202020202020202020202020202020203C6C6F636174696F6E2D696E666F3E0D0A2020202020202020202020202020202020202020202020203C506F696E74207372734E616D653D2275726E3A6F67633A6465663A6372733A455053473A3A343332362220786D6C6E733D22687474703A2F2F7777772E6F70656E6769732E6E65742F676D6C223E0D0A202020202020202020202020202020202020202020202020202020203C706F733E2D33342E34203133342E343C2F706F733E0D0A2020202020202020202020202020202020202020202020203C2F506F696E743E0D0A20202020202020202020202020202020202020203C2F6C6F636174696F6E2D696E666F3E0D0A20202020202020202020202020202020202020203C75736167652D72756C65732F3E0D0A20202020202020202020202020202020202020203C6D6574686F643E756E6B6E6F776E3C2F6D6574686F643E0D0A202020202020202020202020202020203C2F67656F707269763E0D0A2020202020202020202020203C2F7374617475733E0D0A2020202020202020202020203C74696D657374616D703E313937302D30312D31355430363A35363A30372B30303A30303C2F74696D657374616D703E0D0A20202020202020203C2F7475706C653E0D0A202020203C2F70726573656E63653E0D0A3C2F6C6F636174696F6E526573706F6E73653E0D0A) +14:53:08.879562 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_headers: "Content-Length: 852" +14:53:08.880089 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::decode_header"Content-Length: 852" +14:53:08.888586 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_header: 5 +14:53:08.889346 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_header: decoded Content-Length 852 +14:53:08.889881 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_headers: "Content-Type: application/held+xml; charset=utf-8" +14:53:08.890209 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::decode_header"Content-Type: application/held+xml; charset=utf-8" +14:53:08.896260 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_header: 5 +14:53:08.896930 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_headers: "Server: Microsoft-IIS/10.0" +14:53:08.897525 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::decode_header"Server: Microsoft-IIS/10.0" +14:53:08.902705 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_header: 5 +14:53:08.903282 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_headers: "Set-Cookie: ARRAffinity=838b672de7815ac5d034a942bb864af61183bb8a43cfa241571439416cff48ca;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" +14:53:08.903729 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::decode_header"Set-Cookie: ARRAffinity=838b672de7815ac5d034a942bb864af61183bb8a43cfa241571439416cff48ca;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" +14:53:08.915273 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_header: 5 +14:53:08.916046 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_headers: "X-Powered-By: ASP.NET" +14:53:08.916383 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::decode_header"X-Powered-By: ASP.NET" +14:53:08.925896 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_header: 5 +14:53:08.926714 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_headers: "Set-Cookie: ARRAffinity=8d69b90c05ecaa44b24e8b059b2b951042d72e06f694220099f034a811455a01;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" +14:53:08.933598 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::decode_header"Set-Cookie: ARRAffinity=8d69b90c05ecaa44b24e8b059b2b951042d72e06f694220099f034a811455a01;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" +14:53:08.938317 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_header: 5 +14:53:08.938967 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_headers: "Date: Mon, 23 Jul 2018 12:53:07 GMT" +14:53:08.939269 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::decode_header"Date: Mon, 23 Jul 2018 12:53:07 GMT" +14:53:08.943798 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_header: 5 +14:53:08.949157 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) <<< http_codec::decode_headers: { + { + header_name := "Content-Length", + header_value := { + "852" + } + }, + { + header_name := "Content-Type", + header_value := { + "application/held+xml; charset=utf-8" + } + }, + { + header_name := "Server", + header_value := { + "Microsoft-IIS/10.0" + } + }, + { + header_name := "Set-Cookie", + header_value := { + "ARRAffinity=838b672de7815ac5d034a942bb864af61183bb8a43cfa241571439416cff48ca;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" + } + }, + { + header_name := "X-Powered-By", + header_value := { + "ASP.NET" + } + }, + { + header_name := "Set-Cookie", + header_value := { + "ARRAffinity=8d69b90c05ecaa44b24e8b059b2b951042d72e06f694220099f034a811455a01;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" + } + }, + { + header_name := "Date", + header_value := { + "Mon, 23 Jul 2018 12:53:07 GMT" + } + } +} +14:53:08.949994 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) Before decoding Body: Buffer: size: 1351, pos: 499, len: 1351 data: (485454502F312E3120323030204F4B0D0A436F6E74656E742D4C656E6774683A203835320D0A436F6E74656E742D547970653A206170706C69636174696F6E2F68656C642B786D6C3B20636861727365743D7574662D380D0A5365727665723A204D6963726F736F66742D4949532F31302E300D0A5365742D436F6F6B69653A20415252416666696E6974793D383338623637326465373831356163356430333461393432626238363461663631313833626238613433636661323431353731343339343136636666343863613B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A582D506F77657265642D42793A204153502E4E45540D0A5365742D436F6F6B69653A20415252416666696E6974793D386436396239306330356563616134346232346538623035396232623935313034326437326530366636393432323030393966303334613831313435356130313B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A446174653A204D6F6E2C203233204A756C20323031382031323A35333A303720474D540D0A0D0A | 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D226E6F223F3E0D0A3C6C6F636174696F6E526573706F6E736520786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64223E0D0A202020203C70726573656E636520656E746974793D22707265733A77626C79756F697578656F61737A642220786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A70696466223E0D0A20202020202020203C7475706C652069643D227431747764687964726E6A63337272223E0D0A2020202020202020202020203C7374617475733E0D0A202020202020202020202020202020203C67656F7072697620786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A706964663A67656F707269763130223E0D0A20202020202020202020202020202020202020203C6C6F636174696F6E2D696E666F3E0D0A2020202020202020202020202020202020202020202020203C506F696E74207372734E616D653D2275726E3A6F67633A6465663A6372733A455053473A3A343332362220786D6C6E733D22687474703A2F2F7777772E6F70656E6769732E6E65742F676D6C223E0D0A202020202020202020202020202020202020202020202020202020203C706F733E2D33342E34203133342E343C2F706F733E0D0A2020202020202020202020202020202020202020202020203C2F506F696E743E0D0A20202020202020202020202020202020202020203C2F6C6F636174696F6E2D696E666F3E0D0A20202020202020202020202020202020202020203C75736167652D72756C65732F3E0D0A20202020202020202020202020202020202020203C6D6574686F643E756E6B6E6F776E3C2F6D6574686F643E0D0A202020202020202020202020202020203C2F67656F707269763E0D0A2020202020202020202020203C2F7374617475733E0D0A2020202020202020202020203C74696D657374616D703E313937302D30312D31355430363A35363A30372B30303A30303C2F74696D657374616D703E0D0A20202020202020203C2F7475706C653E0D0A202020203C2F70726573656E63653E0D0A3C2F6C6F636174696F6E526573706F6E73653E0D0A) +14:53:08.988032 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) >>> http_codec::decode_body +14:53:08.988607 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_bodyBuffer: size: 1351, pos: 499, len: 1351 data: (485454502F312E3120323030204F4B0D0A436F6E74656E742D4C656E6774683A203835320D0A436F6E74656E742D547970653A206170706C69636174696F6E2F68656C642B786D6C3B20636861727365743D7574662D380D0A5365727665723A204D6963726F736F66742D4949532F31302E300D0A5365742D436F6F6B69653A20415252416666696E6974793D383338623637326465373831356163356430333461393432626238363461663631313833626238613433636661323431353731343339343136636666343863613B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A582D506F77657265642D42793A204153502E4E45540D0A5365742D436F6F6B69653A20415252416666696E6974793D386436396239306330356563616134346232346538623035396232623935313034326437326530366636393432323030393966303334613831313435356130313B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A446174653A204D6F6E2C203233204A756C20323031382031323A35333A303720474D540D0A0D0A | 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D226E6F223F3E0D0A3C6C6F636174696F6E526573706F6E736520786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64223E0D0A202020203C70726573656E636520656E746974793D22707265733A77626C79756F697578656F61737A642220786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A70696466223E0D0A20202020202020203C7475706C652069643D227431747764687964726E6A63337272223E0D0A2020202020202020202020203C7374617475733E0D0A202020202020202020202020202020203C67656F7072697620786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A706964663A67656F707269763130223E0D0A20202020202020202020202020202020202020203C6C6F636174696F6E2D696E666F3E0D0A2020202020202020202020202020202020202020202020203C506F696E74207372734E616D653D2275726E3A6F67633A6465663A6372733A455053473A3A343332362220786D6C6E733D22687474703A2F2F7777772E6F70656E6769732E6E65742F676D6C223E0D0A202020202020202020202020202020202020202020202020202020203C706F733E2D33342E34203133342E343C2F706F733E0D0A2020202020202020202020202020202020202020202020203C2F506F696E743E0D0A20202020202020202020202020202020202020203C2F6C6F636174696F6E2D696E666F3E0D0A20202020202020202020202020202020202020203C75736167652D72756C65732F3E0D0A20202020202020202020202020202020202020203C6D6574686F643E756E6B6E6F776E3C2F6D6574686F643E0D0A202020202020202020202020202020203C2F67656F707269763E0D0A2020202020202020202020203C2F7374617475733E0D0A2020202020202020202020203C74696D657374616D703E313937302D30312D31355430363A35363A30372B30303A30303C2F74696D657374616D703E0D0A20202020202020203C2F7475706C653E0D0A202020203C2F70726573656E63653E0D0A3C2F6C6F636174696F6E526573706F6E73653E0D0A) +14:53:09.018891 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_body: # of codecs=2 +14:53:09.019636 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_body: raw body='3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D226E6F223F3E0D0A3C6C6F636174696F6E526573706F6E736520786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64223E0D0A202020203C70726573656E636520656E746974793D22707265733A77626C79756F697578656F61737A642220786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A70696466223E0D0A20202020202020203C7475706C652069643D227431747764687964726E6A63337272223E0D0A2020202020202020202020203C7374617475733E0D0A202020202020202020202020202020203C67656F7072697620786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A706964663A67656F707269763130223E0D0A20202020202020202020202020202020202020203C6C6F636174696F6E2D696E666F3E0D0A2020202020202020202020202020202020202020202020203C506F696E74207372734E616D653D2275726E3A6F67633A6465663A6372733A455053473A3A343332362220786D6C6E733D22687474703A2F2F7777772E6F70656E6769732E6E65742F676D6C223E0D0A202020202020202020202020202020202020202020202020202020203C706F733E2D33342E34203133342E343C2F706F733E0D0A2020202020202020202020202020202020202020202020203C2F506F696E743E0D0A20202020202020202020202020202020202020203C2F6C6F636174696F6E2D696E666F3E0D0A20202020202020202020202020202020202020203C75736167652D72756C65732F3E0D0A20202020202020202020202020202020202020203C6D6574686F643E756E6B6E6F776E3C2F6D6574686F643E0D0A202020202020202020202020202020203C2F67656F707269763E0D0A2020202020202020202020203C2F7374617475733E0D0A2020202020202020202020203C74696D657374616D703E313937302D30312D31355430363A35363A30372B30303A30303C2F74696D657374616D703E0D0A20202020202020203C2F7475706C653E0D0A202020203C2F70726573656E63653E0D0A3C2F6C6F636174696F6E526573706F6E73653E0D0A'O ("\r +\r + \r + \r + \r + \r + \r + \r + -34.4 134.4\r + \r + \r + \r + unknown\r + \r + \r + 1970-01-15T06:56:07+00:00\r + \r + \r +\r +") +14:53:09.047688 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_body: _dc.length=852 - body length=852 +14:53:09.048145 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_body: Aligned body='3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D226E6F223F3E0D0A3C6C6F636174696F6E526573706F6E736520786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64223E0D0A202020203C70726573656E636520656E746974793D22707265733A77626C79756F697578656F61737A642220786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A70696466223E0D0A20202020202020203C7475706C652069643D227431747764687964726E6A63337272223E0D0A2020202020202020202020203C7374617475733E0D0A202020202020202020202020202020203C67656F7072697620786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A706964663A67656F707269763130223E0D0A20202020202020202020202020202020202020203C6C6F636174696F6E2D696E666F3E0D0A2020202020202020202020202020202020202020202020203C506F696E74207372734E616D653D2275726E3A6F67633A6465663A6372733A455053473A3A343332362220786D6C6E733D22687474703A2F2F7777772E6F70656E6769732E6E65742F676D6C223E0D0A202020202020202020202020202020202020202020202020202020203C706F733E2D33342E34203133342E343C2F706F733E0D0A2020202020202020202020202020202020202020202020203C2F506F696E743E0D0A20202020202020202020202020202020202020203C2F6C6F636174696F6E2D696E666F3E0D0A20202020202020202020202020202020202020203C75736167652D72756C65732F3E0D0A20202020202020202020202020202020202020203C6D6574686F643E756E6B6E6F776E3C2F6D6574686F643E0D0A202020202020202020202020202020203C2F67656F707269763E0D0A2020202020202020202020203C2F7374617475733E0D0A2020202020202020202020203C74696D657374616D703E313937302D30312D31355430363A35363A30372B30303A30303C2F74696D657374616D703E0D0A20202020202020203C2F7475706C653E0D0A202020203C2F70726573656E63653E0D0A3C2F6C6F636174696F6E526573706F6E73653E0D0A'O ("\r +\r + \r + \r + \r + \r + \r + \r + -34.4 134.4\r + \r + \r + \r + unknown\r + \r + \r + 1970-01-15T06:56:07+00:00\r + \r + \r +\r +") +14:53:09.076534 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_body: Counter=2 +14:53:09.077113 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_body: Finalised body='3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D226E6F223F3E0D0A3C6C6F636174696F6E526573706F6E736520786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64223E0D0A202020203C70726573656E636520656E746974793D22707265733A77626C79756F697578656F61737A642220786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A70696466223E0D0A20202020202020203C7475706C652069643D227431747764687964726E6A63337272223E0D0A2020202020202020202020203C7374617475733E0D0A202020202020202020202020202020203C67656F7072697620786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A706964663A67656F707269763130223E0D0A20202020202020202020202020202020202020203C6C6F636174696F6E2D696E666F3E0D0A2020202020202020202020202020202020202020202020203C506F696E74207372734E616D653D2275726E3A6F67633A6465663A6372733A455053473A3A343332362220786D6C6E733D22687474703A2F2F7777772E6F70656E6769732E6E65742F676D6C223E0D0A202020202020202020202020202020202020202020202020202020203C706F733E2D33342E34203133342E343C2F706F733E0D0A2020202020202020202020202020202020202020202020203C2F506F696E743E0D0A20202020202020202020202020202020202020203C2F6C6F636174696F6E2D696E666F3E0D0A20202020202020202020202020202020202020203C75736167652D72756C65732F3E0D0A20202020202020202020202020202020202020203C6D6574686F643E756E6B6E6F776E3C2F6D6574686F643E0D0A202020202020202020202020202020203C2F67656F707269763E0D0A2020202020202020202020203C2F7374617475733E0D0A2020202020202020202020203C74696D657374616D703E313937302D30312D31355430363A35363A30372B30303A30303C2F74696D657374616D703E0D0A20202020202020203C2F7475706C653E0D0A202020203C2F70726573656E63653E0D0A3C2F6C6F636174696F6E526573706F6E73653E'O ("\r +\r + \r + \r + \r + \r + \r + \r + -34.4 134.4\r + \r + \r + \r + unknown\r + \r + \r + 1970-01-15T06:56:07+00:00\r + \r + \r +") +14:53:09.117340 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_body: Binary mode: 0 +14:53:09.118198 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_body: Find xml message +14:53:09.118875 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_body: Find 'urn:ietf:params:xml:ns:geopriv:held' +14:53:09.119211 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_body: Call 'held_codec' +14:53:09.119602 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) >>> held_codec::decode: p_data='3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D226E6F223F3E0D0A3C6C6F636174696F6E526573706F6E736520786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64223E0D0A202020203C70726573656E636520656E746974793D22707265733A77626C79756F697578656F61737A642220786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A70696466223E0D0A20202020202020203C7475706C652069643D227431747764687964726E6A63337272223E0D0A2020202020202020202020203C7374617475733E0D0A202020202020202020202020202020203C67656F7072697620786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A706964663A67656F707269763130223E0D0A20202020202020202020202020202020202020203C6C6F636174696F6E2D696E666F3E0D0A2020202020202020202020202020202020202020202020203C506F696E74207372734E616D653D2275726E3A6F67633A6465663A6372733A455053473A3A343332362220786D6C6E733D22687474703A2F2F7777772E6F70656E6769732E6E65742F676D6C223E0D0A202020202020202020202020202020202020202020202020202020203C706F733E2D33342E34203133342E343C2F706F733E0D0A2020202020202020202020202020202020202020202020203C2F506F696E743E0D0A20202020202020202020202020202020202020203C2F6C6F636174696F6E2D696E666F3E0D0A20202020202020202020202020202020202020203C75736167652D72756C65732F3E0D0A20202020202020202020202020202020202020203C6D6574686F643E756E6B6E6F776E3C2F6D6574686F643E0D0A202020202020202020202020202020203C2F67656F707269763E0D0A2020202020202020202020203C2F7374617475733E0D0A2020202020202020202020203C74696D657374616D703E313937302D30312D31355430363A35363A30372B30303A30303C2F74696D657374616D703E0D0A20202020202020203C2F7475706C653E0D0A202020203C2F70726573656E63653E0D0A3C2F6C6F636174696F6E526573706F6E73653E'O ("\r +\r + \r + \r + \r + \r + \r + \r + -34.4 134.4\r + \r + \r + \r + unknown\r + \r + \r + 1970-01-15T06:56:07+00:00\r + \r + \r +") +14:53:09.140959 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) <<< held_codec::decode: { + locationResponse := { + locationUriSet := omit, + elem_list := { + " + + + + + + -34.4 134.4 + + + + unknown + + + 1970-01-15T06:56:07+00:00 + + " + } + } +} +14:53:09.142029 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) http_codec::decode_body: Decoded message:{ + locationResponse := { + locationUriSet := omit, + elem_list := { + " + + + + + + -34.4 134.4 + + + + unknown + + + 1970-01-15T06:56:07+00:00 + + " + } + } +} +14:53:09.144038 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) <<< http_codec::decode: { + response := { + version_major := 1, + version_minor := 1, + statuscode := 200, + statustext := "OK", + header := { + { + header_name := "Content-Length", + header_value := { + "852" + } + }, + { + header_name := "Content-Type", + header_value := { + "application/held+xml; charset=utf-8" + } + }, + { + header_name := "Server", + header_value := { + "Microsoft-IIS/10.0" + } + }, + { + header_name := "Set-Cookie", + header_value := { + "ARRAffinity=838b672de7815ac5d034a942bb864af61183bb8a43cfa241571439416cff48ca;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" + } + }, + { + header_name := "X-Powered-By", + header_value := { + "ASP.NET" + } + }, + { + header_name := "Set-Cookie", + header_value := { + "ARRAffinity=8d69b90c05ecaa44b24e8b059b2b951042d72e06f694220099f034a811455a01;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" + } + }, + { + header_name := "Date", + header_value := { + "Mon, 23 Jul 2018 12:53:07 GMT" + } + } + }, + body := { + xml_body := { + locationResponse := { + locationUriSet := omit, + elem_list := { + " + + + + + + -34.4 134.4 + + + + unknown + + + 1970-01-15T06:56:07+00:00 + + " + } + } + } + } + } +} +14:53:09.147248 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) >>> HttpPort::receive_msg: { + response := { + version_major := 1, + version_minor := 1, + statuscode := 200, + statustext := "OK", + header := { + { + header_name := "Content-Length", + header_value := { + "852" + } + }, + { + header_name := "Content-Type", + header_value := { + "application/held+xml; charset=utf-8" + } + }, + { + header_name := "Server", + header_value := { + "Microsoft-IIS/10.0" + } + }, + { + header_name := "Set-Cookie", + header_value := { + "ARRAffinity=838b672de7815ac5d034a942bb864af61183bb8a43cfa241571439416cff48ca;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" + } + }, + { + header_name := "X-Powered-By", + header_value := { + "ASP.NET" + } + }, + { + header_name := "Set-Cookie", + header_value := { + "ARRAffinity=8d69b90c05ecaa44b24e8b059b2b951042d72e06f694220099f034a811455a01;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" + } + }, + { + header_name := "Date", + header_value := { + "Mon, 23 Jul 2018 12:53:07 GMT" + } + } + }, + body := { + xml_body := { + locationResponse := { + locationUriSet := omit, + elem_list := { + " + + + + + + -34.4 134.4 + + + + unknown + + + 1970-01-15T06:56:07+00:00 + + " + } + } + } + } + } +} +14:53:09.150452 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) Message enqueued on httpPort from system @LibItsHttp_TypesAndValues.HttpMessage : { + response := { + version_major := 1, + version_minor := 1, + statuscode := 200, + statustext := "OK", + header := { + { + header_name := "Content-Length", + header_value := { + "852" + } + }, + { + header_name := "Content-Type", + header_value := { + "application/held+xml; charset=utf-8" + } + }, + { + header_name := "Server", + header_value := { + "Microsoft-IIS/10.0" + } + }, + { + header_name := "Set-Cookie", + header_value := { + "ARRAffinity=838b672de7815ac5d034a942bb864af61183bb8a43cfa241571439416cff48ca;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" + } + }, + { + header_name := "X-Powered-By", + header_value := { + "ASP.NET" + } + }, + { + header_name := "Set-Cookie", + header_value := { + "ARRAffinity=8d69b90c05ecaa44b24e8b059b2b951042d72e06f694220099f034a811455a01;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" + } + }, + { + header_name := "Date", + header_value := { + "Mon, 23 Jul 2018 12:53:07 GMT" + } + } + }, + body := { + xml_body := { + locationResponse := { + locationUriSet := omit, + elem_list := { + " + + + + + + -34.4 134.4 + + + + unknown + + + 1970-01-15T06:56:07+00:00 + + " + } + } + } + } + } +} id 1 +14:53:09.151463 mtc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) tcp_layer::Handle_Fd_Event_Readable: Execution duration: 654.862000 ms +14:53:09.152027 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) Abstract socket: leaving Abstract_Socket::handle_message() +14:53:09.152346 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) Abstract socket: leaving Abstract_Socket::Handle_Socket_Event() +14:53:09.152843 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:148(testcase:TC_LIS_HTTP_POST_BV_01) Abstract socket: <<< tcp_layer::Handle_Fd_Event +14:53:09.153490 mtc MATCHING ../ttcn/AtsNg112_TestCases.ttcn:149(testcase:TC_LIS_HTTP_POST_BV_01) Matching on port httpPort succeeded: matched +14:53:09.154569 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:149(testcase:TC_LIS_HTTP_POST_BV_01) Receive operation on port httpPort succeeded, message from system(): @LibItsHttp_TypesAndValues.HttpMessage : { + response := { + version_major := 1, + version_minor := 1, + statuscode := 200, + statustext := "OK", + header := { + { + header_name := "Content-Length", + header_value := { + "852" + } + }, + { + header_name := "Content-Type", + header_value := { + "application/held+xml; charset=utf-8" + } + }, + { + header_name := "Server", + header_value := { + "Microsoft-IIS/10.0" + } + }, + { + header_name := "Set-Cookie", + header_value := { + "ARRAffinity=838b672de7815ac5d034a942bb864af61183bb8a43cfa241571439416cff48ca;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" + } + }, + { + header_name := "X-Powered-By", + header_value := { + "ASP.NET" + } + }, + { + header_name := "Set-Cookie", + header_value := { + "ARRAffinity=8d69b90c05ecaa44b24e8b059b2b951042d72e06f694220099f034a811455a01;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" + } + }, + { + header_name := "Date", + header_value := { + "Mon, 23 Jul 2018 12:53:07 GMT" + } + } + }, + body := { + xml_body := { + locationResponse := { + locationUriSet := omit, + elem_list := { + " + + + + + + -34.4 134.4 + + + + unknown + + + 1970-01-15T06:56:07+00:00 + + " + } + } + } + } + } +} id 1 +14:53:09.155590 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:149(testcase:TC_LIS_HTTP_POST_BV_01) Message with id 1 was extracted from the queue of httpPort. +14:53:09.156026 mtc TIMEROP ../ttcn/AtsNg112_TestCases.ttcn:163(testcase:TC_LIS_HTTP_POST_BV_01) Stop timer tc_ac: 30 s +14:53:09.157250 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:167(testcase:TC_LIS_HTTP_POST_BV_01) Warning: No UTF-8 Byte Order Mark(BOM) detected. It may result decoding errors +14:53:09.157885 mtc USER ../ttcn/AtsNg112_TestCases.ttcn:169(testcase:TC_LIS_HTTP_POST_BV_01) matched +14:53:09.159000 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:175(testcase:TC_LIS_HTTP_POST_BV_01) Warning: No UTF-8 Byte Order Mark(BOM) detected. It may result decoding errors +14:53:09.159591 mtc USER ../ttcn/AtsNg112_TestCases.ttcn:177(testcase:TC_LIS_HTTP_POST_BV_01) matched +14:53:09.160254 mtc WARNING ../ttcn/AtsNg112_TestCases.ttcn:181(testcase:TC_LIS_HTTP_POST_BV_01) Warning: While XER-decoding type '@http_www_opengis_net_gml.PointPropertyType': Bad XML tag `Point' instead of `PointPropertyType' +14:53:09.160707 mtc WARNING ../ttcn/AtsNg112_TestCases.ttcn:181(testcase:TC_LIS_HTTP_POST_BV_01) Warning: While XER-decoding type '@http_www_opengis_net_gml.PointPropertyType': Unexpected attribute 'srsName', ns '' +14:53:09.160958 mtc WARNING ../ttcn/AtsNg112_TestCases.ttcn:181(testcase:TC_LIS_HTTP_POST_BV_01) Warning: While XER-decoding type '@http_www_opengis_net_gml.PointPropertyType': point': Bad XML tag `pos' instead of `Point' +14:53:09.161837 mtc WARNING ../ttcn/AtsNg112_TestCases.ttcn:181(testcase:TC_LIS_HTTP_POST_BV_01) Warning: While XER-decoding type '@http_www_opengis_net_gml.PointPropertyType': While checking end tag: Bad XML tag `Point' instead of `PointPropertyType' +14:53:09.162170 mtc USER ../ttcn/AtsNg112_TestCases.ttcn:182(testcase:TC_LIS_HTTP_POST_BV_01) matched +14:53:09.162585 mtc USER ../ttcn/AtsNg112_TestCases.ttcn:184(testcase:TC_LIS_HTTP_POST_BV_01) *** TC_LIS_HTTP_POST_BV_01: PASS: IUT successfully responds with a Point *** +14:53:09.163606 mtc VERDICTOP ../ttcn/AtsNg112_TestCases.ttcn:185(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibCommon_Sync.ttcn:448(function:f_selfOrClientSyncAndVerdictTestBody)->../ttcn/LibCommon_Sync.ttcn:1153(function:f_selfSyncAndVerdictTestBody)->../ttcn/LibCommon_VerdictControl.ttcn:49(function:f_setVerdict) setverdict(pass): pass -> pass, component reason not changed +14:53:09.163932 mtc USER ../ttcn/AtsNg112_TestCases.ttcn:185(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibCommon_Sync.ttcn:448(function:f_selfOrClientSyncAndVerdictTestBody)->../ttcn/LibCommon_Sync.ttcn:1154(function:f_selfSyncAndVerdictTestBody)->../ttcn/LibCommon_Sync.ttcn:1199(function:f_selfSync) **** f_selfSync: Successfully passed TEST BODY synchronization point. **** +14:53:09.164701 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Unmapping port mtc:httpPort from system:httpPort. +14:53:09.169641 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) >>> HttpPort::user_unmap: httpPort +14:53:09.169979 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) >>> tcp_layer::~tcp_layer: 6 +14:53:09.170233 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: entering Abstract_Socket::remove_client(6) +14:53:09.170423 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: entering SSL_Socket::remove_user_data() +14:53:09.170643 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: leaving SSL_Socket::remove_user_data() +14:53:09.170827 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_remove_peer: Removing client 6 from peer list +14:53:09.170999 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_get_last_peer: Finding last peer of the peer array +14:53:09.171198 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_get_last_peer: No active peer found +14:53:09.171354 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_resize_list: Resizing to 0 +14:53:09.172064 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_resize_list: New length is 0 +14:53:09.172614 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Removed client 6. +14:53:09.173384 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: leaving Abstract_Socket::remove_client(6) +14:53:09.173832 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: entering Abstract_Socket::unmap_user() +14:53:09.174260 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: entering Abstract_Socket::remove_all_clients +14:53:09.174771 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_get_nr_of_peers: Number of active peers = 0 +14:53:09.175385 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: leaving Abstract_Socket::remove_all_clients +14:53:09.175830 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: leaving Abstract_Socket::unmap_user() +14:53:09.176643 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_reset_peer: Resetting peer array +14:53:09.177114 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_get_last_peer: Finding last peer of the peer array +14:53:09.177557 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_get_last_peer: No active peer found +14:53:09.177978 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_resize_list: Resizing to 0 +14:53:09.178854 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_resize_list: New length is 0 +14:53:09.181363 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_reset_peer: New length is 0 +14:53:09.182558 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Port httpPort was unmapped from system:httpPort. +14:53:09.183058 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Unmap operation of mtc:httpPort from system:httpPort finished. +14:53:09.183790 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:55(function:f_cf_01_http_down)->../ttcn/LibCommon_Sync.ttcn:219(function:f_disconnect4SelfOrClientSync)->../ttcn/LibCommon_Sync.ttcn:1101(function:f_disconnect4SelfSync) Disconnecting ports mtc:syncSendPort and mtc:syncPort. +14:53:09.184447 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:55(function:f_cf_01_http_down)->../ttcn/LibCommon_Sync.ttcn:219(function:f_disconnect4SelfOrClientSync)->../ttcn/LibCommon_Sync.ttcn:1101(function:f_disconnect4SelfSync) Port syncSendPort has terminated the connection with local port syncPort. +14:53:09.184905 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:55(function:f_cf_01_http_down)->../ttcn/LibCommon_Sync.ttcn:219(function:f_disconnect4SelfOrClientSync)->../ttcn/LibCommon_Sync.ttcn:1101(function:f_disconnect4SelfSync) Port syncPort has terminated the connection with local port syncSendPort. +14:53:09.186111 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:55(function:f_cf_01_http_down)->../ttcn/LibCommon_Sync.ttcn:219(function:f_disconnect4SelfOrClientSync)->../ttcn/LibCommon_Sync.ttcn:1101(function:f_disconnect4SelfSync) Disconnect operation on mtc:syncSendPort and mtc:syncPort finished. +14:53:09.186816 mtc DEFAULTOP ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:57(function:f_cf_01_http_down) Default with id 1 (altstep a_cf_01_http_down) was deactivated. +14:53:09.188038 mtc DEFAULTOP ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:57(function:f_cf_01_http_down) Default with id 2 (altstep a_default_requests) was deactivated. +14:53:09.188801 mtc DEFAULTOP ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01)->../ttcn/LibNg112_Functions.ttcn:57(function:f_cf_01_http_down) Default with id 3 (altstep a_default_responses) was deactivated. +14:53:09.189887 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01) Terminating component type LibItsHttp_TestSystem.HttpComponent. +14:53:09.190652 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01) Port syncPort was stopped. +14:53:09.191346 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01) Port syncSendPort was stopped. +14:53:09.191723 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01) >>> HttpPort::user_stop +14:53:09.192205 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01) Port httpPort was stopped. +14:53:09.192860 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01) Component type LibItsHttp_TestSystem.HttpComponent was shut down inside testcase TC_LIS_HTTP_POST_BV_01. +14:53:09.193500 mtc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01) Waiting for PTCs to finish. +14:53:09.196498 mtc VERDICTOP ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01) Setting final verdict of the test case. +14:53:09.197296 mtc VERDICTOP ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01) Local verdict of MTC: pass +14:53:09.198072 mtc VERDICTOP ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01) No PTCs were created. +14:53:09.199674 mtc TESTCASE ../ttcn/AtsNg112_TestCases.ttcn:214(testcase:TC_LIS_HTTP_POST_BV_01) Test case TC_LIS_HTTP_POST_BV_01 finished. Verdict: pass +14:53:09.201109 mtc STATISTICS - Verdict statistics: 0 none (0.00 %), 1 pass (100.00 %), 0 inconc (0.00 %), 0 fail (0.00 %), 0 error (0.00 %). +14:53:09.201565 mtc STATISTICS - Test execution summary: 1 test case was executed. Overall verdict: pass +14:53:09.201937 mtc EXECUTOR - Exit was requested from MC. Terminating MTC. +14:53:09.202895 hc EXECUTOR - Exit was requested from MC. Terminating HC. +14:53:09.203238 hc EXECUTOR - Disconnected from MC. +14:53:09.203421 hc EXECUTOR - TTCN-3 Host Controller finished. diff --git a/validation/TC_LIS_HTTP_POST_BV_03.pcapng b/validation/TC_LIS_HTTP_POST_BV_03.pcapng new file mode 100644 index 0000000000000000000000000000000000000000..14a8368f3180fd422c4fbf134a72e72df123802a GIT binary patch literal 1828 zcmb_d&2QX96rbj!YFAw$!6hoGG};46)Oy$UdcC%@o3BmM1W0RTH!6p!)!3fh9pasF z?b)O$ZN(9Z12+yxRd0YmzzuQCg-hXIKs|EdfP|0`m-5D&Gz9?)5+jY~^S$4DZ+<_! zP%IV>5kgyy%NNhU`0S{SAscOSN#oh=IouK{o$YMRVOG;>RbAh~Eq@0uVY6J-uWsDK zv-?c;al5@{mCZSX#?fVDTUx**zQK4T_A^|^ZJO?}kYb;NyV$sbgCUC}T(@-tO`tMb z9S)L^BzX1)OKH|8>Fyl3x61~e-OEQ!*Lsevle!aB0YkMz=ql#-j>c!t5E?@!y17af z)Xi)D`t5gYw{BEh^%bpJUukKUv8HP)t(L1<>#NHvuH&xT%dH0pod-{6!Ow;N7(1Bc z_{z33rd9}jc4rdZy6|Y)g0<@R-+%Jx+Yf(x^36GS>Ks}_W3N4Ux`f_6d+DpgPtip2 z)(7s~W8^I1*c1Z zJV;`y%01spo4arKP4})_A7*YnYE;zaLZk8=a-mRw<=+(oPKpJ^CB>=f@tjgQrxq(; zPX7-3s*l(-Vph(npC-OuLgMTvFDpJNULk+(vEtLi#qaO=Qxg+kTteuWMA+1IeEp4+ zH-7W@jdk~AQV{QyEyE7GUCRl{ zyia7mS()FEGP%yhz+Zg*|S1?ud&U6q()7*?%DbmRXDdzDBi=$7DDuvx{g z4`X;#!@-8>)l5&X;;UPb1ZZs$w1eSsGSFo6O$l|cqENn8?V0f>+~5kjap&|-?=oyNh literal 0 HcmV?d00001 diff --git a/validation/TC_LIS_HTTP_POST_BV_03_merged.log b/validation/TC_LIS_HTTP_POST_BV_03_merged.log new file mode 100644 index 0000000..c80ddd0 --- /dev/null +++ b/validation/TC_LIS_HTTP_POST_BV_03_merged.log @@ -0,0 +1,1363 @@ +14:51:59.349092 hc EXECUTOR - TTCN-3 Host Controller started on vagrant. Version: CRL 113 200/6 R4A. +14:51:59.349291 hc EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error +14:51:59.350022 hc WARNING - Warning: The address of MC was set to a local IP address. This may cause incorrect behavior if a HC from a remote host also connects to MC. +14:51:59.350309 hc EXECUTOR - The address of MC was set to 127.0.0.1:0. +14:51:59.350502 hc EXECUTOR - Connected to MC. +14:51:59.350691 hc EXECUTOR - This host supports UNIX domain sockets for local communication. +14:51:59.351429 hc EXECUTOR - Processing configuration data received from MC. +14:51:59.355811 hc EXECUTOR - Module LibCommon_Sync has the following parameters: { + PX_TSYNC_TIME_LIMIT := 120.000000, + PX_TSHUT_DOWN_TIME_LIMIT := 120.000000 +} +14:51:59.356155 hc EXECUTOR - Module LibCommon_Time has the following parameters: { + PX_TDONE := 120.000000, + PX_TAC := 30.000000, + PX_TNOAC := 10.000000, + PX_TWAIT := 120.000000, + PX_LOOP := 1.000000 +} +14:51:59.356598 hc EXECUTOR - Module LibItsHttp_Pics has the following parameters: { + PICS_HEADER_HOST := "location-information-service.azurewebsites.net", + PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8" +} +14:51:59.356909 hc EXECUTOR - Module LibNg112_Pics has the following parameters: { + PICS_LIS_IUT := true, + PICS_ECRF_IUT := true, + PICS_HTTP_POST_REQUEST := true, + PICS_LOCATION_HELD := true, + PICS_SERVICE_LOST := true, + PICS_LIS_URI := "/api/held", + PICS_ECRF_URI := "/service", + PICS_ECRF_REQUEST_URIs := { + "/t/0ahy0-1531830377/post" + } +} +14:51:59.357431 hc EXECUTOR - Module LibNg112_Pixits has the following parameters: { + PX_DOUBLE_CMP_EPSILON := 1.000000e-05, + PX_DEVICE_URI_SIP := "sip:user@example.net;gr=kjh29x97us97d", + PX_DEVICE_URI_TEL := "+331234567890", + PX_UNKNOWN_DEVICE_URI := "sip:no_one@example.net;gr=kjh29x97us97d", + PX_DEVICE_POSITION := { + -34.400000, + 134.400000 + }, + PX_CIRCLE_POS := { + 48.215388, + 16.290300 + }, + PX_CIRCLE_UOM := "urn:ogc:def:uom:EPSG::9001", + PX_CIRCLE_BASE := 23.600000, + PX_SRS_NAME := "urn:ogc:def:crs:EPSG::4326", + PX_LOST_ID := "6020688f1ce1896d", + PX_LOST_SERVICE_URN_1 := "urn:service:sos.police", + PX_LOST_SERVICE_URN_2 := "urn:service:sos.police", + PX_LOST_SERVICE := "urn:service:sos.police", + PX_LOST_NO_LOST := { + 48.215388, + 16.290300 + } +} +14:51:59.358277 hc EXECUTOR - Module LibSip_PIXITS has the following parameters: { + PX_SIP_SDP_USER_NAME := "voicesession", + PX_SIP_SDP_SESSION_ID := "30000", + PX_SIP_SDP_DYN := "0", + PX_SIP_SDP_B_MODIFIER := "AS", + PX_SIP_SDP_B_BANDWIDTH := 64, + PX_SIP_SDP_ENCODING := "PCMU", + PX_SIP_SDP_CLOCKRATE := "8000", + PX_MB_LENGTH_FROM_ENCVAL := true, + PX_USE_FX_FOR_XML_LENGTH := false, + PX_SIP_TRANSPORT := "UDP", + PX_SIP_REGISTRATION := false, + PX_AUTH_ALGORITHM := "AKAv1-MD5", + PX_SIP_REGISTER_AUTHENTICATION_ENABLED := true, + PX_SIP_INVITE_AUTHENTICATION_ENABLED := false, + PX_SIP_TWAIT := 30.000000, + PX_SIP_TACK := 8.000000, + PX_SIP_TRESP := 15.000000, + PX_SIP_TNOACT := 1.000000, + PX_SIP_MIME_BOUNDARY := "boundary1" +} +14:51:59.358681 hc EXECUTOR - Initializing module AtsNg112_TestCases. +14:51:59.359096 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0 Initializing module LibItsHttp_Functions. +14:51:59.359534 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_TypesAndValues. +14:51:59.359818 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0 Initializing module LibItsHttp_MessageBodyTypes. +14:51:59.360056 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XmlMessageBodyTypes. +14:51:59.360449 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XMLTypes. +14:51:59.360820 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XMLTypes finished. +14:51:59.361246 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held. +14:51:59.361735 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../ttcn/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initializing module http_www_w3_org_XML_1998_namespace. +14:51:59.362013 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../ttcn/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../ttcn/http_www_w3_org_XML_1998_namespace.ttcn:0 Initializing module XSD. +14:51:59.362339 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../ttcn/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../ttcn/http_www_w3_org_XML_1998_namespace.ttcn:0->../ttcn/XSD.ttcn:0 Initializing module UsefulTtcn3Types. +14:51:59.362774 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../ttcn/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../ttcn/http_www_w3_org_XML_1998_namespace.ttcn:0->../ttcn/XSD.ttcn:0 Initialization of module UsefulTtcn3Types finished. +14:51:59.363058 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../ttcn/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../ttcn/http_www_w3_org_XML_1998_namespace.ttcn:0 Initialization of module XSD finished. +14:51:59.363658 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../ttcn/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initialization of module http_www_w3_org_XML_1998_namespace finished. +14:51:59.364472 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held finished. +14:51:59.364884 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_lost1. +14:51:59.365686 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0->../ttcn/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_lost1 finished. +14:51:59.366103 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XmlMessageBodyTypes finished. +14:51:59.366851 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_BinaryMessageBodyTypes. +14:51:59.367306 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0->../ttcn/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_BinaryMessageBodyTypes finished. +14:51:59.367938 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0->../ttcn/LibItsHttp_TypesAndValues.ttcn:0 Initialization of module LibItsHttp_MessageBodyTypes finished. +14:51:59.368162 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_TypesAndValues finished. +14:51:59.368556 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_Pics. +14:51:59.369078 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_Pics finished. +14:51:59.369430 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0 Initialization of module LibItsHttp_Functions finished. +14:51:59.369964 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Templates. +14:51:59.370262 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Templates finished. +14:51:59.370634 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Functions. +14:51:59.370954 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_Templates. +14:51:59.371776 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_Templates finished. +14:51:59.372166 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_XmlTemplates. +14:51:59.372942 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held_id. +14:51:59.373634 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held_id finished. +14:51:59.374210 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10. +14:51:59.374644 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0->../ttcn/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy. +14:51:59.375557 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0->../ttcn/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy finished. +14:51:59.376146 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10 finished. +14:51:59.376694 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc. +14:51:59.377289 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc finished. +14:51:59.377549 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf. +14:51:59.377931 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf finished. +14:51:59.378535 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0 Initializing module http_www_opengis_net_pidflo_1_0. +14:51:59.378916 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0->../ttcn/http_www_opengis_net_pidflo_1_0.ttcn:0 Initializing module http_www_opengis_net_gml. +14:51:59.379161 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0->../ttcn/http_www_opengis_net_pidflo_1_0.ttcn:0 Initialization of module http_www_opengis_net_gml finished. +14:51:59.381191 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibItsHttp_XmlTemplates.ttcn:0 Initialization of module http_www_opengis_net_pidflo_1_0 finished. +14:51:59.382009 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_XmlTemplates finished. +14:51:59.382601 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TypesAndValues. +14:51:59.383091 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TypesAndValues finished. +14:51:59.383575 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TestSystem. +14:51:59.384075 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibItsHttp_TestSystem. +14:51:59.384928 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Sync. +14:51:59.385317 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon_Sync.ttcn:0 Initializing module LibCommon_AbstractData. +14:51:59.385534 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon_Sync.ttcn:0->../ttcn/LibCommon_AbstractData.ttcn:0 Initializing module LibCommon_BasicTypesAndValues. +14:51:59.385907 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon_Sync.ttcn:0->../ttcn/LibCommon_AbstractData.ttcn:0 Initialization of module LibCommon_BasicTypesAndValues finished. +14:51:59.386139 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_AbstractData finished. +14:51:59.386380 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon_Sync.ttcn:0 Initializing module LibCommon_VerdictControl. +14:51:59.386634 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibItsHttp_TestSystem.ttcn:0->../ttcn/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_VerdictControl finished. +14:51:59.386906 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Sync finished. +14:51:59.387152 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Time. +14:51:59.387415 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Time finished. +14:51:59.387641 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibItsHttp_TestSystem finished. +14:51:59.387968 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibSip_Interface. +14:51:59.388194 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_SIPTypesAndValues. +14:51:59.388459 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0 Initializing module LibSip_MessageBodyTypes. +14:51:59.388810 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SDPTypes. +14:51:59.389772 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_SDPTypes.ttcn:0 Initializing module LibSip_Common. +14:51:59.390606 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_SDPTypes.ttcn:0 Initialization of module LibSip_Common finished. +14:51:59.390973 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SDPTypes finished. +14:51:59.391526 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SimpleMsgSummaryTypes. +14:51:59.391985 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SimpleMsgSummaryTypes finished. +14:51:59.392542 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_XMLTypes. +14:51:59.393311 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_resource_lists. +14:51:59.393610 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_resource_lists finished. +14:51:59.393938 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_xcap. +14:51:59.394434 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_ietf_params_xml_ns_common_policy. +14:51:59.394692 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_ietf_params_xml_ns_common_policy finished. +14:51:59.395657 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_oma_xml_xdm_common_policy. +14:51:59.396032 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0->../ttcn/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_oma_xml_xdm_common_policy finished. +14:51:59.396747 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_xcap finished. +14:51:59.397284 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_mcid. +14:51:59.397607 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_mcid finished. +14:51:59.398060 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initializing module NoTargetNamespace. +14:51:59.398412 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module NoTargetNamespace finished. +14:51:59.398979 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_3gpp_ns_cw_1_0. +14:51:59.399406 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_3gpp_ns_cw_1_0 finished. +14:51:59.399749 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_conference_info. +14:51:59.400258 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_conference_info finished. +14:51:59.401393 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_pstn. +14:51:59.402795 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_pstn finished. +14:51:59.403128 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_comm_div_info. +14:51:59.403874 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_comm_div_info finished. +14:51:59.404391 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_reginfo. +14:51:59.405145 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0->../ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_reginfo finished. +14:51:59.405755 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0->../ttcn/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_XMLTypes finished. +14:51:59.406356 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_SIPTypesAndValues.ttcn:0 Initialization of module LibSip_MessageBodyTypes finished. +14:51:59.407142 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_SIPTypesAndValues finished. +14:51:59.413591 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_PIXITS. +14:51:59.414095 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_PIXITS.ttcn:0 Initializing module LibCommon_DataStrings. +14:51:59.414625 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0->../ttcn/LibSip_PIXITS.ttcn:0 Initialization of module LibCommon_DataStrings finished. +14:51:59.415340 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0->../ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_PIXITS finished. +14:51:59.415683 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0->../ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibSip_Interface finished. +14:51:59.416210 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0->../ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TestSystem finished. +14:51:59.417570 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Functions finished. +14:51:59.418074 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pics. +14:51:59.418421 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pics finished. +14:51:59.425450 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pixits. +14:51:59.425853 hc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pixits finished. +14:51:59.426301 hc EXECUTOR - Initialization of module AtsNg112_TestCases finished. +14:51:59.426577 hc EXECUTOR - Initializing module AtsNg112_TestControl. +14:51:59.426897 hc EXECUTOR - Initialization of module AtsNg112_TestControl finished. +14:51:59.427349 hc EXECUTOR - Initializing module LibCommon_TextStrings. +14:51:59.427763 hc EXECUTOR - Initialization of module LibCommon_TextStrings finished. +14:51:59.428030 hc EXECUTOR - Initializing module LibItsHttp_BinaryTemplates. +14:51:59.428268 hc EXECUTOR - Initialization of module LibItsHttp_BinaryTemplates finished. +14:51:59.428693 hc EXECUTOR - Initializing module LibItsHttp_BinaryTypes. +14:51:59.428969 hc EXECUTOR - Initialization of module LibItsHttp_BinaryTypes finished. +14:51:59.429434 hc EXECUTOR - Initializing module LibItsHttp_EncdecDeclarations. +14:51:59.429673 hc EXECUTOR - Initialization of module LibItsHttp_EncdecDeclarations finished. +14:51:59.430281 hc EXECUTOR - Initializing module LibNg112_EncdecDeclarations. +14:51:59.431030 hc EXECUTOR ../ttcn/LibNg112_EncdecDeclarations.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape. +14:51:59.431336 hc EXECUTOR ../ttcn/LibNg112_EncdecDeclarations.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape finished. +14:51:59.431768 hc EXECUTOR - Initialization of module LibNg112_EncdecDeclarations finished. +14:51:59.432311 hc EXECUTOR - Initializing module LibSip_EncdecDeclarations. +14:51:59.432825 hc EXECUTOR ../ttcn/LibSip_EncdecDeclarations.ttcn:0 Initializing module LibSip_SMSTypesAndValues. +14:51:59.433142 hc EXECUTOR ../ttcn/LibSip_EncdecDeclarations.ttcn:0 Initialization of module LibSip_SMSTypesAndValues finished. +14:51:59.433598 hc EXECUTOR - Initialization of module LibSip_EncdecDeclarations finished. +14:51:59.434079 hc EXECUTOR - Initializing module LibSip_Library. +14:51:59.436439 hc EXECUTOR ../ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_SMSTemplates. +14:51:59.438195 hc EXECUTOR ../ttcn/LibSip_Library.ttcn:0->../ttcn/LibSip_SMSTemplates.ttcn:0 Initializing module LibSip_SMSFunctions. +14:51:59.438784 hc EXECUTOR ../ttcn/LibSip_Library.ttcn:0->../ttcn/LibSip_SMSTemplates.ttcn:0 Initialization of module LibSip_SMSFunctions finished. +14:51:59.467235 hc EXECUTOR ../ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_SMSTemplates finished. +14:51:59.473325 hc EXECUTOR ../ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_Steps. +14:51:59.473881 hc EXECUTOR ../ttcn/LibSip_Library.ttcn:0->../ttcn/LibSip_Steps.ttcn:0 Initializing module LibSip_Templates. +14:51:59.499338 hc EXECUTOR ../ttcn/LibSip_Library.ttcn:0->../ttcn/LibSip_Steps.ttcn:0 Initialization of module LibSip_Templates finished. +14:51:59.500039 hc EXECUTOR ../ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_Steps finished. +14:51:59.500372 hc EXECUTOR - Initialization of module LibSip_Library finished. +14:51:59.500861 hc EXECUTOR - Initializing module PreGenRecordOf. +14:51:59.502630 hc EXECUTOR - Initialization of module PreGenRecordOf finished. +14:51:59.503143 hc EXECUTOR - Initializing module TitanLoggerApi. +14:51:59.503580 hc EXECUTOR - Initialization of module TitanLoggerApi finished. +14:51:59.503863 hc EXECUTOR - Initializing module urn_ietf_params_xml_ns_geopriv_conf. +14:51:59.504158 hc EXECUTOR - Initialization of module urn_ietf_params_xml_ns_geopriv_conf finished. +14:51:59.504786 hc EXECUTOR - Configuration data was processed successfully. +14:51:59.507387 hc EXECUTOR - MTC was created. Process id: 10173. +14:51:59.508824 mtc EXECUTOR - TTCN-3 Main Test Component started on vagrant. Version: CRL 113 200/6 R4A. +14:51:59.509092 mtc EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error +14:51:59.509372 mtc EXECUTOR - Connected to MC. +14:51:59.510000 mtc EXECUTOR - Executing test case TC_LIS_HTTP_POST_BV_03 in module AtsNg112_TestCases. +14:51:59.510435 mtc TESTCASE ../ttcn/AtsNg112_TestCases.ttcn:361(testcase:TC_LIS_HTTP_POST_BV_03) Test case TC_LIS_HTTP_POST_BV_03 started. +14:51:59.510952 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:361(testcase:TC_LIS_HTTP_POST_BV_03) Initializing variables, timers and ports of component type LibItsHttp_TestSystem.HttpComponent inside testcase TC_LIS_HTTP_POST_BV_03. +14:51:59.511659 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:361(testcase:TC_LIS_HTTP_POST_BV_03) Port syncPort was started. +14:51:59.512222 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:361(testcase:TC_LIS_HTTP_POST_BV_03) Port syncSendPort was started. +14:51:59.512543 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:361(testcase:TC_LIS_HTTP_POST_BV_03) >>> HttpPort::user_start +14:51:59.512954 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:361(testcase:TC_LIS_HTTP_POST_BV_03) Port httpPort was started. +14:51:59.513265 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:361(testcase:TC_LIS_HTTP_POST_BV_03) Component type LibItsHttp_TestSystem.HttpComponent was initialized. +14:51:59.513694 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Mapping port mtc:httpPort to system:httpPort. +14:51:59.514329 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) HttpPort::set_parameter: params=HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server=location-information-service.azurewebsites.net,port=80,use_ssl=0) +14:51:59.514726 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> HttpPort::user_map: httpPort +14:51:59.515152 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) HttpPort::user_map: HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server=location-information-service.azurewebsites.net,port=80,use_ssl=0) +14:51:59.515814 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server=location-information-service.azurewebsites.net,port=80,use_ssl=0) +14:51:59.520126 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - codecs=lost:lost_codec;held:held_codec)/TCP(debug=1, - codecs - lost:lost_codec;held:held_codec)/TCP(debug=1 - , +14:51:59.521096 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - server=location-information-service.azurewebsites.net, - server - location-information-service.azurewebsites.net - , +14:51:59.521843 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - port=80, - port - 80 - , +14:51:59.522434 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - use_ssl=0) - use_ssl - 0) - +14:51:59.522909 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert +14:51:59.523421 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> layer_stack_builder::create_layer_stack: HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server=location-information-service.azurewebsites.net,port=80,use_ssl=0) +14:51:59.526839 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: 5 - HTTP(codecs=lost:lost_codec;held:held_codec)/ - HTTP - (codecs=lost:lost_codec;held:held_codec) - codecs=lost:lost_codec;held:held_codec +14:51:59.527805 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Create layer HTTP, codecs=lost:lost_codec;held:held_codec +14:51:59.528403 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> http_layer::http_layer: HTTP, codecs=lost:lost_codec;held:held_codec +14:51:59.529112 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: codecs=lost:lost_codec;held:held_codec +14:51:59.532794 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - codecs=lost:lost_codec;held:held_codec - codecs - lost:lost_codec;held:held_codec - +14:51:59.534675 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert +14:51:59.536225 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> http_codec::set_payload_codecs: lost:lost_codec;held:held_codec +14:51:59.543885 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) http_codec::set_payload_codecs: 6 - lost - lost_codec - ;held:held_codec - held - held_codec - - - +14:51:59.544591 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) http_codec::set_payload_codecs: insert (lost, lost_codec), j = 1 +14:51:59.545299 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) http_codec::set_payload_codecs: insert (held, held_codec), j = 4 +14:51:59.546113 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Setup layers for HTTP +14:51:59.546922 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: 5 - TCP(debug=1,server=location-information-service.azurewebsites.net,port=80,use_ssl=0) - TCP - (debug=1,server=location-information-service.azurewebsites.net,port=80,use_ssl=0) - debug=1,server=location-information-service.azurewebsites.net,port=80,use_ssl=0 +14:51:59.547536 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Create layer TCP, debug=1,server=location-information-service.azurewebsites.net,port=80,use_ssl=0 +14:51:59.547884 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::tcp_layer: TCP, debug=1,server=location-information-service.azurewebsites.net,port=80,use_ssl=0 +14:51:59.548322 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> params::convert: debug=1,server=location-information-service.azurewebsites.net,port=80,use_ssl=0 +14:51:59.550903 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - debug=1, - debug - 1 - , +14:51:59.552096 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - server=location-information-service.azurewebsites.net, - server - location-information-service.azurewebsites.net - , +14:51:59.554172 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - port=80, - port - 80 - , +14:51:59.555688 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::convert: 4 - use_ssl=0 - use_ssl - 0 - +14:51:59.556202 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) <<< params::convert +14:51:59.556540 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) params::log +14:51:59.556985 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (debug, 1) +14:51:59.557415 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (port, 80) +14:51:59.557722 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (server, location-information-service.azurewebsites.net) +14:51:59.558011 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) (use_ssl, 0) +14:51:59.558449 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(server, location-information-service.azurewebsites.net) +14:51:59.558727 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(server, location-information-service.azurewebsites.net) +14:51:59.559173 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(server, location-information-service.azurewebsites.net) +14:51:59.559814 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(server, location-information-service.azurewebsites.net) +14:51:59.560121 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(port, 80) +14:51:59.560608 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(port, 80) +14:51:59.560938 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(port, 80) +14:51:59.561879 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(port, 80) +14:51:59.562551 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(use_connection_ASPs, yes) +14:51:59.563130 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(use_connection_ASPs, yes) +14:51:59.563706 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(use_connection_ASPs, yes) +14:51:59.564289 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(use_connection_ASPs, yes) +14:51:59.564712 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering SSL_Socket::parameter_set(server_backlog, 1024) +14:51:59.565413 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving SSL_Socket::parameter_set(server_backlog, 1024) +14:51:59.565733 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::parameter_set(server_backlog, 1024) +14:51:59.566362 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::parameter_set(server_backlog, 1024) +14:51:59.566879 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: entering Abstract_Socket::map_user() +14:51:59.567762 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: leaving Abstract_Socket::map_user() +14:51:59.568607 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::open_client_connection(remoteAddr: location-information-service.azurewebsites.net/80, localAddr: UNSPEC/UNSPEC) called +14:52:00.542285 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Number of remote addresses: 1 + +14:52:02.395684 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Using address family for socket 6: IPv4 +14:52:02.396007 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Connecting to server from address UNSPEC/UNSPEC +14:52:02.481500 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Connection established (addr): 10.0.2.15/55330 -> location-information-service.azurewebsites.net/80 + +14:52:02.482236 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: connected to: host location-information-service.azurewebsites.net service 80 via address family IPv4 + +14:52:02.482556 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_add_peer: Adding client 6 to peer list +14:52:02.482950 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_get_last_peer: Finding last peer of the peer array +14:52:02.483340 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_get_last_peer: No active peer found +14:52:02.483719 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_resize_list: Resizing to 7 +14:52:02.483998 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::peer_list_resize_list: New length is 7 +14:52:02.484429 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Abstract socket: Abstract_Socket::open_client_connection(). Handler set to socket fd 6 +14:52:02.484924 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::add_user_data: 6 +14:52:02.488930 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) tcp_layer::add_user_data: Non secured mode +14:52:02.490590 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) >>> tcp_layer::client_connection_opened: 6 +14:52:02.491764 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) layer_stack_builder::create_layer_stack: Setup layers for TCP +14:52:02.492993 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Port httpPort was mapped to system:httpPort. +14:52:02.494483 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:23(function:f_cf_01_http_up) Map operation of mtc:httpPort to system:httpPort finished. +14:52:02.496811 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../ttcn/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../ttcn/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Connecting ports mtc:syncSendPort and mtc:syncPort. +14:52:02.499036 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../ttcn/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../ttcn/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Port syncPort has established the connection with local port syncSendPort. +14:52:02.501957 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../ttcn/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../ttcn/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Port syncSendPort has established the connection with local port syncPort. +14:52:02.503912 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:26(function:f_cf_01_http_up)->../ttcn/LibCommon_Sync.ttcn:197(function:f_connect4SelfOrClientSync)->../ttcn/LibCommon_Sync.ttcn:1090(function:f_connect4SelfSync) Connect operation on mtc:syncSendPort and mtc:syncPort finished. +14:52:02.505400 mtc DEFAULTOP ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:28(function:f_cf_01_http_up) Altstep a_cf_01_http_down was activated as default, id 1 +14:52:02.507354 mtc DEFAULTOP ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:29(function:f_cf_01_http_up) Altstep a_default_requests was activated as default, id 2 +14:52:02.509149 mtc DEFAULTOP ../ttcn/AtsNg112_TestCases.ttcn:374(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:30(function:f_cf_01_http_up) Altstep a_default_responses was activated as default, id 3 +14:52:02.511006 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) Warning: No UTF-8 Byte Order Mark(BOM) detected. It may result decoding errors +14:52:02.513205 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) Sent on httpPort to system @LibItsHttp_TypesAndValues.HttpMessage : { + request := { + method := "POST", + uri := "/api/held", + version_major := 1, + version_minor := 1, + header := { + { + header_name := "Host", + header_value := { + "location-information-service.azurewebsites.net" + } + }, + { + header_name := "Content-type", + header_value := { + "application/held+xml;charset=utf-8" + } + }, + { + header_name := "Content-length", + header_value := { + "0" + } + }, + { + header_name := "Connection", + header_value := { + "keep-alive" + } + }, + { + header_name := "Pragma", + header_value := { + "no-cache" + } + }, + { + header_name := "Cache-Control", + header_value := { + "no-cache" + } + } + }, + body := { + xml_body := { + locationRequest := { + responseTime := omit, + attr := omit, + locationType := { + exact := true, + base := { + alt_1 := { + geodetic (1) + } + } + }, + elem_list := { + " + sip:no_one@example.net;gr=kjh29x97us97d + + +" + } + } + } + } + } +} +14:52:02.513803 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) >>> HttpPort::outgoing_send: payload={ + request := { + method := "POST", + uri := "/api/held", + version_major := 1, + version_minor := 1, + header := { + { + header_name := "Host", + header_value := { + "location-information-service.azurewebsites.net" + } + }, + { + header_name := "Content-type", + header_value := { + "application/held+xml;charset=utf-8" + } + }, + { + header_name := "Content-length", + header_value := { + "0" + } + }, + { + header_name := "Connection", + header_value := { + "keep-alive" + } + }, + { + header_name := "Pragma", + header_value := { + "no-cache" + } + }, + { + header_name := "Cache-Control", + header_value := { + "no-cache" + } + } + }, + body := { + xml_body := { + locationRequest := { + responseTime := omit, + attr := omit, + locationType := { + exact := true, + base := { + alt_1 := { + geodetic (1) + } + } + }, + elem_list := { + " + sip:no_one@example.net;gr=kjh29x97us97d + + +" + } + } + } + } + } +} +14:52:02.515241 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) >>> http_layer::sendMsg: { + request := { + method := "POST", + uri := "/api/held", + version_major := 1, + version_minor := 1, + header := { + { + header_name := "Host", + header_value := { + "location-information-service.azurewebsites.net" + } + }, + { + header_name := "Content-type", + header_value := { + "application/held+xml;charset=utf-8" + } + }, + { + header_name := "Content-length", + header_value := { + "0" + } + }, + { + header_name := "Connection", + header_value := { + "keep-alive" + } + }, + { + header_name := "Pragma", + header_value := { + "no-cache" + } + }, + { + header_name := "Cache-Control", + header_value := { + "no-cache" + } + } + }, + body := { + xml_body := { + locationRequest := { + responseTime := omit, + attr := omit, + locationType := { + exact := true, + base := { + alt_1 := { + geodetic (1) + } + } + }, + elem_list := { + " + sip:no_one@example.net;gr=kjh29x97us97d + + +" + } + } + } + } + } +} +14:52:02.516351 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) >>> http_codec::encode: { + request := { + method := "POST", + uri := "/api/held", + version_major := 1, + version_minor := 1, + header := { + { + header_name := "Host", + header_value := { + "location-information-service.azurewebsites.net" + } + }, + { + header_name := "Content-type", + header_value := { + "application/held+xml;charset=utf-8" + } + }, + { + header_name := "Content-length", + header_value := { + "0" + } + }, + { + header_name := "Connection", + header_value := { + "keep-alive" + } + }, + { + header_name := "Pragma", + header_value := { + "no-cache" + } + }, + { + header_name := "Cache-Control", + header_value := { + "no-cache" + } + } + }, + body := { + xml_body := { + locationRequest := { + responseTime := omit, + attr := omit, + locationType := { + exact := true, + base := { + alt_1 := { + geodetic (1) + } + } + }, + elem_list := { + " + sip:no_one@example.net;gr=kjh29x97us97d + + +" + } + } + } + } + } +} +14:52:02.518024 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) >>> http_codec::encode_request: { + method := "POST", + uri := "/api/held", + version_major := 1, + version_minor := 1, + header := { + { + header_name := "Host", + header_value := { + "location-information-service.azurewebsites.net" + } + }, + { + header_name := "Content-type", + header_value := { + "application/held+xml;charset=utf-8" + } + }, + { + header_name := "Content-length", + header_value := { + "0" + } + }, + { + header_name := "Connection", + header_value := { + "keep-alive" + } + }, + { + header_name := "Pragma", + header_value := { + "no-cache" + } + }, + { + header_name := "Cache-Control", + header_value := { + "no-cache" + } + } + }, + body := { + xml_body := { + locationRequest := { + responseTime := omit, + attr := omit, + locationType := { + exact := true, + base := { + alt_1 := { + geodetic (1) + } + } + }, + elem_list := { + " + sip:no_one@example.net;gr=kjh29x97us97d + + +" + } + } + } + } +} +14:52:02.519450 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::encode_request: body: { + xml_body := { + locationRequest := { + responseTime := omit, + attr := omit, + locationType := { + exact := true, + base := { + alt_1 := { + geodetic (1) + } + } + }, + elem_list := { + " + sip:no_one@example.net;gr=kjh29x97us97d + + +" + } + } + } +} +14:52:02.519976 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) >>> http_codec::encode_body: { + xml_body := { + locationRequest := { + responseTime := omit, + attr := omit, + locationType := { + exact := true, + base := { + alt_1 := { + geodetic (1) + } + } + }, + elem_list := { + " + sip:no_one@example.net;gr=kjh29x97us97d + + +" + } + } + } +} +14:52:02.520994 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::encode_body: # of codecs=2 +14:52:02.521926 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::encode_body: Call 'held_codec' +14:52:02.522418 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) >>> held_codec::encode: { + locationRequest := { + responseTime := omit, + attr := omit, + locationType := { + exact := true, + base := { + alt_1 := { + geodetic (1) + } + } + }, + elem_list := { + " + sip:no_one@example.net;gr=kjh29x97us97d + + +" + } + } +} +14:52:02.523717 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) held_codec::encode: Process LocationRequestType{ + responseTime := omit, + attr := omit, + locationType := { + exact := true, + base := { + alt_1 := { + geodetic (1) + } + } + }, + elem_list := { + " + sip:no_one@example.net;gr=kjh29x97us97d + + +" + } +} +14:52:02.524906 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) held_codec::decode: After encoding: '3C68656C643A6C6F636174696F6E5265717565737420786D6C6E733A68656C643D2775726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64273E0A093C68656C643A6C6F636174696F6E547970652065786163743D2774727565273E67656F64657469633C2F68656C643A6C6F636174696F6E547970653E0A093C69643A64657669636520786D6C6E733A69643D2775726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C643A6964273E0A093C7572693E7369703A6E6F5F6F6E65406578616D706C652E6E65743B67723D6B6A68323978393775733937643C2F7572693E0A3C2F69643A6465766963653E0A0A0A3C2F68656C643A6C6F636174696F6E526571756573743E0A0A'O (" + geodetic + + sip:no_one@example.net;gr=kjh29x97us97d + + + + + +") +14:52:02.533876 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) <<< held_codec::encode +14:52:02.534707 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::encode_body: HTTP message '3C68656C643A6C6F636174696F6E5265717565737420786D6C6E733A68656C643D2775726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64273E0A093C68656C643A6C6F636174696F6E547970652065786163743D2774727565273E67656F64657469633C2F68656C643A6C6F636174696F6E547970653E0A093C69643A64657669636520786D6C6E733A69643D2775726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C643A6964273E0A093C7572693E7369703A6E6F5F6F6E65406578616D706C652E6E65743B67723D6B6A68323978393775733937643C2F7572693E0A3C2F69643A6465766963653E0A0A0A3C2F68656C643A6C6F636174696F6E526571756573743E0A0A'O (" + geodetic + + sip:no_one@example.net;gr=kjh29x97us97d + + + + + +") +14:52:02.541323 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::encode_body: HTTP message length: 289 +14:52:02.541573 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::encode_request: length=289 +14:52:02.542368 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::encode_request: Processing header "Host" +14:52:02.542785 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::encode_request: Processing value "location-information-service.azurewebsites.net" +14:52:02.543180 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::encode_request: Processing header "Content-type" +14:52:02.543634 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::encode_request: Processing value "application/held+xml;charset=utf-8" +14:52:02.544056 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::encode_request: Processing header "Content-length" +14:52:02.544875 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::encode_request: Processing header "Connection" +14:52:02.545653 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::encode_request: Processing value "keep-alive" +14:52:02.546047 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::encode_request: Processing header "Pragma" +14:52:02.547276 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::encode_request: Processing value "no-cache" +14:52:02.547743 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::encode_request: Processing header "Cache-Control" +14:52:02.550933 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::encode_request: Processing value "no-cache" +14:52:02.551714 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) <<< http_codec::encode: data='504F5354202F6170692F68656C6420485454502F312E310D0A486F73743A206C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A436F6E74656E742D747970653A206170706C69636174696F6E2F68656C642B786D6C3B636861727365743D7574662D380D0A436F6E74656E742D6C656E6774683A203239310D0A436F6E6E656374696F6E3A206B6565702D616C6976650D0A507261676D613A206E6F2D63616368650D0A43616368652D436F6E74726F6C3A206E6F2D63616368650D0A0D0A3C68656C643A6C6F636174696F6E5265717565737420786D6C6E733A68656C643D2775726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64273E0A093C68656C643A6C6F636174696F6E547970652065786163743D2774727565273E67656F64657469633C2F68656C643A6C6F636174696F6E547970653E0A093C69643A64657669636520786D6C6E733A69643D2775726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C643A6964273E0A093C7572693E7369703A6E6F5F6F6E65406578616D706C652E6E65743B67723D6B6A68323978393775733937643C2F7572693E0A3C2F69643A6465766963653E0A0A0A3C2F68656C643A6C6F636174696F6E526571756573743E0A0A0D0A'O ("POST /api/held HTTP/1.1\r +Host: location-information-service.azurewebsites.net\r +Content-type: application/held+xml;charset=utf-8\r +Content-length: 291\r +Connection: keep-alive\r +Pragma: no-cache\r +Cache-Control: no-cache\r +\r + + geodetic + + sip:no_one@example.net;gr=kjh29x97us97d + + + + + +\r +") +14:52:02.572874 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) >>> http_layer::send_data: '504F5354202F6170692F68656C6420485454502F312E310D0A486F73743A206C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A436F6E74656E742D747970653A206170706C69636174696F6E2F68656C642B786D6C3B636861727365743D7574662D380D0A436F6E74656E742D6C656E6774683A203239310D0A436F6E6E656374696F6E3A206B6565702D616C6976650D0A507261676D613A206E6F2D63616368650D0A43616368652D436F6E74726F6C3A206E6F2D63616368650D0A0D0A3C68656C643A6C6F636174696F6E5265717565737420786D6C6E733A68656C643D2775726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64273E0A093C68656C643A6C6F636174696F6E547970652065786163743D2774727565273E67656F64657469633C2F68656C643A6C6F636174696F6E547970653E0A093C69643A64657669636520786D6C6E733A69643D2775726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C643A6964273E0A093C7572693E7369703A6E6F5F6F6E65406578616D706C652E6E65743B67723D6B6A68323978393775733937643C2F7572693E0A3C2F69643A6465766963653E0A0A0A3C2F68656C643A6C6F636174696F6E526571756573743E0A0A0D0A'O ("POST /api/held HTTP/1.1\r +Host: location-information-service.azurewebsites.net\r +Content-type: application/held+xml;charset=utf-8\r +Content-length: 291\r +Connection: keep-alive\r +Pragma: no-cache\r +Cache-Control: no-cache\r +\r + + geodetic + + sip:no_one@example.net;gr=kjh29x97us97d + + + + + +\r +") +14:52:02.595568 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) >>> tcp_layer::send_data: '504F5354202F6170692F68656C6420485454502F312E310D0A486F73743A206C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A436F6E74656E742D747970653A206170706C69636174696F6E2F68656C642B786D6C3B636861727365743D7574662D380D0A436F6E74656E742D6C656E6774683A203239310D0A436F6E6E656374696F6E3A206B6565702D616C6976650D0A507261676D613A206E6F2D63616368650D0A43616368652D436F6E74726F6C3A206E6F2D63616368650D0A0D0A3C68656C643A6C6F636174696F6E5265717565737420786D6C6E733A68656C643D2775726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64273E0A093C68656C643A6C6F636174696F6E547970652065786163743D2774727565273E67656F64657469633C2F68656C643A6C6F636174696F6E547970653E0A093C69643A64657669636520786D6C6E733A69643D2775726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C643A6964273E0A093C7572693E7369703A6E6F5F6F6E65406578616D706C652E6E65743B67723D6B6A68323978393775733937643C2F7572693E0A3C2F69643A6465766963653E0A0A0A3C2F68656C643A6C6F636174696F6E526571756573743E0A0A0D0A'O ("POST /api/held HTTP/1.1\r +Host: location-information-service.azurewebsites.net\r +Content-type: application/held+xml;charset=utf-8\r +Content-length: 291\r +Connection: keep-alive\r +Pragma: no-cache\r +Cache-Control: no-cache\r +\r + + geodetic + + sip:no_one@example.net;gr=kjh29x97us97d + + + + + +\r +") +14:52:02.621008 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) tcp_layer::send_data: SSL mode: 0 +14:52:02.621346 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) Abstract socket: entering Abstract_Socket::send_outgoing() +14:52:02.621589 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) Abstract socket: Sending data: Size: 510, Msg: 50 4f 53 54 20 2f 61 70 69 2f 68 65 6c 64 20 48 54 54 50 2f 31 2e 31 0d 0a 48 6f 73 74 3a 20 6c 6f 63 61 74 69 6f 6e 2d 69 6e 66 6f 72 6d 61 74 69 6f 6e 2d 73 65 72 76 69 63 65 2e 61 7a 75 72 65 77 65 62 73 69 74 65 73 2e 6e 65 74 0d 0a 43 6f 6e 74 65 6e 74 2d 74 79 70 65 3a 20 61 70 70 6c 69 63 61 74 69 6f 6e 2f 68 65 6c 64 2b 78 6d 6c 3b 63 68 61 72 73 65 74 3d 75 74 66 2d 38 0d 0a 43 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 3a 20 32 39 31 0d 0a 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 6b 65 65 70 2d 61 6c 69 76 65 0d 0a 50 72 61 67 6d 61 3a 20 6e 6f 2d 63 61 63 68 65 0d 0a 43 61 63 68 65 2d 43 6f 6e 74 72 6f 6c 3a 20 6e 6f 2d 63 61 63 68 65 0d 0a 0d 0a 3c 68 65 6c 64 3a 6c 6f 63 61 74 69 6f 6e 52 65 71 75 65 73 74 20 78 6d 6c 6e 73 3a 68 65 6c 64 3d 27 75 72 6e 3a 69 65 74 66 3a 70 61 72 61 6d 73 3a 78 6d 6c 3a 6e 73 3a 67 65 6f 70 72 69 76 3a 68 65 6c 64 27 3e 0a 09 3c 68 65 6c 64 3a 6c 6f 63 61 74 69 6f 6e 54 79 70 65 20 65 78 61 63 74 3d 27 74 72 75 65 27 3e 67 65 6f 64 65 74 69 63 3c 2f 68 65 6c 64 3a 6c 6f 63 61 74 69 6f 6e 54 79 70 65 3e 0a 09 3c 69 64 3a 64 65 76 69 63 65 20 78 6d 6c 6e 73 3a 69 64 3d 27 75 72 6e 3a 69 65 74 66 3a 70 61 72 61 6d 73 3a 78 6d 6c 3a 6e 73 3a 67 65 6f 70 72 69 76 3a 68 65 6c 64 3a 69 64 27 3e 0a 09 3c 75 72 69 3e 73 69 70 3a 6e 6f 5f 6f 6e 65 40 65 78 61 6d 70 6c 65 2e 6e 65 74 3b 67 72 3d 6b 6a 68 32 39 78 39 37 75 73 39 37 64 3c 2f 75 72 69 3e 0a 3c 2f 69 64 3a 64 65 76 69 63 65 3e 0a 0a 0a 3c 2f 68 65 6c 64 3a 6c 6f 63 61 74 69 6f 6e 52 65 71 75 65 73 74 3e 0a 0a 0d 0a +14:52:02.627244 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) >>> tcp_layer::send_message_on_fd: 6 +14:52:02.627584 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) tcp_layer::send_message_on_fd: Non secured mode +14:52:02.628262 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) Abstract socket: Nr of bytes sent = 510 +14:52:02.629116 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) Abstract socket: leaving Abstract_Socket::send_outgoing() +14:52:02.629864 mtc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:381(testcase:TC_LIS_HTTP_POST_BV_03) HttpPort::outgoing_send: Execution duration: 93.419998 ms +14:52:02.631254 mtc VERDICTOP ../ttcn/AtsNg112_TestCases.ttcn:396(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibCommon_Sync.ttcn:448(function:f_selfOrClientSyncAndVerdictTestBody)->../ttcn/LibCommon_Sync.ttcn:1153(function:f_selfSyncAndVerdictTestBody)->../ttcn/LibCommon_VerdictControl.ttcn:49(function:f_setVerdict) setverdict(pass): none -> pass +14:52:02.632067 mtc USER ../ttcn/AtsNg112_TestCases.ttcn:396(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibCommon_Sync.ttcn:448(function:f_selfOrClientSyncAndVerdictTestBody)->../ttcn/LibCommon_Sync.ttcn:1154(function:f_selfSyncAndVerdictTestBody)->../ttcn/LibCommon_Sync.ttcn:1197(function:f_selfSync) **** f_selfSync: Successfully passed PREAMBLE synchronization point. **** +14:52:02.632778 mtc TIMEROP ../ttcn/AtsNg112_TestCases.ttcn:399(testcase:TC_LIS_HTTP_POST_BV_03) Start timer tc_ac: 30 s +14:52:03.755470 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) >>> tcp_layer::Handle_Fd_Event: 6 +14:52:03.756157 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) Abstract socket: entering Abstract_Socket::Handle_Socket_Event(): fd: 6 readable +14:52:03.756544 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) Abstract socket: receiving data +14:52:03.756733 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) >>> tcp_layer::receive_message_on_fd: 6 +14:52:03.757126 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) tcp_layer::receive_message_on_fd: Non secured mode +14:52:03.761787 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) Abstract socket: Message received from address (addr) 10.0.2.15/55330 +14:52:03.762913 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) Abstract socket: Message received, buffer content: Size: 708, Msg: 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d 0a 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 3a 20 32 30 39 0d 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 61 70 70 6c 69 63 61 74 69 6f 6e 2f 68 65 6c 64 2b 78 6d 6c 3b 20 63 68 61 72 73 65 74 3d 75 74 66 2d 38 0d 0a 53 65 72 76 65 72 3a 20 4d 69 63 72 6f 73 6f 66 74 2d 49 49 53 2f 31 30 2e 30 0d 0a 53 65 74 2d 43 6f 6f 6b 69 65 3a 20 41 52 52 41 66 66 69 6e 69 74 79 3d 38 33 38 62 36 37 32 64 65 37 38 31 35 61 63 35 64 30 33 34 61 39 34 32 62 62 38 36 34 61 66 36 31 31 38 33 62 62 38 61 34 33 63 66 61 32 34 31 35 37 31 34 33 39 34 31 36 63 66 66 34 38 63 61 3b 50 61 74 68 3d 2f 3b 48 74 74 70 4f 6e 6c 79 3b 44 6f 6d 61 69 6e 3d 6c 6f 63 61 74 69 6f 6e 2d 69 6e 66 6f 72 6d 61 74 69 6f 6e 2d 73 65 72 76 69 63 65 2e 61 7a 75 72 65 77 65 62 73 69 74 65 73 2e 6e 65 74 0d 0a 58 2d 50 6f 77 65 72 65 64 2d 42 79 3a 20 41 53 50 2e 4e 45 54 0d 0a 53 65 74 2d 43 6f 6f 6b 69 65 3a 20 41 52 52 41 66 66 69 6e 69 74 79 3d 38 64 36 39 62 39 30 63 30 35 65 63 61 61 34 34 62 32 34 65 38 62 30 35 39 62 32 62 39 35 31 30 34 32 64 37 32 65 30 36 66 36 39 34 32 32 30 30 39 39 66 30 33 34 61 38 31 31 34 35 35 61 30 31 3b 50 61 74 68 3d 2f 3b 48 74 74 70 4f 6e 6c 79 3b 44 6f 6d 61 69 6e 3d 6c 6f 63 61 74 69 6f 6e 2d 69 6e 66 6f 72 6d 61 74 69 6f 6e 2d 73 65 72 76 69 63 65 2e 61 7a 75 72 65 77 65 62 73 69 74 65 73 2e 6e 65 74 0d 0a 44 61 74 65 3a 20 4d 6f 6e 2c 20 32 33 20 4a 75 6c 20 32 30 31 38 20 31 32 3a 35 32 3a 30 33 20 47 4d 54 0d 0a 0d 0a 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 31 2e 30 22 20 65 6e 63 6f 64 69 6e 67 3d 22 55 54 46 2d 38 22 20 73 74 61 6e 64 61 6c 6f 6e 65 3d 22 6e 6f 22 3f 3e 0d 0a 3c 65 72 72 6f 72 20 63 6f 64 65 3d 22 6c 6f 63 61 74 69 6f 6e 55 6e 6b 6e 6f 77 6e 22 20 78 6d 6c 6e 73 3d 22 75 72 6e 3a 69 65 74 66 3a 70 61 72 61 6d 73 3a 78 6d 6c 3a 6e 73 3a 67 65 6f 70 72 69 76 3a 68 65 6c 64 22 3e 0d 0a 20 20 20 20 3c 6d 65 73 73 61 67 65 20 78 6d 6c 3a 6c 61 6e 67 3d 22 65 6e 22 3e 55 6e 61 62 6c 65 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 6c 6f 63 61 74 69 6f 6e 3c 2f 6d 65 73 73 61 67 65 3e 0d 0a 3c 2f 65 72 72 6f 72 3e 0d 0a +14:52:03.775749 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) >>> tcp_layer::message_incoming +14:52:03.776559 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) tcp_layer::message_incoming: 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d 0a 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 3a 20 32 30 39 0d 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 61 70 70 6c 69 63 61 74 69 6f 6e 2f 68 65 6c 64 2b 78 6d 6c 3b 20 63 68 61 72 73 65 74 3d 75 74 66 2d 38 0d 0a 53 65 72 76 65 72 3a 20 4d 69 63 72 6f 73 6f 66 74 2d 49 49 53 2f 31 30 2e 30 0d 0a 53 65 74 2d 43 6f 6f 6b 69 65 3a 20 41 52 52 41 66 66 69 6e 69 74 79 3d 38 33 38 62 36 37 32 64 65 37 38 31 35 61 63 35 64 30 33 34 61 39 34 32 62 62 38 36 34 61 66 36 31 31 38 33 62 62 38 61 34 33 63 66 61 32 34 31 35 37 31 34 33 39 34 31 36 63 66 66 34 38 63 61 3b 50 61 74 68 3d 2f 3b 48 74 74 70 4f 6e 6c 79 3b 44 6f 6d 61 69 6e 3d 6c 6f 63 61 74 69 6f 6e 2d 69 6e 66 6f 72 6d 61 74 69 6f 6e 2d 73 65 72 76 69 63 65 2e 61 7a 75 72 65 77 65 62 73 69 74 65 73 2e 6e 65 74 0d 0a 58 2d 50 6f 77 65 72 65 64 2d 42 79 3a 20 41 53 50 2e 4e 45 54 0d 0a 53 65 74 2d 43 6f 6f 6b 69 65 3a 20 41 52 52 41 66 66 69 6e 69 74 79 3d 38 64 36 39 62 39 30 63 30 35 65 63 61 61 34 34 62 32 34 65 38 62 30 35 39 62 32 62 39 35 31 30 34 32 64 37 32 65 30 36 66 36 39 34 32 32 30 30 39 39 66 30 33 34 61 38 31 31 34 35 35 61 30 31 3b 50 61 74 68 3d 2f 3b 48 74 74 70 4f 6e 6c 79 3b 44 6f 6d 61 69 6e 3d 6c 6f 63 61 74 69 6f 6e 2d 69 6e 66 6f 72 6d 61 74 69 6f 6e 2d 73 65 72 76 69 63 65 2e 61 7a 75 72 65 77 65 62 73 69 74 65 73 2e 6e 65 74 0d 0a 44 61 74 65 3a 20 4d 6f 6e 2c 20 32 33 20 4a 75 6c 20 32 30 31 38 20 31 32 3a 35 32 3a 30 33 20 47 4d 54 0d 0a 0d 0a 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 31 2e 30 22 20 65 6e 63 6f 64 69 6e 67 3d 22 55 54 46 2d 38 22 20 73 74 61 6e 64 61 6c 6f 6e 65 3d 22 6e 6f 22 3f 3e 0d 0a 3c 65 72 72 6f 72 20 63 6f 64 65 3d 22 6c 6f 63 61 74 69 6f 6e 55 6e 6b 6e 6f 77 6e 22 20 78 6d 6c 6e 73 3d 22 75 72 6e 3a 69 65 74 66 3a 70 61 72 61 6d 73 3a 78 6d 6c 3a 6e 73 3a 67 65 6f 70 72 69 76 3a 68 65 6c 64 22 3e 0d 0a 20 20 20 20 3c 6d 65 73 73 61 67 65 20 78 6d 6c 3a 6c 61 6e 67 3d 22 65 6e 22 3e 55 6e 61 62 6c 65 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 6c 6f 63 61 74 69 6f 6e 3c 2f 6d 65 73 73 61 67 65 3e 0d 0a 3c 2f 65 72 72 6f 72 3e 0d 0a + +14:52:03.796252 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) >>> tcp_layer::receive_data: '485454502F312E3120323030204F4B0D0A436F6E74656E742D4C656E6774683A203230390D0A436F6E74656E742D547970653A206170706C69636174696F6E2F68656C642B786D6C3B20636861727365743D7574662D380D0A5365727665723A204D6963726F736F66742D4949532F31302E300D0A5365742D436F6F6B69653A20415252416666696E6974793D383338623637326465373831356163356430333461393432626238363461663631313833626238613433636661323431353731343339343136636666343863613B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A582D506F77657265642D42793A204153502E4E45540D0A5365742D436F6F6B69653A20415252416666696E6974793D386436396239306330356563616134346232346538623035396232623935313034326437326530366636393432323030393966303334613831313435356130313B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A446174653A204D6F6E2C203233204A756C20323031382031323A35323A303320474D540D0A0D0A3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D226E6F223F3E0D0A3C6572726F7220636F64653D226C6F636174696F6E556E6B6E6F776E2220786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64223E0D0A202020203C6D65737361676520786D6C3A6C616E673D22656E223E556E61626C6520746F2064657465726D696E65206C6F636174696F6E3C2F6D6573736167653E0D0A3C2F6572726F723E0D0A'O ("HTTP/1.1 200 OK\r +Content-Length: 209\r +Content-Type: application/held+xml; charset=utf-8\r +Server: Microsoft-IIS/10.0\r +Set-Cookie: ARRAffinity=838b672de7815ac5d034a942bb864af61183bb8a43cfa241571439416cff48ca;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net\r +X-Powered-By: ASP.NET\r +Set-Cookie: ARRAffinity=8d69b90c05ecaa44b24e8b059b2b951042d72e06f694220099f034a811455a01;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net\r +Date: Mon, 23 Jul 2018 12:52:03 GMT\r +\r +\r +\r + Unable to determine location\r +\r +") +14:52:03.837760 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) >>> http_layer::receive_data: '485454502F312E3120323030204F4B0D0A436F6E74656E742D4C656E6774683A203230390D0A436F6E74656E742D547970653A206170706C69636174696F6E2F68656C642B786D6C3B20636861727365743D7574662D380D0A5365727665723A204D6963726F736F66742D4949532F31302E300D0A5365742D436F6F6B69653A20415252416666696E6974793D383338623637326465373831356163356430333461393432626238363461663631313833626238613433636661323431353731343339343136636666343863613B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A582D506F77657265642D42793A204153502E4E45540D0A5365742D436F6F6B69653A20415252416666696E6974793D386436396239306330356563616134346232346538623035396232623935313034326437326530366636393432323030393966303334613831313435356130313B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A446174653A204D6F6E2C203233204A756C20323031382031323A35323A303320474D540D0A0D0A3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D226E6F223F3E0D0A3C6572726F7220636F64653D226C6F636174696F6E556E6B6E6F776E2220786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64223E0D0A202020203C6D65737361676520786D6C3A6C616E673D22656E223E556E61626C6520746F2064657465726D696E65206C6F636174696F6E3C2F6D6573736167653E0D0A3C2F6572726F723E0D0A'O ("HTTP/1.1 200 OK\r +Content-Length: 209\r +Content-Type: application/held+xml; charset=utf-8\r +Server: Microsoft-IIS/10.0\r +Set-Cookie: ARRAffinity=838b672de7815ac5d034a942bb864af61183bb8a43cfa241571439416cff48ca;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net\r +X-Powered-By: ASP.NET\r +Set-Cookie: ARRAffinity=8d69b90c05ecaa44b24e8b059b2b951042d72e06f694220099f034a811455a01;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net\r +Date: Mon, 23 Jul 2018 12:52:03 GMT\r +\r +\r +\r + Unable to determine location\r +\r +") +14:52:03.875585 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) >>> http_codec::decode: data='485454502F312E3120323030204F4B0D0A436F6E74656E742D4C656E6774683A203230390D0A436F6E74656E742D547970653A206170706C69636174696F6E2F68656C642B786D6C3B20636861727365743D7574662D380D0A5365727665723A204D6963726F736F66742D4949532F31302E300D0A5365742D436F6F6B69653A20415252416666696E6974793D383338623637326465373831356163356430333461393432626238363461663631313833626238613433636661323431353731343339343136636666343863613B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A582D506F77657265642D42793A204153502E4E45540D0A5365742D436F6F6B69653A20415252416666696E6974793D386436396239306330356563616134346232346538623035396232623935313034326437326530366636393432323030393966303334613831313435356130313B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A446174653A204D6F6E2C203233204A756C20323031382031323A35323A303320474D540D0A0D0A3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D226E6F223F3E0D0A3C6572726F7220636F64653D226C6F636174696F6E556E6B6E6F776E2220786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64223E0D0A202020203C6D65737361676520786D6C3A6C616E673D22656E223E556E61626C6520746F2064657465726D696E65206C6F636174696F6E3C2F6D6573736167653E0D0A3C2F6572726F723E0D0A'O ("HTTP/1.1 200 OK\r +Content-Length: 209\r +Content-Type: application/held+xml; charset=utf-8\r +Server: Microsoft-IIS/10.0\r +Set-Cookie: ARRAffinity=838b672de7815ac5d034a942bb864af61183bb8a43cfa241571439416cff48ca;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net\r +X-Powered-By: ASP.NET\r +Set-Cookie: ARRAffinity=8d69b90c05ecaa44b24e8b059b2b951042d72e06f694220099f034a811455a01;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net\r +Date: Mon, 23 Jul 2018 12:52:03 GMT\r +\r +\r +\r + Unable to determine location\r +\r +") +14:52:03.921332 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode: decoding_buffer=Buffer: size: 708, pos: 0, len: 708 data: ( | 485454502F312E3120323030204F4B0D0A436F6E74656E742D4C656E6774683A203230390D0A436F6E74656E742D547970653A206170706C69636174696F6E2F68656C642B786D6C3B20636861727365743D7574662D380D0A5365727665723A204D6963726F736F66742D4949532F31302E300D0A5365742D436F6F6B69653A20415252416666696E6974793D383338623637326465373831356163356430333461393432626238363461663631313833626238613433636661323431353731343339343136636666343863613B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A582D506F77657265642D42793A204153502E4E45540D0A5365742D436F6F6B69653A20415252416666696E6974793D386436396239306330356563616134346232346538623035396232623935313034326437326530366636393432323030393966303334613831313435356130313B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A446174653A204D6F6E2C203233204A756C20323031382031323A35323A303320474D540D0A0D0A3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D226E6F223F3E0D0A3C6572726F7220636F64653D226C6F636174696F6E556E6B6E6F776E2220786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64223E0D0A202020203C6D65737361676520786D6C3A6C616E673D22656E223E556E61626C6520746F2064657465726D696E65206C6F636174696F6E3C2F6D6573736167653E0D0A3C2F6572726F723E0D0A) +14:52:03.950895 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode: message_id: "HTTP/1.1 200 OK" +14:52:03.955914 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode: 2 - HTTP/ +14:52:03.979710 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode: Process response: 5 +14:52:03.980487 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) >>> http_codec::decode_headers +14:52:03.980958 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_headersBuffer: size: 708, pos: 17, len: 708 data: (485454502F312E3120323030204F4B0D0A | 436F6E74656E742D4C656E6774683A203230390D0A436F6E74656E742D547970653A206170706C69636174696F6E2F68656C642B786D6C3B20636861727365743D7574662D380D0A5365727665723A204D6963726F736F66742D4949532F31302E300D0A5365742D436F6F6B69653A20415252416666696E6974793D383338623637326465373831356163356430333461393432626238363461663631313833626238613433636661323431353731343339343136636666343863613B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A582D506F77657265642D42793A204153502E4E45540D0A5365742D436F6F6B69653A20415252416666696E6974793D386436396239306330356563616134346232346538623035396232623935313034326437326530366636393432323030393966303334613831313435356130313B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A446174653A204D6F6E2C203233204A756C20323031382031323A35323A303320474D540D0A0D0A3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D226E6F223F3E0D0A3C6572726F7220636F64653D226C6F636174696F6E556E6B6E6F776E2220786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64223E0D0A202020203C6D65737361676520786D6C3A6C616E673D22656E223E556E61626C6520746F2064657465726D696E65206C6F636174696F6E3C2F6D6573736167653E0D0A3C2F6572726F723E0D0A) +14:52:04.000595 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_headers: "Content-Length: 209" +14:52:04.001389 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) >>> http_codec::decode_header"Content-Length: 209" +14:52:04.006075 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_header: 5 +14:52:04.006704 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_header: decoded Content-Length 209 +14:52:04.007886 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_headers: "Content-Type: application/held+xml; charset=utf-8" +14:52:04.008192 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) >>> http_codec::decode_header"Content-Type: application/held+xml; charset=utf-8" +14:52:04.013050 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_header: 5 +14:52:04.013807 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_headers: "Server: Microsoft-IIS/10.0" +14:52:04.014261 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) >>> http_codec::decode_header"Server: Microsoft-IIS/10.0" +14:52:04.018902 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_header: 5 +14:52:04.019581 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_headers: "Set-Cookie: ARRAffinity=838b672de7815ac5d034a942bb864af61183bb8a43cfa241571439416cff48ca;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" +14:52:04.020396 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) >>> http_codec::decode_header"Set-Cookie: ARRAffinity=838b672de7815ac5d034a942bb864af61183bb8a43cfa241571439416cff48ca;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" +14:52:04.025570 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_header: 5 +14:52:04.026404 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_headers: "X-Powered-By: ASP.NET" +14:52:04.027015 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) >>> http_codec::decode_header"X-Powered-By: ASP.NET" +14:52:04.034671 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_header: 5 +14:52:04.035652 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_headers: "Set-Cookie: ARRAffinity=8d69b90c05ecaa44b24e8b059b2b951042d72e06f694220099f034a811455a01;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" +14:52:04.036114 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) >>> http_codec::decode_header"Set-Cookie: ARRAffinity=8d69b90c05ecaa44b24e8b059b2b951042d72e06f694220099f034a811455a01;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" +14:52:04.042056 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_header: 5 +14:52:04.043066 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_headers: "Date: Mon, 23 Jul 2018 12:52:03 GMT" +14:52:04.043863 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) >>> http_codec::decode_header"Date: Mon, 23 Jul 2018 12:52:03 GMT" +14:52:04.049002 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_header: 5 +14:52:04.049942 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) <<< http_codec::decode_headers: { + { + header_name := "Content-Length", + header_value := { + "209" + } + }, + { + header_name := "Content-Type", + header_value := { + "application/held+xml; charset=utf-8" + } + }, + { + header_name := "Server", + header_value := { + "Microsoft-IIS/10.0" + } + }, + { + header_name := "Set-Cookie", + header_value := { + "ARRAffinity=838b672de7815ac5d034a942bb864af61183bb8a43cfa241571439416cff48ca;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" + } + }, + { + header_name := "X-Powered-By", + header_value := { + "ASP.NET" + } + }, + { + header_name := "Set-Cookie", + header_value := { + "ARRAffinity=8d69b90c05ecaa44b24e8b059b2b951042d72e06f694220099f034a811455a01;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" + } + }, + { + header_name := "Date", + header_value := { + "Mon, 23 Jul 2018 12:52:03 GMT" + } + } +} +14:52:04.050888 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) Before decoding Body: Buffer: size: 708, pos: 499, len: 708 data: (485454502F312E3120323030204F4B0D0A436F6E74656E742D4C656E6774683A203230390D0A436F6E74656E742D547970653A206170706C69636174696F6E2F68656C642B786D6C3B20636861727365743D7574662D380D0A5365727665723A204D6963726F736F66742D4949532F31302E300D0A5365742D436F6F6B69653A20415252416666696E6974793D383338623637326465373831356163356430333461393432626238363461663631313833626238613433636661323431353731343339343136636666343863613B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A582D506F77657265642D42793A204153502E4E45540D0A5365742D436F6F6B69653A20415252416666696E6974793D386436396239306330356563616134346232346538623035396232623935313034326437326530366636393432323030393966303334613831313435356130313B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A446174653A204D6F6E2C203233204A756C20323031382031323A35323A303320474D540D0A0D0A | 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D226E6F223F3E0D0A3C6572726F7220636F64653D226C6F636174696F6E556E6B6E6F776E2220786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64223E0D0A202020203C6D65737361676520786D6C3A6C616E673D22656E223E556E61626C6520746F2064657465726D696E65206C6F636174696F6E3C2F6D6573736167653E0D0A3C2F6572726F723E0D0A) +14:52:04.073213 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) >>> http_codec::decode_body +14:52:04.073630 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_bodyBuffer: size: 708, pos: 499, len: 708 data: (485454502F312E3120323030204F4B0D0A436F6E74656E742D4C656E6774683A203230390D0A436F6E74656E742D547970653A206170706C69636174696F6E2F68656C642B786D6C3B20636861727365743D7574662D380D0A5365727665723A204D6963726F736F66742D4949532F31302E300D0A5365742D436F6F6B69653A20415252416666696E6974793D383338623637326465373831356163356430333461393432626238363461663631313833626238613433636661323431353731343339343136636666343863613B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A582D506F77657265642D42793A204153502E4E45540D0A5365742D436F6F6B69653A20415252416666696E6974793D386436396239306330356563616134346232346538623035396232623935313034326437326530366636393432323030393966303334613831313435356130313B506174683D2F3B487474704F6E6C793B446F6D61696E3D6C6F636174696F6E2D696E666F726D6174696F6E2D736572766963652E617A75726577656273697465732E6E65740D0A446174653A204D6F6E2C203233204A756C20323031382031323A35323A303320474D540D0A0D0A | 3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D226E6F223F3E0D0A3C6572726F7220636F64653D226C6F636174696F6E556E6B6E6F776E2220786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64223E0D0A202020203C6D65737361676520786D6C3A6C616E673D22656E223E556E61626C6520746F2064657465726D696E65206C6F636174696F6E3C2F6D6573736167653E0D0A3C2F6572726F723E0D0A) +14:52:04.094003 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_body: # of codecs=2 +14:52:04.094298 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_body: raw body='3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D226E6F223F3E0D0A3C6572726F7220636F64653D226C6F636174696F6E556E6B6E6F776E2220786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64223E0D0A202020203C6D65737361676520786D6C3A6C616E673D22656E223E556E61626C6520746F2064657465726D696E65206C6F636174696F6E3C2F6D6573736167653E0D0A3C2F6572726F723E0D0A'O ("\r +\r + Unable to determine location\r +\r +") +14:52:04.099769 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_body: _dc.length=209 - body length=209 +14:52:04.100242 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_body: Aligned body='3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D226E6F223F3E0D0A3C6572726F7220636F64653D226C6F636174696F6E556E6B6E6F776E2220786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64223E0D0A202020203C6D65737361676520786D6C3A6C616E673D22656E223E556E61626C6520746F2064657465726D696E65206C6F636174696F6E3C2F6D6573736167653E0D0A3C2F6572726F723E0D0A'O ("\r +\r + Unable to determine location\r +\r +") +14:52:04.104636 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_body: Counter=2 +14:52:04.105262 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_body: Finalised body='3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D226E6F223F3E0D0A3C6572726F7220636F64653D226C6F636174696F6E556E6B6E6F776E2220786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64223E0D0A202020203C6D65737361676520786D6C3A6C616E673D22656E223E556E61626C6520746F2064657465726D696E65206C6F636174696F6E3C2F6D6573736167653E0D0A3C2F6572726F723E'O ("\r +\r + Unable to determine location\r +") +14:52:04.109598 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_body: Binary mode: 0 +14:52:04.110028 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_body: Find xml message +14:52:04.110487 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_body: Find 'urn:ietf:params:xml:ns:geopriv:held' +14:52:04.111051 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_body: Call 'held_codec' +14:52:04.111983 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) >>> held_codec::decode: p_data='3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D226E6F223F3E0D0A3C6572726F7220636F64653D226C6F636174696F6E556E6B6E6F776E2220786D6C6E733D2275726E3A696574663A706172616D733A786D6C3A6E733A67656F707269763A68656C64223E0D0A202020203C6D65737361676520786D6C3A6C616E673D22656E223E556E61626C6520746F2064657465726D696E65206C6F636174696F6E3C2F6D6573736167653E0D0A3C2F6572726F723E'O ("\r +\r + Unable to determine location\r +") +14:52:04.117187 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) <<< held_codec::decode: { + errorType := { + code := "locationUnknown", + attr := omit, + message_list := { + { + lang := "en", + attr := omit, + base := "Unable to determine location" + } + }, + elem_list := { } + } +} +14:52:04.117967 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) http_codec::decode_body: Decoded message:{ + errorType := { + code := "locationUnknown", + attr := omit, + message_list := { + { + lang := "en", + attr := omit, + base := "Unable to determine location" + } + }, + elem_list := { } + } +} +14:52:04.118996 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) <<< http_codec::decode: { + response := { + version_major := 1, + version_minor := 1, + statuscode := 200, + statustext := "OK", + header := { + { + header_name := "Content-Length", + header_value := { + "209" + } + }, + { + header_name := "Content-Type", + header_value := { + "application/held+xml; charset=utf-8" + } + }, + { + header_name := "Server", + header_value := { + "Microsoft-IIS/10.0" + } + }, + { + header_name := "Set-Cookie", + header_value := { + "ARRAffinity=838b672de7815ac5d034a942bb864af61183bb8a43cfa241571439416cff48ca;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" + } + }, + { + header_name := "X-Powered-By", + header_value := { + "ASP.NET" + } + }, + { + header_name := "Set-Cookie", + header_value := { + "ARRAffinity=8d69b90c05ecaa44b24e8b059b2b951042d72e06f694220099f034a811455a01;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" + } + }, + { + header_name := "Date", + header_value := { + "Mon, 23 Jul 2018 12:52:03 GMT" + } + } + }, + body := { + xml_body := { + errorType := { + code := "locationUnknown", + attr := omit, + message_list := { + { + lang := "en", + attr := omit, + base := "Unable to determine location" + } + }, + elem_list := { } + } + } + } + } +} +14:52:04.120527 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) >>> HttpPort::receive_msg: { + response := { + version_major := 1, + version_minor := 1, + statuscode := 200, + statustext := "OK", + header := { + { + header_name := "Content-Length", + header_value := { + "209" + } + }, + { + header_name := "Content-Type", + header_value := { + "application/held+xml; charset=utf-8" + } + }, + { + header_name := "Server", + header_value := { + "Microsoft-IIS/10.0" + } + }, + { + header_name := "Set-Cookie", + header_value := { + "ARRAffinity=838b672de7815ac5d034a942bb864af61183bb8a43cfa241571439416cff48ca;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" + } + }, + { + header_name := "X-Powered-By", + header_value := { + "ASP.NET" + } + }, + { + header_name := "Set-Cookie", + header_value := { + "ARRAffinity=8d69b90c05ecaa44b24e8b059b2b951042d72e06f694220099f034a811455a01;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" + } + }, + { + header_name := "Date", + header_value := { + "Mon, 23 Jul 2018 12:52:03 GMT" + } + } + }, + body := { + xml_body := { + errorType := { + code := "locationUnknown", + attr := omit, + message_list := { + { + lang := "en", + attr := omit, + base := "Unable to determine location" + } + }, + elem_list := { } + } + } + } + } +} +14:52:04.122500 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) Message enqueued on httpPort from system @LibItsHttp_TypesAndValues.HttpMessage : { + response := { + version_major := 1, + version_minor := 1, + statuscode := 200, + statustext := "OK", + header := { + { + header_name := "Content-Length", + header_value := { + "209" + } + }, + { + header_name := "Content-Type", + header_value := { + "application/held+xml; charset=utf-8" + } + }, + { + header_name := "Server", + header_value := { + "Microsoft-IIS/10.0" + } + }, + { + header_name := "Set-Cookie", + header_value := { + "ARRAffinity=838b672de7815ac5d034a942bb864af61183bb8a43cfa241571439416cff48ca;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" + } + }, + { + header_name := "X-Powered-By", + header_value := { + "ASP.NET" + } + }, + { + header_name := "Set-Cookie", + header_value := { + "ARRAffinity=8d69b90c05ecaa44b24e8b059b2b951042d72e06f694220099f034a811455a01;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" + } + }, + { + header_name := "Date", + header_value := { + "Mon, 23 Jul 2018 12:52:03 GMT" + } + } + }, + body := { + xml_body := { + errorType := { + code := "locationUnknown", + attr := omit, + message_list := { + { + lang := "en", + attr := omit, + base := "Unable to determine location" + } + }, + elem_list := { } + } + } + } + } +} id 1 +14:52:04.123470 mtc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) tcp_layer::Handle_Fd_Event_Readable: Execution duration: 273.223999 ms +14:52:04.124086 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) Abstract socket: leaving Abstract_Socket::handle_message() +14:52:04.124576 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) Abstract socket: leaving Abstract_Socket::Handle_Socket_Event() +14:52:04.124997 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:400(testcase:TC_LIS_HTTP_POST_BV_03) Abstract socket: <<< tcp_layer::Handle_Fd_Event +14:52:04.125640 mtc MATCHING ../ttcn/AtsNg112_TestCases.ttcn:401(testcase:TC_LIS_HTTP_POST_BV_03) Matching on port httpPort succeeded: matched +14:52:04.126895 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:401(testcase:TC_LIS_HTTP_POST_BV_03) Receive operation on port httpPort succeeded, message from system(): @LibItsHttp_TypesAndValues.HttpMessage : { + response := { + version_major := 1, + version_minor := 1, + statuscode := 200, + statustext := "OK", + header := { + { + header_name := "Content-Length", + header_value := { + "209" + } + }, + { + header_name := "Content-Type", + header_value := { + "application/held+xml; charset=utf-8" + } + }, + { + header_name := "Server", + header_value := { + "Microsoft-IIS/10.0" + } + }, + { + header_name := "Set-Cookie", + header_value := { + "ARRAffinity=838b672de7815ac5d034a942bb864af61183bb8a43cfa241571439416cff48ca;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" + } + }, + { + header_name := "X-Powered-By", + header_value := { + "ASP.NET" + } + }, + { + header_name := "Set-Cookie", + header_value := { + "ARRAffinity=8d69b90c05ecaa44b24e8b059b2b951042d72e06f694220099f034a811455a01;Path=/;HttpOnly;Domain=location-information-service.azurewebsites.net" + } + }, + { + header_name := "Date", + header_value := { + "Mon, 23 Jul 2018 12:52:03 GMT" + } + } + }, + body := { + xml_body := { + errorType := { + code := "locationUnknown", + attr := omit, + message_list := { + { + lang := "en", + attr := omit, + base := "Unable to determine location" + } + }, + elem_list := { } + } + } + } + } +} id 1 +14:52:04.127888 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:401(testcase:TC_LIS_HTTP_POST_BV_03) Message with id 1 was extracted from the queue of httpPort. +14:52:04.128862 mtc TIMEROP ../ttcn/AtsNg112_TestCases.ttcn:408(testcase:TC_LIS_HTTP_POST_BV_03) Stop timer tc_ac: 30 s +14:52:04.129371 mtc USER ../ttcn/AtsNg112_TestCases.ttcn:409(testcase:TC_LIS_HTTP_POST_BV_03) *** TC_LIS_HTTP_POST_BV_03: PASS: Error message received *** +14:52:04.131322 mtc VERDICTOP ../ttcn/AtsNg112_TestCases.ttcn:410(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibCommon_Sync.ttcn:448(function:f_selfOrClientSyncAndVerdictTestBody)->../ttcn/LibCommon_Sync.ttcn:1153(function:f_selfSyncAndVerdictTestBody)->../ttcn/LibCommon_VerdictControl.ttcn:49(function:f_setVerdict) setverdict(pass): pass -> pass, component reason not changed +14:52:04.133551 mtc USER ../ttcn/AtsNg112_TestCases.ttcn:410(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibCommon_Sync.ttcn:448(function:f_selfOrClientSyncAndVerdictTestBody)->../ttcn/LibCommon_Sync.ttcn:1154(function:f_selfSyncAndVerdictTestBody)->../ttcn/LibCommon_Sync.ttcn:1199(function:f_selfSync) **** f_selfSync: Successfully passed TEST BODY synchronization point. **** +14:52:04.134035 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Unmapping port mtc:httpPort from system:httpPort. +14:52:04.134602 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) >>> HttpPort::user_unmap: httpPort +14:52:04.135028 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) >>> tcp_layer::~tcp_layer: 6 +14:52:04.135492 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: entering Abstract_Socket::remove_client(6) +14:52:04.135837 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: entering SSL_Socket::remove_user_data() +14:52:04.136317 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: leaving SSL_Socket::remove_user_data() +14:52:04.136713 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_remove_peer: Removing client 6 from peer list +14:52:04.137195 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_get_last_peer: Finding last peer of the peer array +14:52:04.137566 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_get_last_peer: No active peer found +14:52:04.137970 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_resize_list: Resizing to 0 +14:52:04.138302 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_resize_list: New length is 0 +14:52:04.138844 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Removed client 6. +14:52:04.139328 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: leaving Abstract_Socket::remove_client(6) +14:52:04.139739 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: entering Abstract_Socket::unmap_user() +14:52:04.140486 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: entering Abstract_Socket::remove_all_clients +14:52:04.141134 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_get_nr_of_peers: Number of active peers = 0 +14:52:04.141831 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: leaving Abstract_Socket::remove_all_clients +14:52:04.142504 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: leaving Abstract_Socket::unmap_user() +14:52:04.143168 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_reset_peer: Resetting peer array +14:52:04.143732 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_get_last_peer: Finding last peer of the peer array +14:52:04.144217 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_get_last_peer: No active peer found +14:52:04.144921 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_resize_list: Resizing to 0 +14:52:04.146111 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_resize_list: New length is 0 +14:52:04.146605 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Abstract socket: Abstract_Socket::peer_list_reset_peer: New length is 0 +14:52:04.148047 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Port httpPort was unmapped from system:httpPort. +14:52:04.148962 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:52(function:f_cf_01_http_down) Unmap operation of mtc:httpPort from system:httpPort finished. +14:52:04.149740 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:55(function:f_cf_01_http_down)->../ttcn/LibCommon_Sync.ttcn:219(function:f_disconnect4SelfOrClientSync)->../ttcn/LibCommon_Sync.ttcn:1101(function:f_disconnect4SelfSync) Disconnecting ports mtc:syncSendPort and mtc:syncPort. +14:52:04.150522 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:55(function:f_cf_01_http_down)->../ttcn/LibCommon_Sync.ttcn:219(function:f_disconnect4SelfOrClientSync)->../ttcn/LibCommon_Sync.ttcn:1101(function:f_disconnect4SelfSync) Port syncSendPort has terminated the connection with local port syncPort. +14:52:04.151175 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:55(function:f_cf_01_http_down)->../ttcn/LibCommon_Sync.ttcn:219(function:f_disconnect4SelfOrClientSync)->../ttcn/LibCommon_Sync.ttcn:1101(function:f_disconnect4SelfSync) Port syncPort has terminated the connection with local port syncSendPort. +14:52:04.151562 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:55(function:f_cf_01_http_down)->../ttcn/LibCommon_Sync.ttcn:219(function:f_disconnect4SelfOrClientSync)->../ttcn/LibCommon_Sync.ttcn:1101(function:f_disconnect4SelfSync) Disconnect operation on mtc:syncSendPort and mtc:syncPort finished. +14:52:04.152201 mtc DEFAULTOP ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:57(function:f_cf_01_http_down) Default with id 1 (altstep a_cf_01_http_down) was deactivated. +14:52:04.152577 mtc DEFAULTOP ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:57(function:f_cf_01_http_down) Default with id 2 (altstep a_default_requests) was deactivated. +14:52:04.153052 mtc DEFAULTOP ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03)->../ttcn/LibNg112_Functions.ttcn:57(function:f_cf_01_http_down) Default with id 3 (altstep a_default_responses) was deactivated. +14:52:04.153497 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03) Terminating component type LibItsHttp_TestSystem.HttpComponent. +14:52:04.153793 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03) Port syncPort was stopped. +14:52:04.154095 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03) Port syncSendPort was stopped. +14:52:04.154563 mtc DEBUG ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03) >>> HttpPort::user_stop +14:52:04.154982 mtc PORTEVENT ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03) Port httpPort was stopped. +14:52:04.155257 mtc PARALLEL ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03) Component type LibItsHttp_TestSystem.HttpComponent was shut down inside testcase TC_LIS_HTTP_POST_BV_03. +14:52:04.155895 mtc EXECUTOR ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03) Waiting for PTCs to finish. +14:52:04.156327 mtc VERDICTOP ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03) Setting final verdict of the test case. +14:52:04.156840 mtc VERDICTOP ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03) Local verdict of MTC: pass +14:52:04.157585 mtc VERDICTOP ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03) No PTCs were created. +14:52:04.157874 mtc TESTCASE ../ttcn/AtsNg112_TestCases.ttcn:419(testcase:TC_LIS_HTTP_POST_BV_03) Test case TC_LIS_HTTP_POST_BV_03 finished. Verdict: pass +14:52:04.158618 mtc STATISTICS - Verdict statistics: 0 none (0.00 %), 1 pass (100.00 %), 0 inconc (0.00 %), 0 fail (0.00 %), 0 error (0.00 %). +14:52:04.159206 mtc STATISTICS - Test execution summary: 1 test case was executed. Overall verdict: pass +14:52:04.159524 mtc EXECUTOR - Exit was requested from MC. Terminating MTC. +14:52:04.160160 hc EXECUTOR - Exit was requested from MC. Terminating HC. +14:52:04.160430 hc EXECUTOR - Disconnected from MC. +14:52:04.160513 hc EXECUTOR - TTCN-3 Host Controller finished. -- GitLab From 4650fa6f5557c8fc8954add171554d3831cc7759 Mon Sep 17 00:00:00 2001 From: garciay Date: Fri, 27 Jul 2018 09:09:28 +0200 Subject: [PATCH 71/72] LIS validation against real equipment - SIP Codec --- ccsrc/EncDec/LibSip/LibSip_Encdec.cc | 151 +- ccsrc/Protocols/Http/http_codec.cc | 19 +- .../Sip/sip_codec_register_request.cc | 2 +- ccsrc/Protocols/Sip/sip_codec_request.cc | 1310 ++++++++++------- ccsrc/Protocols/Sip/sip_codec_request.hh | 76 +- etc/AtsNg112/AtsNg112.cfg | 15 +- ttcn/AtsNg112/AtsNg112_TestCases.ttcn | 425 +++++- ttcn/AtsNg112/AtsNg112_TestControl.ttcn | 5 + .../LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn | 9 +- .../LibNg112/ttcn/LibNg112_Pixits.ttcn | 14 +- ttcn/TestCodec/TestCodec_Invite.ttcn | 6 + ttcn/TestCodec/TestCodec_Register.ttcn | 3 +- .../LibItsHttp_XmlTemplates.ttcn | 42 +- .../org.eclipse.core.resources.prefs | 1 + 14 files changed, 1441 insertions(+), 637 deletions(-) diff --git a/ccsrc/EncDec/LibSip/LibSip_Encdec.cc b/ccsrc/EncDec/LibSip/LibSip_Encdec.cc index 19b4572..79bf839 100644 --- a/ccsrc/EncDec/LibSip/LibSip_Encdec.cc +++ b/ccsrc/EncDec/LibSip/LibSip_Encdec.cc @@ -3,56 +3,117 @@ #include "LibSip_XMLTypes.hh" #include "sip_codec_register_request.hh" +#include "sip_codec_invite_request.hh" #include "loggers.hh" namespace LibSip__EncdecDeclarations { - BITSTRING fx__enc__Request(const LibSip__SIPTypesAndValues::Request& p) { return BITSTRING(); } - BITSTRING fx__enc__REGISTER__Request(const LibSip__SIPTypesAndValues::REGISTER__Request& p) { return BITSTRING(); } - BITSTRING fx__enc__INVITE__Request(const LibSip__SIPTypesAndValues::INVITE__Request& p) { return BITSTRING(); } - BITSTRING fx__enc__OPTIONS__Request(const LibSip__SIPTypesAndValues::OPTIONS__Request& p) { return BITSTRING(); } - BITSTRING fx__enc__BYE__Request(const LibSip__SIPTypesAndValues::BYE__Request& p) { return BITSTRING(); } - BITSTRING fx__enc__CANCEL__Request(const LibSip__SIPTypesAndValues::CANCEL__Request& p) { return BITSTRING(); } - BITSTRING fx__enc__ACK__Request(const LibSip__SIPTypesAndValues::ACK__Request& p) { return BITSTRING(); } - BITSTRING fx__enc__PRACK__Request(const LibSip__SIPTypesAndValues::PRACK__Request& p) { return BITSTRING(); } - BITSTRING fx__enc__NOTIFY__Request(const LibSip__SIPTypesAndValues::NOTIFY__Request& p) { return BITSTRING(); } - BITSTRING fx__enc__SUBSCRIBE__Request(const LibSip__SIPTypesAndValues::SUBSCRIBE__Request& p) { return BITSTRING(); } - BITSTRING fx__enc__PUBLISH__Request(const LibSip__SIPTypesAndValues::PUBLISH__Request& p) { return BITSTRING(); } - BITSTRING fx__enc__UPDATE__Request(const LibSip__SIPTypesAndValues::UPDATE__Request& p) { return BITSTRING(); } - BITSTRING fx__enc__REFER__Request(const LibSip__SIPTypesAndValues::REFER__Request& p) { return BITSTRING(); } - BITSTRING fx__enc__MESSAGE__Request(const LibSip__SIPTypesAndValues::MESSAGE__Request& p) { return BITSTRING(); } - BITSTRING fx__enc__INFO__Request(const LibSip__SIPTypesAndValues::INFO__Request& p) { return BITSTRING(); } - BITSTRING fx__enc__Response(const LibSip__SIPTypesAndValues::Response& p) { return BITSTRING(); } - BITSTRING fx__enc__Raw(const CHARSTRING& p) { return BITSTRING(); } - BITSTRING fx__enc__SMS(const LibSip__SimpleMsgSummaryTypes::SimpleMsgSummary& pdu) { return BITSTRING(); } - BITSTRING fx__enc__MessageBody(const LibSip__MessageBodyTypes::MessageBody& pdu) { return BITSTRING(); } - INTEGER fx__dec__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::Request& p) { return INTEGER(0); } - - INTEGER fx__dec__REGISTER__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::REGISTER__Request& p) { - loggers::get_instance().log_msg(">>> fx__dec__REGISTER__Request: ", pdu); - - OCTETSTRING os = bit2oct(pdu); - sip_codec_register_request codec; - codec.decode(os, p); - - return 0; + BITSTRING fx__enc__Request(const LibSip__SIPTypesAndValues::Request& p) { + loggers::get_instance().log_msg(">>> fx__enc__Request: ", p); + + float duration; + std::string tag("fx__enc__Request"); + loggers::get_instance().set_start_time(tag); + + OCTETSTRING os; + sip_codec_request codec; + if (codec.encode(p, os) == -1) { + loggers::get_instance().warning("fx__enc__Request -1 result code was returned"); + return int2bit(0, 1); } + loggers::get_instance().set_stop_time(tag, duration); + + return oct2bit(os); + } + + BITSTRING fx__enc__REGISTER__Request(const LibSip__SIPTypesAndValues::REGISTER__Request& p) { + loggers::get_instance().log_msg(">>> fx__enc__REGISTER__Request: ", p); + + float duration; + std::string tag("fx__enc__REGISTER__Request"); + loggers::get_instance().set_start_time(tag); + + OCTETSTRING os; + sip_codec_register_request codec; + if (codec.encode(p, os) == -1) { + loggers::get_instance().warning("fx__enc__REGISTER__Request: -1 result code was returned"); + return int2bit(0, 1); + } + loggers::get_instance().set_stop_time(tag, duration); + + return oct2bit(os); + } + + BITSTRING fx__enc__INVITE__Request(const LibSip__SIPTypesAndValues::INVITE__Request& p) { + loggers::get_instance().log_msg(">>> fx__enc__INVITE__Request: ", p); + + float duration; + std::string tag("fx__enc__INVITE__Request"); + loggers::get_instance().set_start_time(tag); + + OCTETSTRING os; + sip_codec_invite_request codec; + if (codec.encode(p, os) == -1) { + loggers::get_instance().warning("fx__enc__INVITE__Request: -1 result code was returned"); + return int2bit(0, 1); + } + loggers::get_instance().set_stop_time(tag, duration); + + return oct2bit(os); + } + + BITSTRING fx__enc__OPTIONS__Request(const LibSip__SIPTypesAndValues::OPTIONS__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__BYE__Request(const LibSip__SIPTypesAndValues::BYE__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__CANCEL__Request(const LibSip__SIPTypesAndValues::CANCEL__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__ACK__Request(const LibSip__SIPTypesAndValues::ACK__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__PRACK__Request(const LibSip__SIPTypesAndValues::PRACK__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__NOTIFY__Request(const LibSip__SIPTypesAndValues::NOTIFY__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__SUBSCRIBE__Request(const LibSip__SIPTypesAndValues::SUBSCRIBE__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__PUBLISH__Request(const LibSip__SIPTypesAndValues::PUBLISH__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__UPDATE__Request(const LibSip__SIPTypesAndValues::UPDATE__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__REFER__Request(const LibSip__SIPTypesAndValues::REFER__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__MESSAGE__Request(const LibSip__SIPTypesAndValues::MESSAGE__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__INFO__Request(const LibSip__SIPTypesAndValues::INFO__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__Response(const LibSip__SIPTypesAndValues::Response& p) { return BITSTRING(); } + BITSTRING fx__enc__Raw(const CHARSTRING& p) { return BITSTRING(); } + BITSTRING fx__enc__SMS(const LibSip__SimpleMsgSummaryTypes::SimpleMsgSummary& pdu) { return BITSTRING(); } + BITSTRING fx__enc__MessageBody(const LibSip__MessageBodyTypes::MessageBody& pdu) { return BITSTRING(); } + INTEGER fx__dec__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::Request& p) { return INTEGER(0); } + + INTEGER fx__dec__REGISTER__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::REGISTER__Request& p) { + loggers::get_instance().log_msg(">>> fx__dec__REGISTER__Request: ", pdu); + + OCTETSTRING os = bit2oct(pdu); + sip_codec_register_request codec; + codec.decode(os, p); + + return 0; + } + + INTEGER fx__dec__INVITE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::INVITE__Request& p) { + loggers::get_instance().log_msg(">>> fx__dec__INVITE__Request: ", pdu); + + OCTETSTRING os = bit2oct(pdu); + sip_codec_invite_request codec; + codec.decode(os, p); - INTEGER fx__dec__INVITE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::INVITE__Request& p) { return INTEGER(0); } - INTEGER fx__dec__OPTIONS__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::OPTIONS__Request& p) { return INTEGER(0); } - INTEGER fx__dec__BYE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::BYE__Request& p) { return INTEGER(0); } - INTEGER fx__dec__CANCEL__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::CANCEL__Request& p) { return INTEGER(0); } - INTEGER fx__dec__ACK__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::ACK__Request& p) { return INTEGER(0); } - INTEGER fx__dec__PRACK__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::PRACK__Request& p) { return INTEGER(0); } - INTEGER fx__dec__NOTIFY__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::NOTIFY__Request& p) { return INTEGER(0); } - INTEGER fx__dec__SUBSCRIBE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::SUBSCRIBE__Request& p) { return INTEGER(0); } - INTEGER fx__dec__PUBLISH__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::PUBLISH__Request& p) { return INTEGER(0); } - INTEGER fx__dec__UPDATE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::UPDATE__Request& p) { return INTEGER(0); } - INTEGER fx__dec__REFER__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::REFER__Request& p) { return INTEGER(0); } - INTEGER fx__dec__MESSAGE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::MESSAGE__Request& p) { return INTEGER(0); } - INTEGER fx__dec__INFO__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::INFO__Request& p) { return INTEGER(0); } - INTEGER fx__dec__Response(BITSTRING& pdu, LibSip__SIPTypesAndValues::Response& p) { return INTEGER(0); } - INTEGER fx__dec__SMS(BITSTRING& pdu, LibSip__SimpleMsgSummaryTypes::SimpleMsgSummary& p) { return INTEGER(0); } - INTEGER fx__dec__MessageBody(BITSTRING& pdu, LibSip__MessageBodyTypes::MessageBody& p) { return INTEGER(0); } + return 0; + } + + INTEGER fx__dec__OPTIONS__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::OPTIONS__Request& p) { return INTEGER(0); } + INTEGER fx__dec__BYE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::BYE__Request& p) { return INTEGER(0); } + INTEGER fx__dec__CANCEL__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::CANCEL__Request& p) { return INTEGER(0); } + INTEGER fx__dec__ACK__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::ACK__Request& p) { return INTEGER(0); } + INTEGER fx__dec__PRACK__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::PRACK__Request& p) { return INTEGER(0); } + INTEGER fx__dec__NOTIFY__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::NOTIFY__Request& p) { return INTEGER(0); } + INTEGER fx__dec__SUBSCRIBE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::SUBSCRIBE__Request& p) { return INTEGER(0); } + INTEGER fx__dec__PUBLISH__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::PUBLISH__Request& p) { return INTEGER(0); } + INTEGER fx__dec__UPDATE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::UPDATE__Request& p) { return INTEGER(0); } + INTEGER fx__dec__REFER__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::REFER__Request& p) { return INTEGER(0); } + INTEGER fx__dec__MESSAGE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::MESSAGE__Request& p) { return INTEGER(0); } + INTEGER fx__dec__INFO__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::INFO__Request& p) { return INTEGER(0); } + INTEGER fx__dec__Response(BITSTRING& pdu, LibSip__SIPTypesAndValues::Response& p) { return INTEGER(0); } + INTEGER fx__dec__SMS(BITSTRING& pdu, LibSip__SimpleMsgSummaryTypes::SimpleMsgSummary& p) { return INTEGER(0); } + INTEGER fx__dec__MessageBody(BITSTRING& pdu, LibSip__MessageBodyTypes::MessageBody& p) { return INTEGER(0); } } // End of namespace LibSip__EncdecDeclarations diff --git a/ccsrc/Protocols/Http/http_codec.cc b/ccsrc/Protocols/Http/http_codec.cc index 70efbdc..4db7639 100644 --- a/ccsrc/Protocols/Http/http_codec.cc +++ b/ccsrc/Protocols/Http/http_codec.cc @@ -131,8 +131,18 @@ int http_codec::encode_request(const LibItsHttp__TypesAndValues::Request& p_requ const LibItsHttp__MessageBodyTypes::HttpMessageBody& body = static_cast(*v.get_opt_value()); loggers::get_instance().log_msg("http_codec::encode_request: body: ", body); if (encode_body(body, os) == -1) { + loggers::get_instance().warning("http_codec::encode_request: Failed to encode HTTP body"); _ec.length = 0; + _ec.is_content_length_present = 0x00; + } else { + _ec.length = os.lengthof(); + _ec.is_content_length_present = 0x01; } + loggers::get_instance().log("http_codec::encode_request: length=%d", _ec.length); + } else { + loggers::get_instance().log("http_codec::encode_request: HTTP body field not present"); + _ec.length = 0; + _ec.is_content_length_present = 0x00; } // Encode generic part @@ -151,13 +161,15 @@ int http_codec::encode_request(const LibItsHttp__TypesAndValues::Request& p_requ loggers::get_instance().log_msg("http_codec::encode_request: Processing header ", header.header__name()); p_encoding_buffer.put_cs(header.header__name()); p_encoding_buffer.put_cs(": "); - if (std::string(static_cast(header.header__name())).compare("Content-Length") == 0) { + if (std::string(static_cast(header.header__name())).compare("Content-length") == 0) { if (_ec.length != 0) { p_encoding_buffer.put_cs(int2str(_ec.length + 2/*Stand for the last CRLF*/)); + _ec.is_content_length_present = 0x01; } else { p_encoding_buffer.put_cs("0"); + _ec.is_content_length_present = 0x00; } - _ec.is_content_length_present = 0x01; + loggers::get_instance().log("http_codec::encode_request: Content-length: %d - %x", _ec.length, _ec.is_content_length_present); } else { const OPTIONAL& o = header.header__value(); if (o.ispresent()) { @@ -179,7 +191,8 @@ int http_codec::encode_request(const LibItsHttp__TypesAndValues::Request& p_requ } // End of 'for' statement p_encoding_buffer.put_cs("\r\n"); - if (_ec.length != 0) { + if (_ec.is_content_length_present == 0x01) { + loggers::get_instance().log_msg("http_codec::encode_request: Add body ", os); p_encoding_buffer.put_os(os); p_encoding_buffer.put_cs("\r\n"); } diff --git a/ccsrc/Protocols/Sip/sip_codec_register_request.cc b/ccsrc/Protocols/Sip/sip_codec_register_request.cc index 3a9df27..af45a98 100644 --- a/ccsrc/Protocols/Sip/sip_codec_register_request.cc +++ b/ccsrc/Protocols/Sip/sip_codec_register_request.cc @@ -7,12 +7,12 @@ int sip_codec_register_request::encode (const LibSip__SIPTypesAndValues::REGISTE { loggers::get_instance().log_msg(">>> sip_codec_register_request::encode: ", (const Base_Type&)msg); - loggers::get_instance().log_msg("<<< sip_codec_register_request::encode: data=", data); if (_codec.encode((LibSip__SIPTypesAndValues::Request&)msg, data) == -1) { loggers::get_instance().warning("sip_codec_register_request::encode: Failed to encode message"); return -1; } + loggers::get_instance().log_msg("<<< sip_codec_register_request::encode: data=", data); return 0; } diff --git a/ccsrc/Protocols/Sip/sip_codec_request.cc b/ccsrc/Protocols/Sip/sip_codec_request.cc index fc4b37f..7391e6a 100644 --- a/ccsrc/Protocols/Sip/sip_codec_request.cc +++ b/ccsrc/Protocols/Sip/sip_codec_request.cc @@ -8,25 +8,34 @@ int sip_codec_request::encode (const LibSip__SIPTypesAndValues::Request& msg, OC { loggers::get_instance().log_msg(">>> sip_codec_request::encode: ", (const Base_Type&)msg); - osip_message_t* _sip_message; + osip_message_t* sip_message = nullptr; // TODO Use smart pointer ::parser_init(); - int result = ::osip_message_init(&_sip_message); + int result = ::osip_message_init(&sip_message); if (result != 0) { loggers::get_instance().warning("sip_codec_request::encode: Failed to initialise internal data structures"); return -1; } + + if (encode_request(msg, sip_message) == -1) { + loggers::get_instance().warning("sip_codec_request::encode: Failed to encode Request"); + ::osip_message_free(sip_message); + sip_message = nullptr; + return -1; + } char* buffer = nullptr; size_t length = 0; - result = ::osip_message_to_str(_sip_message, &buffer, &length); + result = ::osip_message_to_str(sip_message, &buffer, &length); if (result != 0) { loggers::get_instance().warning("sip_codec_request::encode: Failed to encode data structures"); - ::osip_message_free(_sip_message); + ::osip_message_free(sip_message); return -1; } - ::osip_message_free(_sip_message); + loggers::get_instance().log("sip_codec_request::encode: Message:%s", buffer); data = OCTETSTRING(length, (const unsigned char*)buffer); - + osip_free(buffer); + ::osip_message_free(sip_message); + loggers::get_instance().log_msg("<<< sip_codec_request::encode: data=", data); return result; } @@ -41,46 +50,364 @@ int sip_codec_request::decode (const OCTETSTRING& data, LibSip__SIPTypesAndValue return -1; } - osip_message_t* _sip_message; + osip_message_t* sip_message; ::parser_init(); - int result = ::osip_message_init(&_sip_message); + int result = ::osip_message_init(&sip_message); if (result != 0) { loggers::get_instance().warning("sip_codec_request::decode: Failed to initialise internal data structures"); return -1; } - result = ::osip_message_parse(_sip_message, (const char*)static_cast(data), data.lengthof()); + result = ::osip_message_parse(sip_message, (const char*)static_cast(data), data.lengthof()); if (result != 0) { loggers::get_instance().warning("sip_codec_request::decode: Failed to parse SIP message"); + ::osip_message_free(sip_message); return -1; } // Fill RequestLine - fill_request_line(_sip_message, msg); + decode_request_line(sip_message, msg); // Fill Headers - fill_headers(_sip_message, msg); + decode_headers(sip_message, msg); // Fill MessageBody - fill_message_body(_sip_message, msg); + decode_message_body(sip_message, msg); // Fill Payload - fill_payload(_sip_message, msg); + decode_payload(sip_message, msg); - ::osip_message_free(_sip_message); + ::osip_message_free(sip_message); loggers::get_instance().log_msg("sip_codec_request::decode: ", msg); return 0; } -void sip_codec_request::fill_headers(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request) +int sip_codec_request::encode_request(const LibSip__SIPTypesAndValues::Request& p_request, osip_message_t* p_sip_message) +{ + loggers::get_instance().log(">>> sip_codec_request::encode_request"); + + encode_request_line(p_request.requestLine(), p_sip_message); + + encode_request_headers(p_request.msgHeader(), p_sip_message); + + if (p_request.messageBody().is_present()) { + const LibSip__MessageBodyTypes::MessageBody& m = static_cast(*p_request.messageBody().get_opt_value()); + encode_request_message_body(m, p_sip_message); + } + + if (p_request.payload().is_present()) { + const LibSip__SIPTypesAndValues::Payload& p = static_cast(*p_request.payload().get_opt_value()); + encode_request_payload(p, p_sip_message); + } + + return 0; +} // End of method encode_request + +int sip_codec_request::encode_request_line(const LibSip__SIPTypesAndValues::RequestLine& p_request_line, osip_message_t* p_sip_message) +{ + loggers::get_instance().log(">>> sip_codec_request::encode_request_line"); + + // Sip method + std::string str(LibSip__SIPTypesAndValues::Method::enum_to_str(p_request_line.method())); + char *p = (char*)osip_malloc(str.length() - 2 + 1); // Will be freed by osip_message_free + ::strcpy(p, str.substr(0, str.length() - 2).c_str()); // Remove _E + ::osip_message_set_method(p_sip_message, p); + + // Sip uri + osip_uri_t *uri; + if (encode_sip_url(p_request_line.requestUri(), &uri) == -1) { + loggers::get_instance().warning("sip_codec_request::encode_request_line: Faile to encode SipUrl"); + return -1; + } + ::osip_message_set_uri(p_sip_message, uri); + + // SIP version + p = (char*)osip_malloc(p_request_line.sipVersion().lengthof() + 1); + ::strcpy(p, (char*)static_cast(p_request_line.sipVersion())); + ::osip_message_set_version(p_sip_message, p); + + return 0; +} // End of method encode_request_line + +int sip_codec_request::encode_request_headers(const LibSip__SIPTypesAndValues::MessageHeader& p_msg_header, osip_message_t* p_sip_message) +{ + loggers::get_instance().log_msg(">>> sip_codec_request::encode_request_headers: ", p_msg_header); + + // Encode mandatory fieds + // From + const LibSip__SIPTypesAndValues::From from = p_msg_header.fromField(); + osip_from_t* from_header = nullptr; + if (encode_from_header(p_msg_header.fromField(), from_header) == -1) { + return -1; + } + char* hvalue; + ::osip_from_to_str(from_header, &hvalue); + ::osip_message_set_from(p_sip_message, hvalue); + ::osip_from_free(from_header); + + // To + const LibSip__SIPTypesAndValues::To to = p_msg_header.toField(); + osip_to_t* to_header = nullptr; + if (encode_to_header(p_msg_header.toField(), to_header) == -1) { + return -1; + } + ::osip_to_to_str(to_header, &hvalue); + ::osip_message_set_to(p_sip_message, hvalue); + ::osip_to_free(to_header); + + // Via + const LibSip__SIPTypesAndValues::Via via = p_msg_header.via(); + osip_via_t* via_header = nullptr; + if (encode_via_header(p_msg_header.via(), via_header) == -1) { + return -1; + } + ::osip_via_to_str(via_header, &hvalue); + ::osip_message_set_via(p_sip_message, hvalue); + ::osip_via_free(via_header); + + return 0; +} // End of method encode_request_headers + +int sip_codec_request::encode_request_message_body(const LibSip__MessageBodyTypes::MessageBody& p_message_body, osip_message_t* p_sip_message) +{ + loggers::get_instance().log(">>> sip_codec_request::encode_request_message_body"); + + return 0; +} // End of method encode_request_message_body + +int sip_codec_request::encode_request_payload(const LibSip__SIPTypesAndValues::Payload& p_payload, osip_message_t* p_sip_message) +{ + loggers::get_instance().log(">>> sip_codec_request::encode_request_payload"); + + return 0; +} // End of method encode_request_payload + +int sip_codec_request::encode_sip_url(const LibSip__SIPTypesAndValues::SipUrl& p_sip_uri, osip_uri_t** p_uri) +{ + loggers::get_instance().log_msg(">>> sip_codec_request::encode_sip_uri: ", p_sip_uri); + + std::string host; + std::string port; + osip_uri_t *uri = nullptr; + ::osip_uri_init(&uri); + ::osip_uri_set_scheme(uri, (char*)static_cast(p_sip_uri.scheme())); + const LibSip__SIPTypesAndValues::UriComponents& components = p_sip_uri.components(); + if (components.ischosen(LibSip__SIPTypesAndValues::UriComponents::ALT_sip)) { + const LibSip__SIPTypesAndValues::SipUriComponents& s = p_sip_uri.components().sip(); + if (s.userInfo().is_present()) { + const LibSip__SIPTypesAndValues::UserInfo& u = static_cast(s.userInfo()); + ::osip_uri_set_username(uri, (char*)static_cast(static_cast(u.userOrTelephoneSubscriber()))); + if (u.password().is_present()) { + const CHARSTRING& c = static_cast(u.password()); + ::osip_uri_set_password(uri, (char*)static_cast(c)); + } + } + encode_host_port(s.hostPort(), host, port); + if (!host.empty()) { + ::osip_uri_set_host(uri, (char*)host.c_str()); + } + if (!port.empty()) { + ::osip_uri_set_port(uri, (char*)port.c_str()); + } + } else if (components.ischosen(LibSip__SIPTypesAndValues::UriComponents::ALT_tel)) { + const LibSip__SIPTypesAndValues::TelUriComponents& t = p_sip_uri.components().tel(); + loggers::get_instance().error("sip_codec_request::encode_request_line: Unsupported LibSip__SIPTypesAndValues::UriComponents::ALT_tel"); + } else if (components.ischosen(LibSip__SIPTypesAndValues::UriComponents::ALT_urn)) { + const LibSip__SIPTypesAndValues::UrnUriComponents& u = p_sip_uri.components().urn(); + loggers::get_instance().error("sip_codec_request::encode_request_line: Unsupported LibSip__SIPTypesAndValues::UriComponents::ALT_urn"); + } else if (components.ischosen(LibSip__SIPTypesAndValues::UriComponents::ALT_other)) { + loggers::get_instance().error("sip_codec_request::encode_request_line: Unsupported LibSip__SIPTypesAndValues::UriComponents::ALT_other"); + } // else, noting to do + + if (uri != nullptr) { + ::osip_uri_clone(uri, p_uri); + } else { + *p_uri = nullptr; + } + + return 0; +} // End of method encode_sip_url + +void sip_codec_request::encode_host_port(const LibSip__SIPTypesAndValues::HostPort& p_host_port, std::string& p_host, std::string& p_port) +{ + loggers::get_instance().log(">>> sip_codec_request::encode_host_port"); + + if (p_host_port.host().is_present()) { + p_host.assign(static_cast(static_cast(p_host_port.host()))); + } else { + p_host.clear(); + } + if (p_host_port.portField().is_present()) { + p_port.assign(std::to_string(static_cast(static_cast(p_host_port.portField())))); + } else { + p_port.clear(); + } +} // End of method encode_host_port + +int sip_codec_request::encode_from_header(const LibSip__SIPTypesAndValues::From& p_from, osip_from_t* p_from_header) { + loggers::get_instance().log(">>> sip_codec_request::encode_from_header"); + + ::osip_from_init(&p_from_header); + const LibSip__SIPTypesAndValues::Addr__Union& a = p_from.addressField(); + if (a.ischosen(LibSip__SIPTypesAndValues::Addr__Union::ALT_nameAddr)) { + const LibSip__SIPTypesAndValues::NameAddr& addr = a.nameAddr(); + osip_uri_t *uri; + if (encode_sip_url(addr.addrSpec(), &uri) == -1) { + loggers::get_instance().warning("sip_codec_request::encode_from_header: Failed to encode SipUrl"); + ::osip_from_free(p_from_header); + p_from_header = nullptr; + return -1; + } + ::osip_from_set_url(p_from_header, uri); + if (addr.displayName().is_present()) { + const LibSip__SIPTypesAndValues::DisplayName& n = static_cast(addr.displayName()); + if (n.ischosen(LibSip__SIPTypesAndValues::DisplayName::ALT_token)) { + ::osip_from_set_displayname(p_from_header, (char*)static_cast(static_cast(n.token()))); + } else if (n.ischosen(LibSip__SIPTypesAndValues::DisplayName::ALT_quotedString)) { + ::osip_from_set_displayname(p_from_header, (char*)static_cast(static_cast(n.quotedString()))); + } else { + loggers::get_instance().warning("sip_codec_request::encode_from_header: Failed to encode DisplayName"); + ::osip_from_free(p_from_header); + p_from_header = nullptr; + return -1; + } + } + } else if (a.ischosen(LibSip__SIPTypesAndValues::Addr__Union::ALT_addrSpecUnion)) { + osip_uri_t *uri; + if (encode_sip_url(a.addrSpecUnion(), &uri) == -1) { + loggers::get_instance().warning("sip_codec_request::encode_from_header: Failed to encode SipUrl"); + ::osip_from_free(p_from_header); + p_from_header = nullptr; + return -1; + } + ::osip_from_set_url(p_from_header, uri); + } else { + loggers::get_instance().warning("sip_codec_request::encode_from_header: Failed to encode Addr__Union"); + ::osip_from_free(p_from_header); + p_from_header = nullptr; + return -1; + } + if (p_from.fromParams().is_present()) { + const LibSip__Common::SemicolonParam__List& l = static_cast(p_from.fromParams()); + // TODO encode_semi_colon_params(l, ); + loggers::get_instance().warning("sip_codec_request::encode_from_header: Failed to encode SemicolonParam__List"); + ::osip_from_free(p_from_header); + p_from_header = nullptr; + return -1; + } + + return 0; +} // End of method encode_from_header + +int sip_codec_request::encode_to_header(const LibSip__SIPTypesAndValues::To& p_to, osip_to_t* p_to_header) { + loggers::get_instance().log(">>> sip_codec_request::encode_to_header"); + + ::osip_to_init(&p_to_header); + const LibSip__SIPTypesAndValues::Addr__Union& a = p_to.addressField(); + if (a.ischosen(LibSip__SIPTypesAndValues::Addr__Union::ALT_nameAddr)) { + const LibSip__SIPTypesAndValues::NameAddr& addr = a.nameAddr(); + osip_uri_t *uri; + if (encode_sip_url(addr.addrSpec(), &uri) == -1) { + loggers::get_instance().warning("sip_codec_request::encode_to_header: Failed to encode SipUrl"); + ::osip_to_free(p_to_header); + p_to_header = nullptr; + return -1; + } + ::osip_to_set_url(p_to_header, uri); + //::osip_uri_free(uri); + if (addr.displayName().is_present()) { + const LibSip__SIPTypesAndValues::DisplayName& n = static_cast(addr.displayName()); + if (n.ischosen(LibSip__SIPTypesAndValues::DisplayName::ALT_token)) { + ::osip_to_set_displayname(p_to_header, (char*)static_cast(static_cast(n.token()))); + } else if (n.ischosen(LibSip__SIPTypesAndValues::DisplayName::ALT_quotedString)) { + ::osip_to_set_displayname(p_to_header, (char*)static_cast(static_cast(n.quotedString()))); + } else { + loggers::get_instance().warning("sip_codec_request::encode_to_header: Failed to encode DisplayName"); + ::osip_to_free(p_to_header); + p_to_header = nullptr; + return -1; + } + } + } else if (a.ischosen(LibSip__SIPTypesAndValues::Addr__Union::ALT_addrSpecUnion)) { + osip_uri_t *uri; + if (encode_sip_url(a.addrSpecUnion(), &uri) == -1) { + loggers::get_instance().warning("sip_codec_request::encode_to_header: Failed to encode SipUrl"); + ::osip_to_free(p_to_header); + p_to_header = nullptr; + return -1; + } + ::osip_to_set_url(p_to_header, uri); + } else { + loggers::get_instance().warning("sip_codec_request::encode_to_header: Failed to encode Addr__Union"); + ::osip_to_free(p_to_header); + p_to_header = nullptr; + return -1; + } + if (p_to.toParams().is_present()) { + const LibSip__Common::SemicolonParam__List& l = static_cast(p_to.toParams()); + // TODO encode_semi_colon_params(l, ); + loggers::get_instance().warning("sip_codec_request::encode_to_header: Failed to encode SemicolonParam__List"); + ::osip_to_free(p_to_header); + p_to_header = nullptr; + return -1; + } + + return 0; +} // End of method encode_to_header + +int sip_codec_request::encode_via_header(const LibSip__SIPTypesAndValues::Via& p_via, osip_via_t* p_via_header) { + loggers::get_instance().log(">>> sip_codec_request::encode_via_header"); + + ::osip_via_init(&p_via_header); + const LibSip__SIPTypesAndValues::ViaBody__List& l = p_via.viaBody(); + for (int i = 0; i < l.size_of(); i++) { + const LibSip__SIPTypesAndValues::ViaBody v = l[i]; + + ::via_set_protocol(p_via_header, (char*)static_cast(v.sentProtocol().protocolName())); + ::via_set_version(p_via_header, (char*)static_cast(v.sentProtocol().protocolVersion())); + ::via_set_comment(p_via_header, (char*)static_cast(v.sentProtocol().transport())); + std::string host; + std::string port; + encode_host_port(v.sentBy(), host, port); + if (!host.empty()) { + ::via_set_host(p_via_header, (char*)host.c_str()); + } + if (!port.empty()) { + ::via_set_port (p_via_header, (char*)port.c_str()); + } + + if (v.viaParams().is_present()) { + const LibSip__Common::SemicolonParam__List& params = static_cast(v.viaParams()); + // TODO encode_semi_colon_params(l, ); + loggers::get_instance().warning("sip_codec_request::encode_via_header: Failed to encode SemicolonParam__List"); + ::osip_via_free(p_via_header); + p_via_header = nullptr; + return -1; + } + + } // End of 'for' statement + + return 0; +} // End of method encode_via_header + + + + + + + + + + +void sip_codec_request::decode_headers(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request) { - loggers::get_instance().log(">>> sip_codec_request::fill_headers"); + loggers::get_instance().log(">>> sip_codec_request::decode_headers"); LibSip__SIPTypesAndValues::MessageHeader headers; // Fill mandatory fields // From LibSip__SIPTypesAndValues::From from_header; - fill_from_header(::osip_message_get_from(p_sip_message), from_header); + decode_from_header(::osip_message_get_from(p_sip_message), from_header); if (from_header.is_value()) { headers.fromField() = from_header; } else { @@ -88,7 +415,7 @@ void sip_codec_request::fill_headers(const osip_message_t* p_sip_message, LibSip } // To LibSip__SIPTypesAndValues::To to_header; - fill_to_header(::osip_message_get_to(p_sip_message), to_header); + decode_to_header(::osip_message_get_to(p_sip_message), to_header); if (to_header.is_value()) { headers.toField() = to_header; } else { @@ -96,7 +423,7 @@ void sip_codec_request::fill_headers(const osip_message_t* p_sip_message, LibSip } // Via LibSip__SIPTypesAndValues::Via via_header; - fill_via_header(p_sip_message, via_header); + decode_via_header(p_sip_message, via_header); if (via_header.is_value()) { headers.via() = via_header; } else { @@ -105,7 +432,7 @@ void sip_codec_request::fill_headers(const osip_message_t* p_sip_message, LibSip // Fill Optional fields LibSip__SIPTypesAndValues::Accept accept_header; - fill_accept_header(p_sip_message, accept_header); + decode_accept_header(p_sip_message, accept_header); if (accept_header.is_value()) { headers.accept() = accept_header; } else { @@ -113,7 +440,7 @@ void sip_codec_request::fill_headers(const osip_message_t* p_sip_message, LibSip } LibSip__SIPTypesAndValues::AcceptContact accept_contact_header; - fill_accept_contact_header(p_sip_message, accept_contact_header); + decode_accept_contact_header(p_sip_message, accept_contact_header); if (accept_contact_header.is_value()) { headers.acceptContact() = accept_contact_header; } else { @@ -121,7 +448,7 @@ void sip_codec_request::fill_headers(const osip_message_t* p_sip_message, LibSip } LibSip__SIPTypesAndValues::AcceptEncoding accept_encoding_header; - fill_accept_encoding_header(p_sip_message, accept_encoding_header); + decode_accept_encoding_header(p_sip_message, accept_encoding_header); if (accept_encoding_header.is_value()) { headers.acceptEncoding() = accept_encoding_header; } else { @@ -129,7 +456,7 @@ void sip_codec_request::fill_headers(const osip_message_t* p_sip_message, LibSip } LibSip__SIPTypesAndValues::AcceptLanguage accept_language_header; - fill_accept_language_header(p_sip_message, accept_language_header); + decode_accept_language_header(p_sip_message, accept_language_header); if (accept_language_header.is_value()) { headers.acceptLanguage() = accept_language_header; } else { @@ -137,7 +464,7 @@ void sip_codec_request::fill_headers(const osip_message_t* p_sip_message, LibSip } LibSip__SIPTypesAndValues::AlertInfo alert_info_header; - fill_alert_info_header(p_sip_message, alert_info_header); + decode_alert_info_header(p_sip_message, alert_info_header); if (alert_info_header.is_value()) { headers.alertInfo() = alert_info_header; } else { @@ -145,7 +472,7 @@ void sip_codec_request::fill_headers(const osip_message_t* p_sip_message, LibSip } LibSip__SIPTypesAndValues::Allow allow_header; - fill_allow_header(p_sip_message, allow_header); + decode_allow_header(p_sip_message, allow_header); if (allow_header.is_value()) { headers.allow() = allow_header; } else { @@ -153,7 +480,7 @@ void sip_codec_request::fill_headers(const osip_message_t* p_sip_message, LibSip } LibSip__SIPTypesAndValues::AllowEvents allow_events_header; - fill_allow_events_header(p_sip_message, allow_events_header); + decode_allow_events_header(p_sip_message, allow_events_header); if (allow_events_header.is_value()) { headers.allowEvents() = allow_events_header; } else { @@ -161,22 +488,53 @@ void sip_codec_request::fill_headers(const osip_message_t* p_sip_message, LibSip } LibSip__SIPTypesAndValues::Authorization authorization_header; - fill_authorization_header(p_sip_message, authorization_header); + decode_authorization_header(p_sip_message, authorization_header); if (authorization_header.is_value()) { headers.authorization() = authorization_header; } else { headers.authorization().set_to_omit(); } + headers.authenticationInfo().set_to_omit(); - headers.callId().set_to_omit(); + + LibSip__SIPTypesAndValues::CallId call_id_header; + decode_call_id_header(p_sip_message, call_id_header); + if (call_id_header.is_value()) { + headers.callId() = call_id_header; + } else { + headers.callId().set_to_omit(); + } + headers.callInfo().set_to_omit(); headers.contact().set_to_omit(); headers.contentDisposition().set_to_omit(); headers.contentEncoding().set_to_omit(); headers.contentLanguage().set_to_omit(); - headers.contentLength().set_to_omit(); - headers.contentType().set_to_omit(); - headers.cSeq().set_to_omit(); + + LibSip__SIPTypesAndValues::ContentLength content_length_header; + decode_content_length_header(p_sip_message, content_length_header); + if (content_length_header.is_value()) { + headers.contentLength() = content_length_header; + } else { + headers.contentLength().set_to_omit(); + } + + LibSip__SIPTypesAndValues::ContentType content_type_header; + decode_content_type_header(p_sip_message, content_type_header); + if (content_type_header.is_value()) { + headers.contentType() = content_type_header; + } else { + headers.contentType().set_to_omit(); + } + + LibSip__SIPTypesAndValues::CSeq c_seq_header; + decode_c_seq_header(p_sip_message, c_seq_header); + if (c_seq_header.is_value()) { + headers.cSeq() = c_seq_header; + } else { + headers.cSeq().set_to_omit(); + } + headers.date().set_to_omit(); headers.errorInfo().set_to_omit(); headers.event().set_to_omit(); @@ -187,7 +545,15 @@ void sip_codec_request::fill_headers(const osip_message_t* p_sip_message, LibSip headers.historyInfo().set_to_omit(); headers.infoPackage().set_to_omit(); headers.inReplyTo().set_to_omit(); - headers.maxForwards().set_to_omit(); + + LibSip__SIPTypesAndValues::MaxForwards max_forwards_header; + decode_max_forwards_header(p_sip_message, max_forwards_header); + if (max_forwards_header.is_value()) { + headers.maxForwards() = max_forwards_header; + } else { + headers.maxForwards().set_to_omit(); + } + headers.mimeVersion().set_to_omit(); headers.minExpires().set_to_omit(); headers.minSE().set_to_omit(); @@ -235,7 +601,15 @@ void sip_codec_request::fill_headers(const osip_message_t* p_sip_message, LibSip headers.sipIfMatch().set_to_omit(); headers.subject().set_to_omit(); headers.subscriptionState().set_to_omit(); - headers.supported().set_to_omit(); + + LibSip__SIPTypesAndValues::Supported supported_header; + decode_supported_header(p_sip_message, supported_header); + if (supported_header.is_value()) { + headers.supported() = supported_header; + } else { + headers.supported().set_to_omit(); + } + headers.timestamp().set_to_omit(); headers.unsupported().set_to_omit(); headers.userToUser().set_to_omit(); @@ -251,32 +625,32 @@ void sip_codec_request::fill_headers(const osip_message_t* p_sip_message, LibSip p_request.msgHeader() = headers; - loggers::get_instance().log_msg("sip_codec_request::fill_headers: ", p_request); -} // End of method fill_headers + loggers::get_instance().log_msg("sip_codec_request::decode_headers: ", p_request); +} // End of method decode_headers -void sip_codec_request::fill_message_body(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request) +void sip_codec_request::decode_message_body(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request) { - loggers::get_instance().log(">>> sip_codec_request::fill_message_body"); + loggers::get_instance().log(">>> sip_codec_request::decode_message_body"); p_request.messageBody().set_to_omit(); -} // End of method fill_message_body +} // End of method decode_message_body -void sip_codec_request::fill_payload(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request) +void sip_codec_request::decode_payload(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request) { - loggers::get_instance().log(">>> sip_codec_request::fill_payload"); + loggers::get_instance().log(">>> sip_codec_request::decode_payload"); p_request.payload().set_to_omit(); -} // End of method fill_payload +} // End of method decode_payload -void sip_codec_request::fill_semi_colon_params(const osip_list_t& p_sip_list, OPTIONAL& p_list) { - loggers::get_instance().log(">>> sip_codec_request::fill_semi_colon_params"); +void sip_codec_request::decode_semi_colon_params(const osip_list_t& p_sip_list, OPTIONAL& p_list) { + loggers::get_instance().log(">>> sip_codec_request::decode_semi_colon_params"); if (::osip_list_size(&p_sip_list) != 0) { LibSip__Common::SemicolonParam__List l; for (int i = 0; i < ::osip_list_size(&p_sip_list); i++) { osip_generic_param_t* p = (osip_generic_param_t*)::osip_list_get(&p_sip_list, i); - loggers::get_instance().log("sip_codec_request::fill_semi_colon_params: After cast: %p", p); + loggers::get_instance().log("sip_codec_request::decode_semi_colon_params: After cast: %p", p); CHARSTRING name(p->gname); if (p->gvalue == nullptr) { l[i] = LibSip__Common::GenericParam(name, OPTIONAL(OMIT_VALUE)); @@ -291,17 +665,17 @@ void sip_codec_request::fill_semi_colon_params(const osip_list_t& p_sip_list, OP p_list.set_to_omit(); } - loggers::get_instance().log_msg("<<< sip_codec_request::fill_semi_colon_params: ", p_list); -} // End of method fill_semi_colon_params + loggers::get_instance().log_msg("<<< sip_codec_request::decode_semi_colon_params: ", p_list); +} // End of method decode_semi_colon_params -void sip_codec_request::fill_ampersand_params(const osip_list_t& p_sip_list, OPTIONAL& p_list) { - loggers::get_instance().log(">>> sip_codec_request::fill_ampersand_params"); +void sip_codec_request::decode_ampersand_params(const osip_list_t& p_sip_list, OPTIONAL& p_list) { + loggers::get_instance().log(">>> sip_codec_request::decode_ampersand_params"); if (::osip_list_size(&p_sip_list) != 0) { LibSip__Common::AmpersandParam__List l; for (int i = 0; i < ::osip_list_size(&p_sip_list); i++) { osip_generic_param_t* p = (osip_generic_param_t*)::osip_list_get(&p_sip_list, i); - loggers::get_instance().log("sip_codec_request::fill_ampersand_params: After cast: %p", p); + loggers::get_instance().log("sip_codec_request::decode_ampersand_params: After cast: %p", p); CHARSTRING name(p->gname); if (p->gvalue == nullptr) { l[i] = LibSip__Common::GenericParam(name, OPTIONAL(OMIT_VALUE)); @@ -316,11 +690,37 @@ void sip_codec_request::fill_ampersand_params(const osip_list_t& p_sip_list, OPT p_list.set_to_omit(); } - loggers::get_instance().log_msg("<<< sip_codec_request::fill_ampersand_params: ", p_list); -} // End of method fill_ampersand_params + loggers::get_instance().log_msg("<<< sip_codec_request::decode_ampersand_params: ", p_list); +} // End of method decode_ampersand_params -void sip_codec_request::fill_host_port(const char* p_host, const char* p_port, LibSip__SIPTypesAndValues::HostPort& p_host_port) { - loggers::get_instance().log(">>> sip_codec_request::fill_host_port"); +void sip_codec_request::decode_option_tag_list(const char* p_list, OPTIONAL& p_options_tags) +{ + loggers::get_instance().log(">>> sip_codec_request::decode_option_tag_list"); + + if (p_list != nullptr) { + LibSip__SIPTypesAndValues::OptionTag__List l; + std::string str(p_list); + std::size_t i = str.find(","); // See RFC 3261 - Page 231 / LibSip__SIPTypesAndValues::OptionTag__List + if (i == std::string::npos) { // Only on item + l[0] = CHARSTRING(p_list); + } else { + int idx = 0; + while(i != std::string::npos) { + l[idx++] = CHARSTRING(str.substr(0, i - 1).c_str()); + str = str.substr(i); + i = str.find(","); + } // End of 'while' statement + } + p_options_tags = OPTIONAL(l); + } else { + p_options_tags.set_to_omit(); + } + + loggers::get_instance().log_msg("<<< sip_codec_request::decode_option_tag_list: ", p_options_tags); +} // End of method decode_option_tag_list + +void sip_codec_request::decode_host_port(const char* p_host, const char* p_port, LibSip__SIPTypesAndValues::HostPort& p_host_port) { + loggers::get_instance().log(">>> sip_codec_request::decode_host_port"); if (p_host == nullptr) { p_host_port.host().set_to_omit(); @@ -334,37 +734,37 @@ void sip_codec_request::fill_host_port(const char* p_host, const char* p_port, L p_host_port.portField() = OPTIONAL(INTEGER(std::stoi(p_port))); } - loggers::get_instance().log_msg("<<< sip_codec_request::fill_host_port: ", p_host_port); -} // End of method fill_host_port" + loggers::get_instance().log_msg("<<< sip_codec_request::decode_host_port: ", p_host_port); +} // End of method decode_host_port" -void sip_codec_request::fill_request_line(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request) +void sip_codec_request::decode_request_line(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request) { - loggers::get_instance().log(">>> sip_codec_request::fill_request_line"); + loggers::get_instance().log(">>> sip_codec_request::decode_request_line"); LibSip__SIPTypesAndValues::RequestLine request_line; std::string str(::osip_message_get_method(p_sip_message)); str += "_E"; request_line.method() = LibSip__SIPTypesAndValues::Method(LibSip__SIPTypesAndValues::Method::str_to_enum(str.c_str())); - loggers::get_instance().log_msg("sip_codec_request::fill_request_line: Method: ", request_line.method()); + loggers::get_instance().log_msg("sip_codec_request::decode_request_line: Method: ", request_line.method()); LibSip__SIPTypesAndValues::SipUrl uri; - fill_uri(uri, ::osip_message_get_uri(p_sip_message)); - loggers::get_instance().log_msg("sip_codec_request::fill_request_line: SipUrl: ", uri); + decode_uri(uri, ::osip_message_get_uri(p_sip_message)); + loggers::get_instance().log_msg("sip_codec_request::decode_request_line: SipUrl: ", uri); request_line.requestUri() = uri; request_line.sipVersion() = CHARSTRING(::osip_message_get_version(p_sip_message)); p_request.requestLine() = request_line; // FIXME To be continued - loggers::get_instance().log_msg("<<< sip_codec_request::fill_request_line: ", p_request); + loggers::get_instance().log_msg("<<< sip_codec_request::decode_request_line: ", p_request); } -void sip_codec_request::fill_uri(LibSip__SIPTypesAndValues::SipUrl& p_sip_url, const osip_uri_t* p_uri) { - loggers::get_instance().log(">>> sip_codec_request::fill_uri"); +void sip_codec_request::decode_uri(LibSip__SIPTypesAndValues::SipUrl& p_sip_url, const osip_uri_t* p_uri) { + loggers::get_instance().log(">>> sip_codec_request::decode_uri"); // Scheme LibSip__SIPTypesAndValues::UriComponents uri_components; if (::osip_uri_get_scheme((osip_uri_t*)p_uri) != nullptr) { p_sip_url.scheme() = CHARSTRING(::osip_uri_get_scheme((osip_uri_t*)p_uri)); - loggers::get_instance().log_msg("sip_codec_request::fill_uri: scheme", p_sip_url.scheme()); + loggers::get_instance().log_msg("sip_codec_request::decode_uri: scheme", p_sip_url.scheme()); // SipUriComponents if (strcmp(::osip_uri_get_scheme((osip_uri_t*)p_uri), "sip") == 0) { // User Info @@ -381,11 +781,11 @@ void sip_codec_request::fill_uri(LibSip__SIPTypesAndValues::SipUrl& p_sip_url, c LibSip__SIPTypesAndValues::UserInfo u(CHARSTRING(::osip_uri_get_username((osip_uri_t*)p_uri)), password); user_info = OPTIONAL(u); } - loggers::get_instance().log_msg("sip_codec_request::fill_uri: user_info: ", user_info); + loggers::get_instance().log_msg("sip_codec_request::decode_uri: user_info: ", user_info); // HostPort LibSip__SIPTypesAndValues::HostPort host_port; - fill_host_port(::osip_uri_get_host((osip_uri_t*)p_uri), ::osip_uri_get_port((osip_uri_t*)p_uri), host_port); - loggers::get_instance().log_msg("sip_codec_request::fill_uri: host_port: ", host_port); + decode_host_port(::osip_uri_get_host((osip_uri_t*)p_uri), ::osip_uri_get_port((osip_uri_t*)p_uri), host_port); + loggers::get_instance().log_msg("sip_codec_request::decode_uri: host_port: ", host_port); uri_components.sip() = LibSip__SIPTypesAndValues::SipUriComponents(user_info, host_port); } else if (strcmp(::osip_uri_get_scheme((osip_uri_t*)p_uri), "tel") == 0) { // FIXME uri_components.tel() = LibSip__SIPTypesAndValues::TelUriComponents(user_info, host_port); @@ -406,28 +806,173 @@ void sip_codec_request::fill_uri(LibSip__SIPTypesAndValues::SipUrl& p_sip_url, c p_sip_url.components() = uri_components; // UrlParameters OPTIONAL params; - fill_semi_colon_params(p_uri->url_params, params); + decode_semi_colon_params(p_uri->url_params, params); p_sip_url.urlParameters() = params; // Headers OPTIONAL headers; - fill_ampersand_params(p_uri->url_headers, headers); + decode_ampersand_params(p_uri->url_headers, headers); p_sip_url.headers() = headers; - loggers::get_instance().log_msg("<<< sip_codec_request::fill_uri: ", p_sip_url); -} // End of method fill_uri + loggers::get_instance().log_msg("<<< sip_codec_request::decode_uri: ", p_sip_url); +} // End of method decode_uri + +void sip_codec_request::decode_accept_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Accept& p_accept_header) +{ + loggers::get_instance().log(">>> sip_codec_request::decode_accept_header: %p", p_sip_message->accepts); + + // Sanity checks + osip_accept_t *sip_accept = nullptr; + ::osip_message_get_accept(p_sip_message, 0, &sip_accept); + if (sip_accept == nullptr) { + return; + } + + // FieldName + p_accept_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ACCEPT_E")); + // AcceptArgs + // TODO To be done + p_accept_header.acceptArgs().set_to_omit(); + + loggers::get_instance().log_msg("<<< sip_codec_request::decode_accept_header: ", p_accept_header); +} // End of method decode_accept_header + +void sip_codec_request::decode_accept_contact_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptContact& p_accept_contact_header) +{ + loggers::get_instance().log(">>> sip_codec_request::decode_accept_contact_header: %p", p_sip_message->contacts); + + // Sanity checks + osip_header_t *sip_accept_contact = nullptr; + osip_message_header_get_byname(p_sip_message,(const char *)"accept-contact", 0, &sip_accept_contact); + if (sip_accept_contact == nullptr) { + return; + } + + // FieldName + p_accept_contact_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ACCEPT_CONTACT_E")); + // AcRcValue + LibSip__SIPTypesAndValues::AcRcValue__List l; + // TODO To be done + l[0] = LibSip__SIPTypesAndValues::AcRcValue(CHARSTRING("*"), OPTIONAL(OMIT_VALUE)); + p_accept_contact_header.acValues() = l; + + loggers::get_instance().log_msg("<<< sip_codec_request::decode_accept_contact_header: ", p_accept_contact_header); +} // End of method decode_accept_contact_header + +void sip_codec_request::decode_accept_encoding_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptEncoding& p_accept_encoding_header) +{ + loggers::get_instance().log(">>> sip_codec_request::decode_accept_encoding_header: %p", p_sip_message->accept_encodings); + + // Sanity checks + osip_accept_encoding_t *sip_accept_encoding = nullptr; + ::osip_message_get_accept_encoding(p_sip_message, 0, &sip_accept_encoding); + if (sip_accept_encoding == nullptr) { + return; + } + // FieldName + p_accept_encoding_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ACCEPT_ENCODING_E")); + // ContentCoding + p_accept_encoding_header.contentCoding().set_to_omit(); + + loggers::get_instance().log_msg("<<< sip_codec_request::decode_accept_encoding_header: ", p_accept_encoding_header); +} // End of method decode_accept_encoding_header + +void sip_codec_request::decode_accept_language_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptLanguage& p_accept_language_header) +{ + loggers::get_instance().log(">>> sip_codec_request::decode_accept_language_header: %p", p_sip_message->accept_languages); + + // Sanity checks + osip_accept_language_t *sip_accept_language = nullptr; + ::osip_message_get_accept_language(p_sip_message, 0, &sip_accept_language); + if (sip_accept_language == nullptr) { + return; + } + + // FieldName + p_accept_language_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ACCEPT_LANGUAGE_E")); + // LanguageBody + p_accept_language_header.languageBody().set_to_omit(); -void sip_codec_request::fill_authorization_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Authorization& p_authorization_header) + loggers::get_instance().log_msg("<<< sip_codec_request::decode_accept_language_header: ", p_accept_language_header); +} // End of method decode_accept_language_header + +void sip_codec_request::decode_alert_info_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AlertInfo& p_alert_info_header) { - loggers::get_instance().log(">>> sip_codec_request::fill_authorization_header: %p", p_sip_message->authorizations); + loggers::get_instance().log(">>> sip_codec_request::decode_alert_info_header: %p", p_sip_message->alert_infos); + + // Sanity checks + osip_alert_info_t *sip_alert_info = nullptr; + ::osip_message_get_alert_info(p_sip_message, 0, &sip_alert_info); + if (sip_alert_info == nullptr) { + return; + } + + // FieldName + p_alert_info_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ALERT_INFO_E")); + // AlertInfoBody + p_alert_info_header.alertInfoBody().set_to_omit(); + + loggers::get_instance().log_msg("<<< sip_codec_request::decode_alert_info_header: ", p_alert_info_header); +} // End of method decode_alert_info_header + +void sip_codec_request::decode_allow_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Allow& p_allow_header) +{ + loggers::get_instance().log(">>> sip_codec_request::decode_allow_header: %p", p_sip_message->allows); + + // Sanity checks + osip_allow_t *sip_allow = nullptr; + ::osip_message_get_allow(p_sip_message, 0, &sip_allow); + if (sip_allow == nullptr) { + return; + } + + // FieldName + p_allow_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ALLOW_E")); + // Methods + p_allow_header.methods().set_to_omit(); + + loggers::get_instance().log_msg("<<< sip_codec_request::decode_allow_header: ", p_allow_header); +} // End of method decode_allow_header + +void sip_codec_request::decode_allow_events_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AllowEvents& p_allow_events_header) +{ + loggers::get_instance().log(">>> sip_codec_request::decode_allow_events_header: %p", p_sip_message->headers); + + // Sanity checks + osip_header_t *sip_allow_events = nullptr; + osip_message_header_get_byname(p_sip_message,(const char *)"allow_events", 0, &sip_allow_events); + if (sip_allow_events == nullptr) { + return; + } + + // FieldName + p_allow_events_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ALLOW_EVENTS_E")); + // EventTypes + LibSip__SIPTypesAndValues::EventType__List l; + // TODO To be done + l[0] = CHARSTRING("*"); + p_allow_events_header.eventTypes() = l; + + loggers::get_instance().log_msg("<<< sip_codec_request::decode_allow_events_header: ", p_allow_events_header); +} // End of method decode_allow_events_header + +void sip_codec_request::decode_authorization_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Authorization& p_authorization_header) +{ + loggers::get_instance().log(">>> sip_codec_request::decode_authorization_header"); + + // Sanity checks + osip_authorization_t *sip_authorization = nullptr; + ::osip_message_get_authorization(p_sip_message, 0, &sip_authorization); + if (sip_authorization == nullptr) { + return; + } // FieldName p_authorization_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("AUTHORIZATION_E")); // CredentialsList LibSip__SIPTypesAndValues::CredentialsList l; int i = 0; - osip_authorization_t *sip_authorization = nullptr; - while(::osip_message_get_authorization(p_sip_message, i, &sip_authorization) == 0) { - loggers::get_instance().log("sip_codec_request::fill_authorization_header: Processing item #%d", i); + do { + loggers::get_instance().log("sip_codec_request::decode_authorization_header: Processing item #%d", i); LibSip__SIPTypesAndValues::Credentials v; LibSip__Common::CommaParam__List cl; int j = 0; @@ -450,11 +995,91 @@ void sip_codec_request::fill_authorization_header(const osip_message_t* p_sip_me // FIXME To be contiuened v.digestResponse() = cl; l[i++] = v; - } // End of 'while' statement + } while(::osip_message_get_authorization(p_sip_message, i, &sip_authorization) == 0); // End of 'do-while' statement p_authorization_header.body() = l; - loggers::get_instance().log_msg("<<< sip_codec_request::fill_authorization_header: ", p_authorization_header); -} // End of method fill_authorization_header + loggers::get_instance().log_msg("<<< sip_codec_request::decode_authorization_header: ", p_authorization_header); +} // End of method decode_authorization_header + +void sip_codec_request::decode_call_id_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::CallId& p_call_id_header) +{ + loggers::get_instance().log(">>> sip_codec_request::decode_call_id_header: %p", p_sip_message->call_id); + + // Sanity check + if (p_sip_message->call_id == nullptr) { + return; + } + + // FieldName + p_call_id_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("CALL_ID_E")); + // CallId + char *buffer; + ::osip_call_id_to_str(p_sip_message->call_id, &buffer); + if (buffer != nullptr) { + p_call_id_header.callid() = CHARSTRING(buffer); + osip_free(buffer); + } +} // End of method decode_call_id_header + +void sip_codec_request::decode_c_seq_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::CSeq& p_c_seq_header) +{ + loggers::get_instance().log(">>> sip_codec_request::decode_c_seq_header: %p", p_sip_message->cseq); + + // Sanity check + if (p_sip_message->cseq == nullptr) { + return; + } + + // FieldName + p_c_seq_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("C_SEQ_E")); + // Sequence number + p_c_seq_header.seqNumber() = INTEGER(std::stoi(osip_cseq_get_number(p_sip_message->cseq))); + // Method + p_c_seq_header.method() = CHARSTRING(::osip_cseq_get_method(p_sip_message->cseq)); +} // End of method decode_c_seq_header + +void sip_codec_request::decode_content_length_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::ContentLength& p_content_length_header) +{ + loggers::get_instance().log(">>> sip_codec_request::decode_content_length_header: %p", p_sip_message->content_length); + + // Sanity check + if (p_sip_message->content_length == nullptr) { + return; + } + + // FieldName + p_content_length_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("CONTENT_LENGTH_E")); + // Length + char *buffer; + ::osip_content_length_to_str(p_sip_message->content_length, &buffer); + if (buffer != nullptr) { + p_content_length_header.len() = INTEGER(std::stoi(buffer)); + osip_free(buffer); + } +} // End of method decode_content_length_header + +void sip_codec_request::decode_content_type_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::ContentType& p_content_type_header) +{ + loggers::get_instance().log(">>> sip_codec_request::decode_content_type_header: %p", p_sip_message->content_type); + + // Sanity check + if (p_sip_message->content_type == nullptr) { + return; + } + + // FieldName + p_content_type_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("CONTENT_TYPE_E")); + // SubType + if (p_sip_message->content_type->subtype != nullptr) { + p_content_type_header.mTypeSubtype() = CHARSTRING(p_sip_message->content_type->subtype); + } + // Parameters + OPTIONAL params; + decode_semi_colon_params(p_sip_message->content_type->gen_params, params); + p_content_type_header.mParams() = params; +} // End of method decode_content_type_header + + @@ -469,15 +1094,22 @@ void sip_codec_request::fill_authorization_header(const osip_message_t* p_sip_me -void sip_codec_request::fill_from_header(const osip_from_t* p_sip_from, LibSip__SIPTypesAndValues::From& p_from_header) + + +void sip_codec_request::decode_from_header(const osip_from_t* p_sip_from, LibSip__SIPTypesAndValues::From& p_from_header) { - loggers::get_instance().log("sip_codec_request::fill_from_header"); + loggers::get_instance().log("sip_codec_request::decode_from_header"); + // Sanity check + if (p_sip_from == nullptr) { + return; + } + // FieldName p_from_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("FROM_E")); // Addr_Union LibSip__SIPTypesAndValues::SipUrl uri; - fill_uri(uri, ::osip_from_get_url((osip_from_t*)p_sip_from)); + decode_uri(uri, ::osip_from_get_url((osip_from_t*)p_sip_from)); OPTIONAL display_name; if (::osip_from_get_displayname((osip_from_t*)p_sip_from) != nullptr) { LibSip__SIPTypesAndValues::DisplayName n; @@ -492,21 +1124,63 @@ void sip_codec_request::fill_from_header(const osip_from_t* p_sip_from, LibSip__ p_from_header.addressField() = addr; // Params OPTIONAL params; - fill_semi_colon_params(p_sip_from->gen_params, params); + decode_semi_colon_params(p_sip_from->gen_params, params); p_from_header.fromParams() = params; - loggers::get_instance().log_msg("<<< sip_codec_request::fill_from_header: ", p_from_header); -} // End of method fill_from_header + loggers::get_instance().log_msg("<<< sip_codec_request::decode_from_header: ", p_from_header); +} // End of method decode_from_header + +void sip_codec_request::decode_max_forwards_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::MaxForwards& p_max_forwards_header) +{ + loggers::get_instance().log("sip_codec_request::decode_max_forwards_header: %p", p_sip_message->headers); + + // Sanity checks + osip_header_t *dest = nullptr; + osip_message_get_max_forwards(p_sip_message, 0, &dest); + if (dest == nullptr) { + return; + } + + // FieldName + p_max_forwards_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("MAX_FORWARDS_E")); + // Forwards + loggers::get_instance().log("sip_codec_request::decode_max_forwards_header: got it: %s:%s", dest->hname, dest->hvalue); + p_max_forwards_header.forwards() = INTEGER(std::stoi(dest->hvalue)); +} // End of method decode_max_forwards_header -void sip_codec_request::fill_to_header(const osip_to_t* p_sip_to, LibSip__SIPTypesAndValues::To& p_to_header) +void sip_codec_request::decode_supported_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Supported& p_supported_header) { - loggers::get_instance().log("sip_codec_request::fill_to_header"); + loggers::get_instance().log("sip_codec_request::decode_supported_header: %p", p_sip_message->headers); + + // Sanity checks + osip_header_t *dest = nullptr; + osip_message_get_supported(p_sip_message, 0, &dest); + if (dest == nullptr) { + return; + } + // FieldName + p_supported_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("SUPPORTED_E")); + // OptionTags + loggers::get_instance().log("sip_codec_request::decode_supported_header: got it: %s:%s", dest->hname, dest->hvalue); + OPTIONAL& l = p_supported_header.optionsTags(); + decode_option_tag_list(dest->hvalue, l); +} // End of method decode_supported_header + +void sip_codec_request::decode_to_header(const osip_to_t* p_sip_to, LibSip__SIPTypesAndValues::To& p_to_header) +{ + loggers::get_instance().log("sip_codec_request::decode_to_header"); + + // Sanity check + if (p_sip_to == nullptr) { + return; + } + // FieldName p_to_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("TO_E")); // Addr_Union LibSip__SIPTypesAndValues::SipUrl uri; - fill_uri(uri, ::osip_to_get_url((osip_to_t*)p_sip_to)); + decode_uri(uri, ::osip_to_get_url((osip_to_t*)p_sip_to)); OPTIONAL display_name; if (::osip_to_get_displayname((osip_to_t*)p_sip_to) != nullptr) { LibSip__SIPTypesAndValues::DisplayName n; @@ -521,115 +1195,30 @@ void sip_codec_request::fill_to_header(const osip_to_t* p_sip_to, LibSip__SIPTyp p_to_header.addressField() = addr; // Params OPTIONAL params; - fill_semi_colon_params(p_sip_to->gen_params, params); + decode_semi_colon_params(p_sip_to->gen_params, params); p_to_header.toParams() = params; - loggers::get_instance().log_msg("<<< sip_codec_request::fill_to_header: ", p_to_header); -} // End of method fill_to_header + loggers::get_instance().log_msg("<<< sip_codec_request::decode_to_header: ", p_to_header); +} // End of method decode_to_header -void sip_codec_request::fill_accept_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Accept& p_accept_header) +void sip_codec_request::decode_via_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Via& p_via_header) { - loggers::get_instance().log(">>> sip_codec_request::fill_accept_header: %p", p_sip_message->vias); + loggers::get_instance().log(">>> sip_codec_request::decode_via_header: %p", p_sip_message->vias); - // FieldName - p_accept_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ACCEPT_E")); - // AcceptArgs - // TODO To be done - p_accept_header.acceptArgs().set_to_omit(); - - loggers::get_instance().log_msg("<<< sip_codec_request::fill_accept_header: ", p_accept_header); -} // End of method fill_accept_header - -void sip_codec_request::fill_accept_contact_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptContact& p_accept_contact_header) -{ - loggers::get_instance().log(">>> sip_codec_request::fill_accept_contact_header: %p", p_sip_message->vias); - - // FieldName - p_accept_contact_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ACCEPT_CONTACT_E")); - // AcRcValue - LibSip__SIPTypesAndValues::AcRcValue__List l; - // TODO To be done - l[0] = LibSip__SIPTypesAndValues::AcRcValue(CHARSTRING("*"), OPTIONAL(OMIT_VALUE)); - p_accept_contact_header.acValues() = l; - - loggers::get_instance().log_msg("<<< sip_codec_request::fill_accept_contact_header: ", p_accept_contact_header); -} // End of method fill_accept_contact_header - -void sip_codec_request::fill_accept_encoding_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptEncoding& p_accept_encoding_header) -{ - loggers::get_instance().log(">>> sip_codec_request::fill_accept_encoding_header: %p", p_sip_message->vias); - - // FieldName - p_accept_encoding_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ACCEPT_ENCODING_E")); - // ContentCoding - p_accept_encoding_header.contentCoding().set_to_omit(); - - loggers::get_instance().log_msg("<<< sip_codec_request::fill_accept_encoding_header: ", p_accept_encoding_header); -} // End of method fill_accept_encoding_header - -void sip_codec_request::fill_accept_language_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptLanguage& p_accept_language_header) -{ - loggers::get_instance().log(">>> sip_codec_request::fill_accept_language_header: %p", p_sip_message->vias); - - // FieldName - p_accept_language_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ACCEPT_LANGUAGE_E")); - // LanguageBody - p_accept_language_header.languageBody().set_to_omit(); - - loggers::get_instance().log_msg("<<< sip_codec_request::fill_accept_language_header: ", p_accept_language_header); -} // End of method fill_accept_language_header - -void sip_codec_request::fill_alert_info_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AlertInfo& p_alert_info_header) -{ - loggers::get_instance().log(">>> sip_codec_request::fill_alert_info_header: %p", p_sip_message->vias); - - // FieldName - p_alert_info_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ALERT_INFO_E")); - // AlertInfoBody - p_alert_info_header.alertInfoBody().set_to_omit(); - - loggers::get_instance().log_msg("<<< sip_codec_request::fill_alert_info_header: ", p_alert_info_header); -} // End of method fill_alert_info_header - -void sip_codec_request::fill_allow_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Allow& p_allow_header) -{ - loggers::get_instance().log(">>> sip_codec_request::fill_allow_header: %p", p_sip_message->vias); - - // FieldName - p_allow_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ALLOW_E")); - // Methods - p_allow_header.methods().set_to_omit(); - - loggers::get_instance().log_msg("<<< sip_codec_request::fill_allow_header: ", p_allow_header); -} // End of method fill_allow_header - -void sip_codec_request::fill_allow_events_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AllowEvents& p_allow_events_header) -{ - loggers::get_instance().log(">>> sip_codec_request::fill_allow_events_header: %p", p_sip_message->vias); - - // FieldName - p_allow_events_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("ALLOW_EVENTS_E")); - // EventTypes - LibSip__SIPTypesAndValues::EventType__List l; - // TODO To be done - l[0] = CHARSTRING("*"); - p_allow_events_header.eventTypes() = l; - - loggers::get_instance().log_msg("<<< sip_codec_request::fill_allow_events_header: ", p_allow_events_header); -} // End of method fill_allow_events_header - -void sip_codec_request::fill_via_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Via& p_via_header) -{ - loggers::get_instance().log(">>> sip_codec_request::fill_via_header: %p", p_sip_message->vias); + // Sanity checks + osip_via_t *sip_via = nullptr; + ::osip_message_get_via(p_sip_message, 0, &sip_via); + if (sip_via == nullptr) { + return; + } // FieldName p_via_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("VIA_E")); // ViaBody LibSip__SIPTypesAndValues::ViaBody__List l; int i = 0; - osip_via_t *sip_via = nullptr; - while(::osip_message_get_via(p_sip_message, i, &sip_via) == 0) { - loggers::get_instance().log("sip_codec_request::fill_via_header: Processing item #%d", i); + do { + loggers::get_instance().log("sip_codec_request::decode_via_header: Processing item #%d", i); LibSip__SIPTypesAndValues::ViaBody v; v.sentProtocol() = LibSip__SIPTypesAndValues::SentProtocol( CHARSTRING(::via_get_protocol(sip_via)), @@ -637,352 +1226,15 @@ void sip_codec_request::fill_via_header(const osip_message_t* p_sip_message, Lib CHARSTRING(::via_get_comment(sip_via)) ); OPTIONAL host_port; - fill_host_port(::via_get_host(sip_via), ::via_get_port(sip_via), host_port); - loggers::get_instance().log_msg("sip_codec_request::fill_via_uri: host_port: ", host_port); + decode_host_port(::via_get_host(sip_via), ::via_get_port(sip_via), host_port); + loggers::get_instance().log_msg("sip_codec_request::decode_via_uri: host_port: ", host_port); v.sentBy() = host_port; OPTIONAL params; - fill_semi_colon_params(sip_via->via_params, params); + decode_semi_colon_params(sip_via->via_params, params); v.viaParams() = params; l[i++] = v; - } // End of 'while' statement + } while(::osip_message_get_via(p_sip_message, i, &sip_via) == 0); // End of 'while' statement p_via_header.viaBody() = l; - loggers::get_instance().log_msg("<<< sip_codec_request::fill_via_header: ", p_via_header); -} // End of method fill_via_header - -/*** - - inline OPTIONAL& authenticationInfo() - {return field_authenticationInfo;} - inline const OPTIONAL& authenticationInfo() const - {return field_authenticationInfo;} - inline OPTIONAL& authorization() - {return field_authorization;} - inline const OPTIONAL& authorization() const - {return field_authorization;} - inline OPTIONAL& callId() - {return field_callId;} - inline const OPTIONAL& callId() const - {return field_callId;} - inline OPTIONAL& callInfo() - {return field_callInfo;} - inline const OPTIONAL& callInfo() const - {return field_callInfo;} - inline OPTIONAL& contact() - {return field_contact;} - inline const OPTIONAL& contact() const - {return field_contact;} - inline OPTIONAL& contentDisposition() - {return field_contentDisposition;} - inline const OPTIONAL& contentDisposition() const - {return field_contentDisposition;} - inline OPTIONAL& contentEncoding() - {return field_contentEncoding;} - inline const OPTIONAL& contentEncoding() const - {return field_contentEncoding;} - inline OPTIONAL& contentLanguage() - {return field_contentLanguage;} - inline const OPTIONAL& contentLanguage() const - {return field_contentLanguage;} - inline OPTIONAL& contentLength() - {return field_contentLength;} - inline const OPTIONAL& contentLength() const - {return field_contentLength;} - inline OPTIONAL& contentType() - {return field_contentType;} - inline const OPTIONAL& contentType() const - {return field_contentType;} - inline OPTIONAL& cSeq() - {return field_cSeq;} - inline const OPTIONAL& cSeq() const - {return field_cSeq;} - inline OPTIONAL& date() - {return field_date;} - inline const OPTIONAL& date() const - {return field_date;} - inline OPTIONAL& diversion() - {return field_diversion;} - inline const OPTIONAL& diversion() const - {return field_diversion;} - inline OPTIONAL& errorInfo() - {return field_errorInfo;} - inline const OPTIONAL& errorInfo() const - {return field_errorInfo;} - inline OPTIONAL& event() - {return field_event;} - inline const OPTIONAL& event() const - {return field_event;} - inline OPTIONAL& expires() - {return field_expires;} - inline const OPTIONAL& expires() const - {return field_expires;} - inline OPTIONAL& featureCaps() - {return field_featureCaps;} - inline const OPTIONAL& featureCaps() const - {return field_featureCaps;} - inline OPTIONAL& geolocation() - {return field_geolocation;} - inline const OPTIONAL& geolocation() const - {return field_geolocation;} - inline OPTIONAL& geolocationRouting() - {return field_geolocationRouting;} - inline const OPTIONAL& geolocationRouting() const - {return field_geolocationRouting;} - inline OPTIONAL& historyInfo() - {return field_historyInfo;} - inline const OPTIONAL& historyInfo() const - {return field_historyInfo;} - inline OPTIONAL& infoPackage() - {return field_infoPackage;} - inline const OPTIONAL& infoPackage() const - {return field_infoPackage;} - inline OPTIONAL& inReplyTo() - {return field_inReplyTo;} - inline const OPTIONAL& inReplyTo() const - {return field_inReplyTo;} - inline OPTIONAL& maxForwards() - {return field_maxForwards;} - inline const OPTIONAL& maxForwards() const - {return field_maxForwards;} - inline OPTIONAL& mimeVersion() - {return field_mimeVersion;} - inline const OPTIONAL& mimeVersion() const - {return field_mimeVersion;} - inline OPTIONAL& minExpires() - {return field_minExpires;} - inline const OPTIONAL& minExpires() const - {return field_minExpires;} - inline OPTIONAL& minSE() - {return field_minSE;} - inline const OPTIONAL& minSE() const - {return field_minSE;} - inline OPTIONAL& organization() - {return field_organization;} - inline const OPTIONAL& organization() const - {return field_organization;} - inline OPTIONAL& pAccessNetworkInfo() - {return field_pAccessNetworkInfo;} - inline const OPTIONAL& pAccessNetworkInfo() const - {return field_pAccessNetworkInfo;} - inline OPTIONAL& pAssertedID() - {return field_pAssertedID;} - inline const OPTIONAL& pAssertedID() const - {return field_pAssertedID;} - inline OPTIONAL& pAssertedService() - {return field_pAssertedService;} - inline const OPTIONAL& pAssertedService() const - {return field_pAssertedService;} - inline OPTIONAL& pAssociatedURI() - {return field_pAssociatedURI;} - inline const OPTIONAL& pAssociatedURI() const - {return field_pAssociatedURI;} - inline OPTIONAL& path() - {return field_path;} - inline const OPTIONAL& path() const - {return field_path;} - inline OPTIONAL& pCalledPartyID() - {return field_pCalledPartyID;} - inline const OPTIONAL& pCalledPartyID() const - {return field_pCalledPartyID;} - inline OPTIONAL& pChargingFunctionAddresses() - {return field_pChargingFunctionAddresses;} - inline const OPTIONAL& pChargingFunctionAddresses() const - {return field_pChargingFunctionAddresses;} - inline OPTIONAL& pChargingVector() - {return field_pChargingVector;} - inline const OPTIONAL& pChargingVector() const - {return field_pChargingVector;} - inline OPTIONAL& pEarlyMedia() - {return field_pEarlyMedia;} - inline const OPTIONAL& pEarlyMedia() const - {return field_pEarlyMedia;} - inline OPTIONAL& pMediaAuthorization() - {return field_pMediaAuthorization;} - inline const OPTIONAL& pMediaAuthorization() const - {return field_pMediaAuthorization;} - inline OPTIONAL& pPreferredID() - {return field_pPreferredID;} - inline const OPTIONAL& pPreferredID() const - {return field_pPreferredID;} - inline OPTIONAL& pPreferredService() - {return field_pPreferredService;} - inline const OPTIONAL& pPreferredService() const - {return field_pPreferredService;} - inline OPTIONAL& priority() - {return field_priority;} - inline const OPTIONAL& priority() const - {return field_priority;} - inline OPTIONAL& privacy() - {return field_privacy;} - inline const OPTIONAL& privacy() const - {return field_privacy;} - inline OPTIONAL& proxyAuthenticate() - {return field_proxyAuthenticate;} - inline const OPTIONAL& proxyAuthenticate() const - {return field_proxyAuthenticate;} - inline OPTIONAL& proxyAuthorization() - {return field_proxyAuthorization;} - inline const OPTIONAL& proxyAuthorization() const - {return field_proxyAuthorization;} - inline OPTIONAL& proxyRequire() - {return field_proxyRequire;} - inline const OPTIONAL& proxyRequire() const - {return field_proxyRequire;} - inline OPTIONAL& pVisitedNetworkID() - {return field_pVisitedNetworkID;} - inline const OPTIONAL& pVisitedNetworkID() const - {return field_pVisitedNetworkID;} - inline OPTIONAL& rAck() - {return field_rAck;} - inline const OPTIONAL& rAck() const - {return field_rAck;} - inline OPTIONAL& rSeq() - {return field_rSeq;} - inline const OPTIONAL& rSeq() const - {return field_rSeq;} - inline OPTIONAL& reason() - {return field_reason;} - inline const OPTIONAL& reason() const - {return field_reason;} - inline OPTIONAL& recordRoute() - {return field_recordRoute;} - inline const OPTIONAL& recordRoute() const - {return field_recordRoute;} - inline OPTIONAL& recvInfo() - {return field_recvInfo;} - inline const OPTIONAL& recvInfo() const - {return field_recvInfo;} - inline OPTIONAL& requestDisposition() - {return field_requestDisposition;} - inline const OPTIONAL& requestDisposition() const - {return field_requestDisposition;} - inline OPTIONAL& referredBy() - {return field_referredBy;} - inline const OPTIONAL& referredBy() const - {return field_referredBy;} - inline OPTIONAL& referTo() - {return field_referTo;} - inline const OPTIONAL& referTo() const - {return field_referTo;} - inline OPTIONAL& referSub() - {return field_referSub;} - inline const OPTIONAL& referSub() const - {return field_referSub;} - inline OPTIONAL& replaces() - {return field_replaces;} - inline const OPTIONAL& replaces() const - {return field_replaces;} - inline OPTIONAL& replyTo() - {return field_replyTo;} - inline const OPTIONAL& replyTo() const - {return field_replyTo;} - inline OPTIONAL& require() - {return field_require;} - inline const OPTIONAL& require() const - {return field_require;} - inline OPTIONAL& retryAfter() - {return field_retryAfter;} - inline const OPTIONAL& retryAfter() const - {return field_retryAfter;} - inline OPTIONAL& route() - {return field_route;} - inline const OPTIONAL& route() const - {return field_route;} - inline OPTIONAL& securityClient() - {return field_securityClient;} - inline const OPTIONAL& securityClient() const - {return field_securityClient;} - inline OPTIONAL& securityServer() - {return field_securityServer;} - inline const OPTIONAL& securityServer() const - {return field_securityServer;} - inline OPTIONAL& securityVerify() - {return field_securityVerify;} - inline const OPTIONAL& securityVerify() const - {return field_securityVerify;} - inline OPTIONAL& server() - {return field_server;} - inline const OPTIONAL& server() const - {return field_server;} - inline OPTIONAL& serviceRoute() - {return field_serviceRoute;} - inline const OPTIONAL& serviceRoute() const - {return field_serviceRoute;} - inline OPTIONAL& sessionExpires() - {return field_sessionExpires;} - inline const OPTIONAL& sessionExpires() const - {return field_sessionExpires;} - inline OPTIONAL& sessionId() - {return field_sessionId;} - inline const OPTIONAL& sessionId() const - {return field_sessionId;} - inline OPTIONAL& sipETag() - {return field_sipETag;} - inline const OPTIONAL& sipETag() const - {return field_sipETag;} - inline OPTIONAL& sipIfMatch() - {return field_sipIfMatch;} - inline const OPTIONAL& sipIfMatch() const - {return field_sipIfMatch;} - inline OPTIONAL& subject() - {return field_subject;} - inline const OPTIONAL& subject() const - {return field_subject;} - inline OPTIONAL& subscriptionState() - {return field_subscriptionState;} - inline const OPTIONAL& subscriptionState() const - {return field_subscriptionState;} - inline OPTIONAL& supported() - {return field_supported;} - inline const OPTIONAL& supported() const - {return field_supported;} - inline OPTIONAL& timestamp() - {return field_timestamp;} - inline const OPTIONAL& timestamp() const - {return field_timestamp;} - inline OPTIONAL& unsupported() - {return field_unsupported;} - inline const OPTIONAL& unsupported() const - {return field_unsupported;} - inline OPTIONAL& userToUser() - {return field_userToUser;} - inline const OPTIONAL& userToUser() const - {return field_userToUser;} - inline OPTIONAL& userAgent() - {return field_userAgent;} - inline const OPTIONAL& userAgent() const - {return field_userAgent;} - inline OPTIONAL& warning() - {return field_warning;} - inline const OPTIONAL& warning() const - {return field_warning;} - inline OPTIONAL& wwwAuthenticate() - {return field_wwwAuthenticate;} - inline const OPTIONAL& wwwAuthenticate() const - {return field_wwwAuthenticate;} - inline OPTIONAL& resourcePriority() - {return field_resourcePriority;} - inline const OPTIONAL& resourcePriority() const - {return field_resourcePriority;} - inline OPTIONAL& answerMode() - {return field_answerMode;} - inline const OPTIONAL& answerMode() const - {return field_answerMode;} - inline OPTIONAL& privAnswerMode() - {return field_privAnswerMode;} - inline const OPTIONAL& privAnswerMode() const - {return field_privAnswerMode;} - inline OPTIONAL& targetDialog() - {return field_targetDialog;} - inline const OPTIONAL& targetDialog() const - {return field_targetDialog;} - inline OPTIONAL& pAnswerState() - {return field_pAnswerState;} - inline const OPTIONAL& pAnswerState() const - {return field_pAnswerState;} - inline OPTIONAL& undefinedHeader__List() - {return field_undefinedHeader__List;} - inline const OPTIONAL& undefinedHeader__List() const - {return field_undefinedHeader__List;} - -***/ + loggers::get_instance().log_msg("<<< sip_codec_request::decode_via_header: ", p_via_header); +} // End of method decode_via_header diff --git a/ccsrc/Protocols/Sip/sip_codec_request.hh b/ccsrc/Protocols/Sip/sip_codec_request.hh index 2f2f946..daa4735 100644 --- a/ccsrc/Protocols/Sip/sip_codec_request.hh +++ b/ccsrc/Protocols/Sip/sip_codec_request.hh @@ -11,11 +11,24 @@ class TTCN_Buffer; namespace LibSip__SIPTypesAndValues { class Request; + class RequestLine; + class MessageHeader; + class Payload; class HostPort; class Authorization; class From; class To; class Via; + class CallId; + class ContentLength; + class ContentType; + class CSeq; + class PreGenRecordOf; + // class OptionTag__List; +} + +namespace LibSip__MessageBodyTypes { + class MessageBody; } namespace LibSip__Common { @@ -36,27 +49,48 @@ public: virtual int encode (const LibSip__SIPTypesAndValues::Request& msg, OCTETSTRING& data); virtual int decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::Request& msg, params* p_params = NULL); private: //! \todo Move this section into a sip_codec_helper class, need to decode Response too - void fill_message_body(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request); - void fill_payload(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request); - void fill_uri(LibSip__SIPTypesAndValues::SipUrl& p_sip_url, const osip_uri_t* p_uri); - void fill_request_line(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& msg); - void fill_headers(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& msg); - - - void fill_accept_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Accept& p_accept_header); - void fill_accept_contact_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptContact& p_accept_contact_header); - void fill_accept_encoding_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptEncoding& p_accept_encoding_header); - void fill_accept_language_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptLanguage& p_accept_language_header); - void fill_alert_info_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AlertInfo& p_alert_info_header); - void fill_allow_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Allow& p_allow_header); - void fill_allow_events_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AllowEvents& p_allow_events_header); - void fill_authorization_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Authorization& p_authorization_header); - void fill_from_header(const osip_from_t* p_sip_from, LibSip__SIPTypesAndValues::From& p_from_header); - void fill_to_header(const osip_to_t* p_sip_to, LibSip__SIPTypesAndValues::To& p_to_header); - void fill_via_header(const osip_message_t* p_sip_via_list, LibSip__SIPTypesAndValues::Via& p_via_header); + int encode_request(const LibSip__SIPTypesAndValues::Request& p_request, osip_message_t* p_sip_message); + int encode_request_line(const LibSip__SIPTypesAndValues::RequestLine& p_request_line, osip_message_t* p_sip_message); + int encode_request_headers(const LibSip__SIPTypesAndValues::MessageHeader& p_msg_header, osip_message_t* p_sip_message); + int encode_request_message_body(const LibSip__MessageBodyTypes::MessageBody& p_message_body, osip_message_t* p_sip_message); + int encode_request_payload(const LibSip__SIPTypesAndValues::Payload& p_payload, osip_message_t* p_sip_message); + int encode_from_header(const LibSip__SIPTypesAndValues::From& p_from, osip_from_t* p_from_header); + int encode_to_header(const LibSip__SIPTypesAndValues::To& p_to, osip_to_t* p_to_header); + int encode_via_header(const LibSip__SIPTypesAndValues::Via& p_via, osip_via_t* p_via_header); + + int encode_sip_url(const LibSip__SIPTypesAndValues::SipUrl& p_sip_uri, osip_uri_t** p_uri); + void encode_host_port(const LibSip__SIPTypesAndValues::HostPort& p_host_port, std::string& p_host, std::string& p_port); + +private: //! \todo Move this section into a sip_codec_helper class, need to decode Response too + void decode_message_body(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request); + void decode_payload(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request); + void decode_uri(LibSip__SIPTypesAndValues::SipUrl& p_sip_url, const osip_uri_t* p_uri); + void decode_request_line(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& msg); + void decode_headers(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& msg); + + // TODO Replace const osip_message_t* p_sip_message by header specific type using osip_parser.h/macros such as osip_message_get_accept/osip_accept_t + void decode_accept_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Accept& p_accept_header); + void decode_accept_contact_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptContact& p_accept_contact_header); + void decode_accept_encoding_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptEncoding& p_accept_encoding_header); + void decode_accept_language_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptLanguage& p_accept_language_header); + void decode_alert_info_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AlertInfo& p_alert_info_header); + void decode_allow_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Allow& p_allow_header); + void decode_allow_events_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AllowEvents& p_allow_events_header); + void decode_authorization_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Authorization& p_authorization_header); + void decode_call_id_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::CallId& p_call_id_header); + void decode_content_length_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::ContentLength& p_content_length_header); + void decode_content_type_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::ContentType& p_content_type_header); + void decode_c_seq_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::CSeq& p_c_seq_header); + + void decode_from_header(const osip_from_t* p_sip_from, LibSip__SIPTypesAndValues::From& p_from_header); + void decode_max_forwards_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::MaxForwards& p_max_forwards_header); + void decode_supported_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Supported& p_supported_header); + void decode_to_header(const osip_to_t* p_sip_to, LibSip__SIPTypesAndValues::To& p_to_header); + void decode_via_header(const osip_message_t* p_sip_via_list, LibSip__SIPTypesAndValues::Via& p_via_header); - void fill_host_port(const char* p_host, const char* p_port, LibSip__SIPTypesAndValues::HostPort& p_host_port); - void fill_semi_colon_params(const osip_list_t& p_sip_list, OPTIONAL& p_list); - void fill_ampersand_params(const osip_list_t& p_sip_list, OPTIONAL& p_list); + void decode_host_port(const char* p_host, const char* p_port, LibSip__SIPTypesAndValues::HostPort& p_host_port); + void decode_semi_colon_params(const osip_list_t& p_sip_list, OPTIONAL& p_list); + void decode_ampersand_params(const osip_list_t& p_sip_list, OPTIONAL& p_list); + void decode_option_tag_list(const char* p_list, OPTIONAL& p_options_tags); }; // End of class sip_codec_request diff --git a/etc/AtsNg112/AtsNg112.cfg b/etc/AtsNg112/AtsNg112.cfg index a385944..11710ba 100644 --- a/etc/AtsNg112/AtsNg112.cfg +++ b/etc/AtsNg112/AtsNg112.cfg @@ -2,8 +2,16 @@ # This section shall contain the values of all parameters that are defined in your TTCN-3 modules. LibCommon_Time.PX_TAC := 30.0 + LibItsHttp_Pics.PICS_HEADER_HOST := "location-information-service.azurewebsites.net" -LibNg112_Pixits.PX_DEVICE_URI_TEL := "+331234567890" + +LibNg112_Pics.PICS_LIS_URI := "/api/held"; + +#LibNg112_Pixits.PX_DEVICE_URI_TEL := "+331234567890" # Position +LibNg112_Pixits.PX_DEVICE_URI_TEL := "+331234567891" # Circle +LibNg112_Pixits.PX_DEVICE_NUMBER_POINT := { 43.616891, 7.053179 } +LibNg112_Pixits.PX_CIRCLE_POS := { 43.617174, 7.05275 } +LibNg112_Pixits.PX_CIRCLE_RADIUS := 15.000 [LOGGING] # In this section you can specify the name of the log file and the classes of events @@ -48,9 +56,12 @@ system.httpPort.params := "HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debu [EXECUTE] # In this section you can specify what parts of your test suite you want to execute. -AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_01 +#AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_01 #AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_02 #AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_03 +#AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_04 +#AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_05 +AtsNg112_TestCases.TC_LIS_HTTP_GET_BV_01 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_01 [GROUPS] diff --git a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn index ea3851c..9cdcfe0 100644 --- a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn +++ b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn @@ -133,8 +133,7 @@ module AtsNg112_TestCases { v_headers, m_http_message_body_xml(m_body_xml_location_request( m_locationRequest( - { encvalue_unichar(valueof(m_device({ PX_DEVICE_URI_TEL }))) }, - m_locationTypeType(m_locationTypeBase_geodetic, true) + { encvalue_unichar(valueof(m_device({ PX_DEVICE_URI_TEL }))) } ) ) ) @@ -179,8 +178,8 @@ module AtsNg112_TestCases { // Extract Circle element from Tuple v_temp := v_geopriv.location_info.elem_list[0]; v_result := decvalue_unichar(v_temp, v_point); - log(match(v_point, mw_point(PX_DEVICE_POSITION))); // FIXME Required by TITAN to get details in case of mismatch - if (match(v_point, mw_point(PX_DEVICE_POSITION))) { + log(match(v_point, mw_point(PX_DEVICE_NUMBER_POINT))); // FIXME Required by TITAN to get details in case of mismatch + if (match(v_point, mw_point(PX_DEVICE_NUMBER_POINT))) { log("*** " & testcasename() & ": PASS: IUT successfully responds with a Point ***"); f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); } else { @@ -259,8 +258,7 @@ module AtsNg112_TestCases { v_headers, m_http_message_body_xml(m_body_xml_location_request( m_locationRequest( - { encvalue_unichar(valueof(m_device({ PX_DEVICE_URI_TEL }))) }, - m_locationTypeType(m_locationTypeBase_geodetic, true) + { encvalue_unichar(valueof(m_device({ PX_DEVICE_URI_TEL }))) } ) ) ) @@ -305,8 +303,8 @@ module AtsNg112_TestCases { // Extract Circle element from Tuple v_temp := v_geopriv.location_info.elem_list[0]; v_result := decvalue_unichar(v_temp, v_circle); - log(match(v_circle, mw_circle(mw_center_group_pos(PX_CIRCLE_POS), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_BASE - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_BASE + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME))); // FIXME Required by TITAN to get details in case of mismatch - if (match(v_circle, mw_circle(mw_center_group_pos(PX_CIRCLE_POS), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_BASE - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_BASE + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME))) { + log(match(v_circle, mw_circle(mw_center_group_pos(PX_CIRCLE_POS), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_RADIUS - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_RADIUS + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME))); // FIXME Required by TITAN to get details in case of mismatch + if (match(v_circle, mw_circle(mw_center_group_pos(PX_CIRCLE_POS), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_RADIUS - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_RADIUS + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME))) { log("*** " & testcasename() & ": PASS: IUT successfully responds with a Point ***"); f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); } else { @@ -340,6 +338,264 @@ module AtsNg112_TestCases { f_cf_01_http_down(); } // End of testcase TC_LIS_HTTP_POST_BV_02 + /** + * @desc IUT successfully responds with a reference when it receives a HTTP POST location request with location type locationURI and exact attribute + * @reference + * ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS) + * Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10 + * https://tools.ietf.org/html/rfc5985 + * @remark PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD + *
+     * Initial conditions with {
+     *   the IUT entity havingLocationMappingFor the DEVICE_NUMBER containing
+     *     "circle" containing
+     *       "position" indicating value CIRCLE_POS,
+     *       "radius"    indicating value CIRCLE_RADIUS
+     *     ;
+     *   ;
+     * }
+     * 
+ */ + testcase TC_LIS_HTTP_POST_BV_03() runs on HttpComponent system TestAdapter { + // Local variables + var HeaderLines v_headers; + var HttpMessage v_response; + + // Test control + if (not(PICS_LIS_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_LOCATION_HELD)) { + log("*** " & testcasename() & ": PICS_LIS_IUT and PICS_HTTP_POST_REQUEST and PICS_LOCATION_HELD required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_01_http_up(); + + // Test adapter configuration + + // Preamble + f_init_default_headers_list(v_headers); + f_remove_headears_list({ c_header_accept }, v_headers); + httpPort.send( + m_http_request( + m_http_request_post( + PICS_LIS_URI, + v_headers, + m_http_message_body_xml(m_body_xml_location_request( + m_locationRequest( + { encvalue_unichar(valueof(m_device({ PX_DEVICE_URI_TEL }))) }, + m_locationTypeType( + m_locationTypeBase_locationUri, + true + ) + ) + ) + ) + ) + ) + ); + f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success); + + // Test body + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_body_xml_location_response( + mw_locationResponse(-, ?) + ))))) -> value v_response { + var Presence v_presence; + var Tuple v_tuple; + var Geopriv v_geopriv; + var Circle v_circle; + var universal charstring v_temp; + var integer v_result; + + tc_ac.stop; + + // Extract presence element from Location-Response + v_temp := v_response.response.body.xml_body.locationResponse.elem_list[0]; + v_result := decvalue_unichar(v_temp, v_presence); + if (v_result == 0) { + log(match(v_presence, mw_presence)); // FIXME Required by TITAN to get details in case of mismatch + if (match(v_presence, mw_presence)) { + // Extract first Tuple element from Presence + v_tuple := v_presence.tuple_list[0]; + v_temp := v_tuple.status.elem_list[0]; + // Extract Geopriv element from Tuple + v_result := decvalue_unichar(v_temp, v_geopriv); + if (v_result == 0) { + log(match(v_geopriv, mw_geopriv(mw_location_info({ ? })))); // FIXME Required by TITAN to get details in case of mismatch + if (match(v_geopriv, mw_geopriv(mw_location_info({ ? })))) { + // Extract Circle element from Tuple + v_temp := v_geopriv.location_info.elem_list[0]; + v_result := decvalue_unichar(v_temp, v_circle); + log(match(v_circle, mw_circle(mw_center_group_pos(PX_CIRCLE_POS), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_RADIUS - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_RADIUS + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME))); // FIXME Required by TITAN to get details in case of mismatch + if (match(v_circle, mw_circle(mw_center_group_pos(PX_CIRCLE_POS), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_RADIUS - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_RADIUS + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME))) { + log("*** " & testcasename() & ": PASS: IUT successfully responds with a Point ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } else { + log("*** " & testcasename() & ": FAIL: Incorrect Circle position ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } else { + log("*** " & testcasename() & ": FAIL: Unexpected response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } else { + log("*** " & testcasename() & ": FAIL: Unexpected response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } else { + log("*** " & testcasename() & ": FAIL: Unexpected response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } else { + log("*** " & testcasename() & ": FAIL: Unexpected response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_LIS_HTTP_POST_BV_03 + + /** + * @desc IUT successfully responds with a reference and geodetic location when it receives a HTTP POST location request with location types locationURI and geodetic and exact attribute + * @reference + * ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS) + * Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10 + * https://tools.ietf.org/html/rfc5985 + * @remark PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD + *
+     * Initial conditions with {
+     *   the IUT entity havingLocationMappingFor the DEVICE_NUMBER containing
+     *     "circle" containing
+     *       "position" indicating value CIRCLE_POS,
+     *       "radius"    indicating value CIRCLE_RADIUS
+     *     ;
+     *   ;
+     * }
+     * 
+ */ + testcase TC_LIS_HTTP_POST_BV_04() runs on HttpComponent system TestAdapter { + // Local variables + var HeaderLines v_headers; + var HttpMessage v_response; + + // Test control + if (not(PICS_LIS_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_LOCATION_HELD)) { + log("*** " & testcasename() & ": PICS_LIS_IUT and PICS_HTTP_POST_REQUEST and PICS_LOCATION_HELD required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_01_http_up(); + + // Test adapter configuration + + // Preamble + f_init_default_headers_list(v_headers); + f_remove_headears_list({ c_header_accept }, v_headers); + httpPort.send( + m_http_request( + m_http_request_post( + PICS_LIS_URI, + v_headers, + m_http_message_body_xml(m_body_xml_location_request( + m_locationRequest( + { encvalue_unichar(valueof(m_device({ PX_DEVICE_URI_TEL }))) }, + m_locationTypeType( + m_locationTypeBase_geodetic, + true + ) + ) + ) + ) + ) + ) + ); + f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success); + + // Test body + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_body_xml_location_response( + mw_locationResponse(-, ?) + ))))) -> value v_response { + var Presence v_presence; + var Tuple v_tuple; + var Geopriv v_geopriv; + var Circle v_circle; + var universal charstring v_temp; + var integer v_result; + + tc_ac.stop; + + // Extract presence element from Location-Response + v_temp := v_response.response.body.xml_body.locationResponse.elem_list[0]; + v_result := decvalue_unichar(v_temp, v_presence); + if (v_result == 0) { + log(match(v_presence, mw_presence)); // FIXME Required by TITAN to get details in case of mismatch + if (match(v_presence, mw_presence)) { + // Extract first Tuple element from Presence + v_tuple := v_presence.tuple_list[0]; + v_temp := v_tuple.status.elem_list[0]; + // Extract Geopriv element from Tuple + v_result := decvalue_unichar(v_temp, v_geopriv); + if (v_result == 0) { + log(match(v_geopriv, mw_geopriv(mw_location_info({ ? })))); // FIXME Required by TITAN to get details in case of mismatch + if (match(v_geopriv, mw_geopriv(mw_location_info({ ? })))) { + // Extract Circle element from Tuple + v_temp := v_geopriv.location_info.elem_list[0]; + v_result := decvalue_unichar(v_temp, v_circle); + log(match(v_circle, mw_circle(mw_center_group_pos(PX_CIRCLE_POS), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_RADIUS - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_RADIUS + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME))); // FIXME Required by TITAN to get details in case of mismatch + if (match(v_circle, mw_circle(mw_center_group_pos(PX_CIRCLE_POS), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_RADIUS - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_RADIUS + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME))) { + log("*** " & testcasename() & ": PASS: IUT successfully responds with a Point ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } else { + log("*** " & testcasename() & ": FAIL: Incorrect Circle position ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } else { + log("*** " & testcasename() & ": FAIL: Unexpected response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } else { + log("*** " & testcasename() & ": FAIL: Unexpected response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } else { + log("*** " & testcasename() & ": FAIL: Unexpected response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } else { + log("*** " & testcasename() & ": FAIL: Unexpected response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_LIS_HTTP_POST_BV_04 + /** * @desc "IUT successfully responds with an error response when it receives a HTTP POST location request for an unknown device" * @reference @@ -358,7 +614,7 @@ module AtsNg112_TestCases { * } * */ - testcase TC_LIS_HTTP_POST_BV_03() runs on HttpComponent system TestAdapter { + testcase TC_LIS_HTTP_POST_BV_05() runs on HttpComponent system TestAdapter { // Local variables var HeaderLines v_headers; var HttpMessage v_response; @@ -417,7 +673,128 @@ module AtsNg112_TestCases { // Postamble f_cf_01_http_down(); - } // End of testcase TC_LIS_HTTP_POST_BV_03 + } // End of testcase TC_LIS_HTTP_POST_BV_05 + + /** + * @desc IUT successfully returns the location when a locationURI is dereferenced + * @reference + * ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS) + * Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10 + * https://tools.ietf.org/html/rfc5985 + * @remark PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD + *
+     * Initial conditions with {
+     *   the IUT entity havingLocationMappingFor the DEVICE_NUMBER containing
+     *     "circle" containing
+     *       "position" indicating value CIRCLE_POS,
+     *       "radius"    indicating value CIRCLE_RADIUS
+     *     ;
+     *   ; and the IUT entity havingReturnedLocationUriFor the DEVICE_NUMBER_CIRCLE containing
+            element "locationURI" indicating value LOCATION_URI
+     *      ;
+     * }
+     * 
+ */ + testcase TC_LIS_HTTP_GET_BV_01() runs on HttpComponent system TestAdapter { + // Local variables + var HeaderLines v_headers; + var HttpMessage v_response; + + // Test control + if (not(PICS_LIS_IUT) or (not PICS_HTTP_GET_REQUEST) or (not PICS_LOCATION_HELD)) { + log("*** " & testcasename() & ": PICS_LIS_IUT and PICS_HTTP_GET_REQUEST and PICS_LOCATION_HELD required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_01_http_up(); + + // Test adapter configuration + + // Preamble + f_init_default_headers_list(v_headers); + f_remove_headears_list({ c_header_accept }, v_headers); + httpPort.send( + m_http_request( + m_http_request_get( + PICS_LIS_URI, + v_headers + ) + ) + ); + f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success); + + // Test body + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_xml( + mw_body_xml_location_response( + mw_locationResponse(-, ?) + ))))) -> value v_response { + var Presence v_presence; + var Tuple v_tuple; + var Geopriv v_geopriv; + var Circle v_circle; + var universal charstring v_temp; + var integer v_result; + + tc_ac.stop; + + // Extract presence element from Location-Response + v_temp := v_response.response.body.xml_body.locationResponse.elem_list[0]; + v_result := decvalue_unichar(v_temp, v_presence); + if (v_result == 0) { + log(match(v_presence, mw_presence)); // FIXME Required by TITAN to get details in case of mismatch + if (match(v_presence, mw_presence)) { + // Extract first Tuple element from Presence + v_tuple := v_presence.tuple_list[0]; + v_temp := v_tuple.status.elem_list[0]; + // Extract Geopriv element from Tuple + v_result := decvalue_unichar(v_temp, v_geopriv); + if (v_result == 0) { + log(match(v_geopriv, mw_geopriv(mw_location_info({ ? })))); // FIXME Required by TITAN to get details in case of mismatch + if (match(v_geopriv, mw_geopriv(mw_location_info({ ? })))) { + // Extract Circle element from Tuple + v_temp := v_geopriv.location_info.elem_list[0]; + v_result := decvalue_unichar(v_temp, v_circle); + log(match(v_circle, mw_circle(mw_center_group_pos(PX_CIRCLE_POS), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_RADIUS - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_RADIUS + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME))); // FIXME Required by TITAN to get details in case of mismatch + if (match(v_circle, mw_circle(mw_center_group_pos(PX_CIRCLE_POS), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_RADIUS - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_RADIUS + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME))) { + log("*** " & testcasename() & ": PASS: IUT successfully responds with a Point ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } else { + log("*** " & testcasename() & ": FAIL: Incorrect Circle position ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } else { + log("*** " & testcasename() & ": FAIL: Unexpected response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } else { + log("*** " & testcasename() & ": FAIL: Unexpected response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } else { + log("*** " & testcasename() & ": FAIL: Unexpected response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } else { + log("*** " & testcasename() & ": FAIL: Unexpected response ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_LIS_HTTP_GET_BV_01 } // End of group lis_role @@ -556,20 +933,20 @@ module AtsNg112_TestCases { v_headers, m_http_message_body_xml( m_body_xml_find_service_request( - m_find_service_request( - { - m_location( - PX_LOST_ID, - { m_extension_point( { m_notLost(encvalue_unichar(valueof(m_circle(m_center_group_pos(PX_CIRCLE_POS), m_radius(PX_CIRCLE_UOM, PX_CIRCLE_BASE), PX_SRS_NAME, "circle1")))) } ) }, - "geodetic-2d" // TODO Use a Pixit - ) - }, - { m_notLost(encvalue_unichar(valueof(m_circle(mw_center_group_pos(PX_CIRCLE_POS), m_radius(PX_CIRCLE_UOM, PX_CIRCLE_BASE), PX_SRS_NAME, "circle1")))) }, - PX_LOST_SERVICE_URN_2, - true, - value_ - ))) - ))); + m_find_service_request( + { + m_location( + PX_LOST_ID, + { m_extension_point( { m_notLost(encvalue_unichar(valueof(m_circle(m_center_group_pos(PX_CIRCLE_POS), m_radius(PX_CIRCLE_UOM, PX_CIRCLE_RADIUS), PX_SRS_NAME, "circle1")))) } ) }, + "geodetic-2d" // TODO Use a Pixit + ) + }, + { m_notLost(encvalue_unichar(valueof(m_circle(mw_center_group_pos(PX_CIRCLE_POS), m_radius(PX_CIRCLE_UOM, PX_CIRCLE_RADIUS), PX_SRS_NAME, "circle1")))) }, + PX_LOST_SERVICE_URN_2, + true, + value_ + ))) + ))); f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success); // Test body diff --git a/ttcn/AtsNg112/AtsNg112_TestControl.ttcn b/ttcn/AtsNg112/AtsNg112_TestControl.ttcn index 0b7ec84..a178075 100644 --- a/ttcn/AtsNg112/AtsNg112_TestControl.ttcn +++ b/ttcn/AtsNg112/AtsNg112_TestControl.ttcn @@ -13,6 +13,11 @@ module AtsNg112_TestControl { execute(TC_LIS_HTTP_POST_BV_01()); execute(TC_LIS_HTTP_POST_BV_02()); execute(TC_LIS_HTTP_POST_BV_03()); + execute(TC_LIS_HTTP_POST_BV_04()); + execute(TC_LIS_HTTP_POST_BV_05()); + } + if (PICS_HTTP_GET_REQUEST and PICS_LOCATION_HELD) { + execute(TC_LIS_HTTP_GET_BV_01()); } } if (PICS_ECRF_IUT) { diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn index 914d8f9..531b2b6 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn @@ -13,7 +13,12 @@ module LibNg112_Pics { modulepar boolean PICS_ECRF_IUT := true; /** - * @desc Does the IUT support HTTP POST request? + * @desc Does the IUT support HTTP GET request method? + */ + modulepar boolean PICS_HTTP_GET_REQUEST := true; + + /** + * @desc Does the IUT support HTTP POST request method? */ modulepar boolean PICS_HTTP_POST_REQUEST := true; @@ -30,7 +35,7 @@ module LibNg112_Pics { /** * @desc */ - modulepar charstring PICS_LIS_URI := "/api/held"; + modulepar charstring PICS_LIS_URI := "/location"; /** * @desc HTTP POST Uris diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn index 92a82af..81dbcb1 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn @@ -31,30 +31,30 @@ module LibNg112_Pixits { * @desc Device identifier using SIP uri */ modulepar charstring PX_DEVICE_URI_SIP := "sip:user@example.net;gr=kjh29x97us97d"; - + /** * @desc Device identifier using TEL uri */ modulepar charstring PX_DEVICE_URI_TEL := "+436501234567"; - + /** * @desc Unknown device identifier */ modulepar charstring PX_UNKNOWN_DEVICE_URI := "sip:no_one@example.net;gr=kjh29x97us97d"; - + /** * @desc Device point position */ - modulepar DoubleList PX_DEVICE_POSITION := { -34.400, 134.400 }; - + modulepar DoubleList PX_DEVICE_NUMBER_POINT := { 43.616891, 7.053179 }; + /** * @desc Device position with a circle of conficence */ - modulepar DoubleList PX_CIRCLE_POS := { 48.2153879, 16.2903 }; + modulepar DoubleList PX_CIRCLE_POS := { 43.617174, 7.05275 }; modulepar XSD.AnyURI PX_CIRCLE_UOM := "urn:ogc:def:uom:EPSG::9001"; - modulepar XSD.Double PX_CIRCLE_BASE := 23.600000381469727; + modulepar XSD.Double PX_CIRCLE_RADIUS := 15.000; modulepar XSD.AnyURI PX_SRS_NAME := "urn:ogc:def:crs:EPSG::4326"; diff --git a/ttcn/TestCodec/TestCodec_Invite.ttcn b/ttcn/TestCodec/TestCodec_Invite.ttcn index 21fca89..91c3978 100644 --- a/ttcn/TestCodec/TestCodec_Invite.ttcn +++ b/ttcn/TestCodec/TestCodec_Invite.ttcn @@ -33,6 +33,12 @@ module TestCodec_Invite { if (v_result == 0) { setverdict(pass, "Decode match"); + log(match(v_dec_msg, mw_INVITE_Request_Base)); + if (match(v_dec_msg, mw_INVITE_Request_Base)) { + setverdict(pass, "Decoding match"); + } else { + setverdict(fail, "decoding mismatch"); + } } else { setverdict(fail, "Decode failure"); } diff --git a/ttcn/TestCodec/TestCodec_Register.ttcn b/ttcn/TestCodec/TestCodec_Register.ttcn index f9a25da..763e239 100644 --- a/ttcn/TestCodec/TestCodec_Register.ttcn +++ b/ttcn/TestCodec/TestCodec_Register.ttcn @@ -33,6 +33,7 @@ module TestCodec_Register { if (v_result == 0) { setverdict(pass, "Decode match"); + log(match(v_dec_msg, mw_REGISTER_Request_Base)); if (match(v_dec_msg, mw_REGISTER_Request_Base)) { setverdict(pass, "Decoding match"); } else { @@ -61,7 +62,7 @@ module TestCodec_Register { } )); var bitstring v_enc_msg := fx_enc_REGISTER_Request (v_org_msg); - var integer v_result := fx_dec_REGISTER_Request (v_enc_msg, v_dec_msg); + var integer v_result := fx_dec_REGISTER_Request (v_enc_msg, v_dec_msg); if (v_result == 0) { if (match(v_dec_msg, v_org_msg)) { diff --git a/ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn b/ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn index adfc297..9385404 100644 --- a/ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn +++ b/ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn @@ -126,6 +126,8 @@ module LibItsHttp_XmlTemplates { locationType := p_locationType, elem_list := p_elem_list } // End of template m_locationRequest + + //template (value) Uri m_uri(in template (value) Uri p_uri) := p_uri; template LocationResponseType mw_locationResponse( template ReturnLocationType p_locationUriSet := *, @@ -155,6 +157,12 @@ module LibItsHttp_XmlTemplates { } } // End of template m_locationTypeBase_geodetic + template (value) LocationTypeBase m_locationTypeBase_locationUri := { + alt_1 := { + locationURI + } + } // End of template m_locationTypeBase_locationUri + template (value) LocationTypeBase m_locationTypeBase_all := { alt_1 := { geodetic, civic @@ -338,7 +346,7 @@ module LibItsHttp_XmlTemplates { in template (value) Pos p_position, in template (omit) XSD.AnyURI p_srsName := omit, in template (omit) XSD.AnyURI p_id := omit - ) := { + ) := { point := { axisLabels := omit, gid := omit, @@ -365,6 +373,22 @@ module LibItsHttp_XmlTemplates { } } // End of template mw_point + template (omit) CircleType m_circle( + in template (value) CenterGroup p_centerGroup, + in template (value) LengthType p_radius, + in template (omit) XSD.AnyURI p_srsName := omit, + in template (omit) XSD.AnyURI p_id := omit + ) := { + axisLabels := omit, + gid := omit, + id := omit, + srsDimension := omit, + srsName := p_srsName, + uomLabels := omit, + centerGroup := p_centerGroup, + radius := p_radius + } // End of template m_circle + template CircleType mw_circle( template (present) CenterGroup p_centerGroup := ?, template (present) LengthType p_radius := ?, @@ -380,12 +404,26 @@ module LibItsHttp_XmlTemplates { radius := p_radius } // End of template mw_circle + template (value) CenterGroup m_center_group_pos( + in template (value) CenterGroup.pos p_pos + ) := { + pos := p_pos + } // End of template m_center_group_pos + template (present) CenterGroup mw_center_group_pos( template (present) CenterGroup.pos p_pos := ? ) := { - pos := p_pos + pos := p_pos } // End of template mw_center_group_pos + template (value) LengthType m_radius( + in template (value) XSD.AnyURI p_uom, + in template (value) XSD.Double p_base + ) := { + uom := p_uom, + base := p_base + } // End of template m_radius + template (present) LengthType mw_radius( template (present) XSD.AnyURI p_uom := ?, template (present) XSD.Double p_base := ? diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs index dffc6b5..a7fb09f 100644 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs @@ -1,2 +1,3 @@ +description.autobuilding=false eclipse.preferences.version=1 version=1 -- GitLab From 3b740c327f23d6b8a767c06acc6db5284b57f31b Mon Sep 17 00:00:00 2001 From: garciay Date: Fri, 27 Jul 2018 09:10:00 +0200 Subject: [PATCH 72/72] LIS validation against real equipment - SIP Codec --- .../Protocols/Sip/sip_codec_invite_request.cc | 46 +++++++++++++++++++ .../Protocols/Sip/sip_codec_invite_request.hh | 27 +++++++++++ 2 files changed, 73 insertions(+) create mode 100644 ccsrc/Protocols/Sip/sip_codec_invite_request.cc create mode 100644 ccsrc/Protocols/Sip/sip_codec_invite_request.hh diff --git a/ccsrc/Protocols/Sip/sip_codec_invite_request.cc b/ccsrc/Protocols/Sip/sip_codec_invite_request.cc new file mode 100644 index 0000000..a9b2906 --- /dev/null +++ b/ccsrc/Protocols/Sip/sip_codec_invite_request.cc @@ -0,0 +1,46 @@ +#include "LibSip_SIPTypesAndValues.hh" + +#include "sip_codec_invite_request.hh" +#include "loggers.hh" + +int sip_codec_invite_request::encode (const LibSip__SIPTypesAndValues::INVITE__Request& msg, OCTETSTRING& data) +{ + loggers::get_instance().log_msg(">>> sip_codec_invite_request::encode: ", (const Base_Type&)msg); + + if (_codec.encode((LibSip__SIPTypesAndValues::Request&)msg, data) == -1) { + loggers::get_instance().warning("sip_codec_invite_request::encode: Failed to encode message"); + return -1; + } + + loggers::get_instance().log_msg("<<< sip_codec_invite_request::encode: data=", data); + return 0; +} + +int sip_codec_invite_request::decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::INVITE__Request& msg, params* p_params) +{ + loggers::get_instance().log_msg(">>> sip_codec_invite_request::decode: data=", data); + + // Sanity checks + if (data.lengthof() == 0) { + loggers::get_instance().warning("sip_codec_invite_request::decode: Wrong parameters"); + return -1; + } + + // LibSip__SIPTypesAndValues::Request request; + if (_codec.decode(data, (LibSip__SIPTypesAndValues::Request&)msg) == -1) { + // if (_codec.decode(data, request) == -1) { + loggers::get_instance().warning("sip_codec_invite_request::decode: Failed to decode message"); + return -1; + } + // msg.requestLine() = request.requestLine(); + // msg.msgHeader() = request.msgHeader(); + // msg.messageBody() = request.messageBody(); + // msg.payload() = request.payload(); + + if (msg.requestLine().method() != LibSip__SIPTypesAndValues::Method::INVITE__E) { + loggers::get_instance().warning("sip_codec_invite_request::decode: Wrong SIP Method, expected INVITE"); + return -1; + } + + return 0; +} diff --git a/ccsrc/Protocols/Sip/sip_codec_invite_request.hh b/ccsrc/Protocols/Sip/sip_codec_invite_request.hh new file mode 100644 index 0000000..7c1dab1 --- /dev/null +++ b/ccsrc/Protocols/Sip/sip_codec_invite_request.hh @@ -0,0 +1,27 @@ +#pragma once + +#include "codec.hh" +#include "params.hh" + +#include "sip_codec_request.hh" + +class Base_Type; +class TTCN_Typedescriptor_t; +class TTCN_Buffer; + +namespace LibSip__SIPTypesAndValues { + class INVITE__Request; +} + +class sip_codec_invite_request: public codec < +LibSip__SIPTypesAndValues::INVITE__Request, +LibSip__SIPTypesAndValues::INVITE__Request> +{ + sip_codec_request _codec; +public: + explicit sip_codec_invite_request() : codec(), _codec() { }; + virtual ~sip_codec_invite_request() { }; + + virtual int encode (const LibSip__SIPTypesAndValues::INVITE__Request& msg, OCTETSTRING& data); + virtual int decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::INVITE__Request& msg, params* p_params = NULL); +}; // End of class sip_codec_invite_request -- GitLab

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 - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn - - true - - - - - - src/ttcn/ttcn/TestCodec - - false - true - - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/75/601787eeac8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/75/601787eeac8500181eabf1ba1ea37ea1 deleted file mode 100644 index d80fac3..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/75/601787eeac8500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,131 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - None - std=c++11 - - pcap - ssl - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn - - true - - - - - - src/ttcn/ttcn/TestCodec - - false - true - - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/75/a093cf0ab985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/75/a093cf0ab985001814de869e8ad08251 deleted file mode 100644 index 0109021..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/75/a093cf0ab985001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 11:50:39 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC - -# Flags for the linker: -LDFLAGS = -pthread,-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/7c/e0832037b685001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/7c/e0832037b685001814de869e8ad08251 deleted file mode 100644 index 8c06418..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/7c/e0832037b685001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 11:30:27 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall-std=c++11-pthread-fPIC - -# Flags for the linker: -LDFLAGS = -pthread-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/8/b004d5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/8/b004d5e1978500181c21d10bc58219ba deleted file mode 100644 index fba1c59..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/8/b004d5e1978500181c21d10bc58219ba +++ /dev/null @@ -1,4 +0,0 @@ -#include "loggers.hh" - -std::unique_ptr loggers::_instance = static_cast>(new loggers); - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/80/b0a46cd6b185001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/80/b0a46cd6b185001814de869e8ad08251 deleted file mode 100644 index 68134d3..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/80/b0a46cd6b185001814de869e8ad08251 +++ /dev/null @@ -1,159 +0,0 @@ -10:45:33.761930 EXECUTOR - TTCN-3 Host Controller started on vagrant. Version: CRL 113 200/6 R4A. -10:45:33.761966 EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error -10:45:33.761970 EXECUTOR - Maximum number of open file descriptors: 1048576, FD_SETSIZE = 1024 -10:45:33.762077 WARNING - Warning: The address of MC was set to a local IP address. This may cause incorrect behavior if a HC from a remote host also connects to MC. -10:45:33.762084 EXECUTOR - The address of MC was set to 127.0.0.1:0. -10:45:33.766623 EXECUTOR - Connected to MC. -10:45:33.766734 EXECUTOR - This host supports UNIX domain sockets for local communication. -10:45:33.767039 EXECUTOR - Processing configuration data received from MC. -10:45:33.767643 EXECUTOR - Module LibCommon_Sync has the following parameters: { PX_TSYNC_TIME_LIMIT := 120.000000, PX_TSHUT_DOWN_TIME_LIMIT := 120.000000 } -10:45:33.767693 EXECUTOR - Module LibCommon_Time has the following parameters: { PX_TDONE := 120.000000, PX_TAC := 30.000000, PX_TNOAC := 10.000000, PX_TWAIT := 120.000000, PX_LOOP := 1.000000 } -10:45:33.767751 EXECUTOR - Module LibItsHttp_Pics has the following parameters: { PICS_HEADER_HOST := "ptsv2.com", PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8" } -10:45:33.767802 EXECUTOR - Module LibNg112_Pics has the following parameters: { PICS_LIS_IUT := true, PICS_ECRF_IUT := false, PICS_HTTP_POST_REQUEST := true, PICS_LOCATION_HELD := true, PICS_SERVICE_LOST := true, PICS_LIS_REQUEST_URIs := { "/t/9rk8l-1531130342/post", "/t/r143f-1528105031/post", "/t/6ouem-1531201238/post" }, PICS_ECRF_URI := "/service" } -10:45:33.768211 EXECUTOR - Module LibNg112_Pixits has the following parameters: { PX_DOUBLE_CMP_EPSILON := 1.000000e-05, PX_DEVICE_URI_SIP := "sip:user@example.net;gr=kjh29x97us97d", PX_DEVICE_URI_TEL := "+436501234567", PX_UNKNOWN_DEVICE_URI := "sip:no_one@example.net;gr=kjh29x97us97d", PX_DEVICE_POSITION := { -34.407000, 150.883000, 24.800000 }, PX_CIRCLE_POS := { 48.215388, 16.290300 }, PX_CIRCLE_UOM := "urn:ogc:def:uom:EPSG::9001", PX_CIRCLE_BASE := 23.600000, PX_SRS_NAME := "urn:ogc:def:crs:EPSG::4326" } -10:45:33.768314 EXECUTOR - Module LibSip_PIXITS has the following parameters: { PX_SIP_SDP_USER_NAME := "voicesession", PX_SIP_SDP_SESSION_ID := "30000", PX_SIP_SDP_DYN := "0", PX_SIP_SDP_B_MODIFIER := "AS", PX_SIP_SDP_B_BANDWIDTH := 64, PX_SIP_SDP_ENCODING := "PCMU", PX_SIP_SDP_CLOCKRATE := "8000", PX_MB_LENGTH_FROM_ENCVAL := true, PX_USE_FX_FOR_XML_LENGTH := false, PX_SIP_TRANSPORT := "UDP", PX_SIP_REGISTRATION := false, PX_AUTH_ALGORITHM := "AKAv1-MD5", PX_SIP_REGISTER_AUTHENTICATION_ENABLED := true, PX_SIP_INVITE_AUTHENTICATION_ENABLED := false, PX_SIP_TWAIT := 30.000000, PX_SIP_TACK := 8.000000, PX_SIP_TRESP := 15.000000, PX_SIP_TNOACT := 1.000000, PX_SIP_MIME_BOUNDARY := "boundary1" } -10:45:33.776982 EXECUTOR - Initializing module AtsNg112_TestCases. -10:45:33.779421 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibItsHttp_Functions. -10:45:33.779522 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_TypesAndValues. -10:45:33.779574 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0 Initializing module LibItsHttp_MessageBodyTypes. -10:45:33.779628 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XmlMessageBodyTypes. -10:45:33.779687 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XMLTypes. -10:45:33.779762 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held. -10:45:33.779835 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initializing module http_www_w3_org_XML_1998_namespace. -10:45:33.779951 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initializing module XSD. -10:45:33.780058 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn:0 Initializing module UsefulTtcn3Types. -10:45:33.780144 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn:0 Initialization of module UsefulTtcn3Types finished. -10:45:33.780222 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initialization of module XSD finished. -10:45:33.780294 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initialization of module http_www_w3_org_XML_1998_namespace finished. -10:45:33.780406 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held finished. -10:45:33.780480 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held_id. -10:45:33.780546 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held_id finished. -10:45:33.783484 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10. -10:45:33.783580 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy. -10:45:33.783651 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy finished. -10:45:33.783723 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10 finished. -10:45:33.783788 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc. -10:45:33.783895 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc finished. -10:45:33.783963 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf. -10:45:33.784039 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf finished. -10:45:33.784103 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XMLTypes finished. -10:45:33.784164 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XmlMessageBodyTypes finished. -10:45:33.784223 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_BinaryMessageBodyTypes. -10:45:33.784282 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_BinaryMessageBodyTypes finished. -10:45:33.784340 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0 Initialization of module LibItsHttp_MessageBodyTypes finished. -10:45:33.784476 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_TypesAndValues finished. -10:45:33.784527 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_Pics. -10:45:33.784577 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_Pics finished. -10:45:33.784628 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibItsHttp_Functions finished. -10:45:33.784672 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Templates. -10:45:33.784716 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Templates finished. -10:45:33.786933 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Functions. -10:45:33.787029 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_Templates. -10:45:33.787080 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_Templates finished. -10:45:33.787129 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_XmlTemplates. -10:45:33.787178 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape. -10:45:33.787235 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0 Initializing module http_www_opengis_net_pidflo_1_0. -10:45:33.787309 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn:0 Initializing module http_www_opengis_net_gml. -10:45:33.787417 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn:0 Initialization of module http_www_opengis_net_gml finished. -10:45:33.787493 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0 Initialization of module http_www_opengis_net_pidflo_1_0 finished. -10:45:33.787553 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape finished. -10:45:33.787613 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_XmlTemplates finished. -10:45:33.787663 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TypesAndValues. -10:45:33.787712 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TypesAndValues finished. -10:45:33.787760 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TestSystem. -10:45:33.787810 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibItsHttp_TestSystem. -10:45:33.787906 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Sync. -10:45:33.787968 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initializing module LibCommon_AbstractData. -10:45:33.788032 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0->../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initializing module LibCommon_BasicTypesAndValues. -10:45:33.788098 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0->../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initialization of module LibCommon_BasicTypesAndValues finished. -10:45:33.788174 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_AbstractData finished. -10:45:33.788237 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initializing module LibCommon_VerdictControl. -10:45:33.788305 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_VerdictControl finished. -10:45:33.788412 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Sync finished. -10:45:33.788473 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Time. -10:45:33.788533 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Time finished. -10:45:33.788593 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibItsHttp_TestSystem finished. -10:45:33.788648 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibSip_Interface. -10:45:33.788703 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_SIPTypesAndValues. -10:45:33.788765 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0 Initializing module LibSip_MessageBodyTypes. -10:45:33.788828 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SDPTypes. -10:45:33.793010 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn:0 Initializing module LibSip_Common. -10:45:33.793098 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn:0 Initialization of module LibSip_Common finished. -10:45:33.793168 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SDPTypes finished. -10:45:33.793236 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SimpleMsgSummaryTypes. -10:45:33.793697 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SimpleMsgSummaryTypes finished. -10:45:33.793770 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_XMLTypes. -10:45:33.793838 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_resource_lists. -10:45:33.793953 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_resource_lists finished. -10:45:33.794024 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_xcap. -10:45:33.794110 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_ietf_params_xml_ns_common_policy. -10:45:33.801059 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_ietf_params_xml_ns_common_policy finished. -10:45:33.801196 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_oma_xml_xdm_common_policy. -10:45:33.801272 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_oma_xml_xdm_common_policy finished. -10:45:33.801357 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_xcap finished. -10:45:33.801485 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_mcid. -10:45:33.801555 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_mcid finished. -10:45:33.801625 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module NoTargetNamespace. -10:45:33.801696 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module NoTargetNamespace finished. -10:45:33.801777 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_3gpp_ns_cw_1_0. -10:45:33.801858 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_3gpp_ns_cw_1_0 finished. -10:45:33.801958 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_conference_info. -10:45:33.802029 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_conference_info finished. -10:45:33.802098 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_pstn. -10:45:33.802168 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_pstn finished. -10:45:33.802237 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_comm_div_info. -10:45:33.802307 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_comm_div_info finished. -10:45:33.802424 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_reginfo. -10:45:33.802495 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_reginfo finished. -10:45:33.802564 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_XMLTypes finished. -10:45:33.802631 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0 Initialization of module LibSip_MessageBodyTypes finished. -10:45:33.802694 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_SIPTypesAndValues finished. -10:45:33.802754 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_PIXITS. -10:45:33.802814 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initializing module LibCommon_DataStrings. -10:45:33.802928 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initialization of module LibCommon_DataStrings finished. -10:45:33.802992 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_PIXITS finished. -10:45:33.803052 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibSip_Interface finished. -10:45:33.803107 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TestSystem finished. -10:45:33.803163 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Functions finished. -10:45:33.803207 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pics. -10:45:33.803250 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pics finished. -10:45:33.803293 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pixits. -10:45:33.807410 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pixits finished. -10:45:33.807517 EXECUTOR - Initialization of module AtsNg112_TestCases finished. -10:45:33.807561 EXECUTOR - Initializing module AtsNg112_TestControl. -10:45:33.807603 EXECUTOR - Initialization of module AtsNg112_TestControl finished. -10:45:33.807645 EXECUTOR - Initializing module LibCommon_TextStrings. -10:45:33.807688 EXECUTOR - Initialization of module LibCommon_TextStrings finished. -10:45:33.807730 EXECUTOR - Initializing module LibItsHttp_BinaryTemplates. -10:45:33.807772 EXECUTOR - Initialization of module LibItsHttp_BinaryTemplates finished. -10:45:33.807814 EXECUTOR - Initializing module LibItsHttp_BinaryTypes. -10:45:33.807899 EXECUTOR - Initialization of module LibItsHttp_BinaryTypes finished. -10:45:33.807945 EXECUTOR - Initializing module LibItsHttp_EncdecDeclarations. -10:45:33.807986 EXECUTOR - Initialization of module LibItsHttp_EncdecDeclarations finished. -10:45:33.808028 EXECUTOR - Initializing module LibNg112_EncdecDeclarations. -10:45:33.808070 EXECUTOR - Initialization of module LibNg112_EncdecDeclarations finished. -10:45:33.808112 EXECUTOR - Initializing module LibSip_EncdecDeclarations. -10:45:33.808153 EXECUTOR ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn:0 Initializing module LibSip_SMSTypesAndValues. -10:45:33.808198 EXECUTOR ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn:0 Initialization of module LibSip_SMSTypesAndValues finished. -10:45:33.808243 EXECUTOR - Initialization of module LibSip_EncdecDeclarations finished. -10:45:33.808284 EXECUTOR - Initializing module LibSip_Library. -10:45:33.808326 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_SMSTemplates. -10:45:33.808412 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn:0 Initializing module LibSip_SMSFunctions. -10:45:33.808463 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn:0 Initialization of module LibSip_SMSFunctions finished. -10:45:33.810943 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_SMSTemplates finished. -10:45:33.811025 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_Steps. -10:45:33.811070 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn:0 Initializing module LibSip_Templates. -10:45:33.814808 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn:0 Initialization of module LibSip_Templates finished. -10:45:33.819438 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_Steps finished. -10:45:33.819539 EXECUTOR - Initialization of module LibSip_Library finished. -10:45:33.819583 EXECUTOR - Initializing module PreGenRecordOf. -10:45:33.819624 EXECUTOR - Initialization of module PreGenRecordOf finished. -10:45:33.819665 EXECUTOR - Initializing module TitanLoggerApi. -10:45:33.819707 EXECUTOR - Initialization of module TitanLoggerApi finished. -10:45:33.819749 EXECUTOR - Initializing module urn_ietf_params_xml_ns_geopriv_conf. -10:45:33.819792 EXECUTOR - Initialization of module urn_ietf_params_xml_ns_geopriv_conf finished. -10:45:33.819919 EXECUTOR - Configuration data was processed successfully. -10:45:33.820212 EXECUTOR - MTC was created. Process id: 16092. -10:45:34.860715 EXECUTOR - Exit was requested from MC. Terminating HC. -10:45:34.862156 EXECUTOR - Disconnected from MC. -10:45:34.862206 EXECUTOR - TTCN-3 Host Controller finished. diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/81/8043f232b685001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/81/8043f232b685001814de869e8ad08251 deleted file mode 100644 index 8d9519d..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/81/8043f232b685001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 10:59:12 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall -std=c++11 -pthread -fPIC - -# Flags for the linker: -LDFLAGS = -pthread -fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/84/7015cde1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/84/7015cde1978500181c21d10bc58219ba deleted file mode 100644 index 2a92043..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/84/7015cde1978500181c21d10bc58219ba +++ /dev/null @@ -1,44 +0,0 @@ -/*! - * \file udp_layer_factory.hh - * \brief Header file for ITS UDP/IP protocol layer factory. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "layer_stack_builder.hh" - -#include "udp_layer.hh" - -/*! - * \class udp_layer_factory - * \brief This class provides a factory class to create an udp_layer class instance - */ -class udp_layer_factory: public layer_factory { - static udp_layer_factory _f; //! Reference to the unique instance of this class -public: //! \publicsection - /*! - * \brief Default constructor - * Create a new instance of the udp_layer_factory class - * \remark The UDP/IP layer identifier is UDP - */ - udp_layer_factory() { - // register factory - layer_stack_builder::register_layer_factory("UDP", this); - }; - /*! - * \fn layer* create_layer(const std::string & type, const std::string & param); - * \brief Create the layers stack based on the provided layers stack description - * \param[in] p_type The provided layers stack description - * \param[in] p_params Optional parameters - * \return 0 on success, -1 otherwise - * \inline - */ - inline virtual layer* create_layer(const std::string& p_type, const std::string& p_param) { - return new udp_layer(p_type, p_param); - }; -}; // End of class udp_layer_factory diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/86/109946f39d8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/86/109946f39d8500181eabf1ba1ea37ea1 deleted file mode 100644 index 9f1a038..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/86/109946f39d8500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,52 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn - - true - - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/86/5074c5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/86/5074c5e1978500181c21d10bc58219ba deleted file mode 100644 index 2b302de..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/86/5074c5e1978500181c21d10bc58219ba +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include "codec.hh" -#include "params.hh" - -class Base_Type; -class TTCN_Typedescriptor_t; -class TTCN_Buffer; - -namespace LibItsHttp__XmlMessageBodyTypes { - class XmlBody; -} - -class held_codec: public codec -{ -public: - explicit held_codec() : codec() { }; - virtual ~held_codec() { }; - - virtual int encode (const LibItsHttp__XmlMessageBodyTypes::XmlBody&, OCTETSTRING& data); - virtual int decode (const OCTETSTRING& p_data, LibItsHttp__XmlMessageBodyTypes::XmlBody&, params* p_params = NULL); - -}; // End of class held_codec diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/8d/003b57dfb985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/8d/003b57dfb985001814de869e8ad08251 deleted file mode 100644 index 7131a74..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/8d/003b57dfb985001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 11:56:39 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC - -# Flags for the linker: -LDFLAGS = -pthread,-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9/2045a71fb985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9/2045a71fb985001814de869e8ad08251 deleted file mode 100644 index 3f01614..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9/2045a71fb985001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 11:51:17 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC - -# Flags for the linker: -LDFLAGS = -pthread,-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/91/a0caebd7b185001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/91/a0caebd7b185001814de869e8ad08251 deleted file mode 100644 index 57ac6b1..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/91/a0caebd7b185001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 08:52:25 UTC 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -std=c++11 -pthread -fPIC - -# Flags for the linker: -LDFLAGS = -pthread -fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/92/c0a9071fb985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/92/c0a9071fb985001814de869e8ad08251 deleted file mode 100644 index 11fdad1..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/92/c0a9071fb985001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 11:51:13 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC - -# Flags for the linker: -LDFLAGS = -pthread,-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/95/60d0d1e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/95/60d0d1e1978500181c21d10bc58219ba deleted file mode 100644 index 8b65a0f..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/95/60d0d1e1978500181c21d10bc58219ba +++ /dev/null @@ -1,82 +0,0 @@ -#include -#include -#include - -#include "held_codec_factory.hh" - -#include "loggers.hh" - -#include "LibItsHttp_XmlMessageBodyTypes.hh" - -#include "urn_ietf_params_xml_ns_geopriv_held.hh" - -int held_codec::encode (const LibItsHttp__XmlMessageBodyTypes::XmlBody& msg, OCTETSTRING& data) -{ - loggers::get_instance().log_msg(">>> held_codec::encode: ", (const Base_Type&)msg); - - TTCN_EncDec::clear_error(); - TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); - TTCN_Buffer encoding_buffer; - - if (msg.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_locationRequest)) { - const urn__ietf__params__xml__ns__geopriv__held::LocationRequestType& location_request = msg.locationRequest(); - loggers::get_instance().log_msg("held_codec::encode: Process LocationRequestType", (const Base_Type&)location_request); - location_request.encode(urn__ietf__params__xml__ns__geopriv__held::LocationRequest_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); - } else if (msg.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_locationResponse)) { - const urn__ietf__params__xml__ns__geopriv__held::LocationResponseType& location_response = msg.locationResponse(); - loggers::get_instance().log_msg("held_codec::encode: Process LocationResponseType", (const Base_Type&)location_response); - location_response.encode(urn__ietf__params__xml__ns__geopriv__held::LocationResponse_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); - } else { - loggers::get_instance().warning("held_codec::encode: Unsupported variant"); - return -1; - } - data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()); - loggers::get_instance().log_msg("held_codec::decode: After encoding: ", data); - - loggers::get_instance().log("<<< held_codec::encode"); - return 0; -} - -int held_codec::decode (const OCTETSTRING& p_data, LibItsHttp__XmlMessageBodyTypes::XmlBody& msg, params* p_params) -{ - loggers::get_instance().log_msg(">>> held_codec::decode: p_data=", p_data); - - TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); - TTCN_EncDec::clear_error(); - TTCN_Buffer decoding_buffer(p_data); - - // Sanity checks - params::const_iterator it; - if (p_params == nullptr) { - loggers::get_instance().warning("held_codec::decode: Failed to access p_params (null pointer)"); - return -1; - } else { - it = p_params->find("decode_str"); - if (it == p_params->cend()) { - loggers::get_instance().warning("held_codec::decode: Failed to access p_params item (decode_str)"); - return -1; - } - } - - if (it->second.find("second.find("second.find(" $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/99/a0124aeb9d8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/99/a0124aeb9d8500181eabf1ba1ea37ea1 deleted file mode 100644 index 732a4a0..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/99/a0124aeb9d8500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,46 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/99/e0ee711eb885001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/99/e0ee711eb885001814de869e8ad08251 deleted file mode 100644 index 838442b..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/99/e0ee711eb885001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 11:44:05 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall-std=c++11-pthread-fPIC - -# Flags for the linker: -LDFLAGS = -pthread-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9b/d006f332b685001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9b/d006f332b685001814de869e8ad08251 deleted file mode 100644 index 8d9519d..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9b/d006f332b685001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 10:59:12 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall -std=c++11 -pthread -fPIC - -# Flags for the linker: -LDFLAGS = -pthread -fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9b/e04fb3d3978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9b/e04fb3d3978500181c21d10bc58219ba deleted file mode 100644 index 57e2603f9d79a56ef26b17df33c76257a4171673..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135776 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 $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9d/20049defc08500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9d/20049defc08500181dc9eb7ae31560a9 deleted file mode 100644 index c57a208..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9d/20049defc08500181dc9eb7ae31560a9 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 12:47:08 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall-std=c++11-pthread-fPIC - -# Flags for the linker: -LDFLAGS = -pthread-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9d/5156cae1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9d/5156cae1978500181c21d10bc58219ba deleted file mode 100644 index 3d59dfc..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9d/5156cae1978500181c21d10bc58219ba +++ /dev/null @@ -1,45 +0,0 @@ -/*! - * \file sip_layer_factory.hh - * \brief Header file for ITS Sip protocol layer factory. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "layer_stack_builder.hh" - -#include "sip_layer.hh" - -/*! - * \class sip_layer_factory - * \brief This class provides a factory class to create an sip_layer class instance - */ -class sip_layer_factory : public layer_factory { - static sip_layer_factory _f; //! Reference to the unique instance of this class -public: //! \publicsection - /*! - * \brief Default constructor - * Create a new instance of the udp_layer_factory class - * \remark The HTTP layer identifier is HTTP - */ - sip_layer_factory() { - // Register factory - layer_stack_builder::register_layer_factory("HTTP", this); - }; - /*! - * \fn layer* create_layer(const std::string & type, const std::string & param); - * \brief Create the layers stack based on the provided layers stack description - * \param[in] p_type The provided layers stack description - * \param[in] p_params Optional parameters - * \return 0 on success, -1 otherwise - * \inline - */ - inline virtual layer* create_layer(const std::string& p_type, const std::string& p_param){ - return new sip_layer(p_type, p_param); - }; -}; // End of class sip_layer_factory - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9f/10b4315bbc85001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9f/10b4315bbc85001814de869e8ad08251 deleted file mode 100644 index dfc72b9..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9f/10b4315bbc85001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 11:56:39 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall -std=c++11 -pthread -fPIC - -# Flags for the linker: -LDFLAGS = -pthread -fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9f/708420b4a88500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9f/708420b4a88500181eabf1ba1ea37ea1 deleted file mode 100644 index bad957a..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9f/708420b4a88500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,128 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - - osipparser2 - ssl - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn - - true - - - - - - src/ttcn/ttcn/TestCodec - - false - true - - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/a2/c0387d0bb985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/a2/c0387d0bb985001814de869e8ad08251 deleted file mode 100644 index aea0c14..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/a2/c0387d0bb985001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 11:50:43 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC - -# Flags for the linker: -LDFLAGS = -pthread,-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ad/e0ead7e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ad/e0ead7e1978500181c21d10bc58219ba deleted file mode 100644 index 5bb8640..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ad/e0ead7e1978500181c21d10bc58219ba +++ /dev/null @@ -1,125 +0,0 @@ -#include "udp_layer_factory.hh" - -#include "loggers.hh" - -udp_layer::udp_layer(const std::string & p_type, const std::string & param) : layer(p_type), _params() { - loggers::get_instance().log(">>> udp_layer::udp_layer: %s, %s", to_string().c_str(), param.c_str()); - // Setup parameters - params::convert(_params, param); - params::const_iterator it = _params.find("src_ip"); - if (it == _params.cend()) { - _params.insert(std::pair(std::string("src_ip"), "127.0.0.1")); - } - it = _params.find("src_port"); - if (it == _params.cend()) { - _params.insert(std::pair(std::string("src_port"), "12345")); - } - it = _params.find("dst_ip"); - if (it == _params.cend()) { - _params.insert(std::pair(std::string("dst_ip"), "127.0.0.1")); - } - it = _params.find("dst_port"); - if (it == _params.cend()) { - _params.insert(std::pair(std::string("dst_port"), "12346")); - } - - //_params.log(); -} - -void udp_layer::send_data(OCTETSTRING& data, params& params) { - loggers::get_instance().log_msg(">>> udp_layer::send_data: ", data); - - // Create IP/UDP packet - unsigned int len = sizeof(struct iphdr) + sizeof(struct udphdr) + data.lengthof(); - unsigned char *buffer = new unsigned char[len]; - // Set ip header - _iphdr = (struct iphdr *)buffer; - _daddr.sin_family = AF_INET; - _saddr.sin_family = AF_INET; - params::const_iterator it = _params.find("dst_port"); - _daddr.sin_port = htons(std::strtoul(it->second.c_str(), NULL, 10)); - it = _params.find("src_port"); - _saddr.sin_port = htons(std::strtoul(it->second.c_str(), NULL, 10)); - it = _params.find("dst_ip"); - inet_pton(AF_INET, it->second.c_str(), (struct in_addr *)&_daddr.sin_addr.s_addr); - it = _params.find("src_ip"); - inet_pton(AF_INET, it->second.c_str(), (struct in_addr *)&_saddr.sin_addr.s_addr); - _iphdr->ihl = 5; - _iphdr->version = 4; - _iphdr->tos = IPTOS_LOWDELAY; - _iphdr->id = 0; - _iphdr->frag_off = htons(0x4000); /* Don't fragment */ - _iphdr->ttl = 64; - _iphdr->tot_len = htons(sizeof(struct iphdr) + sizeof(struct udphdr) + data.lengthof()); - _iphdr->protocol = IPPROTO_UDP; - _iphdr->saddr = _saddr.sin_addr.s_addr; - _iphdr->daddr = _daddr.sin_addr.s_addr; - _iphdr->check = 0; - _iphdr->check = inet_check_sum((const void *)_iphdr, sizeof(struct iphdr)); - // Set udp header - _udphdr = (struct udphdr *)(buffer + sizeof(struct iphdr)); - _udphdr->source = _saddr.sin_port; - _udphdr->dest = _daddr.sin_port; - _udphdr->len = htons(sizeof(struct udphdr) + data.lengthof()); - _udphdr->check = 0; - // Set payload - unsigned char *payload = buffer + sizeof(struct iphdr) + sizeof(struct udphdr); - memcpy(payload, static_cast(data), data.lengthof()); - // Calculate UDP checksum - _udphdr->check = inet_check_sum( - (const void *)_udphdr, - sizeof(struct udphdr), - inet_check_sum( - static_cast(data), - data.lengthof(), - inet_check_sum( - (const unsigned char*)(&(_iphdr->saddr)), - 2 * sizeof(_iphdr->saddr), - IPPROTO_UDP + static_cast(ntohs(_udphdr->len)) - ) - ) - ); - // Send data lower layers - OCTETSTRING udp(len, buffer); - send_to_all_layers(udp, params); - // Free buffer - delete [] buffer; -} - -void udp_layer::receive_data(OCTETSTRING& data, params& params) { - loggers::get_instance().log_msg(">>> udp_layer::receive_data: ", data); - - // Decode UDP packet - const unsigned char* buffer = static_cast(data); - _iphdr = (struct iphdr*)buffer; - _udphdr = (struct udphdr*)(buffer + sizeof(struct iphdr)); - loggers::get_instance().log("udp_layer::receive_data: src_port = %d, payload length = %d", ntohs(_udphdr->source), ntohs(_udphdr->len)); - // TODO To be refined - data = OCTETSTRING(ntohs(_udphdr->len) - sizeof(struct udphdr), (unsigned char*)(buffer + sizeof(struct iphdr) + sizeof(struct udphdr))); - //loggers::get_instance().log_msg("udp_layer::receive_data: message payload", data); - - receive_to_all_layers(data, params); -} - -unsigned short udp_layer::inet_check_sum(const void *buf, size_t len, const unsigned short p_initial_sum) { - unsigned long sum = p_initial_sum; - unsigned int i; - - // Checksum all the pairs of bytes first... - for (i = 0; i < (len & ~1U); i += 2) { - sum += (u_int16_t)ntohs(*((u_int16_t *)((unsigned char*)buf + i))); - if (sum > 0xFFFF) - sum -= 0xFFFF; - } // End of 'for' statement - // If there's a single byte left over, checksum it, too - if (i < len) { - sum += *((unsigned char*)buf + i) << 8; - if (sum > 0xFFFF) { - sum -= 0xFFFF; - } - } - - return htons((~sum & 0xffff)); -} - -udp_layer_factory udp_layer_factory::_f; diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ae/d05237a7ac8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ae/d05237a7ac8500181eabf1ba1ea37ea1 deleted file mode 100644 index 9e58f29..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ae/d05237a7ac8500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,129 +0,0 @@ - - Default - - - true - bin/STF549_Ng112 - - AS_USE_SSL - - - [HOME_FRAMEWORKS]/osip/include - - true - true - true - true - true - true - true - - pcap - ssl - osipparser2 - - - [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs - - - - - bin - - - - - src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn - - true - - - - src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn - - true - - - - - - src/ttcn/ttcn/TestCodec - - false - true - - - - \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b0/b011035bb685001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b0/b011035bb685001814de869e8ad08251 deleted file mode 100644 index 55a4a35..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b0/b011035bb685001814de869e8ad08251 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 11:31:24 CEST 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -Wall-std=c++11-pthread-fPIC - -# Flags for the linker: -LDFLAGS = -pthread-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b2/2070c7e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b2/2070c7e1978500181c21d10bc58219ba deleted file mode 100644 index 123b96a..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b2/2070c7e1978500181c21d10bc58219ba +++ /dev/null @@ -1,49 +0,0 @@ -/*! - * \file pcap_layer_factory.hh - * \brief Header file for Pcap layer factory. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#if (OSTYPE == linux) - -#include "layer_stack_builder.hh" - -#include "pcap_layer.hh" - -/*! - * \class pcap_layer_factory - * \brief This class provides a factory class to create an pcap_layer class instance - */ -class pcap_layer_factory: public layer_factory { - static pcap_layer_factory _f; //! Reference to the unique instance of this class -public: //! \publicsection - /*! - * \brief Default constructor - * Create a new instance of the udp_layer_factory class - * \remark The PCAP layer identifier is PCAP - */ - pcap_layer_factory() { - // register factory - layer_stack_builder::register_layer_factory("PCAP", this); - }; - /*! - * \fn layer* create_layer(const std::string & type, const std::string & param); - * \brief Create the layers stack based on the provided layers stack description - * \param[in] p_type The provided layers stack description - * \param[in] p_params Optional parameters - * \return 0 on success, -1 otherwise - * \inline - */ - inline virtual layer* create_layer(const std::string& p_type, const std::string& p_param) { - return new pcap_layer(p_type, p_param); - }; -}; // End of class pcap_layer_factory - -#endif - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b5/800d75bfbe85001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b5/800d75bfbe85001814de869e8ad08251 deleted file mode 100644 index 0cebc44..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b5/800d75bfbe85001814de869e8ad08251 +++ /dev/null @@ -1,159 +0,0 @@ -12:24:17.390490 EXECUTOR - TTCN-3 Host Controller started on vagrant. Version: CRL 113 200/6 R4A. -12:24:17.390536 EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error -12:24:17.390541 EXECUTOR - Maximum number of open file descriptors: 1048576, FD_SETSIZE = 1024 -12:24:17.390666 WARNING - Warning: The address of MC was set to a local IP address. This may cause incorrect behavior if a HC from a remote host also connects to MC. -12:24:17.390675 EXECUTOR - The address of MC was set to 127.0.0.1:0. -12:24:17.390883 EXECUTOR - Connected to MC. -12:24:17.390957 EXECUTOR - This host supports UNIX domain sockets for local communication. -12:24:17.391324 EXECUTOR - Processing configuration data received from MC. -12:24:17.391948 EXECUTOR - Module LibCommon_Sync has the following parameters: { PX_TSYNC_TIME_LIMIT := 120.000000, PX_TSHUT_DOWN_TIME_LIMIT := 120.000000 } -12:24:17.391998 EXECUTOR - Module LibCommon_Time has the following parameters: { PX_TDONE := 120.000000, PX_TAC := 30.000000, PX_TNOAC := 10.000000, PX_TWAIT := 120.000000, PX_LOOP := 1.000000 } -12:24:17.392057 EXECUTOR - Module LibItsHttp_Pics has the following parameters: { PICS_HEADER_HOST := "ptsv2.com", PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8" } -12:24:17.392110 EXECUTOR - Module LibNg112_Pics has the following parameters: { PICS_LIS_IUT := true, PICS_ECRF_IUT := false, PICS_HTTP_POST_REQUEST := true, PICS_LOCATION_HELD := true, PICS_SERVICE_LOST := true, PICS_LIS_REQUEST_URIs := { "/t/9rk8l-1531130342/post", "/t/r143f-1528105031/post", "/t/6ouem-1531201238/post" }, PICS_ECRF_URI := "/service" } -12:24:17.392174 EXECUTOR - Module LibNg112_Pixits has the following parameters: { PX_DOUBLE_CMP_EPSILON := 1.000000e-05, PX_DEVICE_URI_SIP := "sip:user@example.net;gr=kjh29x97us97d", PX_DEVICE_URI_TEL := "+436501234567", PX_UNKNOWN_DEVICE_URI := "sip:no_one@example.net;gr=kjh29x97us97d", PX_DEVICE_POSITION := { -34.407000, 150.883000, 24.800000 }, PX_CIRCLE_POS := { 48.215388, 16.290300 }, PX_CIRCLE_UOM := "urn:ogc:def:uom:EPSG::9001", PX_CIRCLE_BASE := 23.600000, PX_SRS_NAME := "urn:ogc:def:crs:EPSG::4326" } -12:24:17.392336 EXECUTOR - Module LibSip_PIXITS has the following parameters: { PX_SIP_SDP_USER_NAME := "voicesession", PX_SIP_SDP_SESSION_ID := "30000", PX_SIP_SDP_DYN := "0", PX_SIP_SDP_B_MODIFIER := "AS", PX_SIP_SDP_B_BANDWIDTH := 64, PX_SIP_SDP_ENCODING := "PCMU", PX_SIP_SDP_CLOCKRATE := "8000", PX_MB_LENGTH_FROM_ENCVAL := true, PX_USE_FX_FOR_XML_LENGTH := false, PX_SIP_TRANSPORT := "UDP", PX_SIP_REGISTRATION := false, PX_AUTH_ALGORITHM := "AKAv1-MD5", PX_SIP_REGISTER_AUTHENTICATION_ENABLED := true, PX_SIP_INVITE_AUTHENTICATION_ENABLED := false, PX_SIP_TWAIT := 30.000000, PX_SIP_TACK := 8.000000, PX_SIP_TRESP := 15.000000, PX_SIP_TNOACT := 1.000000, PX_SIP_MIME_BOUNDARY := "boundary1" } -12:24:17.392418 EXECUTOR - Initializing module AtsNg112_TestCases. -12:24:17.392462 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibItsHttp_Functions. -12:24:17.392507 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_TypesAndValues. -12:24:17.392557 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0 Initializing module LibItsHttp_MessageBodyTypes. -12:24:17.392611 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XmlMessageBodyTypes. -12:24:17.392669 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XMLTypes. -12:24:17.392796 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held. -12:24:17.392871 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initializing module http_www_w3_org_XML_1998_namespace. -12:24:17.392940 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initializing module XSD. -12:24:17.393013 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn:0 Initializing module UsefulTtcn3Types. -12:24:17.393095 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn:0 Initialization of module UsefulTtcn3Types finished. -12:24:17.393172 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initialization of module XSD finished. -12:24:17.393286 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initialization of module http_www_w3_org_XML_1998_namespace finished. -12:24:17.393359 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held finished. -12:24:17.393431 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held_id. -12:24:17.393496 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held_id finished. -12:24:17.393561 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10. -12:24:17.393625 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy. -12:24:17.393695 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy finished. -12:24:17.393809 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10 finished. -12:24:17.393875 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc. -12:24:17.393941 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc finished. -12:24:17.394005 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf. -12:24:17.394077 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf finished. -12:24:17.394141 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XMLTypes finished. -12:24:17.403333 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XmlMessageBodyTypes finished. -12:24:17.403468 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_BinaryMessageBodyTypes. -12:24:17.403529 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_BinaryMessageBodyTypes finished. -12:24:17.403589 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0 Initialization of module LibItsHttp_MessageBodyTypes finished. -12:24:17.403642 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_TypesAndValues finished. -12:24:17.403693 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_Pics. -12:24:17.403787 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_Pics finished. -12:24:17.403841 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibItsHttp_Functions finished. -12:24:17.403886 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Templates. -12:24:17.403929 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Templates finished. -12:24:17.403973 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Functions. -12:24:17.404016 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_Templates. -12:24:17.404066 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_Templates finished. -12:24:17.404115 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_XmlTemplates. -12:24:17.404164 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape. -12:24:17.404221 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0 Initializing module http_www_opengis_net_pidflo_1_0. -12:24:17.404341 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn:0 Initializing module http_www_opengis_net_gml. -12:24:17.404407 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn:0 Initialization of module http_www_opengis_net_gml finished. -12:24:17.404470 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0 Initialization of module http_www_opengis_net_pidflo_1_0 finished. -12:24:17.404531 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape finished. -12:24:17.404591 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_XmlTemplates finished. -12:24:17.404640 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TypesAndValues. -12:24:17.404689 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TypesAndValues finished. -12:24:17.404779 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TestSystem. -12:24:17.404831 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibItsHttp_TestSystem. -12:24:17.404887 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Sync. -12:24:17.404947 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initializing module LibCommon_AbstractData. -12:24:17.405011 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0->../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initializing module LibCommon_BasicTypesAndValues. -12:24:17.405076 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0->../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initialization of module LibCommon_BasicTypesAndValues finished. -12:24:17.405149 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_AbstractData finished. -12:24:17.405212 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initializing module LibCommon_VerdictControl. -12:24:17.405322 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_VerdictControl finished. -12:24:17.405388 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Sync finished. -12:24:17.405448 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Time. -12:24:17.405508 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Time finished. -12:24:17.405569 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibItsHttp_TestSystem finished. -12:24:17.405624 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibSip_Interface. -12:24:17.405680 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_SIPTypesAndValues. -12:24:17.405795 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0 Initializing module LibSip_MessageBodyTypes. -12:24:17.405876 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SDPTypes. -12:24:17.405946 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn:0 Initializing module LibSip_Common. -12:24:17.406025 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn:0 Initialization of module LibSip_Common finished. -12:24:17.406096 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SDPTypes finished. -12:24:17.406162 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SimpleMsgSummaryTypes. -12:24:17.406289 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SimpleMsgSummaryTypes finished. -12:24:17.406390 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_XMLTypes. -12:24:17.407283 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_resource_lists. -12:24:17.407394 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_resource_lists finished. -12:24:17.407484 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_xcap. -12:24:17.407571 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_ietf_params_xml_ns_common_policy. -12:24:17.407679 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_ietf_params_xml_ns_common_policy finished. -12:24:17.407811 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_oma_xml_xdm_common_policy. -12:24:17.407906 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_oma_xml_xdm_common_policy finished. -12:24:17.407988 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_xcap finished. -12:24:17.408064 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_mcid. -12:24:17.408139 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_mcid finished. -12:24:17.408793 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module NoTargetNamespace. -12:24:17.408879 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module NoTargetNamespace finished. -12:24:17.408961 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_3gpp_ns_cw_1_0. -12:24:17.409036 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_3gpp_ns_cw_1_0 finished. -12:24:17.409111 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_conference_info. -12:24:17.409185 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_conference_info finished. -12:24:17.409286 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_pstn. -12:24:17.409366 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_pstn finished. -12:24:17.411281 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_comm_div_info. -12:24:17.411390 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_comm_div_info finished. -12:24:17.411476 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_reginfo. -12:24:17.411552 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_reginfo finished. -12:24:17.411626 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_XMLTypes finished. -12:24:17.411697 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0 Initialization of module LibSip_MessageBodyTypes finished. -12:24:17.415282 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_SIPTypesAndValues finished. -12:24:17.415392 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_PIXITS. -12:24:17.415462 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initializing module LibCommon_DataStrings. -12:24:17.415533 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initialization of module LibCommon_DataStrings finished. -12:24:17.415602 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_PIXITS finished. -12:24:17.415668 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibSip_Interface finished. -12:24:17.415755 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TestSystem finished. -12:24:17.415825 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Functions finished. -12:24:17.415871 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pics. -12:24:17.415917 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pics finished. -12:24:17.415963 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pixits. -12:24:17.416009 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pixits finished. -12:24:17.416056 EXECUTOR - Initialization of module AtsNg112_TestCases finished. -12:24:17.416100 EXECUTOR - Initializing module AtsNg112_TestControl. -12:24:17.416144 EXECUTOR - Initialization of module AtsNg112_TestControl finished. -12:24:17.416188 EXECUTOR - Initializing module LibCommon_TextStrings. -12:24:17.416264 EXECUTOR - Initialization of module LibCommon_TextStrings finished. -12:24:17.416311 EXECUTOR - Initializing module LibItsHttp_BinaryTemplates. -12:24:17.416357 EXECUTOR - Initialization of module LibItsHttp_BinaryTemplates finished. -12:24:17.416401 EXECUTOR - Initializing module LibItsHttp_BinaryTypes. -12:24:17.416444 EXECUTOR - Initialization of module LibItsHttp_BinaryTypes finished. -12:24:17.416488 EXECUTOR - Initializing module LibItsHttp_EncdecDeclarations. -12:24:17.416532 EXECUTOR - Initialization of module LibItsHttp_EncdecDeclarations finished. -12:24:17.416576 EXECUTOR - Initializing module LibNg112_EncdecDeclarations. -12:24:17.416620 EXECUTOR - Initialization of module LibNg112_EncdecDeclarations finished. -12:24:17.416665 EXECUTOR - Initializing module LibSip_EncdecDeclarations. -12:24:17.416709 EXECUTOR ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn:0 Initializing module LibSip_SMSTypesAndValues. -12:24:17.416781 EXECUTOR ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn:0 Initialization of module LibSip_SMSTypesAndValues finished. -12:24:17.416829 EXECUTOR - Initialization of module LibSip_EncdecDeclarations finished. -12:24:17.416874 EXECUTOR - Initializing module LibSip_Library. -12:24:17.416917 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_SMSTemplates. -12:24:17.416967 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn:0 Initializing module LibSip_SMSFunctions. -12:24:17.417019 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn:0 Initialization of module LibSip_SMSFunctions finished. -12:24:17.424766 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_SMSTemplates finished. -12:24:17.424878 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_Steps. -12:24:17.424929 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn:0 Initializing module LibSip_Templates. -12:24:17.438556 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn:0 Initialization of module LibSip_Templates finished. -12:24:17.439779 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_Steps finished. -12:24:17.439875 EXECUTOR - Initialization of module LibSip_Library finished. -12:24:17.439958 EXECUTOR - Initializing module PreGenRecordOf. -12:24:17.440040 EXECUTOR - Initialization of module PreGenRecordOf finished. -12:24:17.440119 EXECUTOR - Initializing module TitanLoggerApi. -12:24:17.440201 EXECUTOR - Initialization of module TitanLoggerApi finished. -12:24:17.440359 EXECUTOR - Initializing module urn_ietf_params_xml_ns_geopriv_conf. -12:24:17.440458 EXECUTOR - Initialization of module urn_ietf_params_xml_ns_geopriv_conf finished. -12:24:17.440545 EXECUTOR - Configuration data was processed successfully. -12:24:17.440889 EXECUTOR - MTC was created. Process id: 26167. -12:25:30.881099 EXECUTOR - Exit was requested from MC. Terminating HC. -12:25:30.882637 EXECUTOR - Disconnected from MC. -12:25:30.882686 EXECUTOR - TTCN-3 Host Controller finished. diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b7/2170c7e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b7/2170c7e1978500181c21d10bc58219ba deleted file mode 100644 index b0765fd..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b7/2170c7e1978500181c21d10bc58219ba +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include "codec.hh" -#include "params.hh" - -#include "sip_codec_request.hh" - -class Base_Type; -class TTCN_Typedescriptor_t; -class TTCN_Buffer; - -namespace LibSip__SIPTypesAndValues { - class REGISTER__Request; -} - -class sip_codec_register_request: public codec < -LibSip__SIPTypesAndValues::REGISTER__Request, -LibSip__SIPTypesAndValues::REGISTER__Request> -{ - sip_codec_request _codec; -public: - explicit sip_codec_register_request() : codec(), _codec() { }; - virtual ~sip_codec_register_request() { }; - - virtual int encode (const LibSip__SIPTypesAndValues::REGISTER__Request& msg, OCTETSTRING& data); - virtual int decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::REGISTER__Request& msg, params* p_params = NULL); -}; // End of class sip_codec_register_request diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b8/80b52d1ab885001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b8/80b52d1ab885001814de869e8ad08251 deleted file mode 100644 index 482e9dc..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b8/80b52d1ab885001814de869e8ad08251 +++ /dev/null @@ -1,57 +0,0 @@ -#include "LibItsHttp_TypesAndValues.hh" - -#include "http_layer_factory.hh" -#include "codec_stack_builder.hh" - -#include "loggers.hh" - -#include "converter.hh" - -using namespace std; // Required for isnan() -#include "LibItsHttp_TypesAndValues.hh" -#include "LibItsHttp_TestSystem.hh" - -http_layer::http_layer(const std::string & p_type, const std::string & param) : t_layer(p_type), _params()//, _device_mode{false} -{ - loggers::get_instance().log(">>> http_layer::http_layer: %s, %s", to_string().c_str(), param.c_str()); - // Setup parameters - params::convert(_params, param); - - params::const_iterator it = _params.find(params::codecs); - if (it != _params.cend()) { - _codec.set_payload_codecs(it->second); - } -} - -void http_layer::sendMsg(const LibItsHttp__TypesAndValues::HttpMessage& p_http_message, params& p_param) { - loggers::get_instance().log_msg(">>> http_layer::sendMsg: ", p_http_message); - - // Encode HttpMessage - OCTETSTRING data; - _codec.encode(p_http_message, data); - send_data(data, _params); -} - -void http_layer::send_data(OCTETSTRING& data, params& params) { - loggers::get_instance().log_msg(">>> http_layer::send_data: ", data); - - send_to_all_layers(data, params); -} - -void http_layer::receive_data(OCTETSTRING& data, params& params) -{ - loggers::get_instance().log_msg(">>> http_layer::receive_data: ", data); - - // Decode HTTP message - LibItsHttp__TypesAndValues::HttpMessage http_message; - if (_codec.decode(data, http_message) == -1) { - loggers::get_instance().warning("http_layer::receive_data: Failed to decode data"); - return; - } - - // Pass it to the ports - to_all_upper_ports(http_message, params); -} - -http_layer_factory http_layer_factory::_f; - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b9/4082d1e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b9/4082d1e1978500181c21d10bc58219ba deleted file mode 100644 index 2bf087e..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b9/4082d1e1978500181c21d10bc58219ba +++ /dev/null @@ -1,4 +0,0 @@ -#include "codec_stack_builder.hh" - -codec_stack_builder* codec_stack_builder::_instance = NULL; - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ba/617dcae1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ba/617dcae1978500181c21d10bc58219ba deleted file mode 100644 index 166a145..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ba/617dcae1978500181c21d10bc58219ba +++ /dev/null @@ -1,99 +0,0 @@ -/*! - * \file tcp_layer.hh - * \brief Header file for ITS TCP socket based protocol port layer. - * \author ETSI STF525 - * \copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * \version 0.1 - */ -#pragma once - -#include "layer.hh" - -#include "Abstract_Socket.hh" - -class PORT; //! Forward declaration of TITAN class - -/*! - * \class tcp_layer - * \brief This class provides description of ITS TCP port protocol layer - */ -class tcp_layer : public layer, public SSL_Socket, public PORT { - params _params; //! Layer parameters - int _client_id; //! Connection identifier - std::string _time_key; //! \todo - bool _reconnect_on_send; //! Set to true if connection shall be done when sending data. Otherwise, connection is established by the \see constructor - -public: //! \publicsection - /*! - * \brief Specialised constructor - * Create a new instance of the tcp_layer class - * \param[in] p_type \todo - * \param[in] p_param \todo - */ - tcp_layer(const std::string& p_type, const std::string& p_param); - /*! - * \brief Default destructor - * \remark If \see _reconnect_on_send is set to false, the disconnection is done by the destructor - */ - virtual ~tcp_layer(); - - /*! - * \virtual - * \fn void send_data(OCTETSTRING& data, params& params); - * \brief Send bytes formated data to the lower layers - * \param[in] p_data The data to be sent - * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters - * \virtual - */ - virtual void send_data(OCTETSTRING& data, params& params); - /*! - * \virtual - * \fn void receive_data(OCTETSTRING& data, params& params); - * \brief Receive bytes formated data from the lower layers - * \param[in] p_data The bytes formated data received - * \param[in] p_params Some lower layers parameters values when data was received - */ - virtual void receive_data(OCTETSTRING& data, params& info); - - /*! - * \virtual - * \fn void message_incoming(const unsigned char* message_buffer, int length, int client_id = -1); - * \brief Receive bytes formated data from the lower layers - * \param[in] p_buffer The bytes formated data received - * \param[in] p_length The number of bytes received - * \param[in] p_client_id The connection identifier.Default: -1 - */ - virtual void message_incoming(const unsigned char* p_buffer, int p_length, int p_client_id = -1); - -protected: //! \protectedsection - void Add_Fd_Read_Handler(int fd) { Handler_Add_Fd_Read(fd); }; - void Add_Fd_Write_Handler(int fd) { Handler_Add_Fd_Write(fd); }; - void Remove_Fd_Read_Handler(int fd) { Handler_Remove_Fd_Read(fd); }; - void Remove_Fd_Write_Handler(int fd) { Handler_Remove_Fd_Write(fd); }; - void Remove_Fd_All_Handlers(int fd) { Handler_Remove_Fd(fd); }; - void Handler_Uninstall() { Uninstall_Handler(); } - void Timer_Set_Handler(double call_interval, boolean is_timeout = TRUE, - boolean call_anyway = TRUE, boolean is_periodic = TRUE) { - Handler_Set_Timer(call_interval, is_timeout, call_anyway, is_periodic); - }; - - const char* remote_address_name() { return params::server.c_str(); }; - const char* remote_port_name() { return params::port.c_str(); }; - const char* socket_debugging_name() { return params::debug.c_str(); }; - const char* ssl_use_ssl_name() { return params::use_ssl.c_str(); }; - - void client_connection_opened(int p_client_id); - bool add_user_data(int p_client_id); - int send_message_on_fd(int p_client_id, const unsigned char * message_buffer, int length_of_message); - int send_message_on_nonblocking_fd(int client_id, const unsigned char * message_buffer, int length_of_message); - int receive_message_on_fd(int p_client_id); - void peer_disconnected(int p_client_id); - -private: //! \privatesection - void Handle_Fd_Event(int fd, boolean is_readable, boolean is_writable, boolean is_error); - void Handle_Timeout(double time_since_last_call); -}; // End of class tcp_layer - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ba/d0c3d7e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ba/d0c3d7e1978500181c21d10bc58219ba deleted file mode 100644 index 6b9796c..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ba/d0c3d7e1978500181c21d10bc58219ba +++ /dev/null @@ -1,181 +0,0 @@ -#include -#include -#include -#include -#include - -#include "tcp_layer_factory.hh" - -#include "loggers.hh" - -tcp_layer::tcp_layer(const std::string & p_type, const std::string & param) : layer(p_type), SSL_Socket(), PORT(p_type.c_str()), _params(), _client_id{-1}, _time_key("tcp_layer::Handle_Fd_Event_Readable"), _reconnect_on_send{false} { - loggers::get_instance().log(">>> tcp_layer::tcp_layer: %s, %s", to_string().c_str(), param.c_str()); - // Setup parameters - params::convert(_params, param); - _params.log(); - - set_socket_debugging(false); - params::const_iterator it = _params.find(params::debug); - if (it == _params.cend()) { - _params.insert(std::pair(std::string("debug"), "0")); - } else if (it->second.compare("1") == 0) { - set_socket_debugging(true); - } - it = _params.find(params::server); - if (it == _params.cend()) { - _params.insert(std::pair(std::string("server"), "127.0.0.1")); - } - if (!parameter_set(params::server.c_str(), _params[params::server].c_str())) { - loggers::get_instance().warning("tcp_layer::set_parameter: Unprocessed parameter: %s", params::server.c_str()); - } - set_ssl_use_ssl(false); - it = _params.find(params::use_ssl); - if (it == _params.cend()) { - _params.insert(std::pair(std::string("use_ssl"), "0")); - } else if (it->second.compare("1") == 0) { - set_ssl_use_ssl(true); - } - it = _params.find(params::port); - if (it == _params.cend()) { - if (_params[params::use_ssl].compare("0") == 0) { // Use standard HTTP port - _params.insert(std::pair(std::string("port"), "80")); - } else { // Use standard HTTPS port - _params.insert(std::pair(std::string("port"), "443")); - } - } - if (!parameter_set(params::port.c_str(), _params[params::port].c_str())) { - loggers::get_instance().warning("tcp_layer::set_parameter: Unprocessed parameter: %s", params::server.c_str()); - } - - parameter_set(use_connection_ASPs_name(), "yes"); - parameter_set(server_backlog_name(), "1024"); - set_server_mode(false); - set_ttcn_buffer_usercontrol(true); - set_handle_half_close(true); - - map_user(); - - if (!_reconnect_on_send) { - open_client_connection(_params[params::server].c_str(), _params[params::port].c_str(), NULL, NULL); - } - } - -tcp_layer::~tcp_layer() { - loggers::get_instance().log(">>> tcp_layer::~tcp_layer: %d", _client_id); - if (_client_id != -1) { - remove_client(_client_id); - } - - unmap_user(); -} - -void tcp_layer::Handle_Fd_Event(int fd, boolean is_readable, boolean is_writable, boolean is_error) -{ - loggers::get_instance().log(">>> tcp_layer::Handle_Fd_Event: %d", fd); - Handle_Socket_Event(fd, is_readable, is_writable, is_error); - log_debug("<<< tcp_layer::Handle_Fd_Event"); -} - -void tcp_layer::Handle_Timeout(double time_since_last_call) -{ - loggers::get_instance().log(">>> tcp_layer::Handle_Timeout: %f", time_since_last_call); - Handle_Timeout_Event(time_since_last_call); - loggers::get_instance().log("<<< tcp_layer::Handle_Timeout"); -} - -void tcp_layer::send_data(OCTETSTRING& data, params& params) { - loggers::get_instance().log_msg(">>> tcp_layer::send_data: ", data); - - loggers::get_instance().log("tcp_layer::send_data: SSL mode: %x", get_ssl_use_ssl()); - - send_outgoing(static_cast(data), data.lengthof(), _client_id); -} - -void tcp_layer::receive_data(OCTETSTRING& data, params& params) { - loggers::get_instance().log_msg(">>> tcp_layer::receive_data: ", data); - - receive_to_all_layers(data, params); -} - -void tcp_layer::message_incoming(const unsigned char* message_buffer, int length, int client_id) { - loggers::get_instance().log(">>> tcp_layer::message_incoming"); - loggers::get_instance().log_to_hexa("tcp_layer::message_incoming: ", message_buffer, length); - - - float duration; - loggers::get_instance().set_start_time(_time_key); - OCTETSTRING data(length, message_buffer); - params params; - this->receive_data(data, params); // TODO Check execution time for decoding operation - loggers::get_instance().set_stop_time(_time_key, duration); -} - -void tcp_layer::client_connection_opened(int p_client_id) -{ - loggers::get_instance().log(">>> tcp_layer::client_connection_opened: %d", p_client_id); - _client_id = p_client_id; -} - -bool tcp_layer::add_user_data(int p_client_id) -{ - loggers::get_instance().log(">>> tcp_layer::add_user_data: %d", p_client_id); - if (_params[params::use_ssl].compare("0") == 0) { - loggers::get_instance().log("tcp_layer::add_user_data: Non secured mode"); - return Abstract_Socket::add_user_data(p_client_id); - } - loggers::get_instance().log("tcp_layer::add_user_data: SSL mode"); - return SSL_Socket::add_user_data(p_client_id); -} - -int tcp_layer::send_message_on_fd(int p_client_id, const unsigned char * message_buffer, int length_of_message) -{ - loggers::get_instance().log(">>> tcp_layer::send_message_on_fd: %d", p_client_id); - - if(get_user_data(p_client_id)) - { - loggers::get_instance().log("tcp_layer::send_message_on_fd: SSL mode"); - return SSL_Socket::send_message_on_fd(p_client_id, message_buffer, length_of_message); - } - - loggers::get_instance().log("tcp_layer::send_message_on_fd: Non secured mode"); - return Abstract_Socket::send_message_on_fd(p_client_id, message_buffer, length_of_message); -} - -int tcp_layer::send_message_on_nonblocking_fd(int p_client_id, const unsigned char * message_buffer, int length_of_message) -{ - loggers::get_instance().log(">>> tcp_layer::send_message_on_nonblocking_fd: %d", p_client_id); - - if(get_user_data(p_client_id)) - { - loggers::get_instance().log("tcp_layer::send_message_on_nonblocking_fd: SSL mode"); - return SSL_Socket::send_message_on_nonblocking_fd(p_client_id, message_buffer, length_of_message); - } - - loggers::get_instance().log("tcp_layer::send_message_on_nonblocking_fd: Non secured mode"); - return Abstract_Socket::send_message_on_nonblocking_fd(p_client_id, message_buffer, length_of_message); -} - -int tcp_layer::receive_message_on_fd(int p_client_id) -{ - loggers::get_instance().log(">>> tcp_layer::receive_message_on_fd: %d", p_client_id); - - if(get_user_data(p_client_id)) { - // INFO: it is assumed that only SSL_Socket assigns user data to each peer - loggers::get_instance().log("tcp_layer::receive_message_on_fd: SSL mode"); - return SSL_Socket::receive_message_on_fd(p_client_id); - } - - loggers::get_instance().log("tcp_layer::receive_message_on_fd: Non secured mode"); - return Abstract_Socket::receive_message_on_fd(p_client_id); -} - -void tcp_layer::peer_disconnected(int p_client_id) -{ - loggers::get_instance().log(">>> tcp_layer::peer_disconnected: %d", p_client_id); - - Abstract_Socket::peer_disconnected(p_client_id); - _client_id = -1; -} - -tcp_layer_factory tcp_layer_factory::_f; - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/bb/10e667e5b08500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/bb/10e667e5b08500181eabf1ba1ea37ea1 deleted file mode 100644 index e1cf6af..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/bb/10e667e5b08500181eabf1ba1ea37ea1 +++ /dev/null @@ -1,418 +0,0 @@ -# This Makefile was generated by the TITAN Designer eclipse plug-in -# of the TTCN-3 Test executor version CRL 113 200/6 R4A -# for (vagrant@vagrant) on Thu Jul 12 08:52:15 UTC 2018 - -# Copyright (c) 2000-2018 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make port Generates port skeletons. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make executable Builds the executable test suite. -# - make library Builds the library archive: 'STF549_Ng112.a'. -# - make objects Builds the object files without linking the executable. -# WARNING! This Makefile can be used with GNU make only. -# Other versions of make may report syntax errors in it. - -# -# Do NOT touch this line... -# -.PHONY: all executable library objects check port clean dep archive - -.SUFFIXES: .d - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = LINUX - -# Your C++ compiler: -# (if you change the platform, you may need to change the compiler) -CXX = g++ - -# Flags for dependency generation -CXXDEPFLAGS := -MM - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP - -# Flags for the C++ compiler: -CXXFLAGS = -Wall -O0 -std=c++11-pthread-gPIC - -# Flags for the linker: -LDFLAGS = -pthread-fPIC - -ifeq ($(PLATFORM), WIN32) -# Silence linker warnings. -LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc -endif - -# Utility to create library files -AR = ar -ARFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger -COMPILER_FLAGS = -RbOglLen - -# Execution mode: function test runtime in parallel mode -TTCN3_LIB = ttcn3-rt2-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# The path of your libxml2 installation: -# If you do not have your own one, leave it unchanged. -XMLDIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc -GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc -USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) - -GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) - -USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o - -# Dependency files of this project that are needed for the executable test suite: -DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - -# The name of the executable test suite: -EXECUTABLE = STF549_Ng112 -LIBRARY = STF549_Ng112.a - -TARGET = $(EXECUTABLE) - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv -LINUX_LIBS = -lxml2 -lpthread -lrt -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -executable: $(EXECUTABLE) ; - -library: $(LIBRARY) ; - -objects: $(OBJECTS) compile; - -$(EXECUTABLE): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $^ \ - -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ - -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ - $($(PLATFORM)_LIBS) \ - || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi - -$(LIBRARY): $(OBJECTS) - $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) - -Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -converter.o : ../../../ccsrc/Framework/src/converter.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -loggers.o : ../../../ccsrc/Framework/src/loggers.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -params.o : ../../../ccsrc/Framework/src/params.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -converter.d : ../../../ccsrc/Framework/src/converter.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -loggers.d : ../../../ccsrc/Framework/src/loggers.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -params.d : ../../../ccsrc/Framework/src/params.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -.cc.d .c.d: - @echo Creating dependency file for '$<'; set -e; \ - $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ - | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ - [ -s $@ ] || rm -f $@ - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ - -port: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ - -clean: - -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log $(DEPFILES) - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; - -ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) --include $(DEPFILES) -endif - - - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -diag: - $(TTCN3_DIR)/bin/compiler -v 2>&1 - $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 - $(CXX) -v 2>&1 - $(AR) -V 2>&1 - @echo TTCN3_DIR=$(TTCN3_DIR) - @echo OPENSSL_DIR=$(OPENSSL_DIR) - @echo XMLDIR=$(XMLDIR) - @echo PLATFORM=$(PLATFORM) - -# -# Add your rules here if necessary... -# - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/bf/70d9d6e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/bf/70d9d6e1978500181c21d10bc58219ba deleted file mode 100644 index 3a1f345..0000000 --- a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/bf/70d9d6e1978500181c21d10bc58219ba +++ /dev/null @@ -1,35 +0,0 @@ -#include "LibSip_Interface.hh" -#include "LibSip_SIPTypesAndValues.hh" - -#include "sip_layer_factory.hh" - -#include "loggers.hh" - -#include "converter.hh" - -sip_layer::sip_layer(const std::string & p_type, const std::string & p_param) : t_layer(p_type), _params() { - loggers::get_instance().log(">>> sip_layer::sip_layer: %s, %s", to_string().c_str(), p_param.c_str()); - // Setup parameters - params::convert(_params, p_param); -} - -void sip_layer::send_data(OCTETSTRING& data, params& p_params) { - loggers::get_instance().log_msg(">>> sip_layer::send_data: ", data); - - OCTETSTRING os; - // Encode SIP message -// _codec.encode(msg, os); - send_to_all_layers(os, p_params); -} - -void sip_layer::receive_data(OCTETSTRING& data, params& p_params) -{ - loggers::get_instance().log_msg(">>> sip_layer::receive_data: ", data); - - // Decode SIP message - OCTETSTRING payload; - receive_to_all_layers(payload, p_params); -} - -sip_layer_factory sip_layer_factory::_f; - diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c1/40febdd3978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c1/40febdd3978500181c21d10bc58219ba deleted file mode 100644 index aa99f948d98d73e7374bd31b28a08748ed24eb2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 997736 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

+(5%MffA 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 + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn + + true + + + + + + src/ttcn/ttcn/TestCodec + + false + true + + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/75/601787eeac8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/75/601787eeac8500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..d80fac3 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/75/601787eeac8500181eabf1ba1ea37ea1 @@ -0,0 +1,131 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + None + std=c++11 + + pcap + ssl + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn + + true + + + + + + src/ttcn/ttcn/TestCodec + + false + true + + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/75/a093cf0ab985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/75/a093cf0ab985001814de869e8ad08251 new file mode 100644 index 0000000..0109021 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/75/a093cf0ab985001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 11:50:39 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC + +# Flags for the linker: +LDFLAGS = -pthread,-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/7c/e0832037b685001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/7c/e0832037b685001814de869e8ad08251 new file mode 100644 index 0000000..8c06418 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/7c/e0832037b685001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 11:30:27 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall-std=c++11-pthread-fPIC + +# Flags for the linker: +LDFLAGS = -pthread-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/8/b004d5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/8/b004d5e1978500181c21d10bc58219ba new file mode 100644 index 0000000..fba1c59 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/8/b004d5e1978500181c21d10bc58219ba @@ -0,0 +1,4 @@ +#include "loggers.hh" + +std::unique_ptr loggers::_instance = static_cast>(new loggers); + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/80/b0a46cd6b185001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/80/b0a46cd6b185001814de869e8ad08251 new file mode 100644 index 0000000..68134d3 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/80/b0a46cd6b185001814de869e8ad08251 @@ -0,0 +1,159 @@ +10:45:33.761930 EXECUTOR - TTCN-3 Host Controller started on vagrant. Version: CRL 113 200/6 R4A. +10:45:33.761966 EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error +10:45:33.761970 EXECUTOR - Maximum number of open file descriptors: 1048576, FD_SETSIZE = 1024 +10:45:33.762077 WARNING - Warning: The address of MC was set to a local IP address. This may cause incorrect behavior if a HC from a remote host also connects to MC. +10:45:33.762084 EXECUTOR - The address of MC was set to 127.0.0.1:0. +10:45:33.766623 EXECUTOR - Connected to MC. +10:45:33.766734 EXECUTOR - This host supports UNIX domain sockets for local communication. +10:45:33.767039 EXECUTOR - Processing configuration data received from MC. +10:45:33.767643 EXECUTOR - Module LibCommon_Sync has the following parameters: { PX_TSYNC_TIME_LIMIT := 120.000000, PX_TSHUT_DOWN_TIME_LIMIT := 120.000000 } +10:45:33.767693 EXECUTOR - Module LibCommon_Time has the following parameters: { PX_TDONE := 120.000000, PX_TAC := 30.000000, PX_TNOAC := 10.000000, PX_TWAIT := 120.000000, PX_LOOP := 1.000000 } +10:45:33.767751 EXECUTOR - Module LibItsHttp_Pics has the following parameters: { PICS_HEADER_HOST := "ptsv2.com", PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8" } +10:45:33.767802 EXECUTOR - Module LibNg112_Pics has the following parameters: { PICS_LIS_IUT := true, PICS_ECRF_IUT := false, PICS_HTTP_POST_REQUEST := true, PICS_LOCATION_HELD := true, PICS_SERVICE_LOST := true, PICS_LIS_REQUEST_URIs := { "/t/9rk8l-1531130342/post", "/t/r143f-1528105031/post", "/t/6ouem-1531201238/post" }, PICS_ECRF_URI := "/service" } +10:45:33.768211 EXECUTOR - Module LibNg112_Pixits has the following parameters: { PX_DOUBLE_CMP_EPSILON := 1.000000e-05, PX_DEVICE_URI_SIP := "sip:user@example.net;gr=kjh29x97us97d", PX_DEVICE_URI_TEL := "+436501234567", PX_UNKNOWN_DEVICE_URI := "sip:no_one@example.net;gr=kjh29x97us97d", PX_DEVICE_POSITION := { -34.407000, 150.883000, 24.800000 }, PX_CIRCLE_POS := { 48.215388, 16.290300 }, PX_CIRCLE_UOM := "urn:ogc:def:uom:EPSG::9001", PX_CIRCLE_BASE := 23.600000, PX_SRS_NAME := "urn:ogc:def:crs:EPSG::4326" } +10:45:33.768314 EXECUTOR - Module LibSip_PIXITS has the following parameters: { PX_SIP_SDP_USER_NAME := "voicesession", PX_SIP_SDP_SESSION_ID := "30000", PX_SIP_SDP_DYN := "0", PX_SIP_SDP_B_MODIFIER := "AS", PX_SIP_SDP_B_BANDWIDTH := 64, PX_SIP_SDP_ENCODING := "PCMU", PX_SIP_SDP_CLOCKRATE := "8000", PX_MB_LENGTH_FROM_ENCVAL := true, PX_USE_FX_FOR_XML_LENGTH := false, PX_SIP_TRANSPORT := "UDP", PX_SIP_REGISTRATION := false, PX_AUTH_ALGORITHM := "AKAv1-MD5", PX_SIP_REGISTER_AUTHENTICATION_ENABLED := true, PX_SIP_INVITE_AUTHENTICATION_ENABLED := false, PX_SIP_TWAIT := 30.000000, PX_SIP_TACK := 8.000000, PX_SIP_TRESP := 15.000000, PX_SIP_TNOACT := 1.000000, PX_SIP_MIME_BOUNDARY := "boundary1" } +10:45:33.776982 EXECUTOR - Initializing module AtsNg112_TestCases. +10:45:33.779421 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibItsHttp_Functions. +10:45:33.779522 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_TypesAndValues. +10:45:33.779574 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0 Initializing module LibItsHttp_MessageBodyTypes. +10:45:33.779628 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XmlMessageBodyTypes. +10:45:33.779687 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XMLTypes. +10:45:33.779762 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held. +10:45:33.779835 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initializing module http_www_w3_org_XML_1998_namespace. +10:45:33.779951 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initializing module XSD. +10:45:33.780058 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn:0 Initializing module UsefulTtcn3Types. +10:45:33.780144 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn:0 Initialization of module UsefulTtcn3Types finished. +10:45:33.780222 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initialization of module XSD finished. +10:45:33.780294 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initialization of module http_www_w3_org_XML_1998_namespace finished. +10:45:33.780406 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held finished. +10:45:33.780480 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held_id. +10:45:33.780546 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held_id finished. +10:45:33.783484 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10. +10:45:33.783580 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy. +10:45:33.783651 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy finished. +10:45:33.783723 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10 finished. +10:45:33.783788 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc. +10:45:33.783895 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc finished. +10:45:33.783963 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf. +10:45:33.784039 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf finished. +10:45:33.784103 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XMLTypes finished. +10:45:33.784164 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XmlMessageBodyTypes finished. +10:45:33.784223 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_BinaryMessageBodyTypes. +10:45:33.784282 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_BinaryMessageBodyTypes finished. +10:45:33.784340 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0 Initialization of module LibItsHttp_MessageBodyTypes finished. +10:45:33.784476 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_TypesAndValues finished. +10:45:33.784527 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_Pics. +10:45:33.784577 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_Pics finished. +10:45:33.784628 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibItsHttp_Functions finished. +10:45:33.784672 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Templates. +10:45:33.784716 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Templates finished. +10:45:33.786933 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Functions. +10:45:33.787029 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_Templates. +10:45:33.787080 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_Templates finished. +10:45:33.787129 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_XmlTemplates. +10:45:33.787178 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape. +10:45:33.787235 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0 Initializing module http_www_opengis_net_pidflo_1_0. +10:45:33.787309 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn:0 Initializing module http_www_opengis_net_gml. +10:45:33.787417 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn:0 Initialization of module http_www_opengis_net_gml finished. +10:45:33.787493 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0 Initialization of module http_www_opengis_net_pidflo_1_0 finished. +10:45:33.787553 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape finished. +10:45:33.787613 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_XmlTemplates finished. +10:45:33.787663 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TypesAndValues. +10:45:33.787712 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TypesAndValues finished. +10:45:33.787760 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TestSystem. +10:45:33.787810 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibItsHttp_TestSystem. +10:45:33.787906 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Sync. +10:45:33.787968 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initializing module LibCommon_AbstractData. +10:45:33.788032 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0->../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initializing module LibCommon_BasicTypesAndValues. +10:45:33.788098 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0->../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initialization of module LibCommon_BasicTypesAndValues finished. +10:45:33.788174 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_AbstractData finished. +10:45:33.788237 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initializing module LibCommon_VerdictControl. +10:45:33.788305 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_VerdictControl finished. +10:45:33.788412 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Sync finished. +10:45:33.788473 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Time. +10:45:33.788533 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Time finished. +10:45:33.788593 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibItsHttp_TestSystem finished. +10:45:33.788648 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibSip_Interface. +10:45:33.788703 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_SIPTypesAndValues. +10:45:33.788765 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0 Initializing module LibSip_MessageBodyTypes. +10:45:33.788828 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SDPTypes. +10:45:33.793010 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn:0 Initializing module LibSip_Common. +10:45:33.793098 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn:0 Initialization of module LibSip_Common finished. +10:45:33.793168 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SDPTypes finished. +10:45:33.793236 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SimpleMsgSummaryTypes. +10:45:33.793697 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SimpleMsgSummaryTypes finished. +10:45:33.793770 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_XMLTypes. +10:45:33.793838 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_resource_lists. +10:45:33.793953 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_resource_lists finished. +10:45:33.794024 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_xcap. +10:45:33.794110 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_ietf_params_xml_ns_common_policy. +10:45:33.801059 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_ietf_params_xml_ns_common_policy finished. +10:45:33.801196 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_oma_xml_xdm_common_policy. +10:45:33.801272 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_oma_xml_xdm_common_policy finished. +10:45:33.801357 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_xcap finished. +10:45:33.801485 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_mcid. +10:45:33.801555 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_mcid finished. +10:45:33.801625 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module NoTargetNamespace. +10:45:33.801696 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module NoTargetNamespace finished. +10:45:33.801777 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_3gpp_ns_cw_1_0. +10:45:33.801858 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_3gpp_ns_cw_1_0 finished. +10:45:33.801958 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_conference_info. +10:45:33.802029 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_conference_info finished. +10:45:33.802098 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_pstn. +10:45:33.802168 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_pstn finished. +10:45:33.802237 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_comm_div_info. +10:45:33.802307 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_comm_div_info finished. +10:45:33.802424 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_reginfo. +10:45:33.802495 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_reginfo finished. +10:45:33.802564 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_XMLTypes finished. +10:45:33.802631 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0 Initialization of module LibSip_MessageBodyTypes finished. +10:45:33.802694 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_SIPTypesAndValues finished. +10:45:33.802754 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_PIXITS. +10:45:33.802814 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initializing module LibCommon_DataStrings. +10:45:33.802928 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initialization of module LibCommon_DataStrings finished. +10:45:33.802992 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_PIXITS finished. +10:45:33.803052 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibSip_Interface finished. +10:45:33.803107 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TestSystem finished. +10:45:33.803163 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Functions finished. +10:45:33.803207 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pics. +10:45:33.803250 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pics finished. +10:45:33.803293 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pixits. +10:45:33.807410 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pixits finished. +10:45:33.807517 EXECUTOR - Initialization of module AtsNg112_TestCases finished. +10:45:33.807561 EXECUTOR - Initializing module AtsNg112_TestControl. +10:45:33.807603 EXECUTOR - Initialization of module AtsNg112_TestControl finished. +10:45:33.807645 EXECUTOR - Initializing module LibCommon_TextStrings. +10:45:33.807688 EXECUTOR - Initialization of module LibCommon_TextStrings finished. +10:45:33.807730 EXECUTOR - Initializing module LibItsHttp_BinaryTemplates. +10:45:33.807772 EXECUTOR - Initialization of module LibItsHttp_BinaryTemplates finished. +10:45:33.807814 EXECUTOR - Initializing module LibItsHttp_BinaryTypes. +10:45:33.807899 EXECUTOR - Initialization of module LibItsHttp_BinaryTypes finished. +10:45:33.807945 EXECUTOR - Initializing module LibItsHttp_EncdecDeclarations. +10:45:33.807986 EXECUTOR - Initialization of module LibItsHttp_EncdecDeclarations finished. +10:45:33.808028 EXECUTOR - Initializing module LibNg112_EncdecDeclarations. +10:45:33.808070 EXECUTOR - Initialization of module LibNg112_EncdecDeclarations finished. +10:45:33.808112 EXECUTOR - Initializing module LibSip_EncdecDeclarations. +10:45:33.808153 EXECUTOR ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn:0 Initializing module LibSip_SMSTypesAndValues. +10:45:33.808198 EXECUTOR ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn:0 Initialization of module LibSip_SMSTypesAndValues finished. +10:45:33.808243 EXECUTOR - Initialization of module LibSip_EncdecDeclarations finished. +10:45:33.808284 EXECUTOR - Initializing module LibSip_Library. +10:45:33.808326 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_SMSTemplates. +10:45:33.808412 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn:0 Initializing module LibSip_SMSFunctions. +10:45:33.808463 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn:0 Initialization of module LibSip_SMSFunctions finished. +10:45:33.810943 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_SMSTemplates finished. +10:45:33.811025 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_Steps. +10:45:33.811070 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn:0 Initializing module LibSip_Templates. +10:45:33.814808 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn:0 Initialization of module LibSip_Templates finished. +10:45:33.819438 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_Steps finished. +10:45:33.819539 EXECUTOR - Initialization of module LibSip_Library finished. +10:45:33.819583 EXECUTOR - Initializing module PreGenRecordOf. +10:45:33.819624 EXECUTOR - Initialization of module PreGenRecordOf finished. +10:45:33.819665 EXECUTOR - Initializing module TitanLoggerApi. +10:45:33.819707 EXECUTOR - Initialization of module TitanLoggerApi finished. +10:45:33.819749 EXECUTOR - Initializing module urn_ietf_params_xml_ns_geopriv_conf. +10:45:33.819792 EXECUTOR - Initialization of module urn_ietf_params_xml_ns_geopriv_conf finished. +10:45:33.819919 EXECUTOR - Configuration data was processed successfully. +10:45:33.820212 EXECUTOR - MTC was created. Process id: 16092. +10:45:34.860715 EXECUTOR - Exit was requested from MC. Terminating HC. +10:45:34.862156 EXECUTOR - Disconnected from MC. +10:45:34.862206 EXECUTOR - TTCN-3 Host Controller finished. diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/81/8043f232b685001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/81/8043f232b685001814de869e8ad08251 new file mode 100644 index 0000000..8d9519d --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/81/8043f232b685001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 10:59:12 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall -std=c++11 -pthread -fPIC + +# Flags for the linker: +LDFLAGS = -pthread -fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/84/7015cde1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/84/7015cde1978500181c21d10bc58219ba new file mode 100644 index 0000000..2a92043 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/84/7015cde1978500181c21d10bc58219ba @@ -0,0 +1,44 @@ +/*! + * \file udp_layer_factory.hh + * \brief Header file for ITS UDP/IP protocol layer factory. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "layer_stack_builder.hh" + +#include "udp_layer.hh" + +/*! + * \class udp_layer_factory + * \brief This class provides a factory class to create an udp_layer class instance + */ +class udp_layer_factory: public layer_factory { + static udp_layer_factory _f; //! Reference to the unique instance of this class +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the udp_layer_factory class + * \remark The UDP/IP layer identifier is UDP + */ + udp_layer_factory() { + // register factory + layer_stack_builder::register_layer_factory("UDP", this); + }; + /*! + * \fn layer* create_layer(const std::string & type, const std::string & param); + * \brief Create the layers stack based on the provided layers stack description + * \param[in] p_type The provided layers stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + * \inline + */ + inline virtual layer* create_layer(const std::string& p_type, const std::string& p_param) { + return new udp_layer(p_type, p_param); + }; +}; // End of class udp_layer_factory diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/86/109946f39d8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/86/109946f39d8500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..9f1a038 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/86/109946f39d8500181eabf1ba1ea37ea1 @@ -0,0 +1,52 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + true + + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/86/5074c5e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/86/5074c5e1978500181c21d10bc58219ba new file mode 100644 index 0000000..2b302de --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/86/5074c5e1978500181c21d10bc58219ba @@ -0,0 +1,23 @@ +#pragma once + +#include "codec.hh" +#include "params.hh" + +class Base_Type; +class TTCN_Typedescriptor_t; +class TTCN_Buffer; + +namespace LibItsHttp__XmlMessageBodyTypes { + class XmlBody; +} + +class held_codec: public codec +{ +public: + explicit held_codec() : codec() { }; + virtual ~held_codec() { }; + + virtual int encode (const LibItsHttp__XmlMessageBodyTypes::XmlBody&, OCTETSTRING& data); + virtual int decode (const OCTETSTRING& p_data, LibItsHttp__XmlMessageBodyTypes::XmlBody&, params* p_params = NULL); + +}; // End of class held_codec diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/8d/003b57dfb985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/8d/003b57dfb985001814de869e8ad08251 new file mode 100644 index 0000000..7131a74 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/8d/003b57dfb985001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 11:56:39 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC + +# Flags for the linker: +LDFLAGS = -pthread,-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9/2045a71fb985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9/2045a71fb985001814de869e8ad08251 new file mode 100644 index 0000000..3f01614 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9/2045a71fb985001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 11:51:17 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC + +# Flags for the linker: +LDFLAGS = -pthread,-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/91/a0caebd7b185001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/91/a0caebd7b185001814de869e8ad08251 new file mode 100644 index 0000000..57ac6b1 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/91/a0caebd7b185001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 08:52:25 UTC 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -std=c++11 -pthread -fPIC + +# Flags for the linker: +LDFLAGS = -pthread -fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/92/c0a9071fb985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/92/c0a9071fb985001814de869e8ad08251 new file mode 100644 index 0000000..11fdad1 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/92/c0a9071fb985001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 11:51:13 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC + +# Flags for the linker: +LDFLAGS = -pthread,-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/95/60d0d1e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/95/60d0d1e1978500181c21d10bc58219ba new file mode 100644 index 0000000..8b65a0f --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/95/60d0d1e1978500181c21d10bc58219ba @@ -0,0 +1,82 @@ +#include +#include +#include + +#include "held_codec_factory.hh" + +#include "loggers.hh" + +#include "LibItsHttp_XmlMessageBodyTypes.hh" + +#include "urn_ietf_params_xml_ns_geopriv_held.hh" + +int held_codec::encode (const LibItsHttp__XmlMessageBodyTypes::XmlBody& msg, OCTETSTRING& data) +{ + loggers::get_instance().log_msg(">>> held_codec::encode: ", (const Base_Type&)msg); + + TTCN_EncDec::clear_error(); + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); + TTCN_Buffer encoding_buffer; + + if (msg.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_locationRequest)) { + const urn__ietf__params__xml__ns__geopriv__held::LocationRequestType& location_request = msg.locationRequest(); + loggers::get_instance().log_msg("held_codec::encode: Process LocationRequestType", (const Base_Type&)location_request); + location_request.encode(urn__ietf__params__xml__ns__geopriv__held::LocationRequest_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + } else if (msg.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_locationResponse)) { + const urn__ietf__params__xml__ns__geopriv__held::LocationResponseType& location_response = msg.locationResponse(); + loggers::get_instance().log_msg("held_codec::encode: Process LocationResponseType", (const Base_Type&)location_response); + location_response.encode(urn__ietf__params__xml__ns__geopriv__held::LocationResponse_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + } else { + loggers::get_instance().warning("held_codec::encode: Unsupported variant"); + return -1; + } + data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()); + loggers::get_instance().log_msg("held_codec::decode: After encoding: ", data); + + loggers::get_instance().log("<<< held_codec::encode"); + return 0; +} + +int held_codec::decode (const OCTETSTRING& p_data, LibItsHttp__XmlMessageBodyTypes::XmlBody& msg, params* p_params) +{ + loggers::get_instance().log_msg(">>> held_codec::decode: p_data=", p_data); + + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); + TTCN_EncDec::clear_error(); + TTCN_Buffer decoding_buffer(p_data); + + // Sanity checks + params::const_iterator it; + if (p_params == nullptr) { + loggers::get_instance().warning("held_codec::decode: Failed to access p_params (null pointer)"); + return -1; + } else { + it = p_params->find("decode_str"); + if (it == p_params->cend()) { + loggers::get_instance().warning("held_codec::decode: Failed to access p_params item (decode_str)"); + return -1; + } + } + + if (it->second.find("second.find("second.find(" $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/99/a0124aeb9d8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/99/a0124aeb9d8500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..732a4a0 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/99/a0124aeb9d8500181eabf1ba1ea37ea1 @@ -0,0 +1,46 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/99/e0ee711eb885001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/99/e0ee711eb885001814de869e8ad08251 new file mode 100644 index 0000000..838442b --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/99/e0ee711eb885001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 11:44:05 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall-std=c++11-pthread-fPIC + +# Flags for the linker: +LDFLAGS = -pthread-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9b/d006f332b685001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9b/d006f332b685001814de869e8ad08251 new file mode 100644 index 0000000..8d9519d --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9b/d006f332b685001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 10:59:12 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall -std=c++11 -pthread -fPIC + +# Flags for the linker: +LDFLAGS = -pthread -fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9b/e04fb3d3978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9b/e04fb3d3978500181c21d10bc58219ba new file mode 100644 index 0000000000000000000000000000000000000000..57e2603f9d79a56ef26b17df33c76257a4171673 GIT binary patch literal 135776 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 $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9d/20049defc08500181dc9eb7ae31560a9 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9d/20049defc08500181dc9eb7ae31560a9 new file mode 100644 index 0000000..c57a208 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9d/20049defc08500181dc9eb7ae31560a9 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 12:47:08 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall-std=c++11-pthread-fPIC + +# Flags for the linker: +LDFLAGS = -pthread-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9d/5156cae1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9d/5156cae1978500181c21d10bc58219ba new file mode 100644 index 0000000..3d59dfc --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9d/5156cae1978500181c21d10bc58219ba @@ -0,0 +1,45 @@ +/*! + * \file sip_layer_factory.hh + * \brief Header file for ITS Sip protocol layer factory. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "layer_stack_builder.hh" + +#include "sip_layer.hh" + +/*! + * \class sip_layer_factory + * \brief This class provides a factory class to create an sip_layer class instance + */ +class sip_layer_factory : public layer_factory { + static sip_layer_factory _f; //! Reference to the unique instance of this class +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the udp_layer_factory class + * \remark The HTTP layer identifier is HTTP + */ + sip_layer_factory() { + // Register factory + layer_stack_builder::register_layer_factory("HTTP", this); + }; + /*! + * \fn layer* create_layer(const std::string & type, const std::string & param); + * \brief Create the layers stack based on the provided layers stack description + * \param[in] p_type The provided layers stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + * \inline + */ + inline virtual layer* create_layer(const std::string& p_type, const std::string& p_param){ + return new sip_layer(p_type, p_param); + }; +}; // End of class sip_layer_factory + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9f/10b4315bbc85001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9f/10b4315bbc85001814de869e8ad08251 new file mode 100644 index 0000000..dfc72b9 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9f/10b4315bbc85001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 11:56:39 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall -std=c++11 -pthread -fPIC + +# Flags for the linker: +LDFLAGS = -pthread -fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9f/708420b4a88500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9f/708420b4a88500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..bad957a --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/9f/708420b4a88500181eabf1ba1ea37ea1 @@ -0,0 +1,128 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + + osipparser2 + ssl + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn + + true + + + + + + src/ttcn/ttcn/TestCodec + + false + true + + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/a2/c0387d0bb985001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/a2/c0387d0bb985001814de869e8ad08251 new file mode 100644 index 0000000..aea0c14 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/a2/c0387d0bb985001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 11:50:43 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall,-std=c++11,-pthread,-fPIC + +# Flags for the linker: +LDFLAGS = -pthread,-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ad/e0ead7e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ad/e0ead7e1978500181c21d10bc58219ba new file mode 100644 index 0000000..5bb8640 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ad/e0ead7e1978500181c21d10bc58219ba @@ -0,0 +1,125 @@ +#include "udp_layer_factory.hh" + +#include "loggers.hh" + +udp_layer::udp_layer(const std::string & p_type, const std::string & param) : layer(p_type), _params() { + loggers::get_instance().log(">>> udp_layer::udp_layer: %s, %s", to_string().c_str(), param.c_str()); + // Setup parameters + params::convert(_params, param); + params::const_iterator it = _params.find("src_ip"); + if (it == _params.cend()) { + _params.insert(std::pair(std::string("src_ip"), "127.0.0.1")); + } + it = _params.find("src_port"); + if (it == _params.cend()) { + _params.insert(std::pair(std::string("src_port"), "12345")); + } + it = _params.find("dst_ip"); + if (it == _params.cend()) { + _params.insert(std::pair(std::string("dst_ip"), "127.0.0.1")); + } + it = _params.find("dst_port"); + if (it == _params.cend()) { + _params.insert(std::pair(std::string("dst_port"), "12346")); + } + + //_params.log(); +} + +void udp_layer::send_data(OCTETSTRING& data, params& params) { + loggers::get_instance().log_msg(">>> udp_layer::send_data: ", data); + + // Create IP/UDP packet + unsigned int len = sizeof(struct iphdr) + sizeof(struct udphdr) + data.lengthof(); + unsigned char *buffer = new unsigned char[len]; + // Set ip header + _iphdr = (struct iphdr *)buffer; + _daddr.sin_family = AF_INET; + _saddr.sin_family = AF_INET; + params::const_iterator it = _params.find("dst_port"); + _daddr.sin_port = htons(std::strtoul(it->second.c_str(), NULL, 10)); + it = _params.find("src_port"); + _saddr.sin_port = htons(std::strtoul(it->second.c_str(), NULL, 10)); + it = _params.find("dst_ip"); + inet_pton(AF_INET, it->second.c_str(), (struct in_addr *)&_daddr.sin_addr.s_addr); + it = _params.find("src_ip"); + inet_pton(AF_INET, it->second.c_str(), (struct in_addr *)&_saddr.sin_addr.s_addr); + _iphdr->ihl = 5; + _iphdr->version = 4; + _iphdr->tos = IPTOS_LOWDELAY; + _iphdr->id = 0; + _iphdr->frag_off = htons(0x4000); /* Don't fragment */ + _iphdr->ttl = 64; + _iphdr->tot_len = htons(sizeof(struct iphdr) + sizeof(struct udphdr) + data.lengthof()); + _iphdr->protocol = IPPROTO_UDP; + _iphdr->saddr = _saddr.sin_addr.s_addr; + _iphdr->daddr = _daddr.sin_addr.s_addr; + _iphdr->check = 0; + _iphdr->check = inet_check_sum((const void *)_iphdr, sizeof(struct iphdr)); + // Set udp header + _udphdr = (struct udphdr *)(buffer + sizeof(struct iphdr)); + _udphdr->source = _saddr.sin_port; + _udphdr->dest = _daddr.sin_port; + _udphdr->len = htons(sizeof(struct udphdr) + data.lengthof()); + _udphdr->check = 0; + // Set payload + unsigned char *payload = buffer + sizeof(struct iphdr) + sizeof(struct udphdr); + memcpy(payload, static_cast(data), data.lengthof()); + // Calculate UDP checksum + _udphdr->check = inet_check_sum( + (const void *)_udphdr, + sizeof(struct udphdr), + inet_check_sum( + static_cast(data), + data.lengthof(), + inet_check_sum( + (const unsigned char*)(&(_iphdr->saddr)), + 2 * sizeof(_iphdr->saddr), + IPPROTO_UDP + static_cast(ntohs(_udphdr->len)) + ) + ) + ); + // Send data lower layers + OCTETSTRING udp(len, buffer); + send_to_all_layers(udp, params); + // Free buffer + delete [] buffer; +} + +void udp_layer::receive_data(OCTETSTRING& data, params& params) { + loggers::get_instance().log_msg(">>> udp_layer::receive_data: ", data); + + // Decode UDP packet + const unsigned char* buffer = static_cast(data); + _iphdr = (struct iphdr*)buffer; + _udphdr = (struct udphdr*)(buffer + sizeof(struct iphdr)); + loggers::get_instance().log("udp_layer::receive_data: src_port = %d, payload length = %d", ntohs(_udphdr->source), ntohs(_udphdr->len)); + // TODO To be refined + data = OCTETSTRING(ntohs(_udphdr->len) - sizeof(struct udphdr), (unsigned char*)(buffer + sizeof(struct iphdr) + sizeof(struct udphdr))); + //loggers::get_instance().log_msg("udp_layer::receive_data: message payload", data); + + receive_to_all_layers(data, params); +} + +unsigned short udp_layer::inet_check_sum(const void *buf, size_t len, const unsigned short p_initial_sum) { + unsigned long sum = p_initial_sum; + unsigned int i; + + // Checksum all the pairs of bytes first... + for (i = 0; i < (len & ~1U); i += 2) { + sum += (u_int16_t)ntohs(*((u_int16_t *)((unsigned char*)buf + i))); + if (sum > 0xFFFF) + sum -= 0xFFFF; + } // End of 'for' statement + // If there's a single byte left over, checksum it, too + if (i < len) { + sum += *((unsigned char*)buf + i) << 8; + if (sum > 0xFFFF) { + sum -= 0xFFFF; + } + } + + return htons((~sum & 0xffff)); +} + +udp_layer_factory udp_layer_factory::_f; diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ae/d05237a7ac8500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ae/d05237a7ac8500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..9e58f29 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ae/d05237a7ac8500181eabf1ba1ea37ea1 @@ -0,0 +1,129 @@ + + Default + + + true + bin/STF549_Ng112 + + AS_USE_SSL + + + [HOME_FRAMEWORKS]/osip/include + + true + true + true + true + true + true + true + + pcap + ssl + osipparser2 + + + [HOME_FRAMEWORKS]/osip/src/osipparser2/.libs + + + + + bin + + + + + src/ttcn/ttcn/LibCommon/LibCommon_Sync.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XMLTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlMessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibHttp/LibItsHttp_XmlTemplates.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Common.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Steps.ttcn + + true + + + + src/ttcn/ttcn/LibSip/ttcn/LibSip_Templates.ttcn + + true + + + + + + src/ttcn/ttcn/TestCodec + + false + true + + + + \ No newline at end of file diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b0/b011035bb685001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b0/b011035bb685001814de869e8ad08251 new file mode 100644 index 0000000..55a4a35 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b0/b011035bb685001814de869e8ad08251 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 11:31:24 CEST 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -Wall-std=c++11-pthread-fPIC + +# Flags for the linker: +LDFLAGS = -pthread-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b2/2070c7e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b2/2070c7e1978500181c21d10bc58219ba new file mode 100644 index 0000000..123b96a --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b2/2070c7e1978500181c21d10bc58219ba @@ -0,0 +1,49 @@ +/*! + * \file pcap_layer_factory.hh + * \brief Header file for Pcap layer factory. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#if (OSTYPE == linux) + +#include "layer_stack_builder.hh" + +#include "pcap_layer.hh" + +/*! + * \class pcap_layer_factory + * \brief This class provides a factory class to create an pcap_layer class instance + */ +class pcap_layer_factory: public layer_factory { + static pcap_layer_factory _f; //! Reference to the unique instance of this class +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the udp_layer_factory class + * \remark The PCAP layer identifier is PCAP + */ + pcap_layer_factory() { + // register factory + layer_stack_builder::register_layer_factory("PCAP", this); + }; + /*! + * \fn layer* create_layer(const std::string & type, const std::string & param); + * \brief Create the layers stack based on the provided layers stack description + * \param[in] p_type The provided layers stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + * \inline + */ + inline virtual layer* create_layer(const std::string& p_type, const std::string& p_param) { + return new pcap_layer(p_type, p_param); + }; +}; // End of class pcap_layer_factory + +#endif + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b5/800d75bfbe85001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b5/800d75bfbe85001814de869e8ad08251 new file mode 100644 index 0000000..0cebc44 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b5/800d75bfbe85001814de869e8ad08251 @@ -0,0 +1,159 @@ +12:24:17.390490 EXECUTOR - TTCN-3 Host Controller started on vagrant. Version: CRL 113 200/6 R4A. +12:24:17.390536 EXECUTOR - TTCN Logger v2.2 options: TimeStampFormat:=Time; LogEntityName:=Yes; LogEventTypes:=Yes; SourceInfoFormat:=Stack; *.FileMask:=LOG_ALL | MATCHING | DEBUG; *.ConsoleMask:=LOG_ALL | MATCHING | DEBUG; LogFileSize:=0; LogFileNumber:=1; DiskFullAction:=Error +12:24:17.390541 EXECUTOR - Maximum number of open file descriptors: 1048576, FD_SETSIZE = 1024 +12:24:17.390666 WARNING - Warning: The address of MC was set to a local IP address. This may cause incorrect behavior if a HC from a remote host also connects to MC. +12:24:17.390675 EXECUTOR - The address of MC was set to 127.0.0.1:0. +12:24:17.390883 EXECUTOR - Connected to MC. +12:24:17.390957 EXECUTOR - This host supports UNIX domain sockets for local communication. +12:24:17.391324 EXECUTOR - Processing configuration data received from MC. +12:24:17.391948 EXECUTOR - Module LibCommon_Sync has the following parameters: { PX_TSYNC_TIME_LIMIT := 120.000000, PX_TSHUT_DOWN_TIME_LIMIT := 120.000000 } +12:24:17.391998 EXECUTOR - Module LibCommon_Time has the following parameters: { PX_TDONE := 120.000000, PX_TAC := 30.000000, PX_TNOAC := 10.000000, PX_TWAIT := 120.000000, PX_LOOP := 1.000000 } +12:24:17.392057 EXECUTOR - Module LibItsHttp_Pics has the following parameters: { PICS_HEADER_HOST := "ptsv2.com", PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8" } +12:24:17.392110 EXECUTOR - Module LibNg112_Pics has the following parameters: { PICS_LIS_IUT := true, PICS_ECRF_IUT := false, PICS_HTTP_POST_REQUEST := true, PICS_LOCATION_HELD := true, PICS_SERVICE_LOST := true, PICS_LIS_REQUEST_URIs := { "/t/9rk8l-1531130342/post", "/t/r143f-1528105031/post", "/t/6ouem-1531201238/post" }, PICS_ECRF_URI := "/service" } +12:24:17.392174 EXECUTOR - Module LibNg112_Pixits has the following parameters: { PX_DOUBLE_CMP_EPSILON := 1.000000e-05, PX_DEVICE_URI_SIP := "sip:user@example.net;gr=kjh29x97us97d", PX_DEVICE_URI_TEL := "+436501234567", PX_UNKNOWN_DEVICE_URI := "sip:no_one@example.net;gr=kjh29x97us97d", PX_DEVICE_POSITION := { -34.407000, 150.883000, 24.800000 }, PX_CIRCLE_POS := { 48.215388, 16.290300 }, PX_CIRCLE_UOM := "urn:ogc:def:uom:EPSG::9001", PX_CIRCLE_BASE := 23.600000, PX_SRS_NAME := "urn:ogc:def:crs:EPSG::4326" } +12:24:17.392336 EXECUTOR - Module LibSip_PIXITS has the following parameters: { PX_SIP_SDP_USER_NAME := "voicesession", PX_SIP_SDP_SESSION_ID := "30000", PX_SIP_SDP_DYN := "0", PX_SIP_SDP_B_MODIFIER := "AS", PX_SIP_SDP_B_BANDWIDTH := 64, PX_SIP_SDP_ENCODING := "PCMU", PX_SIP_SDP_CLOCKRATE := "8000", PX_MB_LENGTH_FROM_ENCVAL := true, PX_USE_FX_FOR_XML_LENGTH := false, PX_SIP_TRANSPORT := "UDP", PX_SIP_REGISTRATION := false, PX_AUTH_ALGORITHM := "AKAv1-MD5", PX_SIP_REGISTER_AUTHENTICATION_ENABLED := true, PX_SIP_INVITE_AUTHENTICATION_ENABLED := false, PX_SIP_TWAIT := 30.000000, PX_SIP_TACK := 8.000000, PX_SIP_TRESP := 15.000000, PX_SIP_TNOACT := 1.000000, PX_SIP_MIME_BOUNDARY := "boundary1" } +12:24:17.392418 EXECUTOR - Initializing module AtsNg112_TestCases. +12:24:17.392462 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibItsHttp_Functions. +12:24:17.392507 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_TypesAndValues. +12:24:17.392557 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0 Initializing module LibItsHttp_MessageBodyTypes. +12:24:17.392611 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XmlMessageBodyTypes. +12:24:17.392669 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initializing module LibItsHttp_XMLTypes. +12:24:17.392796 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held. +12:24:17.392871 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initializing module http_www_w3_org_XML_1998_namespace. +12:24:17.392940 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initializing module XSD. +12:24:17.393013 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn:0 Initializing module UsefulTtcn3Types. +12:24:17.393095 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn:0 Initialization of module UsefulTtcn3Types finished. +12:24:17.393172 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn:0 Initialization of module XSD finished. +12:24:17.393286 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn:0 Initialization of module http_www_w3_org_XML_1998_namespace finished. +12:24:17.393359 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held finished. +12:24:17.393431 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_geopriv_held_id. +12:24:17.393496 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_geopriv_held_id finished. +12:24:17.393561 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10. +12:24:17.393625 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy. +12:24:17.393695 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy finished. +12:24:17.393809 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10 finished. +12:24:17.393875 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc. +12:24:17.393941 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc finished. +12:24:17.394005 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf. +12:24:17.394077 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf finished. +12:24:17.394141 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XMLTypes finished. +12:24:17.403333 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_XmlMessageBodyTypes finished. +12:24:17.403468 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initializing module LibItsHttp_BinaryMessageBodyTypes. +12:24:17.403529 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn:0 Initialization of module LibItsHttp_BinaryMessageBodyTypes finished. +12:24:17.403589 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn:0 Initialization of module LibItsHttp_MessageBodyTypes finished. +12:24:17.403642 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_TypesAndValues finished. +12:24:17.403693 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initializing module LibItsHttp_Pics. +12:24:17.403787 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn:0 Initialization of module LibItsHttp_Pics finished. +12:24:17.403841 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibItsHttp_Functions finished. +12:24:17.403886 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Templates. +12:24:17.403929 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Templates finished. +12:24:17.403973 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Functions. +12:24:17.404016 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_Templates. +12:24:17.404066 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_Templates finished. +12:24:17.404115 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibItsHttp_XmlTemplates. +12:24:17.404164 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0 Initializing module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape. +12:24:17.404221 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0 Initializing module http_www_opengis_net_pidflo_1_0. +12:24:17.404341 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn:0 Initializing module http_www_opengis_net_gml. +12:24:17.404407 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn:0 Initialization of module http_www_opengis_net_gml finished. +12:24:17.404470 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0->../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn:0 Initialization of module http_www_opengis_net_pidflo_1_0 finished. +12:24:17.404531 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn:0 Initialization of module urn_ietf_params_xml_ns_pidf_geopriv10_geoShape finished. +12:24:17.404591 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibItsHttp_XmlTemplates finished. +12:24:17.404640 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TypesAndValues. +12:24:17.404689 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TypesAndValues finished. +12:24:17.404779 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initializing module LibNg112_TestSystem. +12:24:17.404831 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibItsHttp_TestSystem. +12:24:17.404887 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Sync. +12:24:17.404947 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initializing module LibCommon_AbstractData. +12:24:17.405011 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0->../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initializing module LibCommon_BasicTypesAndValues. +12:24:17.405076 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0->../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn:0 Initialization of module LibCommon_BasicTypesAndValues finished. +12:24:17.405149 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_AbstractData finished. +12:24:17.405212 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initializing module LibCommon_VerdictControl. +12:24:17.405322 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0->../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn:0 Initialization of module LibCommon_VerdictControl finished. +12:24:17.405388 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Sync finished. +12:24:17.405448 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initializing module LibCommon_Time. +12:24:17.405508 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn:0 Initialization of module LibCommon_Time finished. +12:24:17.405569 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibItsHttp_TestSystem finished. +12:24:17.405624 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initializing module LibSip_Interface. +12:24:17.405680 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_SIPTypesAndValues. +12:24:17.405795 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0 Initializing module LibSip_MessageBodyTypes. +12:24:17.405876 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SDPTypes. +12:24:17.405946 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn:0 Initializing module LibSip_Common. +12:24:17.406025 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn:0 Initialization of module LibSip_Common finished. +12:24:17.406096 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SDPTypes finished. +12:24:17.406162 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_SimpleMsgSummaryTypes. +12:24:17.406289 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_SimpleMsgSummaryTypes finished. +12:24:17.406390 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initializing module LibSip_XMLTypes. +12:24:17.407283 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_resource_lists. +12:24:17.407394 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_resource_lists finished. +12:24:17.407484 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_xcap. +12:24:17.407571 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_ietf_params_xml_ns_common_policy. +12:24:17.407679 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_ietf_params_xml_ns_common_policy finished. +12:24:17.407811 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initializing module urn_oma_xml_xdm_common_policy. +12:24:17.407906 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0->../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn:0 Initialization of module urn_oma_xml_xdm_common_policy finished. +12:24:17.407988 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_xcap finished. +12:24:17.408064 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_mcid. +12:24:17.408139 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_mcid finished. +12:24:17.408793 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module NoTargetNamespace. +12:24:17.408879 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module NoTargetNamespace finished. +12:24:17.408961 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_3gpp_ns_cw_1_0. +12:24:17.409036 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_3gpp_ns_cw_1_0 finished. +12:24:17.409111 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_conference_info. +12:24:17.409185 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_conference_info finished. +12:24:17.409286 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_simservs_pstn. +12:24:17.409366 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_simservs_pstn finished. +12:24:17.411281 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module http_uri_etsi_org_ngn_params_xml_comm_div_info. +12:24:17.411390 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module http_uri_etsi_org_ngn_params_xml_comm_div_info finished. +12:24:17.411476 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initializing module urn_ietf_params_xml_ns_reginfo. +12:24:17.411552 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn:0 Initialization of module urn_ietf_params_xml_ns_reginfo finished. +12:24:17.411626 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn:0 Initialization of module LibSip_XMLTypes finished. +12:24:17.411697 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn:0 Initialization of module LibSip_MessageBodyTypes finished. +12:24:17.415282 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_SIPTypesAndValues finished. +12:24:17.415392 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initializing module LibSip_PIXITS. +12:24:17.415462 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initializing module LibCommon_DataStrings. +12:24:17.415533 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn:0 Initialization of module LibCommon_DataStrings finished. +12:24:17.415602 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0->../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn:0 Initialization of module LibSip_PIXITS finished. +12:24:17.415668 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn:0 Initialization of module LibSip_Interface finished. +12:24:17.415755 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0->../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn:0 Initialization of module LibNg112_TestSystem finished. +12:24:17.415825 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Functions finished. +12:24:17.415871 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pics. +12:24:17.415917 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pics finished. +12:24:17.415963 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initializing module LibNg112_Pixits. +12:24:17.416009 EXECUTOR ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn:0 Initialization of module LibNg112_Pixits finished. +12:24:17.416056 EXECUTOR - Initialization of module AtsNg112_TestCases finished. +12:24:17.416100 EXECUTOR - Initializing module AtsNg112_TestControl. +12:24:17.416144 EXECUTOR - Initialization of module AtsNg112_TestControl finished. +12:24:17.416188 EXECUTOR - Initializing module LibCommon_TextStrings. +12:24:17.416264 EXECUTOR - Initialization of module LibCommon_TextStrings finished. +12:24:17.416311 EXECUTOR - Initializing module LibItsHttp_BinaryTemplates. +12:24:17.416357 EXECUTOR - Initialization of module LibItsHttp_BinaryTemplates finished. +12:24:17.416401 EXECUTOR - Initializing module LibItsHttp_BinaryTypes. +12:24:17.416444 EXECUTOR - Initialization of module LibItsHttp_BinaryTypes finished. +12:24:17.416488 EXECUTOR - Initializing module LibItsHttp_EncdecDeclarations. +12:24:17.416532 EXECUTOR - Initialization of module LibItsHttp_EncdecDeclarations finished. +12:24:17.416576 EXECUTOR - Initializing module LibNg112_EncdecDeclarations. +12:24:17.416620 EXECUTOR - Initialization of module LibNg112_EncdecDeclarations finished. +12:24:17.416665 EXECUTOR - Initializing module LibSip_EncdecDeclarations. +12:24:17.416709 EXECUTOR ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn:0 Initializing module LibSip_SMSTypesAndValues. +12:24:17.416781 EXECUTOR ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn:0 Initialization of module LibSip_SMSTypesAndValues finished. +12:24:17.416829 EXECUTOR - Initialization of module LibSip_EncdecDeclarations finished. +12:24:17.416874 EXECUTOR - Initializing module LibSip_Library. +12:24:17.416917 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_SMSTemplates. +12:24:17.416967 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn:0 Initializing module LibSip_SMSFunctions. +12:24:17.417019 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn:0 Initialization of module LibSip_SMSFunctions finished. +12:24:17.424766 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_SMSTemplates finished. +12:24:17.424878 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initializing module LibSip_Steps. +12:24:17.424929 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn:0 Initializing module LibSip_Templates. +12:24:17.438556 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0->../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn:0 Initialization of module LibSip_Templates finished. +12:24:17.439779 EXECUTOR ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn:0 Initialization of module LibSip_Steps finished. +12:24:17.439875 EXECUTOR - Initialization of module LibSip_Library finished. +12:24:17.439958 EXECUTOR - Initializing module PreGenRecordOf. +12:24:17.440040 EXECUTOR - Initialization of module PreGenRecordOf finished. +12:24:17.440119 EXECUTOR - Initializing module TitanLoggerApi. +12:24:17.440201 EXECUTOR - Initialization of module TitanLoggerApi finished. +12:24:17.440359 EXECUTOR - Initializing module urn_ietf_params_xml_ns_geopriv_conf. +12:24:17.440458 EXECUTOR - Initialization of module urn_ietf_params_xml_ns_geopriv_conf finished. +12:24:17.440545 EXECUTOR - Configuration data was processed successfully. +12:24:17.440889 EXECUTOR - MTC was created. Process id: 26167. +12:25:30.881099 EXECUTOR - Exit was requested from MC. Terminating HC. +12:25:30.882637 EXECUTOR - Disconnected from MC. +12:25:30.882686 EXECUTOR - TTCN-3 Host Controller finished. diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b7/2170c7e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b7/2170c7e1978500181c21d10bc58219ba new file mode 100644 index 0000000..b0765fd --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b7/2170c7e1978500181c21d10bc58219ba @@ -0,0 +1,27 @@ +#pragma once + +#include "codec.hh" +#include "params.hh" + +#include "sip_codec_request.hh" + +class Base_Type; +class TTCN_Typedescriptor_t; +class TTCN_Buffer; + +namespace LibSip__SIPTypesAndValues { + class REGISTER__Request; +} + +class sip_codec_register_request: public codec < +LibSip__SIPTypesAndValues::REGISTER__Request, +LibSip__SIPTypesAndValues::REGISTER__Request> +{ + sip_codec_request _codec; +public: + explicit sip_codec_register_request() : codec(), _codec() { }; + virtual ~sip_codec_register_request() { }; + + virtual int encode (const LibSip__SIPTypesAndValues::REGISTER__Request& msg, OCTETSTRING& data); + virtual int decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::REGISTER__Request& msg, params* p_params = NULL); +}; // End of class sip_codec_register_request diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b8/80b52d1ab885001814de869e8ad08251 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b8/80b52d1ab885001814de869e8ad08251 new file mode 100644 index 0000000..482e9dc --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b8/80b52d1ab885001814de869e8ad08251 @@ -0,0 +1,57 @@ +#include "LibItsHttp_TypesAndValues.hh" + +#include "http_layer_factory.hh" +#include "codec_stack_builder.hh" + +#include "loggers.hh" + +#include "converter.hh" + +using namespace std; // Required for isnan() +#include "LibItsHttp_TypesAndValues.hh" +#include "LibItsHttp_TestSystem.hh" + +http_layer::http_layer(const std::string & p_type, const std::string & param) : t_layer(p_type), _params()//, _device_mode{false} +{ + loggers::get_instance().log(">>> http_layer::http_layer: %s, %s", to_string().c_str(), param.c_str()); + // Setup parameters + params::convert(_params, param); + + params::const_iterator it = _params.find(params::codecs); + if (it != _params.cend()) { + _codec.set_payload_codecs(it->second); + } +} + +void http_layer::sendMsg(const LibItsHttp__TypesAndValues::HttpMessage& p_http_message, params& p_param) { + loggers::get_instance().log_msg(">>> http_layer::sendMsg: ", p_http_message); + + // Encode HttpMessage + OCTETSTRING data; + _codec.encode(p_http_message, data); + send_data(data, _params); +} + +void http_layer::send_data(OCTETSTRING& data, params& params) { + loggers::get_instance().log_msg(">>> http_layer::send_data: ", data); + + send_to_all_layers(data, params); +} + +void http_layer::receive_data(OCTETSTRING& data, params& params) +{ + loggers::get_instance().log_msg(">>> http_layer::receive_data: ", data); + + // Decode HTTP message + LibItsHttp__TypesAndValues::HttpMessage http_message; + if (_codec.decode(data, http_message) == -1) { + loggers::get_instance().warning("http_layer::receive_data: Failed to decode data"); + return; + } + + // Pass it to the ports + to_all_upper_ports(http_message, params); +} + +http_layer_factory http_layer_factory::_f; + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b9/4082d1e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b9/4082d1e1978500181c21d10bc58219ba new file mode 100644 index 0000000..2bf087e --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/b9/4082d1e1978500181c21d10bc58219ba @@ -0,0 +1,4 @@ +#include "codec_stack_builder.hh" + +codec_stack_builder* codec_stack_builder::_instance = NULL; + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ba/617dcae1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ba/617dcae1978500181c21d10bc58219ba new file mode 100644 index 0000000..166a145 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ba/617dcae1978500181c21d10bc58219ba @@ -0,0 +1,99 @@ +/*! + * \file tcp_layer.hh + * \brief Header file for ITS TCP socket based protocol port layer. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "layer.hh" + +#include "Abstract_Socket.hh" + +class PORT; //! Forward declaration of TITAN class + +/*! + * \class tcp_layer + * \brief This class provides description of ITS TCP port protocol layer + */ +class tcp_layer : public layer, public SSL_Socket, public PORT { + params _params; //! Layer parameters + int _client_id; //! Connection identifier + std::string _time_key; //! \todo + bool _reconnect_on_send; //! Set to true if connection shall be done when sending data. Otherwise, connection is established by the \see constructor + +public: //! \publicsection + /*! + * \brief Specialised constructor + * Create a new instance of the tcp_layer class + * \param[in] p_type \todo + * \param[in] p_param \todo + */ + tcp_layer(const std::string& p_type, const std::string& p_param); + /*! + * \brief Default destructor + * \remark If \see _reconnect_on_send is set to false, the disconnection is done by the destructor + */ + virtual ~tcp_layer(); + + /*! + * \virtual + * \fn void send_data(OCTETSTRING& data, params& params); + * \brief Send bytes formated data to the lower layers + * \param[in] p_data The data to be sent + * \param[in] p_params Some parameters to overwrite default value of the lower layers parameters + * \virtual + */ + virtual void send_data(OCTETSTRING& data, params& params); + /*! + * \virtual + * \fn void receive_data(OCTETSTRING& data, params& params); + * \brief Receive bytes formated data from the lower layers + * \param[in] p_data The bytes formated data received + * \param[in] p_params Some lower layers parameters values when data was received + */ + virtual void receive_data(OCTETSTRING& data, params& info); + + /*! + * \virtual + * \fn void message_incoming(const unsigned char* message_buffer, int length, int client_id = -1); + * \brief Receive bytes formated data from the lower layers + * \param[in] p_buffer The bytes formated data received + * \param[in] p_length The number of bytes received + * \param[in] p_client_id The connection identifier.Default: -1 + */ + virtual void message_incoming(const unsigned char* p_buffer, int p_length, int p_client_id = -1); + +protected: //! \protectedsection + void Add_Fd_Read_Handler(int fd) { Handler_Add_Fd_Read(fd); }; + void Add_Fd_Write_Handler(int fd) { Handler_Add_Fd_Write(fd); }; + void Remove_Fd_Read_Handler(int fd) { Handler_Remove_Fd_Read(fd); }; + void Remove_Fd_Write_Handler(int fd) { Handler_Remove_Fd_Write(fd); }; + void Remove_Fd_All_Handlers(int fd) { Handler_Remove_Fd(fd); }; + void Handler_Uninstall() { Uninstall_Handler(); } + void Timer_Set_Handler(double call_interval, boolean is_timeout = TRUE, + boolean call_anyway = TRUE, boolean is_periodic = TRUE) { + Handler_Set_Timer(call_interval, is_timeout, call_anyway, is_periodic); + }; + + const char* remote_address_name() { return params::server.c_str(); }; + const char* remote_port_name() { return params::port.c_str(); }; + const char* socket_debugging_name() { return params::debug.c_str(); }; + const char* ssl_use_ssl_name() { return params::use_ssl.c_str(); }; + + void client_connection_opened(int p_client_id); + bool add_user_data(int p_client_id); + int send_message_on_fd(int p_client_id, const unsigned char * message_buffer, int length_of_message); + int send_message_on_nonblocking_fd(int client_id, const unsigned char * message_buffer, int length_of_message); + int receive_message_on_fd(int p_client_id); + void peer_disconnected(int p_client_id); + +private: //! \privatesection + void Handle_Fd_Event(int fd, boolean is_readable, boolean is_writable, boolean is_error); + void Handle_Timeout(double time_since_last_call); +}; // End of class tcp_layer + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ba/d0c3d7e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ba/d0c3d7e1978500181c21d10bc58219ba new file mode 100644 index 0000000..6b9796c --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/ba/d0c3d7e1978500181c21d10bc58219ba @@ -0,0 +1,181 @@ +#include +#include +#include +#include +#include + +#include "tcp_layer_factory.hh" + +#include "loggers.hh" + +tcp_layer::tcp_layer(const std::string & p_type, const std::string & param) : layer(p_type), SSL_Socket(), PORT(p_type.c_str()), _params(), _client_id{-1}, _time_key("tcp_layer::Handle_Fd_Event_Readable"), _reconnect_on_send{false} { + loggers::get_instance().log(">>> tcp_layer::tcp_layer: %s, %s", to_string().c_str(), param.c_str()); + // Setup parameters + params::convert(_params, param); + _params.log(); + + set_socket_debugging(false); + params::const_iterator it = _params.find(params::debug); + if (it == _params.cend()) { + _params.insert(std::pair(std::string("debug"), "0")); + } else if (it->second.compare("1") == 0) { + set_socket_debugging(true); + } + it = _params.find(params::server); + if (it == _params.cend()) { + _params.insert(std::pair(std::string("server"), "127.0.0.1")); + } + if (!parameter_set(params::server.c_str(), _params[params::server].c_str())) { + loggers::get_instance().warning("tcp_layer::set_parameter: Unprocessed parameter: %s", params::server.c_str()); + } + set_ssl_use_ssl(false); + it = _params.find(params::use_ssl); + if (it == _params.cend()) { + _params.insert(std::pair(std::string("use_ssl"), "0")); + } else if (it->second.compare("1") == 0) { + set_ssl_use_ssl(true); + } + it = _params.find(params::port); + if (it == _params.cend()) { + if (_params[params::use_ssl].compare("0") == 0) { // Use standard HTTP port + _params.insert(std::pair(std::string("port"), "80")); + } else { // Use standard HTTPS port + _params.insert(std::pair(std::string("port"), "443")); + } + } + if (!parameter_set(params::port.c_str(), _params[params::port].c_str())) { + loggers::get_instance().warning("tcp_layer::set_parameter: Unprocessed parameter: %s", params::server.c_str()); + } + + parameter_set(use_connection_ASPs_name(), "yes"); + parameter_set(server_backlog_name(), "1024"); + set_server_mode(false); + set_ttcn_buffer_usercontrol(true); + set_handle_half_close(true); + + map_user(); + + if (!_reconnect_on_send) { + open_client_connection(_params[params::server].c_str(), _params[params::port].c_str(), NULL, NULL); + } + } + +tcp_layer::~tcp_layer() { + loggers::get_instance().log(">>> tcp_layer::~tcp_layer: %d", _client_id); + if (_client_id != -1) { + remove_client(_client_id); + } + + unmap_user(); +} + +void tcp_layer::Handle_Fd_Event(int fd, boolean is_readable, boolean is_writable, boolean is_error) +{ + loggers::get_instance().log(">>> tcp_layer::Handle_Fd_Event: %d", fd); + Handle_Socket_Event(fd, is_readable, is_writable, is_error); + log_debug("<<< tcp_layer::Handle_Fd_Event"); +} + +void tcp_layer::Handle_Timeout(double time_since_last_call) +{ + loggers::get_instance().log(">>> tcp_layer::Handle_Timeout: %f", time_since_last_call); + Handle_Timeout_Event(time_since_last_call); + loggers::get_instance().log("<<< tcp_layer::Handle_Timeout"); +} + +void tcp_layer::send_data(OCTETSTRING& data, params& params) { + loggers::get_instance().log_msg(">>> tcp_layer::send_data: ", data); + + loggers::get_instance().log("tcp_layer::send_data: SSL mode: %x", get_ssl_use_ssl()); + + send_outgoing(static_cast(data), data.lengthof(), _client_id); +} + +void tcp_layer::receive_data(OCTETSTRING& data, params& params) { + loggers::get_instance().log_msg(">>> tcp_layer::receive_data: ", data); + + receive_to_all_layers(data, params); +} + +void tcp_layer::message_incoming(const unsigned char* message_buffer, int length, int client_id) { + loggers::get_instance().log(">>> tcp_layer::message_incoming"); + loggers::get_instance().log_to_hexa("tcp_layer::message_incoming: ", message_buffer, length); + + + float duration; + loggers::get_instance().set_start_time(_time_key); + OCTETSTRING data(length, message_buffer); + params params; + this->receive_data(data, params); // TODO Check execution time for decoding operation + loggers::get_instance().set_stop_time(_time_key, duration); +} + +void tcp_layer::client_connection_opened(int p_client_id) +{ + loggers::get_instance().log(">>> tcp_layer::client_connection_opened: %d", p_client_id); + _client_id = p_client_id; +} + +bool tcp_layer::add_user_data(int p_client_id) +{ + loggers::get_instance().log(">>> tcp_layer::add_user_data: %d", p_client_id); + if (_params[params::use_ssl].compare("0") == 0) { + loggers::get_instance().log("tcp_layer::add_user_data: Non secured mode"); + return Abstract_Socket::add_user_data(p_client_id); + } + loggers::get_instance().log("tcp_layer::add_user_data: SSL mode"); + return SSL_Socket::add_user_data(p_client_id); +} + +int tcp_layer::send_message_on_fd(int p_client_id, const unsigned char * message_buffer, int length_of_message) +{ + loggers::get_instance().log(">>> tcp_layer::send_message_on_fd: %d", p_client_id); + + if(get_user_data(p_client_id)) + { + loggers::get_instance().log("tcp_layer::send_message_on_fd: SSL mode"); + return SSL_Socket::send_message_on_fd(p_client_id, message_buffer, length_of_message); + } + + loggers::get_instance().log("tcp_layer::send_message_on_fd: Non secured mode"); + return Abstract_Socket::send_message_on_fd(p_client_id, message_buffer, length_of_message); +} + +int tcp_layer::send_message_on_nonblocking_fd(int p_client_id, const unsigned char * message_buffer, int length_of_message) +{ + loggers::get_instance().log(">>> tcp_layer::send_message_on_nonblocking_fd: %d", p_client_id); + + if(get_user_data(p_client_id)) + { + loggers::get_instance().log("tcp_layer::send_message_on_nonblocking_fd: SSL mode"); + return SSL_Socket::send_message_on_nonblocking_fd(p_client_id, message_buffer, length_of_message); + } + + loggers::get_instance().log("tcp_layer::send_message_on_nonblocking_fd: Non secured mode"); + return Abstract_Socket::send_message_on_nonblocking_fd(p_client_id, message_buffer, length_of_message); +} + +int tcp_layer::receive_message_on_fd(int p_client_id) +{ + loggers::get_instance().log(">>> tcp_layer::receive_message_on_fd: %d", p_client_id); + + if(get_user_data(p_client_id)) { + // INFO: it is assumed that only SSL_Socket assigns user data to each peer + loggers::get_instance().log("tcp_layer::receive_message_on_fd: SSL mode"); + return SSL_Socket::receive_message_on_fd(p_client_id); + } + + loggers::get_instance().log("tcp_layer::receive_message_on_fd: Non secured mode"); + return Abstract_Socket::receive_message_on_fd(p_client_id); +} + +void tcp_layer::peer_disconnected(int p_client_id) +{ + loggers::get_instance().log(">>> tcp_layer::peer_disconnected: %d", p_client_id); + + Abstract_Socket::peer_disconnected(p_client_id); + _client_id = -1; +} + +tcp_layer_factory tcp_layer_factory::_f; + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/bb/10e667e5b08500181eabf1ba1ea37ea1 b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/bb/10e667e5b08500181eabf1ba1ea37ea1 new file mode 100644 index 0000000..e1cf6af --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/bb/10e667e5b08500181eabf1ba1ea37ea1 @@ -0,0 +1,418 @@ +# This Makefile was generated by the TITAN Designer eclipse plug-in +# of the TTCN-3 Test executor version CRL 113 200/6 R4A +# for (vagrant@vagrant) on Thu Jul 12 08:52:15 UTC 2018 + +# Copyright (c) 2000-2018 Ericsson Telecom AB + +# The following make commands are available: +# - make, make all Builds the executable test suite. +# - make archive Archives all source files. +# - make check Checks the semantics of TTCN-3 and ASN.1 modules. +# - make clean Removes all generated files. +# - make port Generates port skeletons. +# - make compile Translates TTCN-3 and ASN.1 modules to C++. +# - make dep Creates/updates dependency list. +# - make executable Builds the executable test suite. +# - make library Builds the library archive: 'STF549_Ng112.a'. +# - make objects Builds the object files without linking the executable. +# WARNING! This Makefile can be used with GNU make only. +# Other versions of make may report syntax errors in it. + +# +# Do NOT touch this line... +# +.PHONY: all executable library objects check port clean dep archive + +.SUFFIXES: .d + +# +# Set these variables... +# + +# The path of your TTCN-3 Test Executor installation: +# Uncomment this line to override the environment variable. +# TTCN3_DIR = + +# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) +PLATFORM = LINUX + +# Your C++ compiler: +# (if you change the platform, you may need to change the compiler) +CXX = g++ + +# Flags for dependency generation +CXXDEPFLAGS := -MM + +# Flags for the C++ preprocessor (and makedepend as well): +CPPFLAGS = -D$(PLATFORM) -I. -I$(TTCN3_DIR)/include -DTITAN_RUNTIME_2 -I/home/vagrant/frameworks/osip/include -DAS_USE_SSL -I. -I../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src -I../../../ccsrc/EncDec/LibHttp -I../../../ccsrc/EncDec/LibSip -I../../../ccsrc/Framework/include -I../../../ccsrc/Framework/src -I../../../ccsrc/Ports/LibHttp -I../../../ccsrc/Ports/LibSip -I../../../ccsrc/Protocols/ETH -I../../../ccsrc/Protocols/Held -I../../../ccsrc/Protocols/Http -I../../../ccsrc/Protocols/Pcap -I../../../ccsrc/Protocols/Sip -I../../../ccsrc/Protocols/Tcp -I../../../ccsrc/Protocols/UDP + +# Flags for the C++ compiler: +CXXFLAGS = -Wall -O0 -std=c++11-pthread-gPIC + +# Flags for the linker: +LDFLAGS = -pthread-fPIC + +ifeq ($(PLATFORM), WIN32) +# Silence linker warnings. +LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc +endif + +# Utility to create library files +AR = ar +ARFLAGS = + +# Flags for the TTCN-3 and ASN.1 compiler: +# function test runtime + disable BER + disable OER + emulate GCC error/warning message format + include source info + add source line info for logging + enable legacy encoding + activate debugger +COMPILER_FLAGS = -RbOglLen + +# Execution mode: function test runtime in parallel mode +TTCN3_LIB = ttcn3-rt2-parallel + +# The path of your OpenSSL installation: +# If you do not have your own one, leave it unchanged. +OPENSSL_DIR = $(TTCN3_DIR) + +# The path of your libxml2 installation: +# If you do not have your own one, leave it unchanged. +XMLDIR = $(TTCN3_DIR) + +# Directory to store the archived source files: +ARCHIVE_DIR = backup + +# +# You may change these variables. Add your files if necessary... +# + +# TTCN-3 modules of this project: +TTCN3_MODULES = ../../../ttcn/AtsNg112/AtsNg112_TestCases.ttcn ../../../ttcn/AtsNg112/AtsNg112_TestControl.ttcn ../../../ttcn/LibCommon/LibCommon_AbstractData.ttcn ../../../ttcn/LibCommon/LibCommon_BasicTypesAndValues.ttcn ../../../ttcn/LibCommon/LibCommon_DataStrings.ttcn ../../../ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn ../../../ttcn/LibCommon/LibCommon_TextStrings.ttcn ../../../ttcn/LibCommon/LibCommon_Time.ttcn ../../../ttcn/LibCommon/LibCommon_VerdictControl.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryMessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTemplates.ttcn ../../../ttcn/LibHttp/LibItsHttp_BinaryTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_EncdecDeclarations.ttcn ../../../ttcn/LibHttp/LibItsHttp_Functions.ttcn ../../../ttcn/LibHttp/LibItsHttp_MessageBodyTypes.ttcn ../../../ttcn/LibHttp/LibItsHttp_Pics.ttcn ../../../ttcn/LibHttp/LibItsHttp_Templates.ttcn ../../../ttcn/LibHttp/LibItsHttp_TestSystem.ttcn ../../../ttcn/LibHttp/LibItsHttp_TypesAndValues.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn ../../../ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn ../../../ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_Common.ttcn ../../../ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Interface.ttcn ../../../ttcn/LibSip/ttcn/LibSip_Library.ttcn ../../../ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn ../../../ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn ../../../ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn ../../../ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn ../../../ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn ../../../ttcn/patch_sip_titan/LibSip_Steps.ttcn ../../../ttcn/patch_sip_titan/LibSip_Templates.ttcn ../../../ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn ../../../ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn ../../../ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.ttcn ../../../ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn ../../../ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn ../../../ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn + +# ASN.1 modules of this project: +ASN1_MODULES = + +# C++ source & header files generated from the TTCN-3 & ASN.1 modules of +# this project: +GENERATED_SOURCES = AtsNg112_TestCases.cc AtsNg112_TestControl.cc LibCommon_AbstractData.cc LibCommon_BasicTypesAndValues.cc LibCommon_DataStrings.cc LibCommon_Sync.cc LibCommon_TextStrings.cc LibCommon_Time.cc LibCommon_VerdictControl.cc LibItsHttp_BinaryMessageBodyTypes.cc LibItsHttp_BinaryTemplates.cc LibItsHttp_BinaryTypes.cc LibItsHttp_EncdecDeclarations.cc LibItsHttp_Functions.cc LibItsHttp_MessageBodyTypes.cc LibItsHttp_Pics.cc LibItsHttp_Templates.cc LibItsHttp_TestSystem.cc LibItsHttp_TypesAndValues.cc LibItsHttp_XMLTypes.cc LibItsHttp_XmlMessageBodyTypes.cc LibItsHttp_XmlTemplates.cc LibNg112_EncdecDeclarations.cc LibNg112_Functions.cc LibNg112_Pics.cc LibNg112_Pixits.cc LibNg112_Templates.cc LibNg112_TestSystem.cc LibNg112_TypesAndValues.cc LibSip_Common.cc LibSip_EncdecDeclarations.cc LibSip_Interface.cc LibSip_Library.cc LibSip_MessageBodyTypes.cc LibSip_PIXITS.cc LibSip_SDPTypes.cc LibSip_SIPTypesAndValues.cc LibSip_SMSFunctions.cc LibSip_SMSTemplates.cc LibSip_SMSTypesAndValues.cc LibSip_SimpleMsgSummaryTypes.cc LibSip_Steps.cc LibSip_Templates.cc LibSip_XMLTypes.cc NoTargetNamespace.cc UsefulTtcn3Types.cc XSD.cc http_uri_etsi_org_ngn_params_xml_comm_div_info.cc http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc http_www_opengis_net_gml.cc http_www_opengis_net_pidflo_1_0.cc http_www_w3_org_XML_1998_namespace.cc urn_3gpp_ns_cw_1_0.cc urn_ietf_params_xml_ns_common_policy.cc urn_ietf_params_xml_ns_conference_info.cc urn_ietf_params_xml_ns_geopriv_conf.cc urn_ietf_params_xml_ns_geopriv_held.cc urn_ietf_params_xml_ns_geopriv_held_id.cc urn_ietf_params_xml_ns_pidf.cc urn_ietf_params_xml_ns_pidf_geopriv10.cc urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc urn_ietf_params_xml_ns_pidf_geopriv10_civicLoc.cc urn_ietf_params_xml_ns_pidf_geopriv10_geoShape.cc urn_ietf_params_xml_ns_reginfo.cc urn_ietf_params_xml_ns_resource_lists.cc urn_oma_xml_xdm_common_policy.cc +GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh) + +# C/C++ Source & header files of Test Ports, external functions and +# other modules: +USER_SOURCES = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc ../../../ccsrc/Ports/LibHttp/HttpPort.cc ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc ../../../ccsrc/Ports/LibSip/SipPort.cc ../../../ccsrc/Framework/src/codec_stack_builder.cc ../../../ccsrc/Framework/src/converter.cc ../../../ccsrc/Protocols/ETH/ethernet_layer.cc ../../../ccsrc/Protocols/Held/held_codec.cc ../../../ccsrc/Protocols/Http/http_codec.cc ../../../ccsrc/Protocols/Http/http_layer.cc ../../../ccsrc/Framework/src/layer_factory.cc ../../../ccsrc/Framework/src/loggers.cc ../../../ccsrc/Framework/src/params.cc ../../../ccsrc/Protocols/Pcap/pcap_layer.cc ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc ../../../ccsrc/Protocols/Sip/sip_codec_request.cc ../../../ccsrc/Protocols/Sip/sip_layer.cc ../../../ccsrc/Protocols/Tcp/tcp_layer.cc ../../../ccsrc/Protocols/UDP/udp_layer.cc +USER_HEADERS = ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.hh ../../../ccsrc/Ports/LibHttp/HttpPort.hh ../../../ccsrc/Ports/LibSip/OperatorPort.hh ../../../ccsrc/Ports/LibSip/SipPort.hh ../../../ccsrc/Framework/include/codec.hh ../../../ccsrc/Framework/include/codec_factory.hh ../../../ccsrc/Framework/include/codec_stack_builder.hh ../../../ccsrc/Framework/include/converter.hh ../../../ccsrc/Protocols/ETH/ethernet_layer.hh ../../../ccsrc/Protocols/ETH/ethernet_layer_factory.hh ../../../ccsrc/Protocols/Held/held_codec.hh ../../../ccsrc/Protocols/Held/held_codec_factory.hh ../../../ccsrc/Protocols/Http/http_codec.hh ../../../ccsrc/Protocols/Http/http_layer.hh ../../../ccsrc/Protocols/Http/http_layer_factory.hh ../../../ccsrc/Framework/include/layer.hh ../../../ccsrc/Framework/include/layer_factory.hh ../../../ccsrc/Framework/include/layer_stack_builder.hh ../../../ccsrc/Framework/include/loggers.hh ../../../ccsrc/Framework/include/params.hh ../../../ccsrc/Protocols/Pcap/pcap_layer.hh ../../../ccsrc/Protocols/Pcap/pcap_layer_factory.hh ../../../ccsrc/Protocols/Sip/sip_codec_register_request.hh ../../../ccsrc/Protocols/Sip/sip_codec_request.hh ../../../ccsrc/Protocols/Sip/sip_layer.hh ../../../ccsrc/Protocols/Sip/sip_layer_factory.hh ../../../ccsrc/Framework/include/t_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer.hh ../../../ccsrc/Protocols/Tcp/tcp_layer_factory.hh ../../../ccsrc/Protocols/UDP/udp_layer.hh ../../../ccsrc/Protocols/UDP/udp_layer_factory.hh + +# Object files of this project that are needed for the executable test suite: +OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS) + +GENERATED_OBJECTS = $(GENERATED_SOURCES:.cc=.o) + +USER_OBJECTS = Abstract_Socket.o HttpPort.o LibItsHttp_Encdec.o LibSip_Encdec.o LibSip_SMSFunctions_Encdec.o LibSip_Steps_Encdec.o LibSip_Templates_Encdec.o SipPort.o codec_stack_builder.o converter.o ethernet_layer.o held_codec.o http_codec.o http_layer.o layer_factory.o loggers.o params.o pcap_layer.o sip_codec_register_request.o sip_codec_request.o sip_layer.o tcp_layer.o udp_layer.o + +# Dependency files of this project that are needed for the executable test suite: +DEPFILES = $(USER_OBJECTS:.o=.d) $(GENERATED_OBJECTS:.o=.d) + +# Other files of the project (Makefile, configuration files, etc.) +# that will be added to the archived source files: +OTHER_FILES = ../../../ttcn/LibSip/xsd/ACR_CB.xsd ../../../etc/AtsNg112/AtsNg112.cfg ../../../ttcn/LibSip/xsd/CDIV.xsd ../../../ttcn/LibSip/xsd/CDIVN.xsd ../../../ttcn/LibSip/xsd/CONF.xsd ../../../test_purposes/ECRF_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd ../../../ttcn/LibSip/xsd/Ims3gpp.xsd ../../../test_purposes/LIS_HTTP_POST_BV_xx.tplan2 ../../../ttcn/LibSip/xsd/MCID.xsd Makefile ../../../ttcn/LibSip/xsd/OIP-OIR.xsd ../../../ttcn/LibSip/xsd/PSTN.xsd ../../../ccsrc/README.md ../../../test_purposes/README.md ../../../ttcn/README.md ../../../ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_civiloc.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd ../../../ttcn/LibSip/xsd/ResourceList.xsd ../logs/STF549_Ng112.vagrant-hc.log ../logs/STF549_Ng112.vagrant-hc_merged.log ../logs/STF549_Ng112.vagrant-mtc.log ../../../ttcn/LibSip/xsd/SupplementaryServices.xsd ../../../ttcn/LibSip/xsd/TIP-TIR.xsd ../../../etc/TestCodec/TestCodec.cfg ../../../ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd ../../../ttcn/LibSip/xsd/common-policy.xsd ../../../ttcn/LibSip/xsd/cug.xsd ../../../ttcn/LibSip/xsd/cw.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd ../../../ttcn/LibSip/xsd/geopriv10basic.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/measures.xsd ../../../ttcn/LibSip/xsd/pidf.xsd ../../../ttcn/LibSip/xsd/pidf_lo.xsd ../../../ttcn/LibSip/xsd/regInfo.xsd ../../../ttcn/LibSip/xsd/simservs.xsd ../../../ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml.xsd ../../../ttcn/LibSip/xsd/xml.xsd ../../../ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + +# The name of the executable test suite: +EXECUTABLE = STF549_Ng112 +LIBRARY = STF549_Ng112.a + +TARGET = $(EXECUTABLE) + +# +# Do not modify these unless you know what you are doing... +# Platform specific additional libraries: +# +SOLARIS_LIBS = -lsocket -lnsl -lxml2 -lresolv +SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -lresolv +LINUX_LIBS = -lxml2 -lpthread -lrt +FREEBSD_LIBS = -lxml2 +WIN32_LIBS = -lxml2 + +# +# Rules for building the executable... +# + +all: $(TARGET) ; + +executable: $(EXECUTABLE) ; + +library: $(LIBRARY) ; + +objects: $(OBJECTS) compile; + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(LDFLAGS) -o $@ $^ \ + -L$(TTCN3_DIR)/lib -L$(OPENSSL_DIR)/lib -L$(XMLDIR)/lib -L/home/vagrant/frameworks/osip/src/osipparser2/.libs \ + -l$(TTCN3_LIB) -lcrypto -lpcap -lssl -losipparser2 \ + $($(PLATFORM)_LIBS) \ + || if [ -f $(TTCN3_DIR)/bin/titanver ]; then $(TTCN3_DIR)/bin/titanver $^; else : ; fi + +$(LIBRARY): $(OBJECTS) + $(AR) -r $(ARFLAGS) $(LIBRARY) $(OBJECTS) + +Abstract_Socket.o : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +HttpPort.o : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibItsHttp_Encdec.o : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_SMSFunctions_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Steps_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +LibSip_Templates_Encdec.o : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +SipPort.o : ../../../ccsrc/Ports/LibSip/SipPort.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +codec_stack_builder.o : ../../../ccsrc/Framework/src/codec_stack_builder.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +converter.o : ../../../ccsrc/Framework/src/converter.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +ethernet_layer.o : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +held_codec.o : ../../../ccsrc/Protocols/Held/held_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_codec.o : ../../../ccsrc/Protocols/Http/http_codec.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +http_layer.o : ../../../ccsrc/Protocols/Http/http_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +layer_factory.o : ../../../ccsrc/Framework/src/layer_factory.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +loggers.o : ../../../ccsrc/Framework/src/loggers.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +params.o : ../../../ccsrc/Framework/src/params.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +pcap_layer.o : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_register_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_codec_request.o : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +sip_layer.o : ../../../ccsrc/Protocols/Sip/sip_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +tcp_layer.o : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +udp_layer.o : ../../../ccsrc/Protocols/UDP/udp_layer.cc + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +.cc.o .c.o: + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< + +Abstract_Socket.d : ../../../../../frameworks/titan/titan.TestPorts.Common_Components.Abstract_Socket/src/Abstract_Socket.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +HttpPort.d : ../../../ccsrc/Ports/LibHttp/HttpPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibItsHttp_Encdec.d : ../../../ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_SMSFunctions_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Steps_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +LibSip_Templates_Encdec.d : ../../../ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +SipPort.d : ../../../ccsrc/Ports/LibSip/SipPort.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +codec_stack_builder.d : ../../../ccsrc/Framework/src/codec_stack_builder.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +converter.d : ../../../ccsrc/Framework/src/converter.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +ethernet_layer.d : ../../../ccsrc/Protocols/ETH/ethernet_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +held_codec.d : ../../../ccsrc/Protocols/Held/held_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_codec.d : ../../../ccsrc/Protocols/Http/http_codec.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +http_layer.d : ../../../ccsrc/Protocols/Http/http_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +layer_factory.d : ../../../ccsrc/Framework/src/layer_factory.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +loggers.d : ../../../ccsrc/Framework/src/loggers.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +params.d : ../../../ccsrc/Framework/src/params.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +pcap_layer.d : ../../../ccsrc/Protocols/Pcap/pcap_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_register_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_register_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_codec_request.d : ../../../ccsrc/Protocols/Sip/sip_codec_request.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +sip_layer.d : ../../../ccsrc/Protocols/Sip/sip_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +tcp_layer.d : ../../../ccsrc/Protocols/Tcp/tcp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +udp_layer.d : ../../../ccsrc/Protocols/UDP/udp_layer.cc + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +.cc.d .c.d: + @echo Creating dependency file for '$<'; set -e; \ + $(CXX) $(CXXDEPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< \ + | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + +$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile + @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi + +check: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^ + +port: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -t $(COMPILER_FLAGS) $^ + +compile: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $? + touch $@ + +browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) + $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^ + +clean: + -$(RM) $(EXECUTABLE) $(OBJECTS) $(LIBRARY) $(GENERATED_HEADERS) $(DEPFILES) \ + $(GENERATED_SOURCES) compile \ + browserdata.dat tags *.log $(DEPFILES) + +dep: $(GENERATED_SOURCES) $(USER_SOURCES) $(DEPFILES) ; + +ifeq ($(filter clean check port compile archive,$(MAKECMDGOALS)),) +-include $(DEPFILES) +endif + + + +archive: + mkdir -p $(ARCHIVE_DIR) + tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ + $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ + | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz + +diag: + $(TTCN3_DIR)/bin/compiler -v 2>&1 + $(TTCN3_DIR)/bin/mctr_cli -v 2>&1 + $(CXX) -v 2>&1 + $(AR) -V 2>&1 + @echo TTCN3_DIR=$(TTCN3_DIR) + @echo OPENSSL_DIR=$(OPENSSL_DIR) + @echo XMLDIR=$(XMLDIR) + @echo PLATFORM=$(PLATFORM) + +# +# Add your rules here if necessary... +# + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/bf/70d9d6e1978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/bf/70d9d6e1978500181c21d10bc58219ba new file mode 100644 index 0000000..3a1f345 --- /dev/null +++ b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/bf/70d9d6e1978500181c21d10bc58219ba @@ -0,0 +1,35 @@ +#include "LibSip_Interface.hh" +#include "LibSip_SIPTypesAndValues.hh" + +#include "sip_layer_factory.hh" + +#include "loggers.hh" + +#include "converter.hh" + +sip_layer::sip_layer(const std::string & p_type, const std::string & p_param) : t_layer(p_type), _params() { + loggers::get_instance().log(">>> sip_layer::sip_layer: %s, %s", to_string().c_str(), p_param.c_str()); + // Setup parameters + params::convert(_params, p_param); +} + +void sip_layer::send_data(OCTETSTRING& data, params& p_params) { + loggers::get_instance().log_msg(">>> sip_layer::send_data: ", data); + + OCTETSTRING os; + // Encode SIP message +// _codec.encode(msg, os); + send_to_all_layers(os, p_params); +} + +void sip_layer::receive_data(OCTETSTRING& data, params& p_params) +{ + loggers::get_instance().log_msg(">>> sip_layer::receive_data: ", data); + + // Decode SIP message + OCTETSTRING payload; + receive_to_all_layers(payload, p_params); +} + +sip_layer_factory sip_layer_factory::_f; + diff --git a/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c1/40febdd3978500181c21d10bc58219ba b/workspace_stf549/.metadata/.plugins/org.eclipse.core.resources/.history/c1/40febdd3978500181c21d10bc58219ba new file mode 100644 index 0000000000000000000000000000000000000000..aa99f948d98d73e7374bd31b28a08748ed24eb2c GIT binary patch literal 997736 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