summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--COMMON/ProtocolModules_Common.tpd45
-rw-r--r--COMMON/doc/documentation_note.txt13
-rw-r--r--COMMON/src/General_Types.ttcn382
-rw-r--r--COMMON/src/MobileDomainDefinitions.asn54
-rw-r--r--COMMON/src/ProtocolModules_Common.grp39
-rw-r--r--COMMON/src/UsefulTtcn3Types.ttcn99
-rw-r--r--COMMON/src/XSD.ttcn339
-rw-r--r--COMMON/src/general_typedefs.ttcn236
-rw-r--r--COMMON/src/http_www_w3_org_XML_1998_namespace.ttcn150
-rw-r--r--M3UA_CNL113536/M3UA_CNL113536.tpd44
-rw-r--r--M3UA_CNL113536/doc/documentation_note.txt13
-rw-r--r--M3UA_CNL113536/src/M3UA_Types.ttcn805
l---------M3UA_CNL113537/demo/Abstract_Socket.cc1
l---------M3UA_CNL113537/demo/Abstract_Socket.hh1
l---------M3UA_CNL113537/demo/BICC_EncDec.cc1
l---------M3UA_CNL113537/demo/BICC_Types.ttcn1
l---------M3UA_CNL113537/demo/General_Types.ttcn1
l---------M3UA_CNL113537/demo/M3UA_Emulation.ttcn1
-rw-r--r--M3UA_CNL113537/demo/M3UA_Emulation_Test.ttcn152
l---------M3UA_CNL113537/demo/M3UA_Types.ttcn1
l---------M3UA_CNL113537/demo/MTP3asp_EncDec.cc1
l---------M3UA_CNL113537/demo/MTP3asp_Types.ttcn1
-rw-r--r--M3UA_CNL113537/demo/Makefile920
l---------M3UA_CNL113537/demo/SCTPasp_PT.cc1
l---------M3UA_CNL113537/demo/SCTPasp_PT.hh1
l---------M3UA_CNL113537/demo/SCTPasp_PortType.ttcn1
l---------M3UA_CNL113537/demo/SCTPasp_Types.ttcn1
-rw-r--r--M3UA_CNL113537/demo/m3ua_emu.cfg21
-rw-r--r--M3UA_CNL113537/src/M3UA_Emulation.ttcn1307
-rw-r--r--MTP3asp_CNL113337/MTP3asp_CNL113337.tpd89
-rw-r--r--MTP3asp_CNL113337/demo/MTP3asp_PT.cc2952
-rw-r--r--MTP3asp_CNL113337/demo/MTP3asp_PT.hh249
-rw-r--r--MTP3asp_CNL113337/demo/MTP3asp_PortType.ttcn61
-rw-r--r--MTP3asp_CNL113337/demo/MTP3asp_Types.ttcn324
-rw-r--r--MTP3asp_CNL113337/demo/Makefile353
-rw-r--r--MTP3asp_CNL113337/demo/mtp3test.ttcn292
-rw-r--r--MTP3asp_CNL113337/demo/mtp3test_MTP3_ansi2.cfg75
-rw-r--r--MTP3asp_CNL113337/doc/MTP3asp_CNL113337_FS.pdfbin0 -> 143496 bytes
-rw-r--r--MTP3asp_CNL113337/doc/MTP3asp_CNL113337_PRI.pdfbin0 -> 131894 bytes
-rw-r--r--MTP3asp_CNL113337/doc/MTP3asp_CNL113337_UG.pdfbin0 -> 178705 bytes
-rw-r--r--MTP3asp_CNL113337/src/MTP3asp_EncDec.cc20
-rw-r--r--MTP3asp_CNL113337/src/MTP3asp_PT.cc2952
-rw-r--r--MTP3asp_CNL113337/src/MTP3asp_PT.hh249
-rw-r--r--MTP3asp_CNL113337/src/MTP3asp_PortType.ttcn66
-rw-r--r--MTP3asp_CNL113337/src/MTP3asp_Types.ttcn324
-rw-r--r--SCCP_CNL113341/SCCP_CNL113341.tpd87
l---------SCCP_CNL113341/demo/General_Types.ttcn1
l---------SCCP_CNL113341/demo/MTP3asp_PT.cc1
l---------SCCP_CNL113341/demo/MTP3asp_PT.hh1
l---------SCCP_CNL113341/demo/MTP3asp_PortType.ttcn1
l---------SCCP_CNL113341/demo/MTP3asp_Types.ttcn1
-rw-r--r--SCCP_CNL113341/demo/Makefile.ini737
-rw-r--r--SCCP_CNL113341/demo/N_UNITDATAtest_600longdata_xudt_ansi_log2141
l---------SCCP_CNL113341/demo/SCCP_Emulation.ttcn1
l---------SCCP_CNL113341/demo/SCCP_Mapping.ttcnpp1
-rw-r--r--SCCP_CNL113341/demo/SCCP_Testcases.cfg55
-rw-r--r--SCCP_CNL113341/demo/SCCP_Testcases.ttcn468
l---------SCCP_CNL113341/demo/SCCP_Types.ttcn1
-rw-r--r--SCCP_CNL113341/demo/SCCP_selftest.cfg52
-rw-r--r--SCCP_CNL113341/demo/SCCP_selftest.ttcn607
l---------SCCP_CNL113341/demo/SCCPasp_Types.ttcn1
-rw-r--r--SCCP_CNL113341/src/SCCP_Emulation.ttcn6031
-rw-r--r--SCCP_CNL113341/src/SCCP_EncDec.cc19
-rw-r--r--SCCP_CNL113341/src/SCCP_Mapping.ttcnpp129
-rw-r--r--SCCP_CNL113341/src/SCCP_Types.ttcn1553
-rw-r--r--SCCP_CNL113341/src/SCCPasp_Types.ttcn895
-rw-r--r--SCCP_Test/SCCP_Testcases.cfg54
-rw-r--r--SCCP_Test/SCCP_Testcases.ttcn505
-rw-r--r--SCTPasp_CNL113469/SCTPasp_CNL113469.tpd50
-rw-r--r--SCTPasp_CNL113469/doc/SCTPasp_CNL113469_PRI.docbin0 -> 64512 bytes
-rw-r--r--SCTPasp_CNL113469/doc/SCTPasp_CNL113469_UG.docbin0 -> 162816 bytes
-rw-r--r--SCTPasp_CNL113469/doc/SCTPasp_FS.pdfbin0 -> 167590 bytes
-rw-r--r--SCTPasp_CNL113469/src/SCTPasp_PT.cc1549
-rw-r--r--SCTPasp_CNL113469/src/SCTPasp_PT.hh157
-rw-r--r--SCTPasp_CNL113469/src/SCTPasp_PortType.ttcn62
-rw-r--r--SCTPasp_CNL113469/src/SCTPasp_Types.ttcn201
l---------bin/General_Types.ttcn1
l---------bin/M3UA_Emulation.ttcn1
l---------bin/M3UA_Types.ttcn1
l---------bin/MTP3asp_PortType.ttcn1
l---------bin/MTP3asp_Types.ttcn1
-rw-r--r--bin/Makefile190
l---------bin/SCCP_Emulation.ttcn1
l---------bin/SCCP_Mapping.ttcn1
l---------bin/SCCP_Mapping.ttcnpp1
l---------bin/SCCP_Testcases.cfg1
l---------bin/SCCP_Testcases.ttcn1
l---------bin/SCCP_Types.ttcn1
l---------bin/SCCPasp_Types.ttcn1
l---------bin/SCTPasp_PT.cc1
l---------bin/SCTPasp_PT.hh1
l---------bin/SCTPasp_PortType.ttcn1
l---------bin/SCTPasp_Types.ttcn1
-rwxr-xr-xbin/install.script34
94 files changed, 28239 insertions, 0 deletions
diff --git a/COMMON/ProtocolModules_Common.tpd b/COMMON/ProtocolModules_Common.tpd
new file mode 100644
index 0000000..f861d7b
--- /dev/null
+++ b/COMMON/ProtocolModules_Common.tpd
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2016 Ericsson
+
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+
+ File: ProtocolModules_Common.tpd
+ Description: tpd project file
+ Rev: R9A
+ Prodnr: CNL 113 368
+
+ -->
+<TITAN_Project_File_Information version="1.0">
+ <ProjectName>ProtocolModules_Common</ProjectName>
+ <Files>
+ <FileResource projectRelativePath="General_Types.ttcn" relativeURI="src/General_Types.ttcn"/>
+ <FileResource projectRelativePath="MobileDomainDefinitions.asn" relativeURI="src/MobileDomainDefinitions.asn"/>
+ <FileResource projectRelativePath="UsefulTtcn3Types.ttcn" relativeURI="src/UsefulTtcn3Types.ttcn"/>
+ <FileResource projectRelativePath="XSD.ttcn" relativeURI="src/XSD.ttcn"/>
+ <FileResource projectRelativePath="general_typedefs.ttcn" relativeURI="src/general_typedefs.ttcn"/>
+ <FileResource projectRelativePath="http_www_w3_org_XML_1998_namespace.ttcn" relativeURI="src/http_www_w3_org_XML_1998_namespace.ttcn"/>
+ </Files>
+ <ActiveConfiguration>Default</ActiveConfiguration>
+ <Configurations>
+ <Configuration name="Default">
+ <ProjectProperties>
+ <MakefileSettings>
+ <generateInternalMakefile>true</generateInternalMakefile>
+ <GNUMake>true</GNUMake>
+ <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+ <targetExecutable>bin/ProtocolModules_Common</targetExecutable>
+ <addSourceLineInfo>true</addSourceLineInfo>
+ <buildLevel>Level3-Creatingobjectfileswithdependencyupdate</buildLevel>
+ </MakefileSettings>
+ <LocalBuildSettings>
+ <workingDirectory>bin</workingDirectory>
+ </LocalBuildSettings>
+ </ProjectProperties>
+ </Configuration>
+ </Configurations>
+</TITAN_Project_File_Information>
diff --git a/COMMON/doc/documentation_note.txt b/COMMON/doc/documentation_note.txt
new file mode 100644
index 0000000..615d818
--- /dev/null
+++ b/COMMON/doc/documentation_note.txt
@@ -0,0 +1,13 @@
+Please note that the storage of the documentation of the product has been
+moved to the eridoc.ericsson.se from the ClearCase.
+
+You can access the documentation of the product via the following links:
+
+The documentation belongs to the R9A revision of the product
+can be found here:
+http://document.internal.ericsson.com/Download?DocNo=1095-CNL113368&Rev=K&Lang=EN&PRev=Y
+
+The documentation belongs to the latest revision of the product
+can be found here:
+http://document.internal.ericsson.com/Download?DocNo=1095-CNL113368&Rev=HIGHEST&Lang=EN&Status=FREE&PRev=Y
+
diff --git a/COMMON/src/General_Types.ttcn b/COMMON/src/General_Types.ttcn
new file mode 100644
index 0000000..bd2dc54
--- /dev/null
+++ b/COMMON/src/General_Types.ttcn
@@ -0,0 +1,382 @@
+/******************************************************************************
+* Copyright (c) 2004, 2014 Ericsson AB
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* Zoltan Jasz - initial implementation and initial documentation
+* Abhishek Gupta
+* Attila Balasko
+* Endre Kulcsar
+* Gabor Bettesch
+* Gabor Szalai
+* Janos Kovesdi
+* Sandor Palugyai
+* Tibor Csondes
+******************************************************************************/
+//
+// File: General_Types.ttcn
+// Rev: R9A
+// Prodnr: CNL 113 368
+// Reference:
+
+module General_Types
+{
+
+group SimpleNativeTypes {
+
+ //****************************************************
+ // Bitstrings
+ //****************************************************
+
+ //bitstring with fixed length
+ type bitstring BIT1n length(1) with { variant "" };
+ type bitstring BIT2n length(2) with { variant "" };
+ type bitstring BIT3n length(3) with { variant "" };
+ type bitstring BIT4n length(4) with { variant "" };
+ type bitstring BIT5n length(5) with { variant "" };
+ type bitstring BIT6n length(6) with { variant "" };
+ type bitstring BIT7n length(7) with { variant "" };
+ type bitstring BIT8n length(8) with { variant "" };
+ type bitstring BIT9n length(9) with { variant "" };
+ type bitstring BIT12n length(12) with { variant "" };
+ type bitstring BIT14n length(14) with { variant "" };
+ type bitstring BIT15n length(15) with { variant "" };
+ type bitstring BIT16n length(16) with { variant "" };
+ type bitstring BIT56n length(56) with { variant "" };
+
+ //bitstring with length interval
+ type bitstring BIT14_24n length(14..24) with { variant "" };
+
+ //bitstring to be padded with fixed length
+ type bitstring BIT1np length(1) with { variant "" };
+ type bitstring BIT2np length(2) with { variant "" };
+ type bitstring BIT3np length(3) with { variant "" };
+ type bitstring BIT4np length(4) with { variant "" };
+ type bitstring BIT5np length(5) with { variant "" };
+ type bitstring BIT6np length(6) with { variant "" };
+ type bitstring BIT7np length(7) with { variant "" };
+ type bitstring BIT15np length(15) with { variant "" };
+
+ //bitstring with fixed length
+ type bitstring BIT1 length(1) with { variant "FIELDLENGTH(1)" };
+ type bitstring BIT2 length(2) with { variant "FIELDLENGTH(2)" };
+ type bitstring BIT3 length(3) with { variant "FIELDLENGTH(3)" };
+ type bitstring BIT4 length(4) with { variant "FIELDLENGTH(4)" };
+ type bitstring BIT5 length(5) with { variant "FIELDLENGTH(5)" };
+ type bitstring BIT6 length(6) with { variant "FIELDLENGTH(6)" };
+ type bitstring BIT7 length(7) with { variant "FIELDLENGTH(7)" };
+ type bitstring BIT8 length(8) with { variant "FIELDLENGTH(8)" };
+ type bitstring BIT9 length(9) with { variant "FIELDLENGTH(9)" };
+ type bitstring BIT10 length(10) with { variant "FIELDLENGTH(10)" };
+ type bitstring BIT11 length(11) with { variant "FIELDLENGTH(11)" };
+ type bitstring BIT12 length(12) with { variant "FIELDLENGTH(12)" };
+ type bitstring BIT14 length(14) with { variant "FIELDLENGTH(14)" };
+ type bitstring BIT15 length(15) with { variant "FIELDLENGTH(15)" };
+ type bitstring BIT16 length(16) with { variant "FIELDLENGTH(16)" };
+ type bitstring BIT24 length(24) with { variant "FIELDLENGTH(24)" };
+ type bitstring BIT31 length(31) with { variant "FIELDLENGTH(31)" };
+ type bitstring BIT56 length(56) with { variant "FIELDLENGTH(56)" };
+
+ type record of bitstring Bitstrings with { variant "" };
+ type Bitstrings BitstringList;
+ type set of bitstring BitstringSet with { variant "" };
+
+ //****************************************************
+ // Octetstrings
+ //****************************************************
+
+ //octetstring with fixed length
+ type octetstring OCT0n length(0) with { variant "" };
+ type octetstring OCT1n length(1) with { variant "" };
+ type octetstring OCT2n length(2) with { variant "" };
+ type octetstring OCT3n length(3) with { variant "" };
+ type octetstring OCT4n length(4) with { variant "" };
+ type octetstring OCT5n length(5) with { variant "" };
+ type octetstring OCT6n length(6) with { variant "" };
+ type octetstring OCT7n length(7) with { variant "" };
+ type octetstring OCT8n length(8) with { variant "" };
+ type octetstring OCT9n length(9) with { variant "" };
+ type octetstring OCT10n length(10) with { variant "" };
+ type octetstring OCT11n length(11) with { variant "" };
+ type octetstring OCT12n length(12) with { variant "" };
+ type octetstring OCT13n length(13) with { variant "" };
+ type octetstring OCT14n length(14) with { variant "" };
+ type octetstring OCT15n length(15) with { variant "" };
+ type octetstring OCT16n length(16) with { variant "" };
+ type octetstring OCT17n length(17) with { variant "" };
+ type octetstring OCT18n length(18) with { variant "" };
+ type octetstring OCT19n length(19) with { variant "" };
+ type octetstring OCT20n length(20) with { variant "" };
+ type octetstring OCT28n length(28) with { variant "" };
+ type octetstring OCT32n length(32) with { variant "" };
+ type octetstring OCT34n length(34) with { variant "" };
+ type octetstring OCT46n length(46) with { variant "" };
+ type octetstring OCT50n length(50) with { variant "" };
+ type octetstring OCT69n length(69) with { variant "" };
+ type octetstring OCT100n length(100) with { variant "" };
+ type octetstring OCT128n length(128) with { variant "" };
+ type octetstring OCT500n length(500) with { variant "" };
+ type octetstring OCTNn with { variant "" };
+
+ //octetstring with length interval
+ type octetstring OCT1_3n length(1..3) with { variant "" };
+ type octetstring OCT1_4n length(1..4) with { variant "" };
+ type octetstring OCT1_5n length(1..5) with { variant "" };
+ type octetstring OCT1_6n length(1..6) with { variant "" };
+ type octetstring OCT1_7n length(1..7) with { variant "" };
+ type octetstring OCT1_8n length(1..8) with { variant "" };
+ type octetstring OCT1_12n length(1..12) with { variant "" };
+ type octetstring OCT1_15n length(1..15) with { variant "" };
+ type octetstring OCT1_16n length(1..16) with { variant "" };
+ type octetstring OCT1_18n length(1..18) with { variant "" };
+ type octetstring OCT1_20n length(1..20) with { variant "" };
+ type octetstring OCT1_24n length(1..24) with { variant "" };
+ type octetstring OCT1_32n length(1..32) with { variant "" };
+ type octetstring OCT1_34n length(1..34) with { variant "" };
+ type octetstring OCT1_46n length(1..46) with { variant "" };
+ type octetstring OCT1_50n length(1..50) with { variant "" };
+ type octetstring OCT1_112n length(1..112) with { variant "" };
+ type octetstring OCT1_127n length(1..127) with { variant "" };
+ type octetstring OCT1_128n length(1..128) with { variant "" };
+ type octetstring OCT1_172n length(1..172) with { variant "" };
+ type octetstring OCT3_5n length(3..5) with { variant "" };
+ type octetstring OCT3_7n length(3..7) with { variant "" };
+ type octetstring OCT3_8n length(3..8) with { variant "" };
+ type octetstring OCT3_14n length(3..14) with { variant "" };
+ type octetstring OCT3_17n length(3..17) with { variant "" };
+ type octetstring OCT4_8n length(4..8) with { variant "" };
+
+ type record of octetstring Octetstrings with { variant "" };
+ type Octetstrings OctetstringList;
+ type set of octetstring OctetstringSet with { variant "" };
+
+ //****************************************************
+ // Charstrings
+ //****************************************************
+
+ //charstring with fixed length
+ type charstring CHAR4 length (4);
+
+ type record of charstring Charstrings with { variant "" };
+ type Charstrings CharstringList;
+ type set of charstring CharstringSet with { variant "" };
+
+ //****************************************************
+ // Hexstrings
+ //****************************************************
+
+ //hexstring with fixed length
+ type hexstring HEX4n length(4) with { variant "" };
+ type hexstring HEX6n length(6) with { variant "" };
+ type hexstring HEX8n length(8) with { variant "" };
+ type hexstring HEX15n length(15) with { variant "" };
+ type hexstring HEX16n length(16) with { variant "" };
+ type hexstring HEX24n length(24) with { variant "" };
+
+ //hexstring with length interval
+ type hexstring HEX0_18n length(0..18) with { variant "" };
+ type hexstring HEX1_20n length(1..20) with { variant "" };
+ type hexstring HEX1_34n length(1..34) with { variant "" };
+
+ type record of hexstring Hexstrings with { variant "" };
+ type Hexstrings HexstringList;
+ type set of hexstring HexstringSet with { variant "" };
+
+ //****************************************************
+ // Integers
+ //****************************************************
+
+ //integer with fixed bit number
+ type integer INT3nb (0..7) with { variant "" };
+ type integer INT4nb (0..15) with { variant "" };
+ type integer INT5nb (0..31) with { variant "" };
+ type integer INT8nb (0..255) with { variant "" };
+
+ //integer with fixed bit number and with padding
+ type integer INT2nbp (0..3) with { variant "" };
+ type integer INT1nbp (0..1) with { variant "" };
+ type integer INT3nbp (0..7) with { variant "" };
+ type integer INT5nbp (0..31) with { variant "" };
+ type integer INT9nbp (0..511) with { variant "" };
+ type integer INT13nbp (0..8191) with { variant "" };
+ type integer INT15nbp (0..32767) with { variant "" };
+
+ //****************************************************
+ // Structures
+ //****************************************************
+
+ //integer record
+ type record of integer Integers with { variant "" };
+ type Integers IntegerList;
+ type record of Integers Integer_array with { variant "" };
+ type set of integer IntegerSet with { variant "" };
+
+ //****************************************************
+ // Floats
+ //****************************************************
+
+ type record of float Floats with { variant "" };
+ type Floats FloatList;
+ type set of float FloatSet with { variant "" };
+
+ //****************************************************
+ // Universal Charstrings
+ //****************************************************
+
+ type record of universal charstring UniversalCharstrings with { variant "" };
+ type UniversalCharstrings UniversalCharstringList;
+ type set of universal charstring UniversalCharstringSet with { variant "" };
+
+ //****************************************************
+ // Booleans
+ //****************************************************
+
+ type record of boolean Booleans with { variant "" };
+ type Booleans BooleanList;
+ type set of boolean BooleanSet with { variant "" };
+
+ //****************************************************
+ // Verdicttypes
+ //****************************************************
+
+ type record of verdicttype Verdicttypes with { variant "" };
+ type Verdicttypes VerdicttypeList;
+ type set of verdicttype VerdicttypeSet with { variant "" };
+
+ //****************************************************
+ // Anytypes
+ //****************************************************
+
+ type record of anytype Anytypes with { variant "" };
+ type Anytypes AnytypeList;
+ type set of anytype AnytypeSet with { variant "" };
+
+} // end group NativeTypes
+
+//****************************************************
+//****************************************************
+// RAW Encoded Types
+//****************************************************
+//****************************************************
+
+group SimpleRAWEncodedTypes {
+
+ //****************************************************
+ // Bitstrings
+ //****************************************************
+
+ //bitstring with fixed length
+ type bitstring BIT6_BO_LAST length (6) with {variant "BYTEORDER(last)"};
+ type bitstring BIT16_BO_LAST length (16) with {variant "BYTEORDER(last)"};
+ type bitstring BIT32_BO_LAST length (32) with {variant "BYTEORDER(last)"};
+
+ //****************************************************
+ // Octetstrings
+ //****************************************************
+ //octetstring with fixed length
+ type octetstring Dummy length(0) with { variant "FIELDLENGTH(0)" };
+ type octetstring OCT0 length(0) with { variant "FIELDLENGTH(0)" };
+ type octetstring OCT1 length(1) with { variant "FIELDLENGTH(1)" };
+ type octetstring OCT2 length(2) with { variant "FIELDLENGTH(2)" };
+ type octetstring OCT3 length(3) with { variant "FIELDLENGTH(3)" };
+ type octetstring OCT4 length(4) with { variant "FIELDLENGTH(4)" };
+ type octetstring OCT5 length(5) with { variant "FIELDLENGTH(5)" };
+ type octetstring OCT6 length(6) with { variant "FIELDLENGTH(6)" };
+ type octetstring OCT7 length(7) with { variant "FIELDLENGTH(7)" };
+ type octetstring OCT8 length(8) with { variant "FIELDLENGTH(8)" };
+ type octetstring OCT9 length(9) with { variant "FIELDLENGTH(9)" };
+ type octetstring OCT10 length(10) with { variant "FIELDLENGTH(10)" };
+ type octetstring OCT11 length(11) with { variant "FIELDLENGTH(11)" };
+ type octetstring OCT12 length(12) with { variant "FIELDLENGTH(12)" };
+ type octetstring OCT13 length(13) with { variant "FIELDLENGTH(13)" };
+ type octetstring OCT14 length(14) with { variant "FIELDLENGTH(14)" };
+ type octetstring OCT15 length(15) with { variant "FIELDLENGTH(15)" };
+ type octetstring OCT16 length(16) with { variant "FIELDLENGTH(16)" };
+ type octetstring OCT17 length(17) with { variant "FIELDLENGTH(17)" };
+ type octetstring OCT18 length(18) with { variant "FIELDLENGTH(18)" };
+ type octetstring OCT19 length(19) with { variant "FIELDLENGTH(19)" };
+ type octetstring OCT20 length(20) with { variant "FIELDLENGTH(20)" };
+ type octetstring OCT32 length(32) with { variant "FIELDLENGTH(32)" };
+ type octetstring OCT34 length(34) with { variant "FIELDLENGTH(34)" };
+ type octetstring OCT46 length(46) with { variant "FIELDLENGTH(46)" };
+
+ //octetstring with length interval
+ type octetstring OCT1_260 length(1..260) with { variant "" };
+ type octetstring OCT1_8 length(1..8) with { variant "" };
+ type octetstring OCT1_12 length(1..12) with { variant "" };
+ type octetstring OCT1_32 length(1..32) with { variant "" };
+ type octetstring OCT1_50 length(1..50) with { variant "" };
+ type octetstring OCT3_8 length(3..8) with { variant "" };
+
+ type octetstring OCTN with { variant "" };
+
+ //****************************************************
+ // Hexstrings
+ //****************************************************
+
+ //hexstring with fixed length
+ type hexstring HEX1 length(1) with {variant "FIELDLENGTH(1)"};
+
+ //hexstring with length interval
+ type hexstring HEX0_16 length(0..16) with { variant "" };
+ type hexstring HEX5_16 length(5..16) with { variant "" };
+ type hexstring HEX1_32 length(1..32) with { variant "" };
+
+
+ //****************************************************
+ // Integers
+ //****************************************************
+
+ //integer with fixed octet number
+ type integer INT1 (0..255) with { variant "FIELDLENGTH(8)" };
+ type integer LIN1 (0..255) with { variant "FIELDLENGTH(8)" };
+ type integer LIN2 (0..65535) with { variant "FIELDLENGTH(16)" };
+ type integer LIN2_BO_LAST (0..65535) with { variant "FIELDLENGTH(16), COMP(nosign), BYTEORDER(last)" };
+ type integer LIN3_BO_LAST (0..16777215) with { variant "FIELDLENGTH(24), COMP(nosign), BYTEORDER(last)" };
+ type integer LIN4_BO_LAST (0..4294967295) with { variant "FIELDLENGTH(32), COMP(nosign), BYTEORDER(last)" };
+
+ //integer with fixed bit number
+ type integer INT1b (0..1) with { variant "FIELDLENGTH(1)" };
+ type integer INT2b (0..3) with { variant "FIELDLENGTH(2)" };
+ type integer INT3b (0..7) with { variant "FIELDLENGTH(3)" };
+ type integer INT4b (0..15) with { variant "FIELDLENGTH(4)" };
+ type integer INT5b (0..31) with { variant "FIELDLENGTH(5)" };
+ type integer INT6b (0..63) with { variant "FIELDLENGTH(6)" };
+ type integer INT7b (0..127) with { variant "FIELDLENGTH(7)" };
+ type integer INT11b_BO_LAST ( 0 .. 2047 ) with { variant "FIELDLENGTH(11), COMP(nosign), BYTEORDER(last)" };
+ type integer INT12b_BO_LAST ( 0 .. 4095 ) with { variant "FIELDLENGTH(12), COMP(nosign), BYTEORDER(last)" };
+ type integer INT13b_BO_LAST ( 0 .. 8191 ) with { variant "FIELDLENGTH(13), COMP(nosign), BYTEORDER(last)" };
+ type integer INT14b_BO_LAST ( 0 .. 16383 ) with { variant "FIELDLENGTH(14), COMP(nosign), BYTEORDER(last)" };
+ type integer INT18b_BO_LAST ( 0 .. 262143 ) with { variant "FIELDLENGTH(18), COMP(nosign), BYTEORDER(last)" };
+ type integer INT20b_BO_LAST ( 0 .. 1048575 ) with { variant "FIELDLENGTH(20), COMP(nosign), BYTEORDER(last)" };
+ type integer INT31b_BO_LAST ( 0 .. 2147483647 ) with { variant "FIELDLENGTH(31), COMP(nosign), BYTEORDER(last)" };
+
+} // end group SimpleRAWEncodedTypes
+
+group ComponentTypes {
+ type component Dummy_comptype {}
+ type component Dummy_CT {}
+} // end group ComponentTypes
+
+group CompositeTypes {
+ type enumerated Protocols
+ { mtp3, sccp, isup, bicc, qaal2, gcp, bssap, bssmap, ranap, dtap }
+
+ type record of OCT1 OCT1List with { variant "" };
+ type record of OCT2 OCT2List with { variant "" };
+ type record of OCT3 OCT3List with { variant "" };
+ type record of OCT4 OCT4List with { variant "" };
+ type record of OCT5 OCT5List with { variant "" };
+ type record of OCT6 OCT6List with { variant "" };
+ type record of OCT7 OCT7List with { variant "" };
+
+ type record of Dummy_comptype ListOfDummy_comptype with { variant "" };
+ type record of Dummy_CT ListOfDummy_CT with { variant "" };
+ type record of Protocols ProtocolList with { variant "" };
+} // end group CompositeTypes
+
+} with { encode "RAW" } /* End of module General_Types */
+
diff --git a/COMMON/src/MobileDomainDefinitions.asn b/COMMON/src/MobileDomainDefinitions.asn
new file mode 100644
index 0000000..0685484
--- /dev/null
+++ b/COMMON/src/MobileDomainDefinitions.asn
@@ -0,0 +1,54 @@
+-- *******************************************************************************
+-- * Copyright (c) 2004, 2014 Ericsson AB
+-- * All rights reserved. This program and the accompanying materials
+-- * are made available under the terms of the Eclipse Public License v1.0
+-- * which accompanies this distribution, and is available at
+-- * http://www.eclipse.org/legal/epl-v10.html
+-- *
+-- * Contributors:
+-- * Zoltan Jasz - initial implementation and initial documentation
+-- * Abhishek Gupta
+-- * Attila Balasko
+-- * Endre Kulcsar
+-- * Gabor Bettesch
+-- * Gabor Szalai
+-- * Janos Kovesdi
+-- * Sandor Palugyai
+-- * Tibor Csondes
+-- *******************************************************************************
+--
+-- File: MobileDomainDefinitions.asn
+-- Rev: R9A
+-- Prodnr: CNL 113 368
+-- Reference:
+
+MobileDomainDefinitions {ccitt (0) identified-organization (4) etsi (0)
+ mobileDomain (0) mobileDomainDefinitions (0) version1 (1)}
+
+DEFINITIONS ::=
+BEGIN
+
+IMPORTS ;
+
+-- Mobile DomainId
+
+mobileDomainId OBJECT IDENTIFIER ::= {ccitt (0) identified-organization (4) etsi (0) mobileDomain (0)}
+
+-- Mobile Subdomains
+
+gsm-NetworkId OBJECT IDENTIFIER ::= {mobileDomainId gsm-Network (1)}
+gsm-AccessId OBJECT IDENTIFIER ::= {mobileDomainId gsm-Access (2)}
+gsm-OperationAndMaintenanceId OBJECT IDENTIFIER ::= {mobileDomainId gsm-Operation-Maintenance (3)}
+gsm-MessagingId OBJECT IDENTIFIER ::= {mobileDomainId gsm-Messaging (4)}
+
+-- Common Component Ids for structuring Mobile Subdomains
+
+CommonComponentId ::= INTEGER (0..9)
+
+ac-Id CommonComponentId ::= 0
+as-Id CommonComponentId ::= 1
+ase-Id CommonComponentId ::= 2
+moduleId CommonComponentId ::= 3
+er-Id CommonComponentId ::= 4
+
+END -- MobileDomainDefinitions
diff --git a/COMMON/src/ProtocolModules_Common.grp b/COMMON/src/ProtocolModules_Common.grp
new file mode 100644
index 0000000..90214d5
--- /dev/null
+++ b/COMMON/src/ProtocolModules_Common.grp
@@ -0,0 +1,39 @@
+<!--
+/******************************************************************************
+* Copyright (c) 2004, 2014 Ericsson AB
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* Zoltan Jasz - initial implementation and initial documentation
+* Abhishek Gupta
+* Attila Balasko
+* Endre Kulcsar
+* Gabor Bettesch
+* Gabor Szalai
+* Janos Kovesdi
+* Sandor Palugyai
+* Tibor Csondes
+******************************************************************************/
+//
+// File: ProtocolModules_Common.grp
+// Description:
+// Rev: R9A
+// Prodnr: CNL 113 368
+// Reference:
+//
+//
+-->
+<!DOCTYPE TITAN_GUI_FileGroup_file>
+<FileGroup TITAN_version="3.1.pl0" >
+ <File_Group name="ProtocolModules_Common" >
+ <File path="General_Types.ttcn" />
+ <File path="MobileDomainDefinitions.asn" />
+ <File path="UsefulTtcn3Types.ttcn" />
+ <File path="XSD.ttcn" />
+ <File path="general_typedefs.ttcn" />
+ <File path="http_www_w3_org_XML_1998_namespace.ttcn" />
+ </File_Group>
+</FileGroup>
diff --git a/COMMON/src/UsefulTtcn3Types.ttcn b/COMMON/src/UsefulTtcn3Types.ttcn
new file mode 100644
index 0000000..911e1a5
--- /dev/null
+++ b/COMMON/src/UsefulTtcn3Types.ttcn
@@ -0,0 +1,99 @@
+/******************************************************************************
+* Copyright (c) 2004, 2014 Ericsson AB
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* Zoltan Jasz - initial implementation and initial documentation
+* Abhishek Gupta
+* Attila Balasko
+* Endre Kulcsar
+* Gabor Bettesch
+* Gabor Szalai
+* Janos Kovesdi
+* Sandor Palugyai
+* Tibor Csondes
+******************************************************************************/
+//
+// File: UsefulTtcn3Types.ttcn
+// Rev: R9A
+// Prodnr: CNL 113 368
+//
+////////////////////////////////////////////////////////////////////////////////
+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/COMMON/src/XSD.ttcn b/COMMON/src/XSD.ttcn
new file mode 100644
index 0000000..64157a0
--- /dev/null
+++ b/COMMON/src/XSD.ttcn
@@ -0,0 +1,339 @@
+/******************************************************************************
+* Copyright (c) 2004, 2014 Ericsson AB
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* Zoltan Jasz - initial implementation and initial documentation
+* Abhishek Gupta
+* Attila Balasko
+* Endre Kulcsar
+* Gabor Bettesch
+* Gabor Szalai
+* Janos Kovesdi
+* Sandor Palugyai
+* Tibor Csondes
+******************************************************************************/
+//
+// File: XSD.ttcn
+// Rev: R9A
+// Prodnr: CNL 113 368
+//
+////////////////////////////////////////////////////////////////////////////////
+module XSD {
+
+import from UsefulTtcn3Types all;
+
+//These constants are used in the XSD date/time type definitions
+const charstring
+ dash := "-",
+ cln := ":",
+ year := "(0(0(0[1-9]|[1-9][0-9])|[1-9][0-9][0-9])|[1-9][0-9][0-9][0-9])",
+ 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 attr,
+ record of String elem_list
+}
+with {
+variant "XSD:anyType";
+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/COMMON/src/general_typedefs.ttcn b/COMMON/src/general_typedefs.ttcn
new file mode 100644
index 0000000..6432e53
--- /dev/null
+++ b/COMMON/src/general_typedefs.ttcn
@@ -0,0 +1,236 @@
+/******************************************************************************
+* Copyright (c) 2004, 2014 Ericsson AB
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* Zoltan Jasz - initial implementation and initial documentation
+* Abhishek Gupta
+* Attila Balasko
+* Endre Kulcsar
+* Gabor Bettesch
+* Gabor Szalai
+* Janos Kovesdi
+* Sandor Palugyai
+* Tibor Csondes
+******************************************************************************/
+//
+// File: general_typedefs.ttcn
+// Rev: R9A
+// Prodnr: CNL 113 368
+// Reference:
+
+module general_typedefs
+{
+
+group SimpleNativeTypes
+{
+//octetstring with fixed length
+type octetstring OCT0n length(0);
+type octetstring OCT1n length(1);
+type octetstring OCT2n length(2);
+type octetstring OCT3n length(3);
+type octetstring OCT4n length(4);
+type octetstring OCT5n length(5);
+type octetstring OCT6n length(6);
+type octetstring OCT7n length(7);
+type octetstring OCT8n length(8);
+type octetstring OCT9n length(9);
+type octetstring OCT10n length(10);
+type octetstring OCT11n length(11);
+type octetstring OCT12n length(12);
+type octetstring OCT13n length(13);
+type octetstring OCT14n length(14);
+type octetstring OCT15n length(15);
+type octetstring OCT16n length(16);
+type octetstring OCT17n length(17);
+type octetstring OCT18n length(18);
+type octetstring OCT19n length(19);
+type octetstring OCT20n length(20);
+type octetstring OCT28n length(28);
+type octetstring OCT32n length(32);
+type octetstring OCT34n length(34);
+type octetstring OCT46n length(46);
+type octetstring OCT50n length(50);
+type octetstring OCT69n length(69);
+type octetstring OCT100n length(100);
+type octetstring OCT128n length(128);
+type octetstring OCT500n length(500);
+type octetstring OCTNn;
+
+//octetstring with length interval
+type octetstring OCT1_3n length(1..3);
+type octetstring OCT1_4n length(1..4);
+type octetstring OCT1_5n length(1..5);
+type octetstring OCT1_6n length(1..6);
+type octetstring OCT1_7n length(1..7);
+type octetstring OCT1_8n length(1..8);
+type octetstring OCT1_12n length(1..12);
+type octetstring OCT1_15n length(1..15);
+type octetstring OCT1_16n length(1..16);
+type octetstring OCT1_18n length(1..18);
+type octetstring OCT1_20n length(1..20);
+type octetstring OCT1_24n length(1..24);
+type octetstring OCT1_34n length(1..34);
+type octetstring OCT1_46n length(1..46);
+type octetstring OCT1_50n length(1..50);
+type octetstring OCT1_112n length(1..112);
+type octetstring OCT1_127n length(1..127);
+type octetstring OCT1_128n length(1..128);
+type octetstring OCT1_172n length(1..172);
+type octetstring OCT3_5n length(3..5);
+type octetstring OCT3_7n length(3..7);
+type octetstring OCT3_8n length(3..8);
+type octetstring OCT3_17n length(3..17);
+type octetstring OCT4_8n length(4..8);
+
+//hexstring with fixed length
+type hexstring HEX24n length(24);
+
+//hexstring with length interval
+type hexstring HEX0_18n length(0..18);
+type hexstring HEX1_20n length(1..20);
+
+
+//bitstring with fixed length
+type bitstring BIT1n length(1);
+type bitstring BIT2n length(2);
+type bitstring BIT3n length(3);
+type bitstring BIT4n length(4);
+type bitstring BIT5n length(5);
+type bitstring BIT6n length(6);
+type bitstring BIT7n length(7);
+type bitstring BIT8n length(8);
+type bitstring BIT9n length(9);
+type bitstring BIT12n length(12);
+type bitstring BIT14n length(14);
+type bitstring BIT15n length(15);
+type bitstring BIT16n length(16);
+type bitstring BIT56n length(56);
+
+//bitstring with length interval
+type bitstring BIT14_24n length(14..24);
+
+//bitstring to be padded with fixed length
+type bitstring BIT1np length(1);
+type bitstring BIT2np length(2);
+type bitstring BIT3np length(3);
+type bitstring BIT4np length(4);
+type bitstring BIT5np length(5);
+type bitstring BIT6np length(6);
+type bitstring BIT7np length(7);
+type bitstring BIT15np length(15);
+
+//integer with fixed bit number
+type integer INT3nb (0..7);
+type integer INT4nb (0..15);
+type integer INT5nb (0..31);
+type integer INT8nb (0..255);
+
+//integer with fixed bit number and with padding
+type integer INT2nbp (0..3);
+type integer INT1nbp (0..1);
+type integer INT3nbp (0..7);
+type integer INT5nbp (0..31);
+type integer INT9nbp (0..511);
+type integer INT13nbp (0..8095);
+type integer INT15nbp (0..32767);
+
+}// end group NativeTypes
+
+group SimpleRAWEncodedTypes
+{
+//octetstring with fixed length
+type octetstring Dummy length(0) with { variant "FIELDLENGTH(0)" };
+type octetstring OCT0 length(0) with { variant "FIELDLENGTH(0)" };
+type octetstring OCT1 length(1) with { variant "FIELDLENGTH(1)" };
+type octetstring OCT2 length(2) with { variant "FIELDLENGTH(2)" };
+type octetstring OCT3 length(3) with { variant "FIELDLENGTH(3)" };
+type octetstring OCT4 length(4) with { variant "FIELDLENGTH(4)" };
+type octetstring OCT5 length(5) with { variant "FIELDLENGTH(5)" };
+type octetstring OCT6 length(6) with { variant "FIELDLENGTH(6)" };
+type octetstring OCT7 length(7) with { variant "FIELDLENGTH(7)" };
+type octetstring OCT8 length(8) with { variant "FIELDLENGTH(8)" };
+type octetstring OCT9 length(9) with { variant "FIELDLENGTH(9)" };
+type octetstring OCT10 length(10) with { variant "FIELDLENGTH(10)" };
+type octetstring OCT11 length(11) with { variant "FIELDLENGTH(11)" };
+type octetstring OCT12 length(12) with { variant "FIELDLENGTH(12)" };
+type octetstring OCT13 length(13) with { variant "FIELDLENGTH(13)" };
+type octetstring OCT14 length(14) with { variant "FIELDLENGTH(14)" };
+type octetstring OCT15 length(15) with { variant "FIELDLENGTH(15)" };
+type octetstring OCT16 length(16) with { variant "FIELDLENGTH(16)" };
+type octetstring OCT17 length(17) with { variant "FIELDLENGTH(17)" };
+type octetstring OCT18 length(18) with { variant "FIELDLENGTH(18)" };
+type octetstring OCT19 length(19) with { variant "FIELDLENGTH(19)" };
+type octetstring OCT20 length(20) with { variant "FIELDLENGTH(20)" };
+type octetstring OCT32 length(32) with { variant "FIELDLENGTH(32)" };
+type octetstring OCT34 length(34) with { variant "FIELDLENGTH(34)" };
+type octetstring OCT46 length(46) with { variant "FIELDLENGTH(46)" };
+
+//octetstring with length interval
+type octetstring OCT1_12 length(1..12) with { variant "" };
+type octetstring OCT1_8 length(1..8) with { variant "" };
+type octetstring OCT3_8 length(3..8) with { variant "" };
+type octetstring OCT1_50 length(1..50) with { variant "" };
+type octetstring OCTN with { variant "" };
+
+//bitstring with fixed length
+type bitstring BIT1 length(1) with { variant "FIELDLENGTH (1)" };
+type bitstring BIT2 length(2) with { variant "FIELDLENGTH(2)" };
+type bitstring BIT3 length(3) with { variant "FIELDLENGTH(3)" };
+type bitstring BIT4 length(4) with { variant "FIELDLENGTH(4)" };
+type bitstring BIT5 length(5) with { variant "FIELDLENGTH(5)" };
+type bitstring BIT6 length(6) with { variant "FIELDLENGTH(6)" };
+type bitstring BIT7 length(7) with { variant "FIELDLENGTH(7)" };
+type bitstring BIT8 length(8) with { variant "FIELDLENGTH(8)" };
+type bitstring BIT9 length(9) with { variant "FIELDLENGTH(9)" };
+type bitstring BIT12 length(12) with { variant "FIELDLENGTH(12)" };
+type bitstring BIT14 length(14) with { variant "FIELDLENGTH(14)" };
+type bitstring BIT15 length(15) with { variant "FIELDLENGTH(15)" };
+type bitstring BIT16 length(16) with { variant "FIELDLENGTH(16)" };
+type bitstring BIT24 length(24) with { variant "FIELDLENGTH(24)" };
+type bitstring BIT31 length(31) with { variant "FIELDLENGTH(31)" };
+type bitstring BIT56 length(56) with { variant "FIELDLENGTH(56)" };
+
+type hexstring HEX1 length(1) with {variant "FIELDLENGTH(1)"};
+
+//integer with fixed octet number
+type integer INT1 (0..255) with { variant "FIELDLENGTH(8)" };
+type integer LIN1 (0..255) with { variant "FIELDLENGTH(8)" }
+type integer LIN2 (0..65535) with { variant "FIELDLENGTH(16)" }
+
+//integer with fixed bit number
+type integer INT7b (0..127) with { variant "FIELDLENGTH(7)" };
+
+//integer record
+type record of integer Integers;
+type record of Integers Integer_array;
+
+} with {encode "RAW"} // end group SimpleRAWEncodedTypes
+
+ group ComponentTypes
+ {
+ type component Dummy_comptype {}
+ }
+
+ group CompositeTypes
+ {
+ type enumerated Protocols
+ { mtp3, sccp, isup, bicc, qaal2, gcp, bssap, bssmap, ranap, dtap }
+
+ type record of OCT1 OCT1List;
+ type record of OCT2 OCT2List;
+ type record of OCT3 OCT3List;
+ type record of OCT4 OCT4List;
+ type record of OCT5 OCT5List;
+ type record of OCT6 OCT6List;
+ type record of OCT7 OCT7List;
+
+ type record of Dummy_comptype ListOfDummy_comptype;
+
+ type record of Protocols ProtocolList;
+ }
+
+}with { encode "RAW"} /* End of module general_typedefs */
diff --git a/COMMON/src/http_www_w3_org_XML_1998_namespace.ttcn b/COMMON/src/http_www_w3_org_XML_1998_namespace.ttcn
new file mode 100644
index 0000000..99f570a
--- /dev/null
+++ b/COMMON/src/http_www_w3_org_XML_1998_namespace.ttcn
@@ -0,0 +1,150 @@
+/******************************************************************************
+* Copyright (c) 2004, 2014 Ericsson AB
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* Zoltan Jasz - initial implementation and initial documentation
+* Abhishek Gupta
+* Attila Balasko
+* Endre Kulcsar
+* Gabor Bettesch
+* Gabor Szalai
+* Janos Kovesdi
+* Sandor Palugyai
+* Tibor Csondes
+******************************************************************************/
+//
+// File: http_www_w3_org_XML_1998_namespace.ttcn
+// Rev: R9A
+// Prodnr: CNL 113 368
+// Reference:
+
+module http_www_w3_org_XML_1998_namespace {
+
+
+import from XSD all;
+
+
+/* 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 . . . */
+type XSD.Language Lang
+with {
+variant "name as uncapitalized";
+variant "attribute";
+};
+
+
+type enumerated Space
+{
+ default_,
+ preserve
+}
+with {
+variant "text 'default_' as 'default'";
+variant "name as uncapitalized";
+variant "defaultForEmpty as 'preserve'";
+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'";
+variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'";
+extension "version R9A"
+}
diff --git a/M3UA_CNL113536/M3UA_CNL113536.tpd b/M3UA_CNL113536/M3UA_CNL113536.tpd
new file mode 100644
index 0000000..c672902
--- /dev/null
+++ b/M3UA_CNL113536/M3UA_CNL113536.tpd
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2015 Ericsson
+
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+
+ File: M3UA_CNL113536.tpd
+ Description: tpd project file
+ Rev: R2A
+ Prodnr: CNL 113 536
+
+ -->
+<TITAN_Project_File_Information version="1.0">
+ <ProjectName>M3UA_CNL113536</ProjectName>
+ <ReferencedProjects>
+ <ReferencedProject name="ProtocolModules_Common" projectLocationURI="../COMMON/ProtocolModules_Common.tpd"/>
+ </ReferencedProjects>
+ <Folders>
+ <FolderResource projectRelativePath="src" relativeURI="src"/>
+ </Folders>
+ <Files>
+ <FileResource projectRelativePath="src/M3UA_Types.ttcn" relativeURI="src/M3UA_Types.ttcn"/>
+ </Files>
+ <ActiveConfiguration>Default</ActiveConfiguration>
+ <Configurations>
+ <Configuration name="Default">
+ <ProjectProperties>
+ <MakefileSettings>
+ <generateInternalMakefile>true</generateInternalMakefile>
+ <GNUMake>true</GNUMake>
+ <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+ <targetExecutable>bin/M3UA_CNL113536</targetExecutable>
+ </MakefileSettings>
+ <LocalBuildSettings>
+ <workingDirectory>bin</workingDirectory>
+ </LocalBuildSettings>
+ </ProjectProperties>
+ </Configuration>
+ </Configurations>
+</TITAN_Project_File_Information>
diff --git a/M3UA_CNL113536/doc/documentation_note.txt b/M3UA_CNL113536/doc/documentation_note.txt
new file mode 100644
index 0000000..eb68bfb
--- /dev/null
+++ b/M3UA_CNL113536/doc/documentation_note.txt
@@ -0,0 +1,13 @@
+Please note that the storage of the documentation of the product has been
+moved to the eridoc.ericsson.se from the ClearCase.
+
+You can access the documentation of the product via the following links:
+
+The documentation belongs to the R2A revision of the product
+can be found here:
+http://document.internal.ericsson.com/Download?DocNo=1095-CNL113536&Rev=C&Lang=EN&PRev=Y
+
+The documentation belongs to the latest revision of the product
+can be found here:
+http://document.internal.ericsson.com/Download?DocNo=1095-CNL113536&Rev=HIGHEST&Lang=EN&Status=FREE&PRev=Y
+
diff --git a/M3UA_CNL113536/src/M3UA_Types.ttcn b/M3UA_CNL113536/src/M3UA_Types.ttcn
new file mode 100644
index 0000000..d79d832
--- /dev/null
+++ b/M3UA_CNL113536/src/M3UA_Types.ttcn
@@ -0,0 +1,805 @@
+/******************************************************************************
+* Copyright (c) 2004, 2015 Ericsson AB
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* Ferenc Kovacs
+* Gabor Bettesch
+* Gabor Szalai
+******************************************************************************/
+//
+// File: M3UA_Types.ttcn
+// Rev: R2A
+// Prodnr: CNL 113 536
+// Reference:
+
+module M3UA_Types {
+
+import from General_Types all;
+
+external function enc_PDU_M3UA(in PDU_M3UA pdu) return octetstring
+with { extension "prototype(convert)"
+ extension "encode(RAW)"
+ }
+
+external function dec_PDU_M3UA(in octetstring stream) return PDU_M3UA
+with { extension "prototype(convert)"
+ extension "decode(RAW)"
+ }
+
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+// M3UA PARAMETERS
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type octetstring M3UA_OCT0_255 length (0..255);
+
+type record M3UA_Point_Code
+{
+ OCT1 mask,
+ OCT3 affected_Point_Code
+}
+
+type record of M3UA_Point_Code M3UA_Point_Codes;
+
+type record M3UA_Error_Code
+{
+ OCT2 tag,
+ integer lengthInd,
+ OCT4 errorCode
+} with { variant (lengthInd) "LENGTHTO(tag,lengthInd,errorCode)";
+ variant (lengthInd) "FIELDLENGTH(16)";
+ variant (lengthInd) "BYTEORDER(last)";
+ }
+
+type record M3UA_Routing_Context
+{
+ OCT2 tag,
+ integer lengthInd,
+ octetstring routingContext
+} with { variant (lengthInd) "LENGTHTO(tag,lengthInd,routingContext)";
+ variant (lengthInd) "FIELDLENGTH(16)";
+ variant (lengthInd) "BYTEORDER(last)";
+ variant "PADDING(dword32)";
+ }
+
+type record M3UA_Affected_Point_Codes
+{
+ OCT2 tag,
+ integer lengthInd,
+ M3UA_Point_Codes pointCodes
+} with { variant (lengthInd) "LENGTHTO(tag,lengthInd,pointCodes)";
+ variant (lengthInd) "FIELDLENGTH(16)";
+ variant (lengthInd) "BYTEORDER(last)";
+ }
+
+type record M3UA_Network_Appearance
+{
+ OCT2 tag,
+ integer lengthInd,
+ OCT4 networkAppearance
+} with { variant (lengthInd) "LENGTHTO(tag,lengthInd,networkAppearance)";
+ variant (lengthInd) "FIELDLENGTH(16)";
+ variant (lengthInd) "BYTEORDER(last)";
+ }
+
+type record M3UA_Diagnostic_information
+{
+ OCT2 tag,
+ integer lengthInd,
+ octetstring diagnosticInformation
+} with { variant (lengthInd) "LENGTHTO(tag,lengthInd,diagnosticInformation)";
+ variant (lengthInd) "FIELDLENGTH(16)";
+ variant (lengthInd) "BYTEORDER(last)";
+ variant "PADDING(dword32)";
+ }
+
+type record M3UA_Correlation_ID
+{
+ OCT2 tag,
+ integer lengthInd,
+ OCT4 correlationID
+} with { variant (lengthInd) "LENGTHTO(tag,lengthInd,correlationID)";
+ variant (lengthInd) "FIELDLENGTH(16)";
+ variant (lengthInd) "BYTEORDER(last)";
+ }
+
+type record M3UA_Protocol_Data
+{
+ OCT2 tag,
+ integer lengthInd,
+ OCT4 oPC,
+ OCT4 dPC,
+ OCT1 sI,
+ OCT1 nI,
+ OCT1 mP,
+ OCT1 sLS,
+ octetstring userProtocolData
+} with { variant (lengthInd) "LENGTHTO(tag,lengthInd,oPC,dPC,sI,nI,mP,sLS,
+ userProtocolData)";
+ variant (lengthInd) "FIELDLENGTH(16)";
+ variant (lengthInd) "BYTEORDER(last)";
+ variant "PADDING(dword32)";
+ }
+
+type record M3UA_Info_String
+{
+ OCT2 tag,
+ integer lengthInd,
+ M3UA_OCT0_255 infoString
+} with { variant (lengthInd) "LENGTHTO(tag,lengthInd,infoString)";
+ variant (lengthInd) "FIELDLENGTH(16)";
+ variant (lengthInd) "BYTEORDER(last)";
+ variant "PADDING(dword32)";
+ }
+
+type record M3UA_Concerned_Destination
+{
+ OCT2 tag,
+ integer lengthInd,
+ OCT1 reserved,
+ OCT3 concernedDestination
+} with { variant (lengthInd) "LENGTHTO(tag,lengthInd,reserved,
+ concernedDestination)";
+ variant (lengthInd) "FIELDLENGTH(16)";
+ variant (lengthInd) "BYTEORDER(last)";
+ }
+
+type record M3UA_Congestion_Indicators
+{
+ OCT2 tag,
+ integer lengthInd,
+ OCT1 reserved,
+ OCT3 congestionLevel
+} with { variant (lengthInd) "LENGTHTO(tag,lengthInd,reserved,congestionLevel)";
+ variant (lengthInd) "FIELDLENGTH(16)";
+ variant (lengthInd) "BYTEORDER(last)";
+ }
+
+type record M3UA_User_Cause
+{
+ OCT2 tag,
+ integer lengthInd,
+ OCT2 cause,
+ OCT2 user
+} with { variant (lengthInd) "LENGTHTO(tag,lengthInd,cause,user)";
+ variant (lengthInd) "FIELDLENGTH(16)";
+ variant (lengthInd) "BYTEORDER(last)";
+ }
+
+type record M3UA_ASP_Identifier
+{
+ OCT2 tag,
+ integer lengthInd,
+ OCT4 aSPIdentifier
+} with { variant (lengthInd) "LENGTHTO(tag,lengthInd,aSPIdentifier)";
+ variant (lengthInd) "FIELDLENGTH(16)";
+ variant (lengthInd) "BYTEORDER(last)";
+ }
+
+type record M3UA_Heartbeat_Data
+{
+ OCT2 tag,
+ integer lengthInd,
+ octetstring heartbeat_Data
+} with { variant (lengthInd) "LENGTHTO(tag,lengthInd,heartbeat_Data)";
+ variant (lengthInd) "FIELDLENGTH(16)";
+ variant (lengthInd) "BYTEORDER(last)";
+ variant "PADDING(dword32)";
+ }
+
+type record M3UA_Traffic_Mode_Type
+{
+ OCT2 tag,
+ integer lengthInd,
+ OCT4 trafficModeType
+} with { variant (lengthInd) "LENGTHTO (tag,lengthInd,trafficModeType)";
+ variant (lengthInd) "FIELDLENGTH(16)";
+ variant (lengthInd) "BYTEORDER(last)";
+ }
+
+
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+//PDUs
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+
+// M3UA_ERR PDU
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type record M3UA_ERR
+{
+ OCT1 version,
+ OCT1 reserved,
+ OCT2 messageClassAndType,
+ integer messageLength,
+ M3UA_ERR_MessageParameters messageParameters
+} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
+ messageLength,messageParameters)";
+ variant (messageLength) "FIELDLENGTH(32)";
+ variant (messageLength) "BYTEORDER(last)";
+ }
+
+type set M3UA_ERR_MessageParameters
+{
+ M3UA_Error_Code error_Code,
+ M3UA_Routing_Context routing_Context optional,
+ M3UA_Affected_Point_Codes affected_Point_Codes optional,
+ M3UA_Network_Appearance network_Appearance optional,
+ M3UA_Diagnostic_information diagnostic_information optional
+} with { variant "TAG(error_Code, tag = '000C'O;
+ routing_Context, tag = '0006'O;
+ affected_Point_Codes, tag = '0012'O;
+ network_Appearance, tag = '0200'O;
+ diagnostic_information, tag = '0007'O; )"
+ }
+
+
+// M3UA_NOTIFY
+// NOTE1 : NOTIFY should not come and will be dropped if it comes
+// NOTE2 : messageParameters is simpified implementation as octetstring
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type record M3UA_NOTIFY
+{
+ OCT1 version,
+ OCT1 reserved,
+ OCT2 messageClassAndType,
+ integer messageLength,
+ octetstring messageParameters
+} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
+ messageLength,messageParameters)";
+ variant (messageLength) "FIELDLENGTH(32)";
+ variant (messageLength) "BYTEORDER(last)";
+ }
+
+
+// M3UA_DATA PDU
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type record M3UA_DATA
+{
+ OCT1 version,
+ OCT1 reserved,
+ OCT2 messageClassAndType,
+ integer messageLength,
+ M3UA_DATA_MessageParameters messageParameters
+} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
+ messageLength,messageParameters)";
+ variant (messageLength) "FIELDLENGTH(32)";
+ variant (messageLength) "BYTEORDER(last)";
+ }
+
+type set M3UA_DATA_MessageParameters
+{
+ M3UA_Network_Appearance network_Appearance optional,
+ M3UA_Routing_Context routing_Context optional,
+ M3UA_Protocol_Data protocol_Data,
+ M3UA_Correlation_ID correlation_ID optional
+} with { variant "TAG(network_Appearance, tag = '0200'O;
+ routing_Context, tag = '0006'O;
+ protocol_Data, tag = '0210'O;
+ correlation_ID, tag = '0013'O; )"
+ }
+
+
+// M3UA_DUNA PDU
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type record M3UA_DUNA
+{
+ OCT1 version,
+ OCT1 reserved,
+ OCT2 messageClassAndType,
+ integer messageLength,
+ M3UA_DUNA_MessageParameters messageParameters
+} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
+ messageLength,messageParameters)";
+ variant (messageLength) "FIELDLENGTH(32)";
+ variant (messageLength) "BYTEORDER(last)";
+ }
+
+type set M3UA_DUNA_MessageParameters
+{
+ M3UA_Network_Appearance network_Appearance optional,
+ M3UA_Routing_Context routing_Context optional,
+ M3UA_Affected_Point_Codes affected_Point_Codes,
+ M3UA_Info_String info_String optional
+} with { variant "TAG(network_Appearance, tag = '0200'O;
+ routing_Context, tag = '0006'O;
+ affected_Point_Codes, tag = '0012'O;
+ info_String, tag = '0004'O )"
+ }
+
+
+// M3UA_DAVA PDU
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type record M3UA_DAVA
+{
+ OCT1 version,
+ OCT1 reserved,
+ OCT2 messageClassAndType,
+ integer messageLength,
+ M3UA_DAVA_MessageParameters messageParameters
+} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
+ messageLength,messageParameters)";
+ variant (messageLength) "FIELDLENGTH(32)";
+ variant (messageLength) "BYTEORDER(last)";
+ }
+
+type set M3UA_DAVA_MessageParameters
+{
+ M3UA_Network_Appearance network_Appearance optional,
+ M3UA_Routing_Context routing_Context optional,
+ M3UA_Affected_Point_Codes affected_Point_Codes,
+ M3UA_Info_String info_String optional
+} with { variant "TAG(network_Appearance, tag = '0200'O;
+ routing_Context, tag = '0006'O;
+ affected_Point_Codes, tag = '0012'O;
+ info_String, tag = '0004'O )"
+ }
+
+
+// M3UA_DAUD PDU
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type record M3UA_DAUD
+{
+ OCT1 version,
+ OCT1 reserved,
+ OCT2 messageClassAndType,
+ integer messageLength,
+ M3UA_DAUD_MessageParameters messageParameters
+} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
+ messageLength,messageParameters)";
+ variant (messageLength) "FIELDLENGTH(32)";
+ variant (messageLength) "BYTEORDER(last)";
+ }
+
+type set M3UA_DAUD_MessageParameters
+{
+ M3UA_Network_Appearance network_Appearance optional,
+ M3UA_Routing_Context routing_Context optional,
+ M3UA_Affected_Point_Codes affected_Point_Codes,
+ M3UA_Info_String info_String optional
+} with { variant "TAG(network_Appearance, tag = '0200'O;
+ routing_Context, tag = '0006'O;
+ affected_Point_Codes, tag = '0012'O;
+ info_String, tag = '0004'O )"
+ }
+
+
+// M3UA_SCON PDU
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type record M3UA_SCON
+{
+ OCT1 version,
+ OCT1 reserved,
+ OCT2 messageClassAndType,
+ integer messageLength,
+ M3UA_SCON_MessageParameters messageParameters
+} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
+ messageLength,messageParameters)";
+ variant (messageLength) "FIELDLENGTH(32)";
+ variant (messageLength) "BYTEORDER(last)";
+ }
+
+type set M3UA_SCON_MessageParameters
+{
+ M3UA_Network_Appearance network_Appearance optional,
+ M3UA_Routing_Context routing_Context optional,
+ M3UA_Affected_Point_Codes affected_Point_Codes,
+ M3UA_Concerned_Destination concerned_Destination optional,
+ M3UA_Congestion_Indicators congestion_Indicators optional,
+ M3UA_Info_String info_String optional
+} with { variant "TAG(network_Appearance, tag = '0200'O;
+ routing_Context, tag = '0006'O;
+ affected_Point_Codes, tag = '0012'O;
+ concerned_Destination, tag = '0206'O;
+ congestion_Indicators, tag = '0205'O;
+ info_String, tag = '0004'O )"
+ }
+
+
+// M3UA_DUPU PDU
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type record M3UA_DUPU
+{
+ OCT1 version,
+ OCT1 reserved,
+ OCT2 messageClassAndType,
+ integer messageLength,
+ M3UA_DUPU_MessageParameters messageParameters
+} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
+ messageLength,messageParameters)";
+ variant (messageLength) "FIELDLENGTH(32)";
+ variant (messageLength) "BYTEORDER(last)";
+ }
+
+type set M3UA_DUPU_MessageParameters
+{
+ M3UA_Network_Appearance network_Appearance optional,
+ M3UA_Routing_Context routing_Context optional,
+ M3UA_Affected_Point_Codes affected_Point_Codes,
+ M3UA_User_Cause user_Cause,
+ M3UA_Info_String info_String optional
+} with { variant "TAG(network_Appearance, tag = '0200'O;
+ routing_Context, tag = '0006'O;
+ affected_Point_Codes, tag = '0012'O;
+ user_Cause, tag = '0204'O;
+ info_String, tag = '0004'O )"
+ }
+
+
+// M3UA_DRST PDU
+// NOTE1 : DRST should not come and will be dropped if it comes
+// NOTE2 : messageParameters is simpified implementation as octetstring
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type record M3UA_DRST
+{
+ OCT1 version,
+ OCT1 reserved,
+ OCT2 messageClassAndType,
+ integer messageLength,
+ octetstring messageParameters
+} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
+ messageLength,messageParameters)";
+ variant (messageLength) "FIELDLENGTH(32)";
+ variant (messageLength) "BYTEORDER(last)";
+ }
+
+
+// M3UA_ASPUP
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type record M3UA_ASPUP
+{
+ OCT1 version,
+ OCT1 reserved,
+ OCT2 messageClassAndType,
+ integer messageLength,
+ M3UA_ASPUP_MessageParameters messageParameters
+} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
+ messageLength,messageParameters)";
+ variant (messageLength) "FIELDLENGTH(32)";
+ variant (messageLength) "BYTEORDER(last)";
+ }
+
+type set M3UA_ASPUP_MessageParameters
+{
+ M3UA_ASP_Identifier aSP_Identifier optional,
+ M3UA_Info_String info_String optional
+} with { variant "TAG(aSP_Identifier, tag = '0011'O;
+ info_String, tag = '0004'O; )"
+ }
+
+
+//M3UA_ASPUP_Ack
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type record M3UA_ASPUP_Ack
+{
+ OCT1 version,
+ OCT1 reserved,
+ OCT2 messageClassAndType,
+ integer messageLength,
+ M3UA_ASPUP_Ack_MessageParameters messageParameters
+} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
+ messageLength,messageParameters)";
+ variant (messageLength) "FIELDLENGTH(32)";
+ variant (messageLength) "BYTEORDER(last)";
+ }
+
+type set M3UA_ASPUP_Ack_MessageParameters
+{
+ M3UA_Info_String info_String optional
+} with { variant "TAG(info_String, tag = '0004'O; )"
+ }
+
+
+//M3UA_ASPDN
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type record M3UA_ASPDN
+{
+ OCT1 version,
+ OCT1 reserved,
+ OCT2 messageClassAndType,
+ integer messageLength,
+ M3UA_ASPDN_MessageParameters messageParameters
+} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
+ messageLength,messageParameters)";
+ variant (messageLength) "FIELDLENGTH(32)";
+ variant (messageLength) "BYTEORDER(last)";
+ }
+
+type set M3UA_ASPDN_MessageParameters
+{
+ M3UA_Info_String info_String optional
+} with { variant "TAG(info_String, tag = '0004'O; )"
+ }
+
+
+//M3UA_ASPDN_Ack
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type record M3UA_ASPDN_Ack
+{
+ OCT1 version,
+ OCT1 reserved,
+ OCT2 messageClassAndType,
+ integer messageLength,
+ M3UA_ASPDN_Ack_MessageParameters messageParameters
+} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
+ messageLength,messageParameters)";
+ variant (messageLength) "FIELDLENGTH(32)";
+ variant (messageLength) "BYTEORDER(last)";
+ }
+
+type set M3UA_ASPDN_Ack_MessageParameters
+{
+ M3UA_Info_String info_String optional
+} with { variant "TAG(info_String, tag = '0004'O;)"
+ }
+
+
+// M3UA_BEAT
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type record M3UA_BEAT
+{
+ OCT1 version,
+ OCT1 reserved,
+ OCT2 messageClassAndType,
+ integer messageLength,
+ M3UA_BEAT_MessageParameters messageParameters
+} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
+ messageLength,messageParameters)";
+ variant (messageLength) "FIELDLENGTH(32)";
+ variant (messageLength) "BYTEORDER(last)";
+ }
+
+type set M3UA_BEAT_MessageParameters
+{
+ M3UA_Heartbeat_Data heartbeat_Data optional
+} with { variant "TAG(heartbeat_Data, tag = '0009'O; )"
+ }
+
+
+// M3UA_BEAT_Ack
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type record M3UA_BEAT_Ack
+{
+ OCT1 version,
+ OCT1 reserved,
+ OCT2 messageClassAndType,
+ integer messageLength,
+ M3UA_BEAT_Ack_MessageParameters messageParameters
+} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
+ messageLength,messageParameters)";
+ variant (messageLength) "FIELDLENGTH(32)";
+ variant (messageLength) "BYTEORDER(last)";
+ }
+
+type set M3UA_BEAT_Ack_MessageParameters
+{
+ M3UA_Heartbeat_Data heartbeat_Data optional
+} with { variant "TAG(heartbeat_Data, tag = '0009'O; )"
+ }
+
+
+// M3UA_ASPAC
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type record M3UA_ASPAC
+{
+ OCT1 version,
+ OCT1 reserved,
+ OCT2 messageClassAndType,
+ integer messageLength,
+ M3UA_ASPAC_MessageParameters messageParameters
+} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
+ messageLength,messageParameters)";
+ variant (messageLength) "FIELDLENGTH(32)";
+ variant (messageLength) "BYTEORDER(last)";
+ }
+
+type set M3UA_ASPAC_MessageParameters
+{
+ M3UA_Traffic_Mode_Type traffic_Mode_Type optional,
+ M3UA_Routing_Context routing_Context optional,
+ M3UA_Info_String info_String optional
+} with { variant "TAG(traffic_Mode_Type, tag = '000B'O;
+ routing_Context, tag = '0006'O;
+ info_String, tag = '0004'O; )"
+ }
+
+
+// M3UA_ASPAC_Ack
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type record M3UA_ASPAC_Ack
+{
+ OCT1 version,
+ OCT1 reserved,
+ OCT2 messageClassAndType,
+ integer messageLength,
+ M3UA_ASPAC_Ack_MessageParameters messageParameters
+} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
+ messageLength,messageParameters)";
+ variant (messageLength) "FIELDLENGTH(32)";
+ variant (messageLength) "BYTEORDER(last)";
+ }
+
+type set M3UA_ASPAC_Ack_MessageParameters
+{
+ M3UA_Traffic_Mode_Type traffic_Mode_Type optional,
+ M3UA_Routing_Context routing_Context optional,
+ M3UA_Info_String info_String optional
+} with { variant "TAG(traffic_Mode_Type, tag = '000B'O;
+ routing_Context, tag = '0006'O;
+ info_String, tag = '0004'O; )"
+ }
+
+
+// M3UA_ASPIA
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type record M3UA_ASPIA
+{
+ OCT1 version,
+ OCT1 reserved,
+ OCT2 messageClassAndType,
+ integer messageLength,
+ M3UA_ASPIA_MessageParameters messageParameters
+} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
+ messageLength,messageParameters)";
+ variant (messageLength) "FIELDLENGTH(32)";
+ variant (messageLength) "BYTEORDER(last)";
+ }
+
+type set M3UA_ASPIA_MessageParameters
+{
+ M3UA_Routing_Context routing_Context optional,
+ M3UA_Info_String info_String optional
+} with { variant "TAG(routing_Context, tag = '0006'O;
+ info_String, tag = '0004'O; )"
+ }
+
+
+// M3UA_ASPIA_Ack
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type record M3UA_ASPIA_Ack
+{
+ OCT1 version,
+ OCT1 reserved,
+ OCT2 messageClassAndType,
+ integer messageLength,
+ M3UA_ASPIA_Ack_MessageParameters messageParameters
+} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
+ messageLength,messageParameters)";
+ variant (messageLength) "FIELDLENGTH(32)";
+ variant (messageLength) "BYTEORDER(last)";
+ }
+
+type set M3UA_ASPIA_Ack_MessageParameters
+{
+ M3UA_Routing_Context routing_Context optional,
+ M3UA_Info_String info_String optional
+} with { variant "TAG(routing_Context, tag = '0006'O;
+ info_String, tag = '0004'O; )"
+ }
+
+
+// M3UA_REG_REQ
+// NOTE1 : REG REQ should not come and will be dropped if it comes
+// NOTE2 : messageParameters is simpified implementation as octetstring
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type record M3UA_REG_REQ
+{
+ OCT1 version,
+ OCT1 reserved,
+ OCT2 messageClassAndType,
+ integer messageLength,
+ octetstring messageParameters
+} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
+ messageLength,messageParameters)";
+ variant (messageLength) "FIELDLENGTH(32)";
+ variant (messageLength) "BYTEORDER(last)";
+ }
+
+
+// M3UA_REG_RSP
+// NOTE1 : REG RSP should not come and will be dropped if it comes
+// NOTE2 : messageParameters is simpified implementation as octetstring
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type record M3UA_REG_RSP
+{
+ OCT1 version,
+ OCT1 reserved,
+ OCT2 messageClassAndType,
+ integer messageLength,
+ octetstring messageParameters
+} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
+ messageLength,messageParameters)";
+ variant (messageLength) "FIELDLENGTH(32)";
+ variant (messageLength) "BYTEORDER(last)";
+ }
+
+
+// M3UA_DEREG_REQ
+// NOTE1 : DEREG REQ should not come and will be dropped if it comes
+// NOTE2 : messageParameters is simpified implementation as octetstring
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type record M3UA_DEREG_REQ
+{
+ OCT1 version,
+ OCT1 reserved,
+ OCT2 messageClassAndType,
+ integer messageLength,
+ octetstring messageParameters
+} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
+ messageLength,messageParameters)";
+ variant (messageLength) "FIELDLENGTH(32)";
+ variant (messageLength) "BYTEORDER(last)";
+ }
+
+
+// M3UA_DEREG_RSP
+// NOTE1 : DEREG RSP should not come and will be dropped if it comes
+// NOTE2 : messageParameters is simpified implementation as octetstring
+//++++++++++++++++++++++++++++++++++++++++++++++++++
+type record M3UA_DEREG_RSP
+{
+ OCT1 version,
+ OCT1 reserved,
+ OCT2 messageClassAndType,
+ integer messageLength,
+ octetstring messageParameters
+} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
+ messageLength,messageParameters)";
+ variant (messageLength) "FIELDLENGTH(32)";
+ variant (messageLength) "BYTEORDER(last)";
+ }
+
+
+// Top level PDU
+//************************************************************************
+type union PDU_M3UA
+{
+ M3UA_ERR m3UA_ERR, // Error
+ M3UA_NOTIFY m3UA_NOTIFY, // Notify - should not come
+ M3UA_DATA m3UA_DATA, // Payload data
+ M3UA_DUNA m3UA_DUNA, // Destination Unavailable
+ M3UA_DAVA m3UA_DAVA, // Destination Available
+ M3UA_DAUD m3UA_DAUD, // Destination State Audit
+ M3UA_SCON m3UA_SCON, // Signaling Congestion
+ M3UA_DUPU m3UA_DUPU, // Destination User Part Unavailable
+ M3UA_DRST m3UA_DRST, // DRST - should not come
+ M3UA_ASPUP m3UA_ASPUP, // ASP up
+ M3UA_ASPDN m3UA_ASPDN, // ASP down
+ M3UA_BEAT m3UA_BEAT, // Heartbeat
+ M3UA_BEAT_Ack m3UA_BEAT_Ack, // Heartbeat Ack
+ M3UA_ASPUP_Ack m3UA_ASPUP_Ack, // ASP up ack
+ M3UA_ASPDN_Ack m3UA_ASPDN_Ack, // ASP down ack
+ M3UA_ASPAC m3UA_ASPAC, // ASP Active
+ M3UA_ASPIA m3UA_ASPIA, // ASP Inactive
+ M3UA_ASPAC_Ack m3UA_ASPAC_Ack, // ASP Active Ack
+ M3UA_ASPIA_Ack m3UA_ASPIA_Ack, // ASP Inactive
+ M3UA_REG_REQ m3UA_REG_REQ, // REG REQ - should not come
+ M3UA_REG_RSP m3UA_REG_RSP, // REG RSP - should not come
+ M3UA_DEREG_REQ m3UA_DEREG_REQ, // DEREG REQ - should not come
+ M3UA_DEREG_RSP m3UA_DEREG_RSP // DEREG RSP - should not come
+} with { variant "TAG(
+ m3UA_ERR, messageClassAndType = '0000'O; //MGMT Class (0),
+ m3UA_NOTIFY, messageClassAndType = '0001'O; //MGMT Class (0),
+ m3UA_DATA, messageClassAndType = '0101'O; //Transf msg Class(1),
+ m3UA_DUNA, messageClassAndType = '0201'O; //SSNM Class(2),
+ m3UA_DAVA, messageClassAndType = '0202'O; //SSNM Class(2),
+ m3UA_DAUD, messageClassAndType = '0203'O; //SSNM Class(2),
+ m3UA_SCON, messageClassAndType = '0204'O; //SSNM Class(2),
+ m3UA_DUPU, messageClassAndType = '0205'O; //SSNM Class(2),
+ m3UA_DRST, messageClassAndType = '0206'O; //SSNM Class(2),
+ m3UA_ASPUP, messageClassAndType = '0301'O; //ASPSM Class(3),
+ m3UA_ASPDN, messageClassAndType = '0302'O; //ASPSM Class(3),
+ m3UA_BEAT, messageClassAndType = '0303'O; //ASPSM Class(3),
+ m3UA_ASPUP_Ack, messageClassAndType = '0304'O; //ASPSM Class(3),
+ m3UA_ASPDN_Ack, messageClassAndType = '0305'O; //ASPSM Class(3),
+ m3UA_BEAT_Ack, messageClassAndType = '0306'O; //ASPSM Class(3),
+ m3UA_ASPAC, messageClassAndType = '0401'O; //ASPTM Class(4),
+ m3UA_ASPIA, messageClassAndType = '0402'O; //ASPTM Class(4),
+ m3UA_ASPAC_Ack, messageClassAndType = '0403'O; //ASPTM Class(4),
+ m3UA_ASPIA_Ack, messageClassAndType = '0404'O; //ASPTM Class(4),
+ m3UA_REG_REQ, messageClassAndType = '0901'O; //RKM Class(9),
+ m3UA_REG_RSP, messageClassAndType = '0902'O; //RKM Class(9),
+ m3UA_DEREG_REQ, messageClassAndType = '0903'O; //RKM Class(9),
+ m3UA_DEREG_RSP, messageClassAndType = '0904'O; )" //RKM Class(9),
+ }
+} with { encode "RAW"}
diff --git a/M3UA_CNL113537/demo/Abstract_Socket.cc b/M3UA_CNL113537/demo/Abstract_Socket.cc
new file mode 120000
index 0000000..6d1b3f3
--- /dev/null
+++ b/M3UA_CNL113537/demo/Abstract_Socket.cc
@@ -0,0 +1 @@
+../../../TestPorts/Common_Components/Abstract_Socket_CNL113384/src/Abstract_Socket.cc \ No newline at end of file
diff --git a/M3UA_CNL113537/demo/Abstract_Socket.hh b/M3UA_CNL113537/demo/Abstract_Socket.hh
new file mode 120000
index 0000000..ecb6c03
--- /dev/null
+++ b/M3UA_CNL113537/demo/Abstract_Socket.hh
@@ -0,0 +1 @@
+../../../TestPorts/Common_Components/Abstract_Socket_CNL113384/src/Abstract_Socket.hh \ No newline at end of file
diff --git a/M3UA_CNL113537/demo/BICC_EncDec.cc b/M3UA_CNL113537/demo/BICC_EncDec.cc
new file mode 120000
index 0000000..f3f7144
--- /dev/null
+++ b/M3UA_CNL113537/demo/BICC_EncDec.cc
@@ -0,0 +1 @@
+../../../ProtocolModules/BICC_Q.1902.1_CNL113359/src/BICC_EncDec.cc \ No newline at end of file
diff --git a/M3UA_CNL113537/demo/BICC_Types.ttcn b/M3UA_CNL113537/demo/BICC_Types.ttcn
new file mode 120000
index 0000000..de200f7
--- /dev/null
+++ b/M3UA_CNL113537/demo/BICC_Types.ttcn
@@ -0,0 +1 @@
+../../../ProtocolModules/BICC_Q.1902.1_CNL113359/src/BICC_Types.ttcn \ No newline at end of file
diff --git a/M3UA_CNL113537/demo/General_Types.ttcn b/M3UA_CNL113537/demo/General_Types.ttcn
new file mode 120000
index 0000000..354ebf3
--- /dev/null
+++ b/M3UA_CNL113537/demo/General_Types.ttcn
@@ -0,0 +1 @@
+../../../ProtocolModules/COMMON/src/General_Types.ttcn \ No newline at end of file
diff --git a/M3UA_CNL113537/demo/M3UA_Emulation.ttcn b/M3UA_CNL113537/demo/M3UA_Emulation.ttcn
new file mode 120000
index 0000000..bf12ab9
--- /dev/null
+++ b/M3UA_CNL113537/demo/M3UA_Emulation.ttcn
@@ -0,0 +1 @@
+../src/M3UA_Emulation.ttcn \ No newline at end of file
diff --git a/M3UA_CNL113537/demo/M3UA_Emulation_Test.ttcn b/M3UA_CNL113537/demo/M3UA_Emulation_Test.ttcn
new file mode 100644
index 0000000..4c1e86a
--- /dev/null
+++ b/M3UA_CNL113537/demo/M3UA_Emulation_Test.ttcn
@@ -0,0 +1,152 @@
+module M3UA_Emulation_Test
+{
+
+//import from MTP3asp_PortType all;
+import from MTP3asp_Types all;
+import from BICC_Types all;
+import from M3UA_Emulation all;
+import from SCTPasp_PortType all;
+
+modulepar
+{
+ SCTP_Association_Address tsp_address := { 0, "", 0, "" };
+ // float tsp_serverWait := 5.0;
+ // boolean tsp_serverTest := false;
+}
+
+type port MTP3asp_PT_Int message
+{
+ out ASP_MTP3_TRANSFERreq;
+ in ASP_MTP3_TRANSFERind;
+} with {extension "internal"}
+
+type component BICC_CT
+{
+ port MTP3asp_PT_Int BICC_MTP3_PORT;
+}
+
+type component MTC_CT
+{
+ var BICC_CT vlc_BICC_COMPONENT_1;
+ var M3UA_CT vlc_M3UA_COMPONENT_1;
+ port SCTPasp_PT SCTP_PORT;
+
+// var BICC_CT vlc_BICC_COMPONENT_2;
+// port MTP3asp_PT M3UA_PORT;
+}
+
+function f_testconfig_bicc(SCTP_Association_Address pl_address) runs on MTC_CT
+{
+ vlc_BICC_COMPONENT_1 := BICC_CT.create;
+ vlc_M3UA_COMPONENT_1 := M3UA_CT.create;
+ connect(vlc_BICC_COMPONENT_1:BICC_MTP3_PORT,
+ vlc_M3UA_COMPONENT_1:MTP3_SP_PORT);
+ map(system:SCTP_PORT, vlc_M3UA_COMPONENT_1:SCTP_PORT);
+ vlc_M3UA_COMPONENT_1.start(f_M3UA_Emulation(pl_address));
+}
+
+function f_testconfig_end_demo_bicc() runs on MTC_CT
+{
+ unmap(system:SCTP_PORT, vlc_M3UA_COMPONENT_1:SCTP_PORT);
+ disconnect(vlc_BICC_COMPONENT_1:BICC_MTP3_PORT, vlc_M3UA_COMPONENT_1:MTP3_SP_PORT);
+ vlc_M3UA_COMPONENT_1.stop;
+}
+
+template ASP_MTP3_TRANSFERind tr_ASP_MTP3_TRANSFERind_BICC :=
+{ sio := {
+ ni := '10'B,
+ prio := ?,
+ si := '1101'B
+ },
+ opc := ?,
+ dpc := ?,
+ sls := ?,
+ data := ?
+}
+
+function f_init_BICC_bicc() runs on BICC_CT
+{
+ var PDU_BICC vl_PDU_BICC;
+ var ASP_MTP3_TRANSFERind vl_ASP_MTP3_TRANSFERind;
+ var ASP_MTP3_TRANSFERreq vl_ASP_MTP3_TRANSFERreq;
+
+ vl_PDU_BICC := {
+ BICC_GRA := {
+ CIC := '00000000'O,
+ MType := '00010111'B,
+ var_part_ptr := 1,
+ RngSts :=
+ { range := '1F'O,
+ status := ''O
+ }
+ }
+ }
+
+ vl_ASP_MTP3_TRANSFERreq := {
+ sio := {
+ ni := '10'B,
+ prio := '00'B,
+ si := '1101'B
+ },
+ opc := 115,
+ dpc := 300,
+ sls := 0,
+ data := enc_PDU_BICC(vl_PDU_BICC)
+ }
+
+ timer T_Timer := 5.0;
+ T_Timer.start;
+ alt {
+ [] BICC_MTP3_PORT.receive(tr_ASP_MTP3_TRANSFERind_BICC)
+ -> value vl_ASP_MTP3_TRANSFERind {
+ log("BICC_MTP3_PORT: received message: ", vl_ASP_MTP3_TRANSFERind);
+ vl_PDU_BICC := dec_PDU_BICC(vl_ASP_MTP3_TRANSFERind.data);
+ log("received BICC message: ", vl_PDU_BICC);
+ setverdict(pass);
+ BICC_MTP3_PORT.send(vl_ASP_MTP3_TRANSFERreq);
+ T_Timer.stop;
+ }
+ [] BICC_MTP3_PORT.receive(ASP_MTP3_TRANSFERind : ?)
+ -> value vl_ASP_MTP3_TRANSFERind {
+ log("BICC_MTP3_PORT: received message: ", vl_ASP_MTP3_TRANSFERind);
+ repeat;
+ }
+ [] BICC_MTP3_PORT.receive {
+ setverdict(fail);
+ }
+ [] T_Timer.timeout {
+ setverdict(fail);
+ }
+ }
+
+ T_Timer.start;
+ alt {
+ [] BICC_MTP3_PORT.receive(tr_ASP_MTP3_TRANSFERind_BICC)
+ -> value vl_ASP_MTP3_TRANSFERind {
+ log("BICC_MTP3_PORT: received message: ", vl_ASP_MTP3_TRANSFERind);
+ vl_PDU_BICC := dec_PDU_BICC(vl_ASP_MTP3_TRANSFERind.data);
+ log("received BICC message: ", vl_PDU_BICC);
+ repeat;
+ }
+ [] BICC_MTP3_PORT.receive(ASP_MTP3_TRANSFERind : ?)
+ -> value vl_ASP_MTP3_TRANSFERind {
+ log("BICC_MTP3_PORT: received message: ", vl_ASP_MTP3_TRANSFERind);
+ repeat;
+ }
+ [] BICC_MTP3_PORT.receive {
+ }
+ [] T_Timer.timeout {
+ }
+ }
+
+}
+
+testcase tc_M3UA_demo_bicc() runs on MTC_CT
+{
+ f_testconfig_bicc(tsp_address);
+ vlc_BICC_COMPONENT_1.start(f_init_BICC_bicc());
+ vlc_BICC_COMPONENT_1.done;
+ f_testconfig_end_demo_bicc();
+}
+
+}
diff --git a/M3UA_CNL113537/demo/M3UA_Types.ttcn b/M3UA_CNL113537/demo/M3UA_Types.ttcn
new file mode 120000
index 0000000..ca43cb3
--- /dev/null
+++ b/M3UA_CNL113537/demo/M3UA_Types.ttcn
@@ -0,0 +1 @@
+../../../ProtocolModules/M3UA_CNL113536/src/M3UA_Types.ttcn \ No newline at end of file
diff --git a/M3UA_CNL113537/demo/MTP3asp_EncDec.cc b/M3UA_CNL113537/demo/MTP3asp_EncDec.cc
new file mode 120000
index 0000000..88f1083
--- /dev/null
+++ b/M3UA_CNL113537/demo/MTP3asp_EncDec.cc
@@ -0,0 +1 @@
+../../../TestPorts/MTP3asp_CNL113337/src/MTP3asp_EncDec.cc \ No newline at end of file
diff --git a/M3UA_CNL113537/demo/MTP3asp_Types.ttcn b/M3UA_CNL113537/demo/MTP3asp_Types.ttcn
new file mode 120000
index 0000000..9f03c54
--- /dev/null
+++ b/M3UA_CNL113537/demo/MTP3asp_Types.ttcn
@@ -0,0 +1 @@
+../../../TestPorts/MTP3asp_CNL113337/src/MTP3asp_Types.ttcn \ No newline at end of file
diff --git a/M3UA_CNL113537/demo/Makefile b/M3UA_CNL113537/demo/Makefile
new file mode 100644
index 0000000..ffc0aeb
--- /dev/null
+++ b/M3UA_CNL113537/demo/Makefile
@@ -0,0 +1,920 @@
+# This Makefile was generated by the Makefile Generator
+# of the TTCN-3 Test Executor version 1.7.pre1 build 7
+# for Gabor Bettesch (ethgbh@mwux018) on Tue May 29 11:06:47 2007
+
+# Copyright 2000-2007 Test Competence Center, Ericsson R & D, Hungary
+# For trouble reporting use the tool MTTSMS.
+# For TR writers guide please visit the web page: http://ttcn.ericsson.se
+
+# 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 compile Translates TTCN-3 and ASN.1 modules to C++.
+# - make dep Creates/updates dependency list.
+# - make objects Builds the object files without linking the executable.
+# - make tags Creates/updates tags file using ctags.
+
+# 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 archive check clean dep objects
+
+#
+# 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:
+CXX = g++
+
+# Flags for the C++ preprocessor (and makedepend as well):
+CPPFLAGS = -D$(PLATFORM) -DTARGET_TEST -I$(TTCN3_DIR)/include -I$(SCTP_DIR)/include
+
+# Flags for the C++ compiler:
+CXXFLAGS = -Wall
+
+# Flags for the linker:
+LDFLAGS =
+
+# Flags for the TTCN-3 and ASN.1 compiler:
+COMPILER_FLAGS = -L
+
+# Execution mode: (either ttcn3 or ttcn3-parallel)
+TTCN3_LIB = ttcn3-parallel
+
+# The path of your OpenSSL installation:
+# If you do not have your own one, leave it unchanged.
+OPENSSL_DIR = $(TTCN3_DIR)
+
+# Directory to store the archived source files:
+ARCHIVE_DIR = backup
+
+SCTP_DIR = /usr/local/lksctp-tools-1.0.6
+#
+# You may change these variables. Add your files if necessary...
+#
+
+# TTCN-3 modules of this project:
+TTCN3_MODULES = General_Types.ttcn BICC_Types.ttcn M3UA_Emulation.ttcn M3UA_Emulation_Test.ttcn M3UA_Types.ttcn SCTPasp_PortType.ttcn SCTPasp_Types.ttcn MTP3asp_Types.ttcn
+#MTP3asp_PortType.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 = $(TTCN3_MODULES:.ttcn=.cc) $(ASN1_MODULES:.asn=.cc)
+GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh)
+
+# C/C++ Source & header files of Test Ports, external functions and
+# other modules:
+USER_SOURCES = Abstract_Socket.cc BICC_EncDec.cc SCTPasp_PT.cc MTP3asp_EncDec.cc
+USER_HEADERS = Abstract_Socket.hh SCTPasp_PT.hh
+#MTP3asp_PT.hh MTP3asp_PT.cc
+# Object files of this project that are needed for the executable test suite:
+OBJECTS = $(GENERATED_SOURCES:.cc=.o) $(USER_SOURCES:.cc=.o)
+
+# Other files of the project (Makefile, configuration files, etc.)
+# that will be added to the archived source files:
+OTHER_FILES = m3ua_emu.cfg Makefile
+
+# The name of the executable test suite:
+TARGET = M3UA_Emulation_Test
+
+#
+# Do not modify these unless you know what you are doing...
+# Platform specific additional libraries:
+#
+SOLARIS_LIBS = -lsocket -lnsl
+SOLARIS8_LIBS = -lsocket -lnsl
+LINUX_LIBS =
+FREEBSD_LIBS =
+WIN32_LIBS =
+
+#
+# Rules for building the executable...
+#
+
+all: $(TARGET) ;
+
+objects: $(OBJECTS) ;
+
+$(TARGET): $(OBJECTS)
+ $(CXX) $(LDFLAGS) -o $@ $^ \
+ -L$(TTCN3_DIR)/lib -L$(SCTP_DIR)/lib -l$(TTCN3_LIB) \
+ -L$(OPENSSL_DIR)/lib -lcrypto $($(PLATFORM)_LIBS)
+
+.cc.o .c.o:
+ $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $<
+
+$(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) $^
+
+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) $^
+
+tags: $(TTCN3_MODULES) $(ASN1_MODULES) \
+$(USER_HEADERS) $(USER_SOURCES)
+ $(TTCN3_DIR)/bin/ctags_ttcn3 --line-directives=yes $^
+
+clean:
+ -$(RM) $(TARGET) $(OBJECTS) $(GENERATED_HEADERS) \
+ $(GENERATED_SOURCES) compile \
+ browserdata.dat tags *.log
+
+dep: $(GENERATED_SOURCES) $(USER_SOURCES)
+ makedepend $(CPPFLAGS) $^
+
+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
+
+#
+# Add your rules here if necessary...
+#
+
+# DO NOT DELETE
+
+General_Types.o: General_Types.hh /usr/local/TTCNv3-1.7.pl0/include/TTCN3.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/version.h
+General_Types.o: /usr/include/string.h /usr/include/features.h
+General_Types.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
+General_Types.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-32.h
+General_Types.o: /usr/include/stdio.h /usr/include/bits/types.h
+General_Types.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+General_Types.o: /usr/include/_G_config.h /usr/include/wchar.h
+General_Types.o: /usr/include/bits/wchar.h /usr/include/gconv.h
+General_Types.o: /usr/include/bits/stdio_lim.h
+General_Types.o: /usr/include/bits/sys_errlist.h
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Basetype.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Types.h
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Encdec.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Template.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Integer.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Optional.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/BER.hh
+General_Types.o: /usr/include/stdlib.h /usr/include/sys/types.h
+General_Types.o: /usr/include/time.h /usr/include/endian.h
+General_Types.o: /usr/include/bits/endian.h /usr/include/sys/select.h
+General_Types.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
+General_Types.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
+General_Types.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Logger.hh
+General_Types.o: /usr/include/sys/time.h
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Textbuf.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Error.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Parameters.h
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Float.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Boolean.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Null.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Objid.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Verdicttype.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Component.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Bitstring.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/RAW.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Hexstring.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Octetstring.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Any.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Charstring.hh
+General_Types.o: /usr/include/regex.h
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Universal_charstring.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Struct_of.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Array.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_CharacterString.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_External.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_EmbeddedPDV.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Addfunc.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Timer.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Port.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Module_list.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Snapshot.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Default.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Runtime.hh
+General_Types.o: /usr/local/TTCNv3-1.7.pl0/include/TEXT.hh
+BICC_Types.o: BICC_Types.hh General_Types.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/TTCN3.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/version.h
+BICC_Types.o: /usr/include/string.h /usr/include/features.h
+BICC_Types.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
+BICC_Types.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-32.h
+BICC_Types.o: /usr/include/stdio.h /usr/include/bits/types.h
+BICC_Types.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+BICC_Types.o: /usr/include/_G_config.h /usr/include/wchar.h
+BICC_Types.o: /usr/include/bits/wchar.h /usr/include/gconv.h
+BICC_Types.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Basetype.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Types.h
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Encdec.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Template.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Integer.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Optional.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/BER.hh /usr/include/stdlib.h
+BICC_Types.o: /usr/include/sys/types.h /usr/include/time.h
+BICC_Types.o: /usr/include/endian.h /usr/include/bits/endian.h
+BICC_Types.o: /usr/include/sys/select.h /usr/include/bits/select.h
+BICC_Types.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
+BICC_Types.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h
+BICC_Types.o: /usr/include/alloca.h
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Logger.hh
+BICC_Types.o: /usr/include/sys/time.h
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Textbuf.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Error.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Parameters.h
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Float.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Boolean.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Null.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Objid.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Verdicttype.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Component.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Bitstring.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/RAW.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Hexstring.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Octetstring.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Any.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Charstring.hh
+BICC_Types.o: /usr/include/regex.h
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Universal_charstring.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Struct_of.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Array.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_CharacterString.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_External.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_EmbeddedPDV.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Addfunc.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Timer.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Port.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Module_list.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Snapshot.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Default.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Runtime.hh
+BICC_Types.o: /usr/local/TTCNv3-1.7.pl0/include/TEXT.hh
+M3UA_Emulation.o: M3UA_Emulation.hh M3UA_Types.hh General_Types.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/TTCN3.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/version.h
+M3UA_Emulation.o: /usr/include/string.h /usr/include/features.h
+M3UA_Emulation.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
+M3UA_Emulation.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-32.h
+M3UA_Emulation.o: /usr/include/stdio.h /usr/include/bits/types.h
+M3UA_Emulation.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+M3UA_Emulation.o: /usr/include/_G_config.h /usr/include/wchar.h
+M3UA_Emulation.o: /usr/include/bits/wchar.h /usr/include/gconv.h
+M3UA_Emulation.o: /usr/include/bits/stdio_lim.h
+M3UA_Emulation.o: /usr/include/bits/sys_errlist.h
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Basetype.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Types.h
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Encdec.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Template.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Integer.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Optional.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/BER.hh
+M3UA_Emulation.o: /usr/include/stdlib.h /usr/include/sys/types.h
+M3UA_Emulation.o: /usr/include/time.h /usr/include/endian.h
+M3UA_Emulation.o: /usr/include/bits/endian.h /usr/include/sys/select.h
+M3UA_Emulation.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
+M3UA_Emulation.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
+M3UA_Emulation.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Logger.hh
+M3UA_Emulation.o: /usr/include/sys/time.h
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Textbuf.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Error.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Parameters.h
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Float.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Boolean.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Null.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Objid.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Verdicttype.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Component.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Bitstring.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/RAW.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Hexstring.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Octetstring.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Any.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Charstring.hh
+M3UA_Emulation.o: /usr/include/regex.h
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Universal_charstring.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Struct_of.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Array.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_CharacterString.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_External.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_EmbeddedPDV.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Addfunc.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Timer.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Port.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Module_list.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Snapshot.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Default.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/Runtime.hh
+M3UA_Emulation.o: /usr/local/TTCNv3-1.7.pl0/include/TEXT.hh
+M3UA_Emulation.o: SCTPasp_PortType.hh SCTPasp_Types.hh SCTPasp_PT.hh
+M3UA_Emulation.o: /usr/include/sys/socket.h /usr/include/sys/uio.h
+M3UA_Emulation.o: /usr/include/bits/uio.h /usr/include/bits/socket.h
+M3UA_Emulation.o: /usr/include/limits.h /usr/include/bits/posix1_lim.h
+M3UA_Emulation.o: /usr/include/bits/local_lim.h /usr/include/linux/limits.h
+M3UA_Emulation.o: /usr/include/bits/posix2_lim.h /usr/include/bits/sockaddr.h
+M3UA_Emulation.o: /usr/include/asm/socket.h /usr/include/asm/sockios.h
+M3UA_Emulation.o: /usr/include/netinet/in.h /usr/include/stdint.h
+M3UA_Emulation.o: /usr/include/bits/in.h /usr/include/bits/byteswap.h
+M3UA_Emulation.o: /usr/local/lksctp-tools-1.0.6/include/netinet/sctp.h
+M3UA_Emulation.o: /usr/include/linux/types.h /usr/include/linux/posix_types.h
+M3UA_Emulation.o: /usr/include/linux/stddef.h /usr/include/linux/compiler.h
+M3UA_Emulation.o: /usr/include/asm/posix_types.h /usr/include/asm/types.h
+M3UA_Emulation.o: MTP3asp_Types.hh
+M3UA_Emulation_Test.o: M3UA_Emulation_Test.hh BICC_Types.hh General_Types.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/TTCN3.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/version.h
+M3UA_Emulation_Test.o: /usr/include/string.h /usr/include/features.h
+M3UA_Emulation_Test.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
+M3UA_Emulation_Test.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-32.h
+M3UA_Emulation_Test.o: /usr/include/stdio.h /usr/include/bits/types.h
+M3UA_Emulation_Test.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+M3UA_Emulation_Test.o: /usr/include/_G_config.h /usr/include/wchar.h
+M3UA_Emulation_Test.o: /usr/include/bits/wchar.h /usr/include/gconv.h
+M3UA_Emulation_Test.o: /usr/include/bits/stdio_lim.h
+M3UA_Emulation_Test.o: /usr/include/bits/sys_errlist.h
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Basetype.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Types.h
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Encdec.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Template.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Integer.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Optional.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/BER.hh
+M3UA_Emulation_Test.o: /usr/include/stdlib.h /usr/include/sys/types.h
+M3UA_Emulation_Test.o: /usr/include/time.h /usr/include/endian.h
+M3UA_Emulation_Test.o: /usr/include/bits/endian.h /usr/include/sys/select.h
+M3UA_Emulation_Test.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
+M3UA_Emulation_Test.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
+M3UA_Emulation_Test.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Logger.hh
+M3UA_Emulation_Test.o: /usr/include/sys/time.h
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Textbuf.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Error.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Parameters.h
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Float.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Boolean.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Null.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Objid.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Verdicttype.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Component.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Bitstring.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/RAW.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Hexstring.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Octetstring.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Any.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Charstring.hh
+M3UA_Emulation_Test.o: /usr/include/regex.h
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Universal_charstring.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Struct_of.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Array.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_CharacterString.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_External.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_EmbeddedPDV.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Addfunc.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Timer.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Port.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Module_list.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Snapshot.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Default.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/Runtime.hh
+M3UA_Emulation_Test.o: /usr/local/TTCNv3-1.7.pl0/include/TEXT.hh
+M3UA_Emulation_Test.o: M3UA_Emulation.hh M3UA_Types.hh SCTPasp_PortType.hh
+M3UA_Emulation_Test.o: SCTPasp_Types.hh SCTPasp_PT.hh
+M3UA_Emulation_Test.o: /usr/include/sys/socket.h /usr/include/sys/uio.h
+M3UA_Emulation_Test.o: /usr/include/bits/uio.h /usr/include/bits/socket.h
+M3UA_Emulation_Test.o: /usr/include/limits.h /usr/include/bits/posix1_lim.h
+M3UA_Emulation_Test.o: /usr/include/bits/local_lim.h
+M3UA_Emulation_Test.o: /usr/include/linux/limits.h
+M3UA_Emulation_Test.o: /usr/include/bits/posix2_lim.h
+M3UA_Emulation_Test.o: /usr/include/bits/sockaddr.h /usr/include/asm/socket.h
+M3UA_Emulation_Test.o: /usr/include/asm/sockios.h /usr/include/netinet/in.h
+M3UA_Emulation_Test.o: /usr/include/stdint.h /usr/include/bits/in.h
+M3UA_Emulation_Test.o: /usr/include/bits/byteswap.h
+M3UA_Emulation_Test.o: /usr/local/lksctp-tools-1.0.6/include/netinet/sctp.h
+M3UA_Emulation_Test.o: /usr/include/linux/types.h
+M3UA_Emulation_Test.o: /usr/include/linux/posix_types.h
+M3UA_Emulation_Test.o: /usr/include/linux/stddef.h
+M3UA_Emulation_Test.o: /usr/include/linux/compiler.h
+M3UA_Emulation_Test.o: /usr/include/asm/posix_types.h
+M3UA_Emulation_Test.o: /usr/include/asm/types.h MTP3asp_Types.hh
+M3UA_Types.o: M3UA_Types.hh General_Types.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/TTCN3.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/version.h
+M3UA_Types.o: /usr/include/string.h /usr/include/features.h
+M3UA_Types.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
+M3UA_Types.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-32.h
+M3UA_Types.o: /usr/include/stdio.h /usr/include/bits/types.h
+M3UA_Types.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+M3UA_Types.o: /usr/include/_G_config.h /usr/include/wchar.h
+M3UA_Types.o: /usr/include/bits/wchar.h /usr/include/gconv.h
+M3UA_Types.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Basetype.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Types.h
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Encdec.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Template.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Integer.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Optional.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/BER.hh /usr/include/stdlib.h
+M3UA_Types.o: /usr/include/sys/types.h /usr/include/time.h
+M3UA_Types.o: /usr/include/endian.h /usr/include/bits/endian.h
+M3UA_Types.o: /usr/include/sys/select.h /usr/include/bits/select.h
+M3UA_Types.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
+M3UA_Types.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h
+M3UA_Types.o: /usr/include/alloca.h
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Logger.hh
+M3UA_Types.o: /usr/include/sys/time.h
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Textbuf.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Error.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Parameters.h
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Float.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Boolean.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Null.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Objid.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Verdicttype.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Component.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Bitstring.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/RAW.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Hexstring.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Octetstring.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Any.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Charstring.hh
+M3UA_Types.o: /usr/include/regex.h
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Universal_charstring.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Struct_of.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Array.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_CharacterString.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_External.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_EmbeddedPDV.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Addfunc.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Timer.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Port.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Module_list.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Snapshot.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Default.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Runtime.hh
+M3UA_Types.o: /usr/local/TTCNv3-1.7.pl0/include/TEXT.hh
+SCTPasp_PortType.o: SCTPasp_PortType.hh SCTPasp_Types.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/TTCN3.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/version.h
+SCTPasp_PortType.o: /usr/include/string.h /usr/include/features.h
+SCTPasp_PortType.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
+SCTPasp_PortType.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-32.h
+SCTPasp_PortType.o: /usr/include/stdio.h /usr/include/bits/types.h
+SCTPasp_PortType.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+SCTPasp_PortType.o: /usr/include/_G_config.h /usr/include/wchar.h
+SCTPasp_PortType.o: /usr/include/bits/wchar.h /usr/include/gconv.h
+SCTPasp_PortType.o: /usr/include/bits/stdio_lim.h
+SCTPasp_PortType.o: /usr/include/bits/sys_errlist.h
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Basetype.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Types.h
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Encdec.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Template.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Integer.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Optional.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/BER.hh
+SCTPasp_PortType.o: /usr/include/stdlib.h /usr/include/sys/types.h
+SCTPasp_PortType.o: /usr/include/time.h /usr/include/endian.h
+SCTPasp_PortType.o: /usr/include/bits/endian.h /usr/include/sys/select.h
+SCTPasp_PortType.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
+SCTPasp_PortType.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
+SCTPasp_PortType.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Logger.hh
+SCTPasp_PortType.o: /usr/include/sys/time.h
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Textbuf.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Error.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Parameters.h
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Float.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Boolean.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Null.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Objid.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Verdicttype.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Component.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Bitstring.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/RAW.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Hexstring.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Octetstring.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Any.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Charstring.hh
+SCTPasp_PortType.o: /usr/include/regex.h
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Universal_charstring.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Struct_of.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Array.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_CharacterString.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_External.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_EmbeddedPDV.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Addfunc.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Timer.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Port.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Module_list.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Snapshot.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Default.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/Runtime.hh
+SCTPasp_PortType.o: /usr/local/TTCNv3-1.7.pl0/include/TEXT.hh SCTPasp_PT.hh
+SCTPasp_PortType.o: /usr/include/sys/socket.h /usr/include/sys/uio.h
+SCTPasp_PortType.o: /usr/include/bits/uio.h /usr/include/bits/socket.h
+SCTPasp_PortType.o: /usr/include/limits.h /usr/include/bits/posix1_lim.h
+SCTPasp_PortType.o: /usr/include/bits/local_lim.h /usr/include/linux/limits.h
+SCTPasp_PortType.o: /usr/include/bits/posix2_lim.h
+SCTPasp_PortType.o: /usr/include/bits/sockaddr.h /usr/include/asm/socket.h
+SCTPasp_PortType.o: /usr/include/asm/sockios.h /usr/include/netinet/in.h
+SCTPasp_PortType.o: /usr/include/stdint.h /usr/include/bits/in.h
+SCTPasp_PortType.o: /usr/include/bits/byteswap.h
+SCTPasp_PortType.o: /usr/local/lksctp-tools-1.0.6/include/netinet/sctp.h
+SCTPasp_PortType.o: /usr/include/linux/types.h
+SCTPasp_PortType.o: /usr/include/linux/posix_types.h
+SCTPasp_PortType.o: /usr/include/linux/stddef.h /usr/include/linux/compiler.h
+SCTPasp_PortType.o: /usr/include/asm/posix_types.h /usr/include/asm/types.h
+SCTPasp_Types.o: SCTPasp_Types.hh /usr/local/TTCNv3-1.7.pl0/include/TTCN3.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/version.h
+SCTPasp_Types.o: /usr/include/string.h /usr/include/features.h
+SCTPasp_Types.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
+SCTPasp_Types.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-32.h
+SCTPasp_Types.o: /usr/include/stdio.h /usr/include/bits/types.h
+SCTPasp_Types.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+SCTPasp_Types.o: /usr/include/_G_config.h /usr/include/wchar.h
+SCTPasp_Types.o: /usr/include/bits/wchar.h /usr/include/gconv.h
+SCTPasp_Types.o: /usr/include/bits/stdio_lim.h
+SCTPasp_Types.o: /usr/include/bits/sys_errlist.h
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Basetype.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Types.h
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Encdec.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Template.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Integer.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Optional.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/BER.hh
+SCTPasp_Types.o: /usr/include/stdlib.h /usr/include/sys/types.h
+SCTPasp_Types.o: /usr/include/time.h /usr/include/endian.h
+SCTPasp_Types.o: /usr/include/bits/endian.h /usr/include/sys/select.h
+SCTPasp_Types.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
+SCTPasp_Types.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
+SCTPasp_Types.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Logger.hh
+SCTPasp_Types.o: /usr/include/sys/time.h
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Textbuf.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Error.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Parameters.h
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Float.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Boolean.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Null.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Objid.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Verdicttype.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Component.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Bitstring.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/RAW.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Hexstring.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Octetstring.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Any.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Charstring.hh
+SCTPasp_Types.o: /usr/include/regex.h
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Universal_charstring.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Struct_of.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Array.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_CharacterString.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_External.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_EmbeddedPDV.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Addfunc.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Timer.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Port.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Module_list.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Snapshot.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Default.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Runtime.hh
+SCTPasp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/TEXT.hh
+MTP3asp_Types.o: MTP3asp_Types.hh /usr/local/TTCNv3-1.7.pl0/include/TTCN3.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/version.h
+MTP3asp_Types.o: /usr/include/string.h /usr/include/features.h
+MTP3asp_Types.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
+MTP3asp_Types.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-32.h
+MTP3asp_Types.o: /usr/include/stdio.h /usr/include/bits/types.h
+MTP3asp_Types.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+MTP3asp_Types.o: /usr/include/_G_config.h /usr/include/wchar.h
+MTP3asp_Types.o: /usr/include/bits/wchar.h /usr/include/gconv.h
+MTP3asp_Types.o: /usr/include/bits/stdio_lim.h
+MTP3asp_Types.o: /usr/include/bits/sys_errlist.h
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Basetype.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Types.h
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Encdec.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Template.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Integer.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Optional.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/BER.hh
+MTP3asp_Types.o: /usr/include/stdlib.h /usr/include/sys/types.h
+MTP3asp_Types.o: /usr/include/time.h /usr/include/endian.h
+MTP3asp_Types.o: /usr/include/bits/endian.h /usr/include/sys/select.h
+MTP3asp_Types.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
+MTP3asp_Types.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
+MTP3asp_Types.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Logger.hh
+MTP3asp_Types.o: /usr/include/sys/time.h
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Textbuf.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Error.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Parameters.h
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Float.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Boolean.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Null.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Objid.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Verdicttype.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Component.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Bitstring.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/RAW.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Hexstring.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Octetstring.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Any.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Charstring.hh
+MTP3asp_Types.o: /usr/include/regex.h
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Universal_charstring.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Struct_of.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Array.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_CharacterString.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_External.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_EmbeddedPDV.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Addfunc.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Timer.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Port.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Module_list.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Snapshot.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Default.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/Runtime.hh
+MTP3asp_Types.o: /usr/local/TTCNv3-1.7.pl0/include/TEXT.hh
+Abstract_Socket.o: Abstract_Socket.hh /usr/include/sys/socket.h
+Abstract_Socket.o: /usr/include/features.h /usr/include/sys/cdefs.h
+Abstract_Socket.o: /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h
+Abstract_Socket.o: /usr/include/gnu/stubs-32.h /usr/include/sys/uio.h
+Abstract_Socket.o: /usr/include/sys/types.h /usr/include/bits/types.h
+Abstract_Socket.o: /usr/include/bits/typesizes.h /usr/include/time.h
+Abstract_Socket.o: /usr/include/endian.h /usr/include/bits/endian.h
+Abstract_Socket.o: /usr/include/sys/select.h /usr/include/bits/select.h
+Abstract_Socket.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
+Abstract_Socket.o: /usr/include/sys/sysmacros.h
+Abstract_Socket.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/uio.h
+Abstract_Socket.o: /usr/include/bits/socket.h /usr/include/limits.h
+Abstract_Socket.o: /usr/include/bits/posix1_lim.h
+Abstract_Socket.o: /usr/include/bits/local_lim.h /usr/include/linux/limits.h
+Abstract_Socket.o: /usr/include/bits/posix2_lim.h
+Abstract_Socket.o: /usr/include/bits/sockaddr.h /usr/include/asm/socket.h
+Abstract_Socket.o: /usr/include/asm/sockios.h /usr/include/netinet/in.h
+Abstract_Socket.o: /usr/include/stdint.h /usr/include/bits/wchar.h
+Abstract_Socket.o: /usr/include/bits/in.h /usr/include/bits/byteswap.h
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/TTCN3.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/version.h
+Abstract_Socket.o: /usr/include/string.h /usr/include/stdio.h
+Abstract_Socket.o: /usr/include/libio.h /usr/include/_G_config.h
+Abstract_Socket.o: /usr/include/wchar.h /usr/include/gconv.h
+Abstract_Socket.o: /usr/include/bits/stdio_lim.h
+Abstract_Socket.o: /usr/include/bits/sys_errlist.h
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Basetype.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Types.h
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Encdec.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Template.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Integer.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Optional.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/BER.hh
+Abstract_Socket.o: /usr/include/stdlib.h /usr/include/alloca.h
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Logger.hh
+Abstract_Socket.o: /usr/include/sys/time.h
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Textbuf.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Error.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Parameters.h
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Float.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Boolean.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Null.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Objid.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Verdicttype.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Component.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Bitstring.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/RAW.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Hexstring.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Octetstring.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Any.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Charstring.hh
+Abstract_Socket.o: /usr/include/regex.h
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Universal_charstring.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Struct_of.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Array.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_CharacterString.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_External.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_EmbeddedPDV.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Addfunc.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Timer.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Port.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Module_list.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Snapshot.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Default.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/Runtime.hh
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/TEXT.hh
+Abstract_Socket.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h
+Abstract_Socket.o: /usr/include/bits/confname.h /usr/include/getopt.h
+Abstract_Socket.o: /usr/include/strings.h /usr/include/errno.h
+Abstract_Socket.o: /usr/include/bits/errno.h /usr/include/linux/errno.h
+Abstract_Socket.o: /usr/include/asm/errno.h /usr/include/asm-generic/errno.h
+Abstract_Socket.o: /usr/include/asm-generic/errno-base.h /usr/include/netdb.h
+Abstract_Socket.o: /usr/include/rpc/netdb.h /usr/include/bits/netdb.h
+Abstract_Socket.o: /usr/include/sys/stat.h /usr/include/bits/stat.h
+Abstract_Socket.o: /usr/include/netinet/tcp.h /usr/include/arpa/inet.h
+Abstract_Socket.o: /usr/include/fcntl.h /usr/include/bits/fcntl.h
+Abstract_Socket.o: /usr/local/TTCNv3-1.7.pl0/include/memory.h
+BICC_EncDec.o: BICC_Types.hh General_Types.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/TTCN3.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/version.h
+BICC_EncDec.o: /usr/include/string.h /usr/include/features.h
+BICC_EncDec.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
+BICC_EncDec.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-32.h
+BICC_EncDec.o: /usr/include/stdio.h /usr/include/bits/types.h
+BICC_EncDec.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+BICC_EncDec.o: /usr/include/_G_config.h /usr/include/wchar.h
+BICC_EncDec.o: /usr/include/bits/wchar.h /usr/include/gconv.h
+BICC_EncDec.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Basetype.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Types.h
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Encdec.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Template.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Integer.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Optional.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/BER.hh /usr/include/stdlib.h
+BICC_EncDec.o: /usr/include/sys/types.h /usr/include/time.h
+BICC_EncDec.o: /usr/include/endian.h /usr/include/bits/endian.h
+BICC_EncDec.o: /usr/include/sys/select.h /usr/include/bits/select.h
+BICC_EncDec.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
+BICC_EncDec.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h
+BICC_EncDec.o: /usr/include/alloca.h
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Logger.hh
+BICC_EncDec.o: /usr/include/sys/time.h
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Textbuf.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Error.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Parameters.h
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Float.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Boolean.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Null.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Objid.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Verdicttype.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Component.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Bitstring.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/RAW.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Hexstring.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Octetstring.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Any.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Charstring.hh
+BICC_EncDec.o: /usr/include/regex.h
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Universal_charstring.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Struct_of.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Array.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_CharacterString.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_External.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_EmbeddedPDV.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Addfunc.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Timer.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Port.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Module_list.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Snapshot.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Default.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Runtime.hh
+BICC_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/TEXT.hh
+SCTPasp_PT.o: SCTPasp_PT.hh SCTPasp_PortType.hh SCTPasp_Types.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/TTCN3.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/version.h
+SCTPasp_PT.o: /usr/include/string.h /usr/include/features.h
+SCTPasp_PT.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
+SCTPasp_PT.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-32.h
+SCTPasp_PT.o: /usr/include/stdio.h /usr/include/bits/types.h
+SCTPasp_PT.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+SCTPasp_PT.o: /usr/include/_G_config.h /usr/include/wchar.h
+SCTPasp_PT.o: /usr/include/bits/wchar.h /usr/include/gconv.h
+SCTPasp_PT.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Basetype.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Types.h
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Encdec.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Template.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Integer.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Optional.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/BER.hh /usr/include/stdlib.h
+SCTPasp_PT.o: /usr/include/sys/types.h /usr/include/time.h
+SCTPasp_PT.o: /usr/include/endian.h /usr/include/bits/endian.h
+SCTPasp_PT.o: /usr/include/sys/select.h /usr/include/bits/select.h
+SCTPasp_PT.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
+SCTPasp_PT.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h
+SCTPasp_PT.o: /usr/include/alloca.h
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Logger.hh
+SCTPasp_PT.o: /usr/include/sys/time.h
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Textbuf.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Error.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Parameters.h
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Float.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Boolean.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Null.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Objid.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Verdicttype.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Component.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Bitstring.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/RAW.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Hexstring.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Octetstring.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Any.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Charstring.hh
+SCTPasp_PT.o: /usr/include/regex.h
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Universal_charstring.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Struct_of.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Array.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_CharacterString.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_External.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_EmbeddedPDV.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Addfunc.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Timer.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Port.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Module_list.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Snapshot.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Default.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/Runtime.hh
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/TEXT.hh
+SCTPasp_PT.o: /usr/include/sys/socket.h /usr/include/sys/uio.h
+SCTPasp_PT.o: /usr/include/bits/uio.h /usr/include/bits/socket.h
+SCTPasp_PT.o: /usr/include/limits.h /usr/include/bits/posix1_lim.h
+SCTPasp_PT.o: /usr/include/bits/local_lim.h /usr/include/linux/limits.h
+SCTPasp_PT.o: /usr/include/bits/posix2_lim.h /usr/include/bits/sockaddr.h
+SCTPasp_PT.o: /usr/include/asm/socket.h /usr/include/asm/sockios.h
+SCTPasp_PT.o: /usr/include/netinet/in.h /usr/include/stdint.h
+SCTPasp_PT.o: /usr/include/bits/in.h /usr/include/bits/byteswap.h
+SCTPasp_PT.o: /usr/local/lksctp-tools-1.0.6/include/netinet/sctp.h
+SCTPasp_PT.o: /usr/include/linux/types.h /usr/include/linux/posix_types.h
+SCTPasp_PT.o: /usr/include/linux/stddef.h /usr/include/linux/compiler.h
+SCTPasp_PT.o: /usr/include/asm/posix_types.h /usr/include/asm/types.h
+SCTPasp_PT.o: /usr/include/arpa/inet.h /usr/include/unistd.h
+SCTPasp_PT.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
+SCTPasp_PT.o: /usr/include/getopt.h /usr/include/netdb.h
+SCTPasp_PT.o: /usr/include/rpc/netdb.h /usr/include/bits/netdb.h
+SCTPasp_PT.o: /usr/local/TTCNv3-1.7.pl0/include/memory.h /usr/include/fcntl.h
+SCTPasp_PT.o: /usr/include/bits/fcntl.h /usr/include/errno.h
+SCTPasp_PT.o: /usr/include/bits/errno.h /usr/include/linux/errno.h
+SCTPasp_PT.o: /usr/include/asm/errno.h /usr/include/asm-generic/errno.h
+SCTPasp_PT.o: /usr/include/asm-generic/errno-base.h
+MTP3asp_EncDec.o: MTP3asp_Types.hh /usr/local/TTCNv3-1.7.pl0/include/TTCN3.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/version.h
+MTP3asp_EncDec.o: /usr/include/string.h /usr/include/features.h
+MTP3asp_EncDec.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
+MTP3asp_EncDec.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-32.h
+MTP3asp_EncDec.o: /usr/include/stdio.h /usr/include/bits/types.h
+MTP3asp_EncDec.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+MTP3asp_EncDec.o: /usr/include/_G_config.h /usr/include/wchar.h
+MTP3asp_EncDec.o: /usr/include/bits/wchar.h /usr/include/gconv.h
+MTP3asp_EncDec.o: /usr/include/bits/stdio_lim.h
+MTP3asp_EncDec.o: /usr/include/bits/sys_errlist.h
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Basetype.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Types.h
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Encdec.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Template.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Integer.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Optional.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/BER.hh
+MTP3asp_EncDec.o: /usr/include/stdlib.h /usr/include/sys/types.h
+MTP3asp_EncDec.o: /usr/include/time.h /usr/include/endian.h
+MTP3asp_EncDec.o: /usr/include/bits/endian.h /usr/include/sys/select.h
+MTP3asp_EncDec.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
+MTP3asp_EncDec.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
+MTP3asp_EncDec.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Logger.hh
+MTP3asp_EncDec.o: /usr/include/sys/time.h
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Textbuf.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Error.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Parameters.h
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Float.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Boolean.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Null.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Objid.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Verdicttype.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Component.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Bitstring.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/RAW.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Hexstring.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Octetstring.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_Any.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Charstring.hh
+MTP3asp_EncDec.o: /usr/include/regex.h
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Universal_charstring.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Struct_of.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Array.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_CharacterString.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_External.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/ASN_EmbeddedPDV.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Addfunc.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Timer.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Port.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Module_list.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Snapshot.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Default.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/Runtime.hh
+MTP3asp_EncDec.o: /usr/local/TTCNv3-1.7.pl0/include/TEXT.hh
diff --git a/M3UA_CNL113537/demo/SCTPasp_PT.cc b/M3UA_CNL113537/demo/SCTPasp_PT.cc
new file mode 120000
index 0000000..2b931e9
--- /dev/null
+++ b/M3UA_CNL113537/demo/SCTPasp_PT.cc
@@ -0,0 +1 @@
+../../../TestPorts/SCTPasp_CNL113469/src/SCTPasp_PT.cc \ No newline at end of file
diff --git a/M3UA_CNL113537/demo/SCTPasp_PT.hh b/M3UA_CNL113537/demo/SCTPasp_PT.hh
new file mode 120000
index 0000000..e37473f
--- /dev/null
+++ b/M3UA_CNL113537/demo/SCTPasp_PT.hh
@@ -0,0 +1 @@
+../../../TestPorts/SCTPasp_CNL113469/src/SCTPasp_PT.hh \ No newline at end of file
diff --git a/M3UA_CNL113537/demo/SCTPasp_PortType.ttcn b/M3UA_CNL113537/demo/SCTPasp_PortType.ttcn
new file mode 120000
index 0000000..4394e34
--- /dev/null
+++ b/M3UA_CNL113537/demo/SCTPasp_PortType.ttcn
@@ -0,0 +1 @@
+../../../TestPorts/SCTPasp_CNL113469/src/SCTPasp_PortType.ttcn \ No newline at end of file
diff --git a/M3UA_CNL113537/demo/SCTPasp_Types.ttcn b/M3UA_CNL113537/demo/SCTPasp_Types.ttcn
new file mode 120000
index 0000000..71876a0
--- /dev/null
+++ b/M3UA_CNL113537/demo/SCTPasp_Types.ttcn
@@ -0,0 +1 @@
+../../../TestPorts/SCTPasp_CNL113469/src/SCTPasp_Types.ttcn \ No newline at end of file
diff --git a/M3UA_CNL113537/demo/m3ua_emu.cfg b/M3UA_CNL113537/demo/m3ua_emu.cfg
new file mode 100644
index 0000000..9533515
--- /dev/null
+++ b/M3UA_CNL113537/demo/m3ua_emu.cfg
@@ -0,0 +1,21 @@
+[LOGGING]
+LogSourceInfo := Yes
+FileMask := LOG_ALL | TTCN_DEBUG | TTCN_MATCHING
+ConsoleMask := LOG_ALL | TTCN_DEBUG | TTCN_MATCHING
+
+[EXECUTE]
+M3UA_Emulation_Test.tc_M3UA_demo_bicc
+
+[TESTPORT_PARAMETERS]
+system.SCTP_PORT.debug := "yes"
+
+[MODULE_PARAMETERS]
+M3UA_Emulation.tsp_logVerbose := true;
+M3UA_Emulation.tsp_M3UA_Server_Mode := false;
+M3UA_Emulation_Test.tsp_address :=
+{
+ local_sctp_port := 2905,
+ local_ip_addr := "10.6.70.19",
+ remote_sctp_port := 2905,
+ remote_ip_addr := "159.107.193.33"
+}
diff --git a/M3UA_CNL113537/src/M3UA_Emulation.ttcn b/M3UA_CNL113537/src/M3UA_Emulation.ttcn
new file mode 100644
index 0000000..7a4a7e9
--- /dev/null
+++ b/M3UA_CNL113537/src/M3UA_Emulation.ttcn
@@ -0,0 +1,1307 @@
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Copyright Test Competence Center (TCC) ETH 2009 //
+// //
+// The copyright to the computer program(s) herein is the property of TCC. //
+// The program(s) may be used and/or copied only with the written permission //
+// of TCC or in accordance with the terms and conditions stipulated in the //
+// agreement/contract under which the program(s) have been supplied //
+// //
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: M3UA_Emulation.ttcn
+// Reference: M3UA Protocol Emulation
+// Rev: R1B01
+// Prodnr: CNL 113 537
+// Updated: 2009-01-06
+// Contact: http://ttcn.ericsson.se
+
+module M3UA_Emulation
+{
+
+modulepar
+{
+ boolean tsp_logVerbose := false;
+ float tsp_Timer := 2.0; // General timer used in M3UA emulation.
+ float tsp_ASPUP_Resend_Timer := 2.0;
+ float tsp_ASPAC_Resend_Timer := 2.0;
+ float tsp_Assoc_Restart_Timer := 60.0;
+ float tsp_Heartbeat_Timer := 30.0;
+ integer tsp_SCTP_PayloadProtocolID := 3; // 3 for M3UA.
+ boolean tsp_Enable_M3UA_Heartbeat := false; // Send SCTP packets periodically.
+ boolean tsp_SCTP_Server_Mode := false;
+ boolean tsp_M3UA_Server_Mode := false;
+}
+
+import from General_Types all;
+import from M3UA_Types all;
+import from SCTPasp_Types all;
+import from SCTPasp_PortType all;
+import from MTP3asp_Types all;
+
+type record of ASP_MTP3_TRANSFERreq TRANSFERreq_Buffer;
+
+type record SCTP_Association_Address
+{
+ integer local_sctp_port,
+ charstring local_ip_addr,
+ integer remote_sctp_port,
+ charstring remote_ip_addr
+}
+
+// Definition of M3UA_Entity which contains M3UA entity data.
+type record M3UA_Entity
+{
+ M3UA_CommStatus commStatus optional,
+ integer sCTP_Assoc_ID optional,
+ SCTP_Association_Address assoc
+}
+
+// Type for status of SCTP communication for an M3UA entity.
+type enumerated M3UA_CommStatus
+{
+ aSP_Down_initial_State (0),
+ aSP_Down_sCTP_Initialize_Done (1),
+ aSP_Down_sCTP_Associate_done (2),
+ aSP_Down_commUP_Received (3),
+ aSP_Down_ASPUP_Sent (4),
+ aSP_Inactive (5),
+ aSP_Inact_ASPAC_Sent (6),
+ aSP_Active (7) // aSPAC_Ack_Received
+}
+
+// We need an internal port to communicate with the MTP3 side.
+// internal in name
+type port MTP3asp_SP_PT_Int message
+{
+ in ASP_MTP3_TRANSFERreq;
+ out ASP_MTP3_TRANSFERind;
+ // out ASP_MTP3_PAUSE;
+ // out ASP_MTP3_RESUME;
+ // out ASP_MTP3_STATUS;
+} with {
+ extension "internal"
+}
+
+// M3UA emulation component.
+type component M3UA_CT
+{
+ var M3UA_Entity v_Entity;
+ var TRANSFERreq_Buffer v_TRANSFERreq_Buffer := {};
+
+ var ASP_SCTP v_ASP_SCTP;
+ var ASP_SCTP_SEND_FAILED v_ASP_SCTP_SEND_FAILED;
+ var ASP_SCTP_RESULT v_ASP_SCTP_RESULT;
+ var ASP_SCTP_Connected v_ASP_SCTP_Connected;
+ var ASP_SCTP_ASSOC_CHANGE v_ASP_SCTP_ASSOC_CHANGE;
+ var ASP_SCTP_SHUTDOWN_EVENT v_ASP_SCTP_SHUTDOWN_EVENT;
+
+ var PDU_M3UA v_PDU_M3UA;
+
+ // Component timers.
+ timer T_Timer := tsp_Timer;
+ timer T_ASPUP_resend := tsp_ASPUP_Resend_Timer;
+ timer T_ASPAC_resend := tsp_ASPAC_Resend_Timer;
+ timer T_Heartbeat := tsp_Heartbeat_Timer;
+ timer T_Assoc_restart := tsp_Assoc_Restart_Timer;
+
+ // Port declarations.
+ port MTP3asp_SP_PT_Int MTP3_SP_PORT; // Port towards MTP3/M3UA.
+ port SCTPasp_PT SCTP_PORT; // Port towards target through SCTP.
+}
+
+//********************************
+// Start of SCTP related templates
+//********************************
+template ASP_SCTP t_S_SCTP_Send
+ (in template integer pl_associationID,
+ in template integer pl_streamID,
+ in template octetstring pl_userData,
+ in template integer pl_protocolID) :=
+{
+ client_id := pl_associationID,
+ sinfo_stream := pl_streamID,
+ sinfo_ppid := pl_protocolID,
+ data := pl_userData
+}
+
+template ASP_SCTP_SEND_FAILED t_ASP_SCTP_SEND_FAILED
+ (in template integer pl_streamID) :=
+{
+ client_id := pl_streamID
+}
+
+template ASP_SCTP_Listen t_ASP_SCTP_Listen
+ (template charstring pl_local_hostname,
+ template integer pl_local_portnumber) :=
+{
+ local_hostname := pl_local_hostname,
+ local_portnumber := pl_local_portnumber
+}
+
+template ASP_SCTP_Connected tr_ASP_SCTP_Connected
+ (template integer pl_client_id,
+ template charstring pl_local_hostname,
+ template integer pl_local_portnumber,
+ template charstring pl_peer_hostname,
+ template integer pl_peer_portnumber) :=
+{
+ client_id := pl_client_id,
+ local_hostname := pl_local_hostname,
+ local_portnumber := pl_local_portnumber,
+ peer_hostname := pl_peer_hostname,
+ peer_portnumber := pl_peer_portnumber
+}
+
+template ASP_SCTP_ConnectFrom t_ASP_SCTP_ConnectFrom
+ (template charstring pl_local_hostname,
+ template integer pl_local_portnumber,
+ template charstring pl_peer_hostname,
+ template integer pl_peer_portnumber) :=
+{
+ local_hostname := pl_local_hostname,
+ local_portnumber := pl_local_portnumber,
+ peer_hostname := pl_peer_hostname,
+ peer_portnumber := pl_peer_portnumber
+}
+
+template ASP_SCTP_RESULT t_ASP_SCTP_RESULT
+ (template integer pl_client_id,
+ template boolean pl_error_status,
+ template charstring pl_error_message) :=
+{
+ client_id := pl_client_id,
+ error_status := pl_error_status,
+ error_message := pl_error_message
+}
+
+template ASP_SCTP_ASSOC_CHANGE tr_S_SCTP_CommunicationUp
+ (in template integer pl_associationID) :=
+{
+ client_id := pl_associationID,
+ sac_state := SCTP_COMM_UP
+}
+
+template ASP_SCTP_ASSOC_CHANGE tr_S_SCTP_CommunicationLost
+ (in template integer pl_associationID) :=
+{
+ client_id := pl_associationID,
+ sac_state := SCTP_COMM_LOST
+}
+
+template ASP_SCTP_ASSOC_CHANGE tr_S_SCTP_ShutdownComplete
+ (in template integer pl_associationID) :=
+{
+ client_id := pl_associationID,
+ sac_state := SCTP_SHUTDOWN_COMP
+}
+
+template ASP_SCTP_SHUTDOWN_EVENT tr_S_SCTP_ShutdownEvent
+ (in template integer pl_associationID) :=
+{
+ client_id := pl_associationID
+}
+
+template ASP_SCTP_ASSOC_CHANGE tr_S_SCTP_Restart
+ (in template integer pl_associationID) :=
+{
+ client_id := pl_associationID,
+ sac_state := SCTP_RESTART
+}
+
+template ASP_SCTP_ASSOC_CHANGE tr_S_SCTP_CANT_STR_ASSOC
+ (in template integer pl_associationID) :=
+{
+ client_id := pl_associationID,
+ sac_state := SCTP_CANT_STR_ASSOC
+}
+
+template ASP_SCTP tr_S_SCTP_DataArrive
+ (in template integer pl_associationID,
+ in template integer pl_streamID,
+ in template integer pl_protocolID,
+ in template PDU_SCTP pl_data) :=
+{
+ client_id := pl_associationID,
+ sinfo_stream := pl_streamID,
+ sinfo_ppid := pl_protocolID,
+ data := pl_data
+}
+
+template ASP_SCTP_Close t_ASP_SCTP_Close
+ (in template integer pl_associationID) :=
+{
+ client_id := pl_associationID
+}
+//******************************
+// End of SCTP related templates
+//******************************
+
+//*****************************
+// Start of M3UA PDU templates.
+//*****************************
+template PDU_M3UA t_PDU_M3UA_ASPUP
+ (in template M3UA_ASP_Identifier pl_aSP_Identifier,
+ in template M3UA_Info_String pl_info_String) :=
+{
+ m3UA_ASPUP := {
+ version := '01'O,
+ reserved := '00'O,
+ messageClassAndType := '0301'O,
+ messageLength := 0,
+ messageParameters := {
+ aSP_Identifier := pl_aSP_Identifier,
+ info_String := pl_info_String
+ }
+ }
+}
+
+template PDU_M3UA t_PDU_M3UA_ASPUP_Ack :=
+{
+ m3UA_ASPUP_Ack := {
+ version := '01'O,
+ reserved := '00'O,
+ messageClassAndType := '0304'O,
+ messageLength := 0,
+ messageParameters := {
+ info_String := omit
+ }
+ }
+}
+
+template PDU_M3UA t_PDU_M3UA_ASPDN :=
+{
+ m3UA_ASPDN := {
+ version := '01'O,
+ reserved := '00'O,
+ messageClassAndType := '0302'O,
+ messageLength := 0,
+ messageParameters := {
+ info_String := omit
+ }
+ }
+}
+
+template PDU_M3UA t_PDU_M3UA_ASPDN_Ack :=
+{
+ m3UA_ASPDN_Ack := {
+ version := '01'O,
+ reserved := '00'O,
+ messageClassAndType := '0305'O,
+ messageLength := 0,
+ messageParameters := {
+ info_String := omit
+ }
+ }
+}
+
+template PDU_M3UA t_PDU_M3UA_ASPAC
+ (in template M3UA_Traffic_Mode_Type pl_traffic_Mode_Type,
+ in template M3UA_Routing_Context pl_routing_Context,
+ in template M3UA_Info_String pl_info_String) :=
+{
+ m3UA_ASPAC := {
+ version := '01'O,
+ reserved := '00'O,
+ messageClassAndType := '0401'O,
+ messageLength := 0,
+ messageParameters := {
+ traffic_Mode_Type := pl_traffic_Mode_Type,
+ routing_Context := pl_routing_Context,
+ info_String := pl_info_String
+ }
+ }
+}
+
+template PDU_M3UA t_PDU_M3UA_ASPAC_Ack
+ (in template M3UA_Traffic_Mode_Type pl_traffic_mode_type,
+ in template M3UA_Routing_Context pl_routing_Context) :=
+{
+ m3UA_ASPAC_Ack := {
+ version := '01'O,
+ reserved := '00'O,
+ messageClassAndType := '0403'O,
+ messageLength := 0,
+ messageParameters := {
+ traffic_Mode_Type := pl_traffic_mode_type,
+ routing_Context := pl_routing_Context,
+ info_String := omit
+ }
+ }
+}
+
+template PDU_M3UA t_PDU_M3UA_ASPIA
+ (in template M3UA_Routing_Context pl_routing_Context,
+ in template M3UA_Info_String pl_info_String) :=
+{
+ m3UA_ASPIA := {
+ version := '01'O,
+ reserved := '00'O,
+ messageClassAndType := '0402'O,
+ messageLength := 0,
+ messageParameters := {
+ routing_Context := pl_routing_Context,
+ info_String := pl_info_String
+ }
+ }
+}
+
+template PDU_M3UA t_PDU_M3UA_ASPIA_Ack
+ (in template M3UA_Routing_Context pl_routing_Context) :=
+{
+ m3UA_ASPIA_Ack := {
+ version := '01'O,
+ reserved := '00'O,
+ messageClassAndType := '0404'O,
+ messageLength := 0,
+ messageParameters := {
+ routing_Context := pl_routing_Context,
+ info_String := omit
+ }
+ }
+}
+
+template PDU_M3UA t_PDU_M3UA_Heartbeat
+ (in template M3UA_Heartbeat_Data pl_heartbeat_Data) :=
+{
+ m3UA_BEAT := {
+ version := '01'O,
+ reserved := '00'O,
+ messageClassAndType := '0303'O,
+ messageLength := 0,
+ messageParameters := {
+ heartbeat_Data := pl_heartbeat_Data
+ }
+ }
+}
+
+template PDU_M3UA t_PDU_M3UA_Beat_Ack
+ (in template M3UA_Heartbeat_Data pl_heartbeat_Data) :=
+{
+ m3UA_BEAT_Ack := {
+ version := '01'O,
+ reserved := '00'O,
+ messageClassAndType := '0306'O,
+ messageLength := 0,
+ messageParameters := {
+ heartbeat_Data := pl_heartbeat_Data
+ }
+ }
+}
+
+template PDU_M3UA t_PDU_M3UA_DATA
+ (in template M3UA_Network_Appearance pl_network_Appearance,
+ in template M3UA_Routing_Context pl_routing_Context,
+ in template M3UA_Protocol_Data pl_protocol_Data,
+ in template M3UA_Correlation_ID pl_correlation_ID) :=
+{
+ m3UA_DATA := {
+ version := '01'O,
+ reserved := '00'O,
+ messageClassAndType := '0101'O,
+ messageLength := 0,
+ messageParameters := {
+ network_Appearance := pl_network_Appearance,
+ routing_Context := pl_routing_Context,
+ protocol_Data := pl_protocol_Data,
+ correlation_ID := pl_correlation_ID
+ }
+ }
+}
+
+template PDU_M3UA t_PDU_M3UA_DAVA
+ (in template M3UA_Network_Appearance pl_network_Appearance,
+ in template M3UA_Routing_Context pl_routing_Context,
+ in template M3UA_Affected_Point_Codes pl_affected_Point_Codes,
+ in template M3UA_Info_String pl_info_String) :=
+{
+ m3UA_DAVA := {
+ version := '01'O,
+ reserved := '00'O,
+ messageClassAndType := '0202'O,
+ messageLength := 0,
+ messageParameters := {
+ network_Appearance := pl_network_Appearance,
+ routing_Context := pl_routing_Context,
+ affected_Point_Codes := pl_affected_Point_Codes,
+ info_String := pl_info_String
+ }
+ }
+}
+//**************************
+// End of M3UA PDU templates
+//**************************
+
+//**********************************
+// Start of M3UA parameter templates
+//**********************************
+template M3UA_Protocol_Data t_M3UA_Protocol_Data
+ (template OCT4 pl_oPC,
+ template OCT4 pl_dPC,
+ template OCT1 pl_sI,
+ template OCT1 pl_nI,
+ template OCT1 pl_mP,
+ template OCT1 pl_sLS,
+ template octetstring pl_userProtocolData) :=
+{
+ tag := '0210'O,
+ lengthInd := 0,
+ oPC := pl_oPC,
+ dPC := pl_dPC,
+ sI := pl_sI,
+ nI := pl_nI,
+ mP := pl_mP,
+ sLS := pl_sLS,
+ userProtocolData := pl_userProtocolData
+}
+//********************************
+// End of M3UA parameter templates
+//********************************
+
+//***********************************
+// Dynamic part of the M3UA emulation
+//***********************************
+
+function f_M3UA_Emulation(SCTP_Association_Address pl_Boot) runs on M3UA_CT
+{
+ // Initialize parameters from the test case.
+ v_Entity.assoc := pl_Boot;
+ v_Entity.commStatus := aSP_Down_initial_State;
+
+ // At this point, we assume that the ports are already connected and mapped
+ // properly by the user.
+ log("*************************************************");
+ log("M3UA emulation initiated, the test can be started");
+ log("*************************************************");
+
+ f_Initialize_SCTP();
+
+ // Start the main function in an infinte loop.
+ f_M3UA_ScanEvents();
+}
+
+// Initialize the SCTP layer with parameters read from the configuration file.
+// We have only a single association.
+function f_Initialize_SCTP() runs on M3UA_CT
+{
+ v_Entity.commStatus := aSP_Down_sCTP_Initialize_Done;
+ if (tsp_SCTP_Server_Mode) {
+ // Send out a LISTEN message. The communication status doesn't change
+ // here.
+ SCTP_PORT.send
+ (t_ASP_SCTP_Listen(v_Entity.assoc.local_ip_addr,
+ v_Entity.assoc.local_sctp_port));
+ }
+ else {
+ // Send ConnectFrom sequentially, wait for RESULT messages.
+ f_Associate();
+ T_Assoc_restart.start;
+ }
+
+ if (tsp_SCTP_PayloadProtocolID == 3) {
+ if (not tsp_M3UA_Server_Mode) {
+ T_ASPUP_resend.start;
+ T_ASPAC_resend.start;
+ }
+ if (tsp_Enable_M3UA_Heartbeat) {
+ T_Heartbeat.start;
+ }
+ }
+}
+
+// Associate SCTP connection for a M3UA entity.
+function f_Associate() runs on M3UA_CT
+{
+ SCTP_PORT.send(t_ASP_SCTP_ConnectFrom
+ (v_Entity.assoc.local_ip_addr,
+ v_Entity.assoc.local_sctp_port,
+ v_Entity.assoc.remote_ip_addr,
+ v_Entity.assoc.remote_sctp_port));
+
+ T_Timer.start;
+ alt {
+ [] SCTP_PORT.receive(t_ASP_SCTP_RESULT(*, ?, *)) -> value v_ASP_SCTP_RESULT {
+ if (v_ASP_SCTP_RESULT.error_status) {
+ log("Connect failed: ", v_ASP_SCTP_RESULT.error_message);
+ }
+ else {
+ v_Entity.sCTP_Assoc_ID := v_ASP_SCTP_RESULT.client_id;
+ v_Entity.commStatus := aSP_Down_sCTP_Associate_done;
+ log("SCTP_ConnectResult -> connection established from: ",
+ v_Entity.assoc.local_ip_addr, ":", v_Entity.assoc.local_sctp_port,
+ " to server: ", v_Entity.assoc.remote_ip_addr, ":",
+ v_Entity.assoc.remote_sctp_port, " association #",
+ v_Entity.sCTP_Assoc_ID);
+ if (tsp_logVerbose) {
+ log("Association #", v_Entity.sCTP_Assoc_ID, " state changed to ",
+ v_Entity.commStatus);
+ }
+ }
+ T_Timer.stop;
+ }
+ [] T_Timer.timeout {
+ log("----------------------------------------------");
+ log("No response received to t_ASP_SCTP_ConnectFrom");
+ log("----------------------------------------------");
+ setverdict(fail);
+ // mtc.stop;
+ }
+ }
+}
+
+// Starts M3UA emulation execution.
+function f_M3UA_ScanEvents() runs on M3UA_CT
+{
+ var ASP_MTP3_TRANSFERreq vl_ASP_MTP3_TRANSFERreq;
+
+ alt {
+ [] MTP3_SP_PORT.receive(ASP_MTP3_TRANSFERreq : ?)
+ -> value vl_ASP_MTP3_TRANSFERreq {
+ f_Send_MTP3_TRANSFERreq(vl_ASP_MTP3_TRANSFERreq);
+ repeat;
+ }
+ [] as_SCTP_CommunicationUp()
+ [] as_SCTP_DataArrive()
+ [] as_SCTP_Connected()
+ [] as_Unexpected_SCTP_Events()
+ [] as_handleM3UA_timers()
+ [] as_handleSCTP_timers()
+ }
+}
+
+function f_Send_MTP3_TRANSFERreq(ASP_MTP3_TRANSFERreq pl_ASP_MTP3_TRANSFERreq)
+ runs on M3UA_CT
+{
+ if (v_Entity.commStatus == aSP_Active) {
+ if (tsp_SCTP_PayloadProtocolID == 3) { // M3UA
+ SCTP_PORT.send
+ (t_S_SCTP_Send
+ (v_Entity.sCTP_Assoc_ID,
+ 1,
+ enc_PDU_M3UA
+ (valueof
+ (t_PDU_M3UA_DATA
+ (omit,
+ omit,
+ t_M3UA_Protocol_Data
+ (int2oct(pl_ASP_MTP3_TRANSFERreq.opc, 4), // OPC
+ int2oct(pl_ASP_MTP3_TRANSFERreq.dpc, 4), // DPC
+ bit2oct('0000'B & pl_ASP_MTP3_TRANSFERreq.sio.si), // SIO
+ bit2oct('000000'B & pl_ASP_MTP3_TRANSFERreq.sio.ni),
+ bit2oct('000000'B & pl_ASP_MTP3_TRANSFERreq.sio.prio),
+ int2oct(pl_ASP_MTP3_TRANSFERreq.sls, 1), // SLS
+ pl_ASP_MTP3_TRANSFERreq.data),
+ omit))),
+ tsp_SCTP_PayloadProtocolID));
+ }
+ else { // Non-M3UA
+ SCTP_PORT.send
+ (t_S_SCTP_Send
+ (v_Entity.sCTP_Assoc_ID,
+ 1,
+ pl_ASP_MTP3_TRANSFERreq.data,
+ tsp_SCTP_PayloadProtocolID));
+ }
+ if (tsp_logVerbose) {
+ log("MTP3_SP_PORT: ASP_MTP3_TRANSFERreq received -> message sent " &
+ "via SCTP");
+ }
+ }
+ else {
+ // If the SCTP association is not yet running, we have to buffer the data
+ // messages arrived from the MTP3 side. Sending of buffered data messages
+ // should occure when the SCTP association is up and before sending the
+ // data message in reply for a new ASP_MTP3_TRANSFERreq data message. The
+ // buffer should be checked before sending.
+ v_TRANSFERreq_Buffer[sizeof(v_TRANSFERreq_Buffer)] :=
+ pl_ASP_MTP3_TRANSFERreq;
+ if (tsp_logVerbose) {
+ log("MTP3_SP_PORT: ASP_MTP3_TRANSFERreq received in an inactive state " &
+ "-> message was buffered");
+ }
+ }
+}
+
+// Handle communication up messages of users which performed associate earlier.
+// We have only one association.
+altstep as_SCTP_CommunicationUp() runs on M3UA_CT
+{
+ [] SCTP_PORT.receive(tr_S_SCTP_CommunicationUp(?))
+ -> value v_ASP_SCTP_ASSOC_CHANGE {
+ if (v_Entity.sCTP_Assoc_ID == v_ASP_SCTP_ASSOC_CHANGE.client_id) {
+ if (v_Entity.commStatus == aSP_Down_sCTP_Associate_done) {
+ v_Entity.commStatus := aSP_Down_commUP_Received;
+ if (tsp_SCTP_PayloadProtocolID != 3) { // Non-M3UA
+ v_Entity.commStatus := aSP_Active;
+ var integer v_i;
+ for (v_i := 0; v_i < sizeof(v_TRANSFERreq_Buffer); v_i := v_i + 1) {
+ log("Sending buffered message #", v_i);
+ f_Send_MTP3_TRANSFERreq(v_TRANSFERreq_Buffer[v_i]);
+ }
+ v_TRANSFERreq_Buffer := {};
+ // MTP3_SP_PORT.send(ASP_MTP3_RESUME : {});
+ }
+ if (tsp_logVerbose) {
+ log("Association #", v_Entity.sCTP_Assoc_ID, " state changed to: ",
+ v_Entity.commStatus);
+ }
+ if ((not tsp_M3UA_Server_Mode) and
+ (tsp_SCTP_PayloadProtocolID == 3)) { // M3UA
+ f_ASPUP_Sending();
+ }
+ }
+ else {
+ if (tsp_logVerbose) {
+ log("SCTP_CommunicationUp received in wrong state (i.e. not after " &
+ "SCTP_Associate is done) in state: ", v_Entity.commStatus);
+ }
+ }
+ }
+ else {
+ if (tsp_logVerbose) {
+ log("Association does not exists, received in CommunicationUp");
+ }
+ }
+ repeat;
+ }
+}
+
+// This altstep handles the data received from SCTP.
+altstep as_SCTP_DataArrive() runs on M3UA_CT
+{
+ [] SCTP_PORT.receive(tr_S_SCTP_DataArrive
+ (?, // associationID
+ ?, // streamID
+ ?, // protocolID
+ ? // data
+ )) -> value v_ASP_SCTP {
+ // Checking the identifier for the association is not necessary, because we
+ // have only only one association.
+ if (f_Assoc_Exists(v_ASP_SCTP.client_id)) {
+ if (tsp_logVerbose) {
+ log("Message received on association #", v_Entity.sCTP_Assoc_ID);
+ }
+ if (tsp_SCTP_PayloadProtocolID == 3) { // M3UA
+ v_PDU_M3UA := dec_PDU_M3UA(v_ASP_SCTP.data);
+ f_handle_M3UA_msg(v_PDU_M3UA);
+ }
+ else { // Non-M3UA
+ f_handle_nonM3UA_msg(v_ASP_SCTP.data);
+ }
+ }
+ else{
+ log("Message received on unknown association #", v_Entity.sCTP_Assoc_ID,
+ " -> closing connection");
+ SCTP_PORT.send(t_ASP_SCTP_Close(v_Entity.sCTP_Assoc_ID));
+ log("SCTP connection closed");
+ }
+ repeat;
+ }
+}
+
+// Handle the SCTP connected messages. It is sent from the SCTP side and it
+// signals, that we're on the right track to create the association. This is
+// for server mode.
+altstep as_SCTP_Connected() runs on M3UA_CT
+{
+ [tsp_SCTP_Server_Mode] SCTP_PORT.receive(tr_ASP_SCTP_Connected(?, ?, ?, ?, ?))
+ -> value v_ASP_SCTP_Connected {
+ // Message from the configured endpoint.
+ if ((v_ASP_SCTP_Connected.local_portnumber ==
+ v_Entity.assoc.local_sctp_port) and
+ (v_ASP_SCTP_Connected.local_hostname ==
+ v_Entity.assoc.local_ip_addr) and
+ (v_ASP_SCTP_Connected.peer_portnumber ==
+ v_Entity.assoc.remote_sctp_port) and
+ (v_ASP_SCTP_Connected.peer_hostname ==
+ v_Entity.assoc.remote_ip_addr)) {
+ v_Entity.sCTP_Assoc_ID := v_ASP_SCTP_Connected.client_id;
+ v_Entity.commStatus := aSP_Down_sCTP_Associate_done;
+ log("ASP_SCTP_Connected -> accepted connection from client: ",
+ v_ASP_SCTP_Connected.peer_hostname, ":",
+ v_ASP_SCTP_Connected.peer_portnumber, " on server: ",
+ v_ASP_SCTP_Connected.local_hostname, ":",
+ v_ASP_SCTP_Connected.local_portnumber, " with association #",
+ v_Entity.sCTP_Assoc_ID);
+ }
+ else {
+ log("ASP_SCTP_Connected -> connection from unknown client: ",
+ v_ASP_SCTP_Connected.peer_hostname, ":",
+ v_ASP_SCTP_Connected.peer_portnumber);
+ }
+ repeat;
+ }
+}
+
+// Handle error messages of users.
+altstep as_Unexpected_SCTP_Events() runs on M3UA_CT
+{
+ // Handle communications lost message. State of user with given index jumps
+ // back to initial state and stays there. That user will not be able to
+ // communicate anymore.
+ [] SCTP_PORT.receive(tr_S_SCTP_CommunicationLost(?))
+ -> value v_ASP_SCTP_ASSOC_CHANGE {
+ if (f_Assoc_Exists(v_ASP_SCTP_ASSOC_CHANGE.client_id)) {
+ if (v_Entity.commStatus == aSP_Active) {
+ // MTP3_SP_PORT.send(ASP_MTP3_PAUSE : {});
+ }
+ v_Entity.commStatus := aSP_Down_sCTP_Initialize_Done;
+ v_Entity.sCTP_Assoc_ID := omit;
+ if (tsp_logVerbose) {
+ log("SCTP_CommunicationLost received");
+ log("Association #", v_Entity.sCTP_Assoc_ID, " cleared, state " &
+ "changed to: ", v_Entity.commStatus);
+ }
+ }
+ else {
+ if (tsp_logVerbose) {
+ log("Association does not exist, received in CommunicationLost");
+ }
+ }
+ repeat;
+ }
+ [] SCTP_PORT.receive(tr_S_SCTP_ShutdownComplete(?))
+ -> value v_ASP_SCTP_ASSOC_CHANGE {
+ if (f_Assoc_Exists(v_ASP_SCTP_ASSOC_CHANGE.client_id)) {
+ if (v_Entity.commStatus == aSP_Active) {
+ // MTP3_SP_PORT.send(ASP_MTP3_PAUSE : {});
+ }
+ v_Entity.commStatus := aSP_Down_sCTP_Initialize_Done;
+ if (tsp_logVerbose) {
+ log("SCTP_ShutdownComplete received");
+ log("Association #", v_Entity.sCTP_Assoc_ID, " state changed to: ",
+ v_Entity.commStatus);
+ }
+ }
+ else {
+ if (tsp_logVerbose) {
+ log("Association does not exist, received in ShutdownComplete");
+ }
+ }
+ repeat;
+ }
+ [] SCTP_PORT.receive(tr_S_SCTP_ShutdownEvent(?))
+ -> value v_ASP_SCTP_SHUTDOWN_EVENT {
+ if (f_Assoc_Exists(v_ASP_SCTP_SHUTDOWN_EVENT.client_id)) {
+ if (v_Entity.commStatus == aSP_Active) {
+ // MTP3_SP_PORT.send(ASP_MTP3_PAUSE : {});
+ }
+ v_Entity.commStatus := aSP_Down_sCTP_Initialize_Done;
+ if (tsp_logVerbose) {
+ log("SCTP_ShutdownEvent received");
+ log("Association #", v_Entity.sCTP_Assoc_ID, " state changed to: ",
+ v_Entity.commStatus);
+ }
+ }
+ else {
+ if (tsp_logVerbose) {
+ log("Association does not exist, received in ShutdownEvent");
+ }
+ }
+ repeat;
+ }
+ [] SCTP_PORT.receive(tr_ASP_SCTP_Connected(?, ?, ?, ?, ?))
+ -> value v_ASP_SCTP_Connected {
+ log("Unexpected ASP_SCTP_Connected");
+ repeat;
+ }
+ [] SCTP_PORT.receive(tr_S_SCTP_Restart(?)) -> value v_ASP_SCTP_ASSOC_CHANGE {
+ if (f_Assoc_Exists(v_ASP_SCTP_ASSOC_CHANGE.client_id)) {
+ log("SCTP_Restart received");
+ v_Entity.commStatus := aSP_Down_commUP_Received;
+ if (tsp_logVerbose) {
+ log("Association #", v_Entity.sCTP_Assoc_ID, " state changed to: ",
+ v_Entity.commStatus);
+ }
+ }
+ else {
+ if (tsp_logVerbose) {
+ log("Association does not exist, received in SCTP_Restart");
+ }
+ }
+ repeat;
+ }
+ [] SCTP_PORT.receive(t_ASP_SCTP_SEND_FAILED(?))
+ -> value v_ASP_SCTP_SEND_FAILED {
+ log("SCTP_Send failed for association #", v_Entity.sCTP_Assoc_ID);
+ if (f_Assoc_Exists(v_ASP_SCTP_SEND_FAILED.client_id)) {
+ // Daemon sends an error status message here.
+ // MTP3_SP_PORT.send(ASP_MTP3_PAUSE : {});
+ }
+ else {
+ log("Send error received for association that doesn't exist");
+ }
+ repeat;
+ }
+ [] SCTP_PORT.receive(tr_S_SCTP_CANT_STR_ASSOC(?)) {
+ repeat;
+ }
+ [] SCTP_PORT.receive {
+ repeat;
+ }
+}
+
+// After reception of SCTP_CommunicationUp M3UA ASPUP/ASPAC is resent by the
+// entity if it didn't receive ASPUP_Ack/ASPAC_Ack.
+altstep as_handleM3UA_timers() runs on M3UA_CT
+{
+ [] T_ASPUP_resend.timeout {
+ if ((v_Entity.commStatus == aSP_Down_commUP_Received) or
+ (v_Entity.commStatus == aSP_Down_ASPUP_Sent)) {
+ // Try to send ASPUP again.
+ SCTP_PORT.send
+ (t_S_SCTP_Send
+ (v_Entity.sCTP_Assoc_ID,
+ 0,
+ enc_PDU_M3UA(valueof(t_PDU_M3UA_ASPUP(omit, omit))),
+ tsp_SCTP_PayloadProtocolID));
+ v_Entity.commStatus := aSP_Down_ASPUP_Sent;
+ if (tsp_logVerbose) {
+ log("Association #", v_Entity.sCTP_Assoc_ID, " state changed to: ",
+ v_Entity.commStatus);
+ }
+ }
+ T_ASPUP_resend.start;
+ repeat;
+ }
+
+ [] T_ASPAC_resend.timeout {
+ if ((v_Entity.commStatus == aSP_Inactive) or
+ (v_Entity.commStatus == aSP_Inact_ASPAC_Sent)) {
+ SCTP_PORT.send
+ (t_S_SCTP_Send
+ (v_Entity.sCTP_Assoc_ID,
+ 0,
+ enc_PDU_M3UA(valueof(t_PDU_M3UA_ASPAC(omit, omit, omit))),
+ tsp_SCTP_PayloadProtocolID));
+ v_Entity.commStatus := aSP_Inact_ASPAC_Sent;
+ if (tsp_logVerbose) {
+ log("Association #", v_Entity.sCTP_Assoc_ID, " state changed to: ",
+ v_Entity.commStatus);
+ }
+ }
+ T_ASPAC_resend.start;
+ repeat;
+ }
+
+ [tsp_Enable_M3UA_Heartbeat] T_Heartbeat.timeout {
+ if (v_Entity.commStatus == aSP_Active) {
+ SCTP_PORT.send
+ (t_S_SCTP_Send
+ (v_Entity.sCTP_Assoc_ID,
+ 0,
+ enc_PDU_M3UA(valueof(t_PDU_M3UA_Heartbeat(omit))),
+ tsp_SCTP_PayloadProtocolID));
+ if (tsp_logVerbose) {
+ log("Heartbeat sent to association #", v_Entity.sCTP_Assoc_ID);
+ }
+ }
+ T_Heartbeat.start;
+ repeat;
+ }
+}
+
+// Handles SCTP timer events. In server mode we don't associate.
+altstep as_handleSCTP_timers() runs on M3UA_CT
+{
+ [not tsp_SCTP_Server_Mode] T_Assoc_restart.timeout {
+ if (v_Entity.commStatus == aSP_Down_sCTP_Initialize_Done) {
+ f_Associate();
+ }
+ T_Assoc_restart.start;
+ repeat;
+ }
+}
+
+// After reception of SCTP CommunicationUp messages M3UA ASPUP is sent by
+// every entity and the M3UA ASPUP_Ack is received by every entity.
+function f_ASPUP_Sending() runs on M3UA_CT
+{
+ SCTP_PORT.send
+ (t_S_SCTP_Send
+ (v_Entity.sCTP_Assoc_ID,
+ 0, // streamID
+ enc_PDU_M3UA(valueof(t_PDU_M3UA_ASPUP(omit, omit))),
+ tsp_SCTP_PayloadProtocolID));
+ v_Entity.commStatus := aSP_Down_ASPUP_Sent;
+ if (tsp_logVerbose) {
+ log("M3UA_ASPUP sent");
+ log("Association #", v_Entity.sCTP_Assoc_ID, " state changed to: ",
+ v_Entity.commStatus);
+ }
+}
+
+
+// Test if an association with assocID exists or not. We have only one
+// association at the moment, we just check if the given assocID is the same,
+// that is associated with our single entity. If we would have more entities
+// in a table, the index of it should be returned instead of a boolean value.
+function f_Assoc_Exists(integer pl_assocID) runs on M3UA_CT return boolean
+{
+ if (v_Entity.sCTP_Assoc_ID == pl_assocID) {
+ return true;
+ }
+ else {
+ if (tsp_logVerbose) {
+ log("Association #", v_Entity.sCTP_Assoc_ID, " not found");
+ }
+ }
+ return false;
+}
+
+function f_handle_M3UA_msg(PDU_M3UA pl_PDU_M3UA) runs on M3UA_CT
+{
+ if (ischosen(pl_PDU_M3UA.m3UA_DATA)) {
+ if (v_Entity.commStatus == aSP_Active) {
+ // Send ASP_MTP3_TRANSFERind message.
+ MTP3_SP_PORT.send
+ (valueof
+ (tr_ASP_MTP3_TRANSFERind_sio
+ (substr(oct2bit(pl_PDU_M3UA.m3UA_DATA.messageParameters.protocol_Data.nI), 6, 2),
+ substr(oct2bit(pl_PDU_M3UA.m3UA_DATA.messageParameters.protocol_Data.mP), 6, 2),
+ substr(oct2bit(pl_PDU_M3UA.m3UA_DATA.messageParameters.protocol_Data.sI), 4, 4),
+ oct2int(pl_PDU_M3UA.m3UA_DATA.messageParameters.protocol_Data.oPC),
+ oct2int(pl_PDU_M3UA.m3UA_DATA.messageParameters.protocol_Data.dPC),
+ oct2int(pl_PDU_M3UA.m3UA_DATA.messageParameters.protocol_Data.sLS),
+ pl_PDU_M3UA.m3UA_DATA.messageParameters.protocol_Data.userProtocolData)));
+ if (tsp_logVerbose) {
+ log("MTP3_SP_PORT: Data received -> TRANSFERind sent");
+ }
+ }
+ else {
+ // Buffering indication messages?
+ if (tsp_logVerbose) {
+ log("MTP3_SP_PORT: Data received, no user connected -> discard");
+ }
+ }
+ }
+ else if (ischosen(pl_PDU_M3UA.m3UA_BEAT)) {
+ if (v_Entity.commStatus == aSP_Active) {
+ SCTP_PORT.send
+ (t_S_SCTP_Send
+ (v_Entity.sCTP_Assoc_ID,
+ 0,
+ enc_PDU_M3UA
+ (valueof
+ (t_PDU_M3UA_Beat_Ack
+ (pl_PDU_M3UA.m3UA_BEAT.messageParameters.heartbeat_Data))),
+ tsp_SCTP_PayloadProtocolID));
+ if (tsp_logVerbose) {
+ log("M3UA_BEAT received -> M3UA_BEAT_Ack sent");
+ }
+ }
+ else {
+ if (tsp_logVerbose) {
+ log("M3UA_BEAT received in wrong state");
+ }
+ }
+ }
+ else if (ischosen(pl_PDU_M3UA.m3UA_BEAT_Ack)) {
+ if (tsp_logVerbose) {
+ log("Received M3UA_BEAT_Ack -> discard");
+ }
+ }
+ else if (ischosen(pl_PDU_M3UA.m3UA_ERR)) {
+ if (tsp_logVerbose) {
+ log("Received M3UA_ERR -> discard");
+ }
+ }
+ else if (ischosen(pl_PDU_M3UA.m3UA_NOTIFY)) {
+ if (tsp_logVerbose) {
+ log("Received M3UA_NOTIFY -> discard");
+ }
+ }
+ else if (ischosen(pl_PDU_M3UA.m3UA_DUNA)) {
+ if (tsp_logVerbose) {
+ log("Received M3UA_DUNA -> discard");
+ }
+ }
+ else if (ischosen(pl_PDU_M3UA.m3UA_DAVA)) {
+ if (tsp_logVerbose) {
+ log("Received M3UA_DAVA -> discard");
+ }
+ }
+ // In server mode ASP_M3UA_DAUD messages can be received. In response the
+ // server must send ASP_M3UA_DAVA messages. It's not checked if we're
+ // servers or not.
+ else if (ischosen(pl_PDU_M3UA.m3UA_DAUD)) {
+ if ((v_Entity.commStatus == aSP_Inactive) or
+ (v_Entity.commStatus == aSP_Inact_ASPAC_Sent) or
+ (v_Entity.commStatus == aSP_Active)) {
+ // Send ASP_M3UA_DAVA message.
+ SCTP_PORT.send
+ (t_S_SCTP_Send
+ (v_Entity.sCTP_Assoc_ID,
+ 0,
+ enc_PDU_M3UA
+ (valueof
+ (t_PDU_M3UA_DAVA
+ (pl_PDU_M3UA.m3UA_DAUD.messageParameters.network_Appearance,
+ pl_PDU_M3UA.m3UA_DAUD.messageParameters.routing_Context,
+ pl_PDU_M3UA.m3UA_DAUD.messageParameters.affected_Point_Codes,
+ pl_PDU_M3UA.m3UA_DAUD.messageParameters.info_String))),
+ tsp_SCTP_PayloadProtocolID));
+ if (tsp_logVerbose) {
+ log("M3UA_DAUD received -> DAVA sent");
+ }
+ }
+ else {
+ if (tsp_logVerbose) {
+ log("M3UA_DAUD received in wrong state");
+ }
+ }
+ }
+ else if (ischosen(pl_PDU_M3UA.m3UA_SCON)) {
+ if (tsp_logVerbose) {
+ log("Received M3UA_SCON -> discard");
+ }
+ }
+ else if (ischosen(pl_PDU_M3UA.m3UA_DUPU)) {
+ if (tsp_logVerbose) {
+ log("Received M3UA_DUPU -> discard");
+ }
+ }
+ else if (ischosen(pl_PDU_M3UA.m3UA_DRST)) {
+ if (tsp_logVerbose) {
+ log("Received M3UA_DRST -> discard");
+ }
+ }
+ // In server mode we can receive M3UA_ASPUP messages. The answer will be a
+ // M3UA_ASPUP_Ack message to the client.
+ else if (ischosen(pl_PDU_M3UA.m3UA_ASPUP)) {
+ if (((v_Entity.commStatus == aSP_Down_commUP_Received) or
+ (v_Entity.commStatus == aSP_Down_ASPUP_Sent)) and
+ tsp_M3UA_Server_Mode) {
+ v_Entity.commStatus := aSP_Inactive;
+ SCTP_PORT.send
+ (t_S_SCTP_Send
+ (v_Entity.sCTP_Assoc_ID,
+ 0,
+ enc_PDU_M3UA(valueof(t_PDU_M3UA_ASPUP_Ack)),
+ tsp_SCTP_PayloadProtocolID));
+ if (tsp_logVerbose) {
+ log("M3UA_ASPUP received -> M3UA_ASPUP_Ack sent");
+ log("Association #", v_Entity.sCTP_Assoc_ID, " state changed to: ",
+ v_Entity.commStatus);
+ }
+ }
+ else {
+ if (tsp_logVerbose) {
+ log("M3UA_ASPUP received in wrong state or the emulation is not in " &
+ "M3UA server mode");
+ }
+ }
+ }
+ // Receives a M3UA_ASPDN message and sends a M3UA_ASPDN_Ack message in
+ // response.
+ else if (ischosen(pl_PDU_M3UA.m3UA_ASPDN)) {
+ if ((v_Entity.commStatus == aSP_Inactive) or
+ (v_Entity.commStatus == aSP_Inact_ASPAC_Sent) or
+ (v_Entity.commStatus == aSP_Active)) {
+ SCTP_PORT.send
+ (t_S_SCTP_Send
+ (v_Entity.sCTP_Assoc_ID,
+ 0,
+ enc_PDU_M3UA(valueof(t_PDU_M3UA_ASPDN_Ack)),
+ tsp_SCTP_PayloadProtocolID));
+ if (v_Entity.commStatus == aSP_Active) {
+ // MTP3_SP_PORT.send(ASP_MTP3_PAUSE : {});
+ }
+ v_Entity.commStatus := aSP_Down_commUP_Received;
+ if (tsp_logVerbose) {
+ log("M3UA_ASPDN received -> ASPDN_Ack sent");
+ log("Association #", v_Entity.sCTP_Assoc_ID, " state changed to: ",
+ v_Entity.commStatus);
+ }
+ }
+ else {
+ if (tsp_logVerbose) {
+ log("ASPDN received in wrong state or the emulation is not in M3UA " &
+ "server mode");
+ }
+ }
+ }
+ // The M3UA client receives M3UA_ASPUP_Ack messages from the server. In
+ // response of a M3UA_ASPUP message sent by the client.
+ else if (ischosen(pl_PDU_M3UA.m3UA_ASPUP_Ack)) {
+ if (((v_Entity.commStatus == aSP_Down_ASPUP_Sent) or
+ (v_Entity.commStatus == aSP_Inactive)) and
+ not tsp_M3UA_Server_Mode) {
+ v_Entity.commStatus := aSP_Inactive;
+ if (tsp_logVerbose) {
+ log("M3UA_ASPUP_Ack received -> send M3UA_ASPAC");
+ log("Association #", v_Entity.sCTP_Assoc_ID, " state changed to: ",
+ v_Entity.commStatus);
+ }
+ SCTP_PORT.send
+ (t_S_SCTP_Send
+ (v_Entity.sCTP_Assoc_ID,
+ 0,
+ enc_PDU_M3UA(valueof(t_PDU_M3UA_ASPAC(omit, omit, omit))),
+ tsp_SCTP_PayloadProtocolID));
+ // The state changes again after sending the M3UA_ASPAC message.
+ v_Entity.commStatus := aSP_Inact_ASPAC_Sent;
+ if (tsp_logVerbose) {
+ log("Association #", v_Entity.sCTP_Assoc_ID, " state changed to: ",
+ v_Entity.commStatus);
+ }
+ }
+ else {
+ if (tsp_logVerbose) {
+ log("M3UA_ASPUP_Ack received in wrong state or the emulation is not " &
+ "in M3UA client mode");
+ }
+ }
+ }
+ else if (ischosen(pl_PDU_M3UA.m3UA_ASPDN_Ack)) {
+ if (tsp_logVerbose) {
+ log("Received M3UA_ASPDN_Ack -> discard");
+ }
+ }
+ // M3UA_ASPAC messages are received on the server side. The server sends a
+ // M3UA_ASPAC_Ack message back to the client. This step makes the
+ // association active on both sides.
+ else if (ischosen(pl_PDU_M3UA.m3UA_ASPAC)) {
+ if (((v_Entity.commStatus == aSP_Inactive) or
+ (v_Entity.commStatus == aSP_Inact_ASPAC_Sent)) and
+ tsp_M3UA_Server_Mode) {
+ v_Entity.commStatus := aSP_Active;
+ if (tsp_logVerbose) {
+ log("M3UA_ASPAC received -> M3UA_ASPAC_Ack sent");
+ log("Association #", v_Entity.sCTP_Assoc_ID, " state changed to: ",
+ v_Entity.commStatus);
+ }
+ var integer v_i;
+ for (v_i := 0; v_i < sizeof(v_TRANSFERreq_Buffer); v_i := v_i + 1) {
+ log("Sending buffered message #", v_i);
+ f_Send_MTP3_TRANSFERreq(v_TRANSFERreq_Buffer[v_i]);
+ }
+ v_TRANSFERreq_Buffer := {};
+ // Send M3UA_ASPAC_Ack.
+ SCTP_PORT.send
+ (t_S_SCTP_Send
+ (v_Entity.sCTP_Assoc_ID,
+ 0,
+ enc_PDU_M3UA
+ (valueof
+ (t_PDU_M3UA_ASPAC_Ack
+ (pl_PDU_M3UA.m3UA_ASPAC.messageParameters.traffic_Mode_Type,
+ pl_PDU_M3UA.m3UA_ASPAC.messageParameters.routing_Context))),
+ tsp_SCTP_PayloadProtocolID));
+ // MTP3_SP_PORT.send(ASP_MTP3_RESUME : {});
+ }
+ else {
+ if (tsp_logVerbose) {
+ log("M3UA_ASPAC received in wrong state or the emulation is not in " &
+ "M3UA server mode");
+ }
+ }
+ }
+ // The client receives M3UA_ASPAC_Ack messages from the server. The
+ // association will be activated. The buffered messages should be send here.
+ else if (ischosen(pl_PDU_M3UA.m3UA_ASPAC_Ack)) {
+ if (((v_Entity.commStatus == aSP_Inact_ASPAC_Sent) or
+ (v_Entity.commStatus == aSP_Active)) and
+ not tsp_M3UA_Server_Mode) {
+ // MTP3_SP_PORT.send(ASP_MTP3_RESUME : {});
+ v_Entity.commStatus := aSP_Active;
+ if (tsp_logVerbose) {
+ log("ASPAC_Ack received for association #", v_Entity.sCTP_Assoc_ID);
+ log("Association #", v_Entity.sCTP_Assoc_ID, " state changed to: ",
+ v_Entity.commStatus);
+ }
+ var integer v_i;
+ for (v_i := 0; v_i < sizeof(v_TRANSFERreq_Buffer); v_i := v_i + 1) {
+ log("Sending buffered message #", v_i);
+ f_Send_MTP3_TRANSFERreq(v_TRANSFERreq_Buffer[v_i]);
+ }
+ v_TRANSFERreq_Buffer := {};
+ }
+ else {
+ if (tsp_logVerbose) {
+ log("M3UA_ASPAC_Ack received in wrong state on association #",
+ v_Entity.sCTP_Assoc_ID, " or the emulation is not in M3UA " &
+ "client mode");
+ }
+ }
+ }
+ // Receives a M3UA_ASPIA message and sends back a M3UA_ASPIA_Ack message in
+ // response.
+ else if (ischosen(pl_PDU_M3UA.m3UA_ASPIA)) {
+ if (v_Entity.commStatus == aSP_Active) {
+ SCTP_PORT.send
+ (t_S_SCTP_Send
+ (v_Entity.sCTP_Assoc_ID,
+ 0,
+ enc_PDU_M3UA
+ (valueof
+ (t_PDU_M3UA_ASPIA_Ack
+ (pl_PDU_M3UA.m3UA_ASPIA.messageParameters.routing_Context))),
+ tsp_SCTP_PayloadProtocolID));
+ // MTP3_SP_PORT.send(ASP_MTP3_PAUSE : {});
+ v_Entity.commStatus := aSP_Inactive;
+ if (tsp_logVerbose) {
+ log("M3UA_ASPIA received -> M3UA_ASPIA_Ack sent");
+ log("Association #", v_Entity.sCTP_Assoc_ID, " state changed to: ",
+ v_Entity.commStatus);
+ }
+ }
+ else {
+ if (tsp_logVerbose) {
+ log("M3UA_ASPIA received in wrong state or the emulation is not " &
+ "running in M3UA server mode");
+ }
+ }
+ }
+ else if (ischosen(pl_PDU_M3UA.m3UA_ASPIA_Ack)) {
+ if (tsp_logVerbose) {
+ log("Received M3UA_ASPIA_Ack -> discard");
+ }
+ }
+ else if (ischosen(pl_PDU_M3UA.m3UA_REG_REQ)) {
+ if (tsp_logVerbose) {
+ log("Received M3UA_REG_REQ -> discard");
+ }
+ }
+ else if (ischosen(pl_PDU_M3UA.m3UA_REG_RSP)) {
+ if (tsp_logVerbose) {
+ log("Received M3UA_REG_RSP -> discard");
+ }
+ }
+ else if (ischosen(pl_PDU_M3UA.m3UA_DEREG_REQ)) {
+ if (tsp_logVerbose) {
+ log("Received M3UA_DEREG_REQ -> discard");
+ }
+ }
+ else if (ischosen(pl_PDU_M3UA.m3UA_DEREG_RSP)) {
+ if (tsp_logVerbose) {
+ log("Received M3UA_DEREG_RSP -> discard");
+ }
+ }
+}
+
+function f_handle_nonM3UA_msg(octetstring pl_PDU) runs on M3UA_CT
+{
+ if (v_Entity.commStatus == aSP_Active) {
+ // Send TRANSFERind message.
+ MTP3_SP_PORT.send(valueof
+ (tr_ASP_MTP3_TRANSFERind_sio
+ ('00'B,
+ '00'B,
+ '0000'B,
+ 0,
+ 0,
+ 0,
+ pl_PDU)));
+ if (tsp_logVerbose) {
+ log("Non-M3UA DATA received -> TRANSFERind sent");
+ }
+ }
+ else {
+ if (tsp_logVerbose) {
+ log("DATA received, but no user connected -> discard");
+ }
+ }
+}
+
+}
diff --git a/MTP3asp_CNL113337/MTP3asp_CNL113337.tpd b/MTP3asp_CNL113337/MTP3asp_CNL113337.tpd
new file mode 100644
index 0000000..bc2b89e
--- /dev/null
+++ b/MTP3asp_CNL113337/MTP3asp_CNL113337.tpd
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright Test Competence Center (TCC) ETH 2012
+
+ The copyright to the computer program(s) herein is the property of TCC.
+ The program(s) may be used and/or copied only with the written permission
+ of TCC or in accordance with the terms and conditions stipulated in the
+ agreement/contract under which the program(s) has been supplied.
+
+
+ File: MTP3asp_CNL113337.tpd
+ Description: tpd project file
+ Rev: R11A01
+ Prodnr: CNL 113 337
+ Updated: 2012-11-23
+ Contact: http://ttcn.ericsson.se
+
+ -->
+<TITAN_Project_File_Information version="1.0">
+ <ProjectName>MTP3asp_CNL113337</ProjectName>
+ <ReferencedProjects>
+ <ReferencedProject name="Abstract_Socket_CNL113384" projectLocationURI="../Common_Components/Abstract_Socket_CNL113384/Abstract_Socket_CNL113384.tpd"/>
+ </ReferencedProjects>
+ <Folders>
+ <FolderResource projectRelativePath="doc" relativeURI="doc"/>
+ <FolderResource projectRelativePath="src" relativeURI="src"/>
+ </Folders>
+ <Files>
+ <FileResource projectRelativePath="doc/MTP3asp_CNL113337_FS.pdf" relativeURI="doc/MTP3asp_CNL113337_FS.pdf"/>
+ <FileResource projectRelativePath="doc/MTP3asp_CNL113337_PRI.pdf" relativeURI="doc/MTP3asp_CNL113337_PRI.pdf"/>
+ <FileResource projectRelativePath="doc/MTP3asp_CNL113337_UG.pdf" relativeURI="doc/MTP3asp_CNL113337_UG.pdf"/>
+ <FileResource projectRelativePath="src/MTP3asp_EncDec.cc" relativeURI="src/MTP3asp_EncDec.cc"/>
+ <FileResource projectRelativePath="src/MTP3asp_PT.cc" relativeURI="src/MTP3asp_PT.cc"/>
+ <FileResource projectRelativePath="src/MTP3asp_PT.hh" relativeURI="src/MTP3asp_PT.hh"/>
+ <FileResource projectRelativePath="src/MTP3asp_PortType.ttcn" relativeURI="src/MTP3asp_PortType.ttcn"/>
+ <FileResource projectRelativePath="src/MTP3asp_Types.ttcn" relativeURI="src/MTP3asp_Types.ttcn"/>
+ </Files>
+ <ActiveConfiguration>TARGET_TEST</ActiveConfiguration>
+ <Configurations>
+ <Configuration name="Default">
+ <ProjectProperties>
+ <MakefileSettings>
+ <generateInternalMakefile>true</generateInternalMakefile>
+ <GNUMake>true</GNUMake>
+ <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+ <targetExecutable>bin/MTP3asp_CNL113337</targetExecutable>
+ <preprocessorDefines>
+ <listItem>TARGET_TEST</listItem>
+ </preprocessorDefines>
+ <buildLevel>Level 3 - Creating object files with dependency update</buildLevel>
+ </MakefileSettings>
+ <LocalBuildSettings>
+ <workingDirectory>bin</workingDirectory>
+ </LocalBuildSettings>
+ </ProjectProperties>
+ </Configuration>
+ <Configuration name="TARGET_TEST">
+ <ProjectProperties>
+ <MakefileSettings>
+ <generateInternalMakefile>true</generateInternalMakefile>
+ <GNUMake>true</GNUMake>
+ <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+ <targetExecutable>bin/MTP3asp_CNL113337</targetExecutable>
+ <preprocessorDefines>
+ <listItem>TARGET_TEST</listItem>
+ </preprocessorDefines>
+ <buildLevel>Level 3 - Creating object files with dependency update</buildLevel>
+ </MakefileSettings>
+ <LocalBuildSettings>
+ <workingDirectory>bin</workingDirectory>
+ </LocalBuildSettings>
+ </ProjectProperties>
+ </Configuration>
+ <Configuration name="NO TARGET_TEST">
+ <ProjectProperties>
+ <MakefileSettings>
+ <generateInternalMakefile>true</generateInternalMakefile>
+ <GNUMake>true</GNUMake>
+ <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+ <targetExecutable>bin/MTP3asp_CNL113337</targetExecutable>
+ <buildLevel>Level 3 - Creating object files with dependency update</buildLevel>
+ </MakefileSettings>
+ <LocalBuildSettings>
+ <workingDirectory>bin</workingDirectory>
+ </LocalBuildSettings>
+ </ProjectProperties>
+ </Configuration>
+ </Configurations>
+</TITAN_Project_File_Information>
diff --git a/MTP3asp_CNL113337/demo/MTP3asp_PT.cc b/MTP3asp_CNL113337/demo/MTP3asp_PT.cc
new file mode 100644
index 0000000..37bab8f
--- /dev/null
+++ b/MTP3asp_CNL113337/demo/MTP3asp_PT.cc
@@ -0,0 +1,2952 @@
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Copyright Test Competence Center (TCC) ETH 2012 //
+// //
+// The copyright to the computer program(s) herein is the property of TCC. //
+// The program(s) may be used and/or copied only with the written permission //
+// of TCC or in accordance with the terms and conditions stipulated in the //
+// agreement/contract under which the program(s) have been supplied //
+// //
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: MTP3asp_PT.cc
+// Description: Implementation of port MTP3asp_PT
+// This test port is written to connect TTCN-3 to SEA according
+// to specification ITU-T SS7 MTP3, ANSI, TCC, IETF, MPT
+// Reference: ITU-T Recommendation Q.704, RFC3332
+// Rev: R11A01
+// Prodnr: CNL 113 337
+// Updated: 2012-05-24
+// Contact: http://ttcn.ericsson.se
+
+// IMPORTANT MODIFICATION:
+// mtp3_ttc uses ALWAYS 16 bits long SPCs, regardless of mtp3_ni sio
+
+#include "MTP3asp_PT.hh"
+
+#include "MTP3asp_Types.hh"
+#include "MTP3asp_PortType.hh"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <poll.h>
+#include <errno.h>
+#include <stdarg.h>
+#include <string.h>
+
+
+// Constans for M3UA, see rfc 3332 and 2/1056-FCPW 101 86/P-1
+// Constants for decoding M3UA common headers
+#define M3UA_VER_OFFS 0
+#define M3UA_CLS_OFFS 2
+#define M3UA_TYP_OFFS 3
+#define M3UA_LGT_OFFS 4
+#define M3UA_MSG_OFFS 8
+#define M3UA_MSG_LENGTH_LENGTH 4
+
+// Constants for M3UA protocol
+//Msg classes
+#define M3UA_MSG_CLS_MGMT 0x00
+#define M3UA_MSG_CLS_TRNSFM 0x01
+#define M3UA_MSG_CLS_SSNM 0x02
+#define M3UA_MSG_CLS_ASPSM 0x03
+#define M3UA_MSG_CLS_ASPTM 0x04
+#define M3UA_MSG_CLS_RKM 0x09
+//Msg types
+#define M3UA_MSG_TYP_MGMT_ERR 0x00
+#define M3UA_MSG_TYP_MGMT_NTFY 0x01
+
+#define M3UA_MSG_TYP_TRSNFM_DATA 0x01
+
+#define M3UA_MSG_TYP_SSNM_DUNA 0x01
+#define M3UA_MSG_TYP_SSNM_DAVA 0x02
+#define M3UA_MSG_TYP_SSNM_DAUD 0x03
+#define M3UA_MSG_TYP_SSNM_SCON 0x04
+#define M3UA_MSG_TYP_SSNM_DUPU 0x05
+#define M3UA_MSG_TYP_SSNM_DRST 0x06
+
+#define M3UA_MSG_TYP_ASPSM_ASPUP 0x01
+#define M3UA_MSG_TYP_ASPSM_ASPDN 0x02
+#define M3UA_MSG_TYP_ASPSM_BEAT 0x03
+#define M3UA_MSG_TYP_ASPSM_ASPUPAck 0x04
+#define M3UA_MSG_TYP_ASPSM_ASPDNAck 0x05
+#define M3UA_MSG_TYP_ASPSM_BEATAck 0x06
+
+#define M3UA_MSG_TYP_ASPTM_ASPAC 0x01
+#define M3UA_MSG_TYP_ASPTM_ASPIA 0x02
+#define M3UA_MSG_TYP_ASPTM_ASPACAck 0x03
+#define M3UA_MSG_TYP_ASPTM_ASPIAAck 0x04
+
+#define M3UA_MSG_TYP_RKM_REGREQ 0x01
+#define M3UA_MSG_TYP_RKM_REGRSP 0x02
+#define M3UA_MSG_TYP_RKM_DEREGREQ 0x03
+#define M3UA_MSG_TYP_RKM_DEREGRESP 0x04
+
+//parameters
+//common for all adaptation layer
+#define PAR_PREFIX_COMMON 0x00
+#define PAR_INFO_STR 0x04
+#define PAR_ROUTING_CTX 0x06
+#define PAR_DIAG_INFO 0x07
+#define PAR_HEART_BEAT 0x09
+#define PAR_TRAFFMODE_T 0x0b
+#define PAR_ERROR_CODE 0x0c
+#define PAR_STATUS 0x0d
+#define PAR_ASP_ID 0x11
+#define PAR_AFFECTED_PC 0x12
+#define PAR_CORREL_ID 0x13
+
+//M3UA specific
+#define PAR_PREFIX_M3UA 0x02
+#define PAR_NETW_APP 0x00
+#define PAR_USR_O_CAUSE 0x04
+#define PAR_CNGST_IND 0x05
+#define PAR_CNCRD_IND 0x06
+#define PAR_ROUTING_KEY 0x07
+#define PAR_REG_RSLT 0x08
+#define PAR_DEREG_RSLT 0x09
+#define PAR_LOC_RK_ID 0x0a
+#define PAR_DPC 0x0b
+#define PAR_SI 0x0c
+#define PAR_OPC_LIST 0x0e
+#define PAR_CIRC_RNG 0x0f
+#define PAR_PROT_DATA 0x10
+#define PAR_REG_STAT 0x12
+#define PAR_DEREG_STAT 0x13
+
+// error codes:
+#define PAR_ERRC_IVER 0x01
+#define PAR_ERRC_UNSMC 0x03
+#define PAR_ERRC_UNSMT 0x04
+#define PAR_ERRC_UNTMT 0x05
+#define PAR_ERRC_UNEM 0x06
+#define PAR_ERRC_PERR 0x07
+#define PAR_ERRC_ISI 0x09
+#define PAR_ERRC_RMB 0x0D
+#define PAR_ERRC_ASPIDR 0x0E
+#define PAR_ERRC_IASPID 0x0F
+#define PAR_ERRC_IPARV 0x11
+#define PAR_ERRC_PARFE 0x12
+#define PAR_ERRC_UPAR 0x13
+#define PAR_ERRC_DSU 0x14
+#define PAR_ERRC_INA 0x15
+#define PAR_ERRC_MP 0x16
+#define PAR_ERRC_IRC 0x19
+#define PAR_ERRC_NCFAS 0x1A
+
+
+// --------------------------
+// Basic Test Port functions
+// --------------------------
+using namespace MTP3asp__Types;
+namespace MTP3asp__PortType {
+
+//external functions
+//##########################################################
+
+//f__MTP3__SEA__connect (for MTP3asp_PT)
+BOOLEAN f__MTP3__SEA__connect(MTP3asp__PT& portRef,
+ const CHARSTRING& Hostname,const INTEGER& Port,const CHARSTRING& EntityName,const BOOLEAN& Http)
+{
+ return f__MTP3__SEA__connect__extern(portRef,Hostname,Port,EntityName,Http);
+}
+//------------
+
+//f__MTP3__SEA__disconnect (for MTP3asp_PT)
+BOOLEAN f__MTP3__SEA__disconnect(MTP3asp__PT& portRef)
+{
+ return f__MTP3__SEA__disconnect__extern(portRef);
+}
+//------------
+
+//f__MTP3__SEA__connect__extern
+BOOLEAN f__MTP3__SEA__connect__extern(MTP3asp__PT_PROVIDER& portRef,
+ const CHARSTRING& Hostname,const INTEGER& Port,const CHARSTRING& EntityName,const BOOLEAN& Http)
+{
+#ifndef TARGET_TEST
+ if (portRef.dynamicConnection && (!(portRef.connectionUp)))
+ {
+ delete [] portRef.hostname;
+ int len = strlen(Hostname);
+ portRef.hostname = new char[len + 1];
+ memcpy(portRef.hostname, Hostname, len + 1);
+
+ portRef.httpport = Port;
+
+ delete [] portRef.entityname;
+ len = strlen(EntityName);
+ portRef.entityname = new char[len + 1];
+ memcpy(portRef.entityname, EntityName, len + 1);
+
+ if(Http)
+ portRef.MTP3_open_channel(TRUE);
+ else
+ portRef.MTP3_open_channel(FALSE);
+
+ if(portRef.wait_for_open())
+ {
+ portRef.user_connect();
+ portRef.connectionUp = TRUE;
+ return TRUE;
+ }
+ }
+ else
+#endif
+ portRef.log("Dynamic connection feature is not active or already connected.");
+ return FALSE;
+}
+//------------
+
+//f__MTP3__SEA__disconnect__extern
+BOOLEAN f__MTP3__SEA__disconnect__extern(MTP3asp__PT_PROVIDER& portRef)
+{
+#ifndef TARGET_TEST
+ if (portRef.connectionUp)
+ {
+ portRef.MTP3_close_connection();
+ portRef.connectionUp = FALSE;
+ return TRUE;
+ }
+#endif
+ return FALSE;
+}
+//------------
+
+// Test Port constructor
+MTP3asp__PT_PROVIDER::MTP3asp__PT_PROVIDER(const char *par_port_name)
+ : PORT(par_port_name)
+{
+ MTP_fd=-1;
+ httpport=-1;
+ hostname=NULL;
+ destinationname = NULL;
+ dynamicConnection = FALSE;
+
+ const char *str="b303d76a-266c-11d4-b8f5-08002090d3da";
+ int len = strlen(str);
+ iid_string= new char[len + 1];
+ memcpy(iid_string, str, len + 1);
+
+ entityname=NULL;
+ Filter=Loop=-1;
+ Sut_Pc=Tester_Pc=-1;
+ Ni_is_set = FALSE;
+ MTPServiceType = MTP3itu;
+ M3UA_version = 1;
+ M3UAState = AssocDown; // unnecessary...
+ mtp3_ni=0;
+#ifndef TARGET_TEST
+ user_map_p = &MTP3asp__PT_PROVIDER::MTP3_user_map;
+ user_unmap_p = &MTP3asp__PT_PROVIDER::MTP3_user_unmap;
+ interpreter = &MTP3asp__PT_PROVIDER::MTP3_interpreter;
+#endif
+ forward_pause = FALSE;
+ forward_resume = FALSE;
+ forward_status = FALSE;
+}
+//------------
+
+// Test Port destructor
+MTP3asp__PT_PROVIDER::~MTP3asp__PT_PROVIDER()
+{
+ delete [] hostname;
+ delete [] entityname;
+ delete [] iid_string;
+}
+//------------
+
+// set_parameter
+void MTP3asp__PT_PROVIDER::set_parameter(const char *parameter_name,
+ const char *parameter_value)
+{
+ log("set_parameter: %s = %s",parameter_name,parameter_value);
+ if (!strcmp(parameter_name,"Hostname"))
+ {
+ delete [] hostname;
+ int len = strlen(parameter_value);
+ hostname = new char[len + 1];
+ memcpy(hostname, parameter_value, len + 1);
+ }
+ else if (!strcmp(parameter_name, "HttpPort"))
+ {
+ httpport = atoi(parameter_value);
+ }
+ else if (!strcmp(parameter_name,"EntityName"))
+ {
+ delete [] entityname;
+ int len = strlen(parameter_value);
+ entityname= new char[len + 1];
+ memcpy(entityname, parameter_value, len + 1);
+ }
+ else if (!strcmp(parameter_name,"DestinationName"))
+ {
+ delete [] destinationname;
+ int len = strlen(parameter_value);
+ destinationname= new char[len + 1];
+ memcpy(destinationname, parameter_value, len + 1);
+ }
+ else if (!strcmp(parameter_name,"Filter"))
+ {
+ if (!strcmp(parameter_value,"ON")) Filter = MTP3_ON;
+ else Filter = MTP3_OFF;
+ }
+ else if (!strcmp(parameter_name,"Loop"))
+ {
+ if (!strcmp(parameter_value,"ON")) Loop = MTP3_ON;
+ else Loop = MTP3_OFF;
+ }
+ else if (!strcmp(parameter_name,"NI"))
+ {
+ Ni_is_set = TRUE;
+ mtp3_ni = atoi(parameter_value);
+ debuglog("Network indicator is set to %i",mtp3_ni);
+ }
+ else if (!strcmp(parameter_name,"SUT_Pc"))
+ {
+ Sut_Pc = atoi(parameter_value);
+ }
+ else if (!strcmp(parameter_name,"TESTER_Pc"))
+ {
+ Tester_Pc = atoi(parameter_value);
+ }
+ else if (!strcmp(parameter_name,"M3UA_version"))
+ {
+ M3UA_version = atoi(parameter_value);
+ debuglog("%d",M3UA_version);
+ }
+#ifndef TARGET_TEST
+ else if (!strcmp(parameter_name,"DynamicConnection"))
+ {
+ if (!strcasecmp(parameter_value,"ON"))
+ {
+ dynamicConnection = TRUE;
+ }
+ }
+#endif
+ else if (!strcmp(parameter_name,"MTP3ServiceType"))
+ {
+ if (!strcmp(parameter_value,"TargetM3UA"))
+ {
+#ifndef TARGET_TEST
+ error("TargetM3UA not supported, since TARGET_TEST not in Makefile");
+#else
+ log("MTP3ServiceType is set to TargetM3UA");
+ user_map_p = &MTP3asp__PT_PROVIDER::Target_user_map;
+ user_unmap_p = &MTP3asp__PT_PROVIDER::Target_user_unmap;
+ MTPServiceType = TargetM3UA;
+#endif
+ }
+ else if (!strcmp(parameter_value,"TargetSTC"))
+ {
+#ifndef TARGET_TEST
+ error("TargetSTC not supported, since TARGET_TEST not in Makefile");
+#else
+ log("MTP3ServiceType is set to TargetSTC");
+ user_map_p = &MTP3asp__PT_PROVIDER::TargetSTC_user_map;
+ user_unmap_p = &MTP3asp__PT_PROVIDER::Target_user_unmap; //Same as by Target M3UA
+ MTPServiceType = TargetSTC;
+#endif
+ }
+#ifndef TARGET_TEST
+ else if (!strcmp(parameter_value,"M3UA"))
+ { //M3UA
+ log("MTP3ServiceType is set to M3UA");
+ interpreter = &MTP3asp__PT_PROVIDER::M3UA_interpreter;
+ user_map_p = &MTP3asp__PT_PROVIDER::M3UA_user_map;
+ user_connect_p = &MTP3asp__PT_PROVIDER::M3UA_user_connect;
+ user_unmap_p = &MTP3asp__PT_PROVIDER::M3UA_user_unmap;
+ MTPServiceType = M3UA;
+ }
+ else if (!strcmp(parameter_value,"MTP3itu"))
+ {
+ log("MTP3ServiceType is set to MTP3itu");
+ interpreter = &MTP3asp__PT_PROVIDER::MTP3_interpreter;
+ user_map_p = &MTP3asp__PT_PROVIDER::MTP3_user_map;
+ user_connect_p = &MTP3asp__PT_PROVIDER::MTP3_user_connect;
+ user_unmap_p = &MTP3asp__PT_PROVIDER::MTP3_user_unmap;
+ MTPServiceType = MTP3itu;
+ }
+ else if ( !strcmp(parameter_value,"MTP3ansi"))
+ {
+ log("MTP3ServiceType is set to MTP3ansi");
+ interpreter = &MTP3asp__PT_PROVIDER::MTP3_interpreter;
+ user_map_p = &MTP3asp__PT_PROVIDER::MTP3_user_map;
+ user_connect_p = &MTP3asp__PT_PROVIDER::MTP3_user_connect;
+ user_unmap_p = &MTP3asp__PT_PROVIDER::MTP3_user_unmap;
+ MTPServiceType = MTP3ansi;
+ }
+ else if ( !strcmp(parameter_value,"MTP3ttc"))
+ {
+ log("MTP3ServiceType is set to MTP3ttc");
+ interpreter = &MTP3asp__PT_PROVIDER::MTP3_interpreter;
+ user_map_p = &MTP3asp__PT_PROVIDER::MTP3_user_map;
+ user_connect_p = &MTP3asp__PT_PROVIDER::MTP3_user_connect;
+ user_unmap_p = &MTP3asp__PT_PROVIDER::MTP3_user_unmap;
+ MTPServiceType = MTP3ttc;
+ }
+ else if ( !strcmp(parameter_value,"MTP3mpt"))
+ {
+ log("MTP3ServiceType is set to MTP3mpt");
+ interpreter = &MTP3asp__PT_PROVIDER::MTP3_interpreter;
+ user_map_p = &MTP3asp__PT_PROVIDER::MTP3_user_map;
+ user_connect_p = &MTP3asp__PT_PROVIDER::MTP3_user_connect;
+ user_unmap_p = &MTP3asp__PT_PROVIDER::MTP3_user_unmap;
+ MTPServiceType = MTP3mpt;
+ }
+ else if ( !strcmp(parameter_value,"MTP3bttc"))
+ {
+ log("MTP3ServiceType is set to MTP3bttc");
+ interpreter = &MTP3asp__PT_PROVIDER::MTP3_interpreter;
+ user_map_p = &MTP3asp__PT_PROVIDER::MTP3_user_map;
+ user_connect_p = &MTP3asp__PT_PROVIDER::MTP3_user_connect;
+ user_unmap_p = &MTP3asp__PT_PROVIDER::MTP3_user_unmap;
+ MTPServiceType = MTP3bttc;
+ }
+ else if ( !strcmp(parameter_value,"MTP3iup"))
+ {
+ log("MTP3ServiceType is set to MTP3iup");
+ interpreter = &MTP3asp__PT_PROVIDER::MTP3_interpreter;
+ user_map_p = &MTP3asp__PT_PROVIDER::MTP3_user_map;
+ user_connect_p = &MTP3asp__PT_PROVIDER::MTP3_user_connect;
+ user_unmap_p = &MTP3asp__PT_PROVIDER::MTP3_user_unmap;
+ MTPServiceType = MTP3iup;
+ }
+ else if ( !strcmp(parameter_value,"STC"))
+ {
+ log("MTP3ServiceType is set to STC");
+ interpreter = &MTP3asp__PT_PROVIDER::STC_interpreter;
+ user_map_p = &MTP3asp__PT_PROVIDER::STC_user_map;
+ user_connect_p = &MTP3asp__PT_PROVIDER::STC_user_connect;
+ user_unmap_p = &MTP3asp__PT_PROVIDER::STC_user_unmap;
+ MTPServiceType = STC;
+ }
+#endif
+ else
+ {
+ log("Unsupported MTP3ServiceType: %s, falling back to MTP3itu",
+ parameter_value);
+ }
+ }
+ else if(strcasecmp(parameter_name, "forward_pause") == 0)
+ {
+ if (strcasecmp(parameter_value,"forward") == 0)
+ forward_pause = TRUE;
+ else if(strcasecmp(parameter_value,"ignore") == 0)
+ forward_pause = FALSE;
+ else
+ error("set_parameter(): Invalid parameter value: %s for parameter %s. Only forward and ignore can be used!" ,
+ parameter_value, parameter_name);
+ }
+ else if(strcasecmp(parameter_name, "forward_resume") == 0)
+ {
+ if (strcasecmp(parameter_value,"forward") == 0)
+ forward_resume = TRUE;
+ else if(strcasecmp(parameter_value,"ignore") == 0)
+ forward_resume = FALSE;
+ else
+ error("set_parameter(): Invalid parameter value: %s for parameter %s. Only forward and ignore can be used!" ,
+ parameter_value, parameter_name);
+ }
+ else if(strcasecmp(parameter_name, "forward_status") == 0)
+ {
+ if (strcasecmp(parameter_value,"forward") == 0)
+ forward_status = TRUE;
+ else if(strcasecmp(parameter_value,"ignore") == 0)
+ forward_status = FALSE;
+ else
+ error("set_parameter(): Invalid parameter value: %s for parameter %s. Only forward and ignore can be used!" ,
+ parameter_value, parameter_name);
+ }
+ else
+#ifdef TARGET_TEST
+ if(!parameter_set(parameter_name ,parameter_value)) //TCP parameters
+#endif
+ log("Unsupported parameter: %s", parameter_name);
+}
+//------------
+
+// User map
+void MTP3asp__PT_PROVIDER::user_map(const char *system_port)
+{
+ if (user_map_p == NULL)
+ error("Parameter MTP3ServiceType should be set to TargetM3UA in TARGET_TEST mode!");
+
+ (this->*user_map_p)(system_port);
+}
+//------------
+
+// User unmap
+void MTP3asp__PT_PROVIDER::user_unmap(const char *system_port)
+{
+ (this->*user_unmap_p)(system_port);
+}
+//------------
+
+#ifndef TARGET_TEST
+// User connect
+void MTP3asp__PT_PROVIDER::user_connect()
+{
+ (this->*user_connect_p)();
+}
+//------------
+#endif
+
+//User start
+void MTP3asp__PT_PROVIDER::user_start()
+{ debuglog("user start ordered");
+}
+//------------
+
+//User stop
+void MTP3asp__PT_PROVIDER::user_stop()
+{ debuglog("User stop ordered");
+}
+//------------
+
+//Event Handler
+void MTP3asp__PT_PROVIDER::Handle_Fd_Event(int fd,
+ boolean is_readable, boolean is_writable, boolean is_error)
+{
+ if (MTPServiceType == TargetM3UA )
+ {
+#ifdef TARGET_TEST
+ //In case of target Abstract Socket handles the received message
+ Handle_Socket_Event(fd, is_readable, is_writable, is_error);
+#endif
+ }
+#ifndef TARGET_TEST
+ else
+ {
+ int result;
+
+ result = MPH_ProcessConnection(myConnection);
+
+ if (result <= 0)
+ {
+ MPH_CloseConnection(myConnection);
+ if (result == 0) log("Connection closed by peer.");
+ else log("Error in incoming message.");
+ }
+ }
+#endif
+}
+
+void MTP3asp__PT_PROVIDER::Handle_Timeout(double time_since_last_call)
+{
+#ifdef TARGET_TEST
+ Handle_Timeout_Event(time_since_last_call);
+#endif
+}
+//------------
+
+//Outgoing send
+void MTP3asp__PT_PROVIDER::outgoing_send(const ASP__MTP3__TRANSFERreq& send_par)
+{
+ MTP3__Field__sio sio_field = send_par.sio();
+#ifndef TARGET_TEST
+ int si=bit2int(sio_field.si());
+#endif
+
+ OCTETSTRING sio_oct = bit2oct(sio_field.ni()+sio_field.prio()+sio_field.si());
+ OCTETSTRING bttc_oct = int2oct(stored_bttc_octet, 1); // additional octet for MTP3bttc
+
+ //Message sending by testing on Target
+ if (MTPServiceType == TargetM3UA)
+ {
+#ifdef TARGET_TEST
+ OCTETSTRING tcpData = int2oct(1,1); //Message type
+ tcpData = tcpData + int2oct(send_par.data().lengthof()+15,4); //Length
+ tcpData = tcpData + sio_oct;
+ tcpData = tcpData + int2oct(send_par.opc(),4);
+ tcpData = tcpData + int2oct(send_par.dpc(),4);
+ tcpData = tcpData + int2oct(send_par.sls(),1);
+ tcpData = tcpData + send_par.data();
+ send_outgoing((const unsigned char*)tcpData,tcpData.lengthof());
+
+ TTCN_Logger::begin_event(TTCN_DEBUG);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): ", get_name());
+ TTCN_Logger::log_event_str("Transfer Req message sent: ");
+ tcpData.log();
+ TTCN_Logger::end_event();
+#endif
+ return;
+ }
+ //Message sending by testing on Target
+ if (MTPServiceType == TargetSTC)
+ {
+#ifdef TARGET_TEST
+ OCTETSTRING tcpData = int2oct(1,1); //Message type
+ tcpData = tcpData + int2oct(send_par.data().lengthof()+15,4); //Length
+ tcpData = tcpData + int2oct(0,1);
+ tcpData = tcpData + int2oct(0,4);
+ tcpData = tcpData + int2oct(0,4);
+ tcpData = tcpData + int2oct(0,1);
+ tcpData = tcpData + send_par.data();
+ send_outgoing((const unsigned char*)tcpData,tcpData.lengthof());
+
+ TTCN_Logger::begin_event(TTCN_DEBUG);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): ", get_name());
+ TTCN_Logger::log_event_str("Transfer Req (STC) message sent: ");
+ tcpData.log();
+ TTCN_Logger::end_event();
+#endif
+ return;
+ }
+#ifndef TARGET_TEST
+ if (dynamicConnection &&(!connectionUp))
+ {
+ warn("Connection was not activated via function f_M3UA_SEA_connect.");
+ return;
+ }
+
+ unsigned int offset;
+ int MSU_length = send_par.data().lengthof();
+ int M3UA_par_length;
+ int length;
+ int labellen; // sio+routinglabel length
+
+ switch ( MTPServiceType)
+ {
+ case STC:
+ length = MSU_length;
+ memcpy(buffer, send_par.data(), send_par.data().lengthof());
+ break;
+ case MTP3iup:
+ if(si==4)
+ {
+ offset = 0;
+ labellen=6; //ITU-T:sio(1byte) + standard telephony label(5byte)
+ length = MSU_length+labellen;
+ buffer[0] = *((const unsigned char*)sio_oct);
+ SetPointCodesIUP(send_par.sls(), send_par.opc(), send_par.dpc(),
+ buffer + offset + 1);
+ memcpy(buffer + offset + labellen, send_par.data(), send_par.data().lengthof());
+ }
+ else
+ {
+ offset = 0;
+ labellen=5; //ITU-T:sio(1byte) + routing label(4byte) see /Q.704/15.4.1
+ length = MSU_length + labellen; //SIF+SIO ;
+ //append MTP3 MSU
+ buffer[offset] = *((const unsigned char*)sio_oct);
+ SetPointCodes(send_par.sls(), send_par.opc(), send_par.dpc(),
+ buffer + offset + 1);
+ memcpy(buffer + offset + labellen, send_par.data(), send_par.data().lengthof());
+ }
+ break;
+ case MTP3itu:
+ offset = 0;
+ labellen=5; //ITU-T:sio(1byte) + routing label(4byte) see /Q.704/15.4.1
+ length = MSU_length + labellen; //SIF+SIO ;
+ //append MTP3 MSU
+ buffer[offset] = *((const unsigned char*)sio_oct);
+ SetPointCodes(send_par.sls(), send_par.opc(), send_par.dpc(),
+ buffer + offset + 1);
+ memcpy(buffer + offset + labellen, send_par.data(), send_par.data().lengthof());
+ break;
+ case MTP3ansi:
+ offset = 0;
+ labellen=8; //ANSI: sio(1byte) +routing label(7byte) see T1.111.4
+ length = MSU_length + labellen; //SIF+SIO ;
+ //append MTP3 MSU
+ buffer[offset] = *((const unsigned char*)sio_oct);
+ SetPointCodes(send_par.sls(), send_par.opc(), send_par.dpc(),
+ buffer + offset + 1);
+ memcpy(buffer + offset + labellen, send_par.data(), send_par.data().lengthof());
+ break;
+ case MTP3ttc:
+ offset = 0;
+ //if (mtp3_ni==0){ labellen=5;}
+ //else {
+ labellen=6;
+ //} //TTC: sio(1byte) +routing label(6byte) see ...
+ length = MSU_length + labellen; //SIF+SIO ;
+ //append MTP3 MSU
+ buffer[offset] = *((const unsigned char*)sio_oct);
+ SetPointCodes(send_par.sls(), send_par.opc(), send_par.dpc(),
+ buffer + offset + 1);
+ memcpy(buffer + offset + labellen, send_par.data(), send_par.data().lengthof());
+ break;
+ case MTP3bttc:
+ offset = 0;
+ buffer[offset] = *((const unsigned char*)bttc_oct);
+ offset += 1;
+ labellen=7; //routing label(7byte)
+ length = 1 + MSU_length + labellen; //SIF+SIO ;
+ //append MTP3 MSU
+ buffer[offset] = *((const unsigned char*)sio_oct);
+ SetPointCodes(send_par.sls(), send_par.opc(), send_par.dpc(),
+ buffer + offset + 1);
+ memcpy(buffer + offset + labellen, send_par.data(), send_par.data().lengthof());
+ break;
+ case MTP3mpt:
+ offset = 0;
+ if (mtp3_ni==2)
+ { labellen=8;} //MPT national: sio(1byte) +routing label(7byte)
+ else
+ { labellen=5;} //MPT international: sio(1byte) +routing label(4byte)
+ length = MSU_length + labellen; //SIF+SIO ;
+ //append MTP3 MSU
+ buffer[offset] = *((const unsigned char*)sio_oct);
+ SetPointCodes(send_par.sls(), send_par.opc(), send_par.dpc(),
+ buffer + offset + 1);
+ memcpy(buffer + offset + labellen,
+ send_par.data(), send_par.data().lengthof());
+ break;
+ case M3UA :
+ TTCN_Logger::begin_event(TTCN_DEBUG);
+ TTCN_Logger::log_event("MTP3 test port debug: Message to be encoded is: {");
+ send_par.data().log();
+ TTCN_Logger::log_event(" ");
+ if( M3UAState != AssocActive )
+ {
+ TTCN_Logger::log_event(" M3UAState is not ready to send data. Its state code: %d",AssocActive);
+ TTCN_Logger::log_event("}");
+ TTCN_Logger::end_event();
+ return;
+ }
+ //calculating lengths
+ M3UA_par_length = MSU_length + 16; // ProtocolData parameter
+ // header length=16 <== see f
+ TTCN_Logger::log_event(", Adjusted M3UA_par_length to %d to support 16 octets M3UA param header",M3UA_par_length);
+ length = 8 + M3UA_par_length; //msg length = header+par
+ TTCN_Logger::log_event(", M3UA MSU_length is %d ==> there should be %d padding octets", MSU_length, 4-(MSU_length%4));
+ if (MSU_length%4) { //should be padded to be multiple of 4 octets
+ length += 4 - (MSU_length%4); //padding shall be counted in msg
+ //length, but not in par_length
+ }
+ TTCN_Logger::log_event(", Set msg length (which includes 8 octets M3UA hdr) to %d ",length);
+
+ //filling the first part of the buffer
+ //common msg hdr ======================================
+ buffer[0] = M3UA_version;
+ buffer[1] = 0x00; //spare
+ buffer[2] = M3UA_MSG_CLS_TRNSFM; // msg class
+ buffer[3] = M3UA_MSG_TYP_TRSNFM_DATA; // msg type
+ encode_32b_int(buffer+4, length); //msg length, 4 bytes
+ //ProtocolData parameter header=========================
+ //tag
+ buffer[M3UA_MSG_OFFS] = PAR_PREFIX_M3UA; //par. tag 1st octet
+ buffer[M3UA_MSG_OFFS+1] = PAR_PROT_DATA; // par tag 2nd octet
+ //length, NOTE: should not contain the padding bytes!
+ encode_16b_int(buffer+M3UA_MSG_OFFS+2,M3UA_par_length);
+ //OPC,DPC
+ encode_32b_int(buffer+M3UA_MSG_OFFS+4,send_par.opc());
+ encode_32b_int(buffer+M3UA_MSG_OFFS+8,send_par.dpc());
+ //SI, NI, MP, SLS
+ buffer[M3UA_MSG_OFFS+12] = bit2int(sio_field.si()); // SI LSb aligned
+ buffer[M3UA_MSG_OFFS+13] = bit2int(sio_field.ni()); // NI LSb aligned
+ buffer[M3UA_MSG_OFFS+14] = bit2int(sio_field.prio()); //MP LSb
+ //aligned
+ buffer[M3UA_MSG_OFFS+15] = 0xFF & send_par.sls(); //SLS
+ // finally the MTP3 MSU itself....
+ offset = M3UA_MSG_OFFS + 16;
+ TTCN_Logger::log_event(", buffer offset is now set to %d", offset);
+ TTCN_Logger::log_event("}");
+ TTCN_Logger::end_event();
+ //append MTP3 MSU
+ memcpy(buffer + offset, send_par.data(), send_par.data().lengthof());
+
+ //padding
+ for (int ii = 0; ii< (MSU_length%4); ++ii) buffer[offset+MSU_length+ii]= 0x00;
+ break;
+ default:
+ error("Invalid MTP3ServiceType setting!");
+ }
+ if (TTCN_Logger::log_this_event(TTCN_DEBUG))
+ {
+ TTCN_Logger::begin_event(TTCN_DEBUG);
+ TTCN_Logger::log_event("The encoded buffer is: {");
+ OCTETSTRING(length, buffer).log();
+ TTCN_Logger::log_event("}");
+ TTCN_Logger::end_event();
+ }
+ send_msg(buffer, length);
+#endif
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::log(const char *msg, ...)
+{
+ TTCN_Logger::begin_event(TTCN_PORTEVENT);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): ", get_name());
+ va_list ap;
+ va_start(ap, msg);
+ TTCN_Logger::log_event_va_list(msg, ap);
+ va_end(ap);
+ TTCN_Logger::end_event();
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::warn(const char *msg, ...)
+{
+ TTCN_Logger::begin_event(TTCN_WARNING);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): ", get_name());
+ va_list ap;
+ va_start(ap, msg);
+ TTCN_Logger::log_event_va_list(msg, ap);
+ va_end(ap);
+ TTCN_Logger::end_event();
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::debuglog(const char *msg, ...)
+{
+ TTCN_Logger::begin_event(TTCN_DEBUG);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): ", get_name());
+ va_list ap;
+ va_start(ap, msg);
+ TTCN_Logger::log_event_va_list(msg, ap);
+ va_end(ap);
+ TTCN_Logger::end_event();
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::error(const char *msg, ...)
+{
+ TTCN_Logger::begin_event(TTCN_ERROR);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): ", get_name());
+ va_list ap;
+ va_start(ap, msg);
+ TTCN_Logger::log_event_va_list(msg, ap);
+ va_end(ap);
+ TTCN_Logger::end_event();
+ TTCN_error("Fatal error in MTP3 Test Port %s.", get_name());
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::close_log_event()
+{
+ TTCN_Logger::log_event("}");
+ TTCN_Logger::end_event();
+}
+//------------
+
+
+#ifndef TARGET_TEST
+// --------------------------------------------
+// Functions and definitions for test with SEA
+// --------------------------------------------
+
+// Functions of MPH toolkit
+// ---------------------------
+void connectCallback(CONNECTION* con, int channel, void *clientData)
+{
+ ((MTP3asp__PT_PROVIDER *)clientData)->log("Opening channel succeeded "
+ "(channel number is %u)", channel);
+ ((MTP3asp__PT_PROVIDER *)clientData)->set_channel(channel);
+ if(((MTP3asp__PT_PROVIDER *)clientData)->dynamicConnection)
+ ((MTP3asp__PT_PROVIDER *)clientData)->conn_state = 1;
+}
+
+void messageCallback(CONNECTION* con, int channel, int length,
+ unsigned char *msg, void *clientData)
+{
+ ((MTP3asp__PT_PROVIDER *)clientData)->log("Incoming message from channel: %d",channel);
+ ((MTP3asp__PT_PROVIDER *)clientData)->doInterpret(msg,length,channel,con);
+}
+
+void closeCallback(CONNECTION* con, int channel, void *clientData)
+{
+ ((MTP3asp__PT_PROVIDER *)clientData)->log("Closed channel: %d", channel);
+}
+
+void errorCallback(CONNECTION* con, char *name, char *errorMessage,
+ void *clientData)
+{
+ if(((MTP3asp__PT_PROVIDER *)clientData)->dynamicConnection)
+ {
+ ((MTP3asp__PT_PROVIDER *)clientData)->log("Opening channel %s failed: %s", name, errorMessage);
+ ((MTP3asp__PT_PROVIDER *)clientData)->conn_state = 2;
+ }
+ else
+ ((MTP3asp__PT_PROVIDER *)clientData)->error("Opening channel %s failed: %s",
+ name, errorMessage);
+}
+//------------
+
+//MTP3_open_channel
+void MTP3asp__PT_PROVIDER::MTP3_open_channel(boolean http)
+{
+ int result;
+ int Mphport;
+ char *perrorString;
+ if( Loop == MTP3_ON )
+ {
+ MTP_fd=-1;
+ myConnection = NULL;
+ log("MTP3_open_channel finished for LOOP");
+ return;
+ }
+
+ if(http)
+ {
+ Mphport = MPH_GetMphPort(hostname,httpport,&perrorString);
+ }
+ else
+ {
+ Mphport = httpport;
+ }
+
+ if (Mphport == -1)
+ error("GetMphPort failed: %s", *perrorString);
+
+ result = MPH_StringToIid(iid_string, &iid);
+ if (result == -1)
+ error("Converting %s to MPH_IID failed.", iid_string);
+
+ myConnection = MPH_OpenConnection(hostname, Mphport);
+ if (myConnection == NULL)
+ error("Opening connection to %s:%d failed.", hostname, Mphport);
+
+ MPH_OpenChannel(myConnection,
+ entityname,
+ &iid,
+ connectCallback,
+ messageCallback,
+ closeCallback,
+ errorCallback,
+ this);
+
+ MTP_fd = MPH_GetConnectionFd(myConnection);
+ if (MTP_fd != -1)
+ Handler_Add_Fd_Read(MTP_fd);
+ else
+ error("Incorrect file descriptor: %d.", MTP_fd);
+}
+//------------
+
+// MTP3_close_connection
+void MTP3asp__PT_PROVIDER::MTP3_close_connection()
+{
+ MPH_CloseConnection(myConnection);
+ Handler_Remove_Fd_Read(MTP_fd);
+ close( MTP_fd );
+ //Uninstall_Handler(); // Unnecessary if only socket MTP_fd is in use
+}
+//------------
+
+// wait_for_open
+boolean MTP3asp__PT_PROVIDER::wait_for_open()
+{
+ conn_state = 0;
+ while(conn_state==0)
+ {
+ pollfd pollFd = { MTP_fd, POLLIN, 0 };
+ int nEvents = poll(&pollFd, 1, 3000 /* ms */);
+ if (nEvents == 0) {
+ log("MPH channel opening time out");
+ return FALSE;
+ }
+ if (nEvents < 0 || (pollFd.revents & (POLLIN | POLLHUP)) == 0) {
+ log("MPH channel opening error (%d)", (nEvents < 0) ? errno : 0);
+ return FALSE;
+ }
+ Handle_Fd_Event(MTP_fd, TRUE, FALSE, FALSE);
+ }
+ if(conn_state == 1) //connectCallback received
+ {
+ conn_state = 0;
+ return TRUE;
+ }
+ else //errorCallback received
+ {
+ conn_state = 0;
+ return FALSE;
+ }
+}
+//------------
+
+//send msg
+void MTP3asp__PT_PROVIDER::send_msg(unsigned char *outbuff, int length)
+{
+ OCTETSTRING buff(length,outbuff);
+ TTCN_Logger::begin_event(TTCN_DEBUG);
+ TTCN_Logger::log_event("MTP3/M3UA Test Port (%s): {", get_name());
+ TTCN_Logger::log_event("outgoing buffer= ");
+ buff.log();
+ TTCN_Logger::log_event("}");
+ TTCN_Logger::end_event();
+ if (Loop == MTP3_ON)
+ {
+ log("Message looped back");
+ doInterpret(outbuff, length, channel, myConnection);
+ } else
+ {
+ MPH_SendMessage(myConnection,channel,length,outbuff);
+ log("Message sent on channel %d", channel);
+ }
+}
+//------------
+
+//Check TestPortVariables
+void MTP3asp__PT_PROVIDER::Check_TestPort_Variables()
+{
+ if(!dynamicConnection)
+ {
+ if (httpport==-1) error("Parameter HttpPort is not set.");
+ if (hostname==NULL) error("Parameter Hostname is not set.");
+ if (entityname==NULL) error("Parameter EntityName is not set.");
+ }
+ if (Filter==-1) error("Parameter Filter is not set.");
+ if (Loop==-1) error("Parameter Loop is not set.");
+ if (Sut_Pc==-1) error("Parameter SUT_Pc is not set.");
+ if (Tester_Pc==-1) error("Parameter TESTER_Pc is not set.");
+ if (!Ni_is_set) error("Parameter NI is not set.");
+}
+//------------
+
+// -------------------------------------------------
+// STC Functions and definitions for test with SEA
+// -------------------------------------------------
+void MTP3asp__PT_PROVIDER::Check_TestPort_Variables_STC()
+{
+ if(!dynamicConnection)
+ {
+ if (httpport==-1) error("Parameter HttpPort is not set.");
+ if (hostname==NULL) error("Parameter Hostname is not set.");
+ if (entityname==NULL) error("Parameter EntityName is not set.");
+ }
+}
+//------------
+
+//STC user map
+void MTP3asp__PT_PROVIDER::STC_user_map(const char *system_port)
+{
+ debuglog("Function STC_user_map started");
+ Check_TestPort_Variables_STC();
+ if(dynamicConnection)
+ {
+ connectionUp = FALSE;
+ }
+ else
+ {
+ MTP3_open_channel(TRUE);
+ STC_user_connect();
+ }
+}
+//------------
+
+//STC user connect
+void MTP3asp__PT_PROVIDER::STC_user_connect()
+{
+}
+
+//STC user unmap
+void MTP3asp__PT_PROVIDER::STC_user_unmap(const char *system_port)
+{
+ MTP3_close_connection();
+ dynamicConnection = FALSE;
+}
+//------------
+
+//STC interpreter
+void MTP3asp__PT_PROVIDER::STC_interpreter(unsigned char* inbuffer,int length,int from_channel,CONNECTION* con)
+{
+ if ((length==0) || (inbuffer==NULL))
+ {
+ log("0 byte long message received -> packet dropped.");
+ return;
+ }
+
+ if (length==1)
+ {
+ log("1 byte long internal SEA message received -> packet dropped.");
+ return;
+ }
+
+ if ( !strcmp((const char*)inbuffer,"start") )
+ {
+ log("start message received from SEA");
+ return;
+ }
+ else if (!strcmp((const char*)inbuffer,"stop"))
+ {
+ log("stop message received from SEA");
+ return;
+ }
+
+ // writing out the contents of the buffer
+ OCTETSTRING buff(length,inbuffer);
+ TTCN_Logger::begin_event(TTCN_PORTEVENT);
+ TTCN_Logger::log_event("incoming buffer: ");
+ buff.log();
+ TTCN_Logger::end_event();
+
+ ASP__MTP3__TRANSFERind recv_msg;
+ MTP3__Field__sio recv_sio;
+ recv_sio.ni()= int2bit(0,2);
+ recv_sio.prio()= int2bit(0,2);
+ recv_sio.si()= int2bit(0,4);
+ recv_msg.sio() = recv_sio;
+ recv_msg.sls() = 0;
+ recv_msg.opc() = 0;
+ recv_msg.dpc() = 0;
+ recv_msg.data() = OCTETSTRING(length, &inbuffer[0]);
+ incoming_message( recv_msg );
+}
+
+// -------------------------------------------------
+// MTP3 Functions and definitions for test with SEA
+// -------------------------------------------------
+
+// SLTM messages for MTP3
+// -----------------------
+unsigned char ttcn_in_sltm[] = {
+ 'T','T','C','N','-','3',' ','E','x','e','c','u','t','o','r'};
+
+const int sizeof_ttcn_in_sltm=15;
+
+// ITU:
+unsigned char sltm_msg_itu[] =
+{
+ 0x1, //SIO /'test & maint' see Q.704 /14.2.1 => 0x81 suggested !!!
+ 0x0, 0x0, 0x0, 0x0, //4 bytes for label (dpc, opc,sls)
+ 0x11, //Heading code ITU, see Q.707/5.4
+ 0xF0, //spare+Length of the following string:
+ 'T', 'T', 'C', 'N', '-', '3', ' ', 'E', 'x', 'e', 'c', 'u', 't', 'o', 'r'
+};
+const int sizeof_sltm_msg_itu=7+15;
+
+// ANSI:
+unsigned char sltm_msg_ansi[]=
+{
+ 0xB1, //SIO
+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0, // 7 bytes for label
+ 0x11, // Heading Code ANSI T1.111.7-2001
+ 0xF0, // SLC(is 0 OK???)+Length in bytes of the following string:
+ 'T', 'T', 'C', 'N', '-', '3', ' ', 'E', 'x', 'e', 'c', 'u', 't', 'o', 'r'
+};
+const int sizeof_sltm_ansi=10+15;
+
+// TTC:
+unsigned char sltm_msg_ttc_national[]=
+{
+ 0x81, //SIO
+ 0x0,0x0,0x0,0x0,0x0,0x0, // 6 bytes for label TO BE CONT!!!
+ 0x11, // Heading Code
+ 0xF0, // SLC(is 0 OK???)+Length in bytes of the following string:
+ 'T', 'T', 'C', 'N', '-', '3', ' ', 'E', 'x', 'e', 'c', 'u', 't', 'o', 'r'
+};
+const int sizeof_sltm_msg_ttc_national=9+15;
+
+// BTTC:
+unsigned char sltm_msg_bttc_national[]=
+{
+ 0x0, // extra octet, ignored
+ 0x81, //SIO
+ 0x0,0x0,0x0,0x0,0x0,0x0, // 6 bytes for label TO BE CONT!!!
+ 0x23, // Heading Code
+ 'T', 'T'
+};
+const int sizeof_sltm_msg_bttc_national=1+8+2;
+
+// MPT:
+unsigned char sltm_msg_mpt_national[]=
+{
+ 0x81, //SIO
+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0, // 7 bytes for label
+ 0x11, // Heading Code
+ 0xF0, // SLC(is 0 OK???)+Length in bytes of the following string:
+ 'T', 'T', 'C', 'N', '-', '3', ' ', 'E', 'x', 'e', 'c', 'u', 't', 'o', 'r'
+};
+const int sizeof_sltm_msg_mpt_national=10+15;
+//------------
+
+
+// coder functions for MTP3
+// -------------------------
+// unsigned int<-> unsigned char array
+// Integer encode/decode functions that will encode/decode from/to
+// Result: Least Significant Byte first (in lowest address) = LSB = Little Endian
+void MTP3asp__PT_PROVIDER::encode_56bLSB_int(unsigned char *to, unsigned long long int from)
+{
+ to[0] = from & 0xFF;
+ from >>= 8;
+ to[1] = from & 0xFF;
+ from >>= 8;
+ to[2] = from & 0xFF;
+ from >>= 8;
+ to[3] = from & 0xFF;
+ from >>= 8;
+ to[4] = from & 0xFF;
+ from >>= 8;
+ to[5] = from & 0xFF;
+ from >>= 8;
+ to[6] = from & 0xFF;
+}
+//------------
+
+unsigned long long int MTP3asp__PT_PROVIDER::decode_56bLSB_int(const unsigned char *from)
+{
+ typedef unsigned long long int ull;
+ return ((ull) from[0]) |
+ ((ull) from[1] <<8)|
+ ((ull) from[2] << 16)|
+ ((ull) from[3] << 24)|
+ ((ull) from[4] << 32)|
+ ((ull) from[5] << 40)|
+ ((ull) from[6] << 48);
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::encode_48bLSB_int(unsigned char *to, unsigned long long int from)
+{
+ to[0] = from & 0xFF;
+ from >>= 8;
+ to[1] = from & 0xFF;
+ from >>= 8;
+ to[2] = from & 0xFF;
+ from >>= 8;
+ to[3] = from & 0xFF;
+ from >>= 8;
+ to[4] = from & 0xFF;
+ from >>= 8;
+ to[5] = from & 0xFF;
+}
+//------------
+
+unsigned long long int MTP3asp__PT_PROVIDER::decode_48bLSB_int(const unsigned char *from)
+{
+ typedef unsigned long long int ull;
+ return ((ull) from[0]) |
+ ((ull) from[1] <<8)|
+ ((ull) from[2] << 16)|
+ ((ull) from[3] << 24)|
+ ((ull) from[4] << 32)|
+ ((ull) from[5] << 40);
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::encode_40bLSB_int(unsigned char *to, unsigned long long int from)
+{
+ to[0] = from & 0xFF;
+ from >>= 8;
+ to[1] = from & 0xFF;
+ from >>= 8;
+ to[2] = from & 0xFF;
+ from >>= 8;
+ to[3] = from & 0xFF;
+ from >>= 8;
+ to[4] = from & 0xFF;
+}
+//------------
+
+unsigned long long int MTP3asp__PT_PROVIDER::decode_40bLSB_int(const unsigned char *from)
+{
+ typedef unsigned long long int ull;
+ return ((ull) from[0]) |
+ ((ull) from[1] <<8)|
+ ((ull) from[2] << 16)|
+ ((ull) from[3] << 24)|
+ ((ull) from[4] << 32);
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::encode_32bLSB_int(unsigned char *to, unsigned int from)
+{
+ to[0] = from & 0xFF;
+ from >>= 8;
+ to[1] = from & 0xFF;
+ from >>= 8;
+ to[2] = from & 0xFF;
+ from >>= 8;
+ to[3] = from & 0xFF;
+}
+//------------
+
+unsigned int MTP3asp__PT_PROVIDER::decode_32bLSB_int(const unsigned char *from)
+{
+ return from[0] | (from[1] << 8) | (from[2] << 16) | (from[3] << 24);
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::encode_24bLSB_int(unsigned char *to, int from)
+{
+ to[0] = from & 0xFF;
+ from >>= 8;
+ to[1] = from & 0xFF;
+ from >>= 8;
+ to[2] = from & 0xFF;
+}
+//------------
+
+unsigned int MTP3asp__PT_PROVIDER::decode_24bLSB_int(const unsigned char *from)
+{
+ return from[0] | (from[1] << 8) | (from[2] << 16);
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::encode_16bLSB_int(unsigned char *to, int from)
+{
+ to[0] = from & 0xFF;
+ from >>= 8;
+ to[1] = from & 0xFF;
+}
+//------------
+
+unsigned int MTP3asp__PT_PROVIDER::decode_16bLSB_int(const unsigned char *from)
+{
+ return from[0] | (from[1] << 8);
+}
+//------------
+
+//MTP3 user map
+void MTP3asp__PT_PROVIDER::MTP3_user_map(const char *system_port)
+{
+ debuglog("Function MTP3_user_map started");
+ Check_TestPort_Variables();
+ if(dynamicConnection)
+ {
+ connectionUp = FALSE;
+ }
+ else
+ {
+ MTP3_open_channel(TRUE);
+ MTP3_user_connect();
+ }
+ debuglog("Function MTP3_user_map finished");
+}
+//------------
+
+//MTP3 user connect
+void MTP3asp__PT_PROVIDER::MTP3_user_connect()
+{
+ // Sending out an SLTM message:
+ unsigned char * sltm_msg;
+ unsigned int offset = 0;
+ int sizeof_msg;
+ switch( MTPServiceType)
+ {
+ case MTP3itu:
+ case MTP3iup:
+ sltm_msg=sltm_msg_itu;
+ sizeof_msg=sizeof_sltm_msg_itu;
+ break;
+ case MTP3ansi:
+ sltm_msg=sltm_msg_ansi;
+ sizeof_msg=sizeof_sltm_ansi;
+ break;
+ case MTP3ttc:
+ /* if (mtp3_ni == 0){
+ sltm_msg=sltm_msg_itu;
+ sizeof_msg=sizeof_sltm_msg_itu;
+ }
+ else {
+ */
+ sltm_msg=sltm_msg_ttc_national;
+ sizeof_msg=sizeof_sltm_msg_ttc_national;
+ // }
+ break;
+ case MTP3bttc:
+ sltm_msg=sltm_msg_bttc_national;
+ sizeof_msg=sizeof_sltm_msg_bttc_national;
+ offset = 1;
+ break;
+ case MTP3mpt:
+ if (mtp3_ni == 2)
+ {
+ sltm_msg = sltm_msg_mpt_national;
+ sizeof_msg = sizeof_sltm_msg_mpt_national;
+ } else
+ {
+ sltm_msg = sltm_msg_itu;
+ sizeof_msg = sizeof_sltm_msg_itu;
+ }
+ break;
+ default:
+ sltm_msg=sltm_msg_itu;
+ sizeof_msg=sizeof_sltm_msg_itu;
+ break;
+ }
+ stored_bttc_octet = 0;
+ unsigned char sio = ((unsigned char) mtp3_ni) << 6;
+
+ if (Ni_is_set)
+ { sltm_msg[0+offset] = sio | 0x1; }
+ else
+ { sltm_msg[0+offset] = 0x1; };//SIO /'test & maint' see Q.704 /14.2.1 => 0x81 suggested !!!
+
+ SetPointCodes(0, Tester_Pc, Sut_Pc, sltm_msg + 1 +offset); // common for ITU, ANSI and TTC
+ log("MTP3/SLTM message sending...");
+ send_msg(sltm_msg, sizeof_msg);
+}
+//MTP3 user unmap
+void MTP3asp__PT_PROVIDER::MTP3_user_unmap(const char *system_port)
+{
+ MTP3_close_connection();
+ dynamicConnection = FALSE;
+}
+
+//MTP3 interpreter
+void MTP3asp__PT_PROVIDER::MTP3_interpreter(unsigned char* inbuffer,int length,int from_channel,CONNECTION* con)
+{
+ if ((length==0) || (inbuffer==NULL))
+ {
+ log("0 byte long message received -> packet dropped.");
+ return;
+ }
+
+ if (length==1)
+ {
+ log("1 byte long internal SEA message received -> packet dropped.");
+ return;
+ }
+
+ if ( !strcmp((const char*)inbuffer,"start") )
+ {
+ log("start message received from SEA");
+ return;
+ }
+ else if (!strcmp((const char*)inbuffer,"stop"))
+ {
+ log("stop message received from SEA");
+ return;
+ }
+
+ // writing out the contents of the buffer
+ OCTETSTRING buff(length,inbuffer);
+ TTCN_Logger::begin_event(TTCN_PORTEVENT);
+ TTCN_Logger::log_event("incoming buffer: ");
+ buff.log();
+ TTCN_Logger::end_event();
+
+ unsigned int offset = 0;
+ if ( MTPServiceType==MTP3bttc )
+ {
+ stored_bttc_octet = inbuffer[0];
+ offset = 1;
+ }
+ int labellen; // sio+routinglabel length
+ int rec_ni = (inbuffer[offset]) >> 6; //network indicator
+ if (rec_ni != mtp3_ni)
+ error("Received NI is different from sent NI.");
+
+ unsigned char sio = inbuffer[offset];
+ unsigned int si = sio&0x0F;
+
+ if ( MTPServiceType==MTP3itu )
+ { labellen=5; //ITU-T:sio(1byte) + routing label(4byte) see /Q.704/15.4.1
+ }
+ else if ( MTPServiceType==MTP3iup )
+ {
+ if(si==4)
+ labellen=6; //ITU-T:sio(1byte) + standard telephony label(5byte)
+ else
+ labellen=5; //ITU-T:sio(1byte) + routing label(4byte) see /Q.704/15.4.1
+ }
+ else if ( MTPServiceType==MTP3ansi )
+ { labellen=8; //ANSI: sio(1byte) +routing label(7byte) see T1.111.4
+ }
+ else if (MTPServiceType==MTP3ttc)
+ { labellen=6; //new (2004-03-02): 6= sio(1byte)+ routing label(5bytes)
+ }
+ else if (MTPServiceType==MTP3mpt)
+ {
+ if ( mtp3_ni == 2)
+ {labellen=8;} //MPT national: sio(1byte) +routing label(7byte)
+ else
+ {labellen=5;} //MPT international: sio(1byte) +routing label(4byte)
+ }
+ else if (MTPServiceType==MTP3bttc)
+ { labellen=7; //7= sio(1byte)+ routing label(6bytes)
+ }
+ else
+ { log("incorrect MTPServiceType - programming error-> packet dropped");
+ return;
+ }
+
+ // checking SIO field (first incoming byte) - management or test message
+ switch (si)
+ {
+ case 0: processing_MTP3_management_msg(inbuffer+offset,length-offset);
+ return;
+ case 1: //MTP3itu
+ case 2: processing_MTP3_test_msg(inbuffer+offset,length-offset); //MTP3ansi
+ return;
+ default:
+ break;
+ }
+
+ // filling up TTCN structure
+ if ((Loop==MTP3_ON) || (!Filter) || (Filter&&Check_PcMatch(Sut_Pc,Tester_Pc,&inbuffer[offset+1])))
+ {
+ ASP__MTP3__TRANSFERind recv_msg;
+ MTP3__Field__sio recv_sio;
+ BITSTRING sio_bit = oct2bit(OCTETSTRING(1,inbuffer+offset));
+ recv_sio.ni()= substr(sio_bit,0,2);
+ recv_sio.prio()= substr(sio_bit,2,2);
+ recv_sio.si()= substr(sio_bit,4,4);
+ recv_msg.sio() = recv_sio;
+ unsigned int sls,opc,dpc;
+ if ( (MTPServiceType==MTP3iup) && (si==4) )
+ GetPointCodesIUP(sls,opc,dpc,&inbuffer[1]);
+ else
+ GetPointCodes(sls,opc,dpc,&inbuffer[offset+1]);
+ recv_msg.sls() = sls;
+ recv_msg.opc() = opc;
+ recv_msg.dpc() = dpc;
+ int len;
+ len= length-labellen-offset; //len= length-labellen;
+ recv_msg.data() = OCTETSTRING(len, &inbuffer[offset+labellen]);
+ incoming_message( recv_msg );
+ }
+ else
+ { log("The rooting label (OPC, DPC) not matched with the filter setting -> packet dropped.");
+ return;
+ }
+}
+
+void MTP3asp__PT_PROVIDER::processing_MTP3_management_msg(unsigned char* inbuff,int len)
+{
+ int outlen=0;
+ int labellen; // sio+routinglabel length
+ int chm_addlen; // (Changeback) additional length = Heading Code + SLC+ (changeback codes)
+ int mim_addlen; // (MIM) -"-
+ unsigned int offset = 0;
+ OCTETSTRING bttc_oct = int2oct(stored_bttc_octet, 1); // additional octet for MTP3bttc
+
+ if ( MTPServiceType==MTP3itu || MTPServiceType==MTP3iup)
+ { labellen=5; //ITU-T:sio(1byte) + routing label(4byte) see /Q.704/15.4.1
+ chm_addlen = 2;
+ mim_addlen = 1;
+ }
+ else if ( MTPServiceType==MTP3ansi )
+ { labellen=8; //ANSI: sio(1byte) +routing label(7byte) see T.1.111.4
+ chm_addlen = 3;
+ mim_addlen = 2;
+ }
+ else if (MTPServiceType==MTP3ttc)
+ { //if ( mtp3_ni == 0 ) { labellen=5;} //ITU-T:sio(1byte) + routing label(4byte) see /Q.704/15.4.1
+ //else {
+ labellen=6;
+ //} //sio(1byte)+ routing label(6bytes) see 3/15517-FAY 112 011/2 or jt-q704.
+ }
+ else if (MTPServiceType==MTP3mpt)
+ { if ( mtp3_ni == 2 ) { labellen=8; }
+ else { labellen=5; }
+ chm_addlen = 2;
+ mim_addlen = 1;
+ }
+ else if (MTPServiceType==MTP3bttc)
+ { labellen=7;//sio(1byte)+routing label(6bytes) see 3/15517-FAY 112 011/2 or jt-q704
+ offset = 1;
+ }
+ else
+ { log("incorrect MTPServiceType- programming error-> packet dropped");
+ return;
+ }
+
+ if (MTPServiceType==MTP3bttc)
+ {
+ buffer[0]=*((const unsigned char*)bttc_oct); //additional stored octet in front
+ buffer[1]=inbuff[0]; //SIO
+ if (!ChangePointCodes(&buffer[2],&inbuff[1],len))
+ { log("incorrect incoming management message -> packet dropped.");
+ return;
+ }
+ }
+ else
+ {
+ buffer[0]=inbuff[0]; //SIO
+ if (!ChangePointCodes(&buffer[1],&inbuff[1],len))
+ { log("incorrect incoming management message -> packet dropped.");
+ return;
+ }
+ }
+
+ // Changeover & changeback(CHM) see ITU: Q.704/15.4.1 ANSI: T.1.111.4/15.2-4
+ if (inbuff[labellen]==0x51) //CBD
+ {
+ outlen=labellen+chm_addlen;
+ if (len<outlen)
+ { log("incorrect incoming CHM message -> packet dropped.");
+ return;
+ }
+ else
+ { buffer[offset + labellen]= 0x61; // Heading Code <- CBA
+ memcpy(&buffer[offset + labellen+1],&inbuff[labellen+1],len-labellen-1);
+ outlen = len;
+ }
+ }
+ else if (inbuff[labellen]==0x16) //MIM H0=6=Mgmt inhibit msg, H1=1=LIN
+ {
+ outlen=labellen+mim_addlen;
+ if (len<outlen)
+ { log("incorrect incoming MIM message -> packet dropped.");
+ return;
+ }
+ else
+ {
+ buffer[offset + labellen]= 0x56; // LIN -> LID ; LID = link inhibit denied
+ memcpy(&buffer[offset + labellen+1],&inbuff[labellen+1],(len-labellen-1)); //SLC+spare+...
+ outlen = len;
+ }
+ }
+ else if (inbuff[labellen]==0x17 && (MTPServiceType==MTP3iup))
+ {
+ if(forward_resume) incoming_message(ASP__MTP3__RESUME(NULL_VALUE));
+ return;
+ }
+
+/* else if (inbuff[labellen]==0x17 && (MTPServiceType==MTP3iup)) //TRM H0=7, H1=1 : TRA
+ {
+ outlen=labellen+1;
+ if (len<outlen)
+ { log("incorrect incoming TRA message -> packet dropped.");
+ return;
+ }
+ else
+ {
+ outlen = len;
+ }
+ }*/
+ else
+ { log("This management message type is not supported -> packet dropped.");
+ return;
+ }
+
+ // send message
+ log("function processing_MTP3_management_msg sends a msg");
+ send_msg(buffer, outlen+offset);
+}
+
+// processing MTP3 test msg
+// Signalling link test message handling according to Q.707 (ITU) and T1.111.7-2001 (ANSI)
+void MTP3asp__PT_PROVIDER::processing_MTP3_test_msg(unsigned char* inbuff,int len)
+{
+ int outlen=0;
+ int labellen; // sio+routinglabel length
+ int addlen; //Heading Code+length indicator
+ //unsigned int ni; //network indicator
+ OCTETSTRING bttc_oct = int2oct(stored_bttc_octet, 1); // additional octet for MTP3bttc
+ unsigned int offset = 0;
+ if ( MTPServiceType==MTP3itu || MTPServiceType==MTP3iup)
+ {
+ labellen=5; //ITU-T:sio(1byte) + routing label(4byte) see /Q.704/15.4.1
+ addlen = 2; //HC(1 byte)+length ind(1 byte) see Q.707/5.8
+ }
+ else if ( MTPServiceType==MTP3ansi )
+ {
+ labellen=8; //ANSI: sio(1byte) +routing label(7byte) see T1.111.4
+ addlen = 2; //HC(1byte) +(length ind+SLC(1byte)) see T1.111.7-2001/5
+ }
+ else if (MTPServiceType==MTP3ttc)
+ {
+ /* if (mtp3_ni == 0) {
+ debuglog("processing_MTP3_test_msg/TTC (Japanese) international");
+ labellen=5; //TTC (Japanese) international
+ addlen=2;
+ } else {
+ */
+ labellen=6; // previously 7
+ // TTC national [ 56bits=sio(1byte)+routing label ]
+ // r.label= dpc(2bytes)+opc(2bytes)+sls(4bit)+12bits (?)
+ addlen=2;
+ //}
+ }
+ else if (MTPServiceType==MTP3mpt)
+ {
+ if (mtp3_ni == 2)
+ { labellen=8; //MPT national
+ addlen=2;
+ }
+ else
+ { labellen=5; // MPT international
+ addlen=2;
+ }
+ }
+ else if (MTPServiceType==MTP3bttc)
+ {
+ labellen=7;
+ addlen=2;
+ offset = 1;
+ }
+ else
+ { log("incorrect MTPServiceType - programming error-> packet dropped");
+ return;
+ }
+
+ if (MTPServiceType==MTP3bttc)
+ {
+ buffer[0]=*((const unsigned char*)bttc_oct); //additional stored octet in front
+ buffer[1]=inbuff[0]; //SIO
+ if (!ChangePointCodes(&buffer[2],&inbuff[1],len))
+ {
+ log("incorrect incoming test message -> packet dropped.");
+ return;
+ }
+ }
+ else
+ {
+ buffer[0]=inbuff[0]; //SIO
+ if (!ChangePointCodes(&buffer[1],&inbuff[1],len))
+ {
+ log("incorrect incoming test message -> packet dropped.");
+ return;
+ }
+ }
+
+ // Test message handling: SLTM->SLTA, SRT->SRA, SLTA->TRA, others only logged
+ debuglog("\n==>Test message handling: msg type:%x\n", inbuff[labellen] ); // temporary
+ switch( inbuff[labellen] )
+ {
+ case 0x11: //SLTM
+ log("MTP3/SLTM message received");
+ outlen=labellen+addlen;
+ if (len<outlen )
+ { log("incorrect incoming MTP3/SLTM message -> packet dropped.");
+ return;
+ }
+ else
+ { buffer[offset + labellen]= 0x21; // SLTA
+ memcpy(&buffer[offset + labellen+1],&inbuff[labellen+1],(len-labellen-1));
+ outlen = len;
+ }
+ break;
+ case 0x21: //SLTA
+ if(!strncmp((const char *)(inbuff+labellen+addlen),(const char *)ttcn_in_sltm,sizeof_ttcn_in_sltm))
+ {
+ log("MTP3/SLTA message received for SLTM sent by Test Port-> TRA message sent");
+ buffer[offset]--;
+ buffer[offset + labellen]= 0x17; // TRA
+ outlen = labellen+1;
+ return;
+// if(forward_resume) incoming_message(ASP__MTP3__RESUME(NULL_VALUE));
+ }
+ else
+ {
+ log("MTP3/SLTA message received -> packet dropped");
+ return;
+ }
+ break;
+ case 0x23: // TTC (Japanese) SRT (Signalling Routing Test signal)
+ log("MTP3ttc/SRT message received");
+ outlen=labellen+addlen;
+ if (len<outlen )
+ { log("incorrect incoming MTP3ttc/SRT message (length error)-> packet dropped.");
+ return;
+ }
+ else
+ { buffer[offset + labellen]= 0x84; // TTC (Japanese) SRA
+ memcpy(&buffer[offset + labellen+1],&inbuff[labellen+1],(len-labellen-1));
+ outlen = len;
+ }
+ break;
+ case 0x84: // TTC (Japanese) SRA (Signalling Routing test Ack signal)
+ log("MTP3ttc/SRA message received -> packet dropped");
+ return;
+ default:
+ log("This management message type is not supported -> packet dropped ");
+ return;
+ }
+
+ // send message
+ log("function processing_MTP3_test_msg sends a message");
+ send_msg( buffer,outlen+offset);
+}
+
+// Point Code Manipulation (Get/Set/Change)
+// -------------------------------------------------
+void MTP3asp__PT_PROVIDER::GetPointCodes(unsigned int &sls,unsigned int &opc,unsigned int &dpc, unsigned char* msg)
+{
+ unsigned int label;
+ sls=0; opc=0; dpc=0;
+ unsigned long long int Label;
+
+ switch( MTPServiceType)
+ {
+ case MTP3itu:
+ label= decode_32bLSB_int(msg);
+ sls = (label>>28)&0xF; //sls = (label&0xF0000000)>>28;
+ opc = (label>>14)&0x3FFF; //opc = (label&0x0FFFC000)>>14;
+ dpc = label&0x3FFF; //dpc = (label&0x00003FFF);
+ debuglog("Function GetPointCodes called for service type MTP3itu");
+ break;
+ case MTP3iup:
+ label= decode_32bLSB_int(msg);
+ sls = (label>>28)&0xF; //sls = (label&0xF0000000)>>28;
+ opc = (label>>14)&0x3FFF; //opc = (label&0x0FFFC000)>>14;
+ dpc = label&0x3FFF; //dpc = (label&0x00003FFF);
+ debuglog("Function GetPointCodes called for service type MTP3iup");
+ break;
+ case MTP3ansi:
+ Label=decode_56bLSB_int(msg);
+ sls = (Label >> 48) & 0xFF; //sls = (Label&0x00FF000000000000)>>48;
+ opc = (Label >> 24) & 0xFFFFFF;//opc = (Label&0x0000FFFFFF000000)>>24;
+ dpc = Label & 0xFFFFFF; //dpc = (Label&0x0000000000FFFFFF);
+ debuglog("Function GetPointCodes called for service type MTP3ansi");
+ break;
+ case MTP3ttc:
+ /*
+ if( mtp3_ni == 0)
+ {
+ label= decode_32bLSB_int(msg);
+ sls = (label>>28)&0xF; //sls = (label&0xF0000000)>>28;
+ opc = (label>>14)&0x3FFF; //opc = (label&0x0FFFC000)>>14;
+ dpc = label&0x3FFF;
+ debuglog("Function GetPointCodes called for service type MTP3ttc/international");
+ } else
+ {*/
+ Label=decode_48bLSB_int(msg); //0x010203040506
+ sls = (Label>>32)&0xF; // sls = (Label&0x000F00000000)>>32; // only 4 bits!!!
+ opc = (Label>>16)&0xFFFF;//opc = (Label&0x0000FFFF0000)>>16;
+ dpc = Label&0xFFFF; //dpc = (Label&0x00000000FFFF);
+ debuglog("Function GetPointCodes called for service type MTP3ttc/national");
+ //}
+ break;
+ case MTP3bttc:
+ Label=decode_48bLSB_int(msg);
+ sls = (Label>>32)&0xF; // sls = (Label&0x000F00000000)>>32; // only 4 bits!!!
+ opc = (Label>>16)&0xFFFF;//opc = (Label&0x0000FFFF0000)>>16;
+ dpc = Label&0xFFFF; //dpc = (Label&0x00000000FFFF);
+ debuglog("Function GetPointCodes called for service type MTP3bttc/national");
+ break;
+ case MTP3mpt:
+ if( mtp3_ni == 2)
+ {
+ Label=decode_56bLSB_int(msg);
+ sls = (Label >> 48) & 0xFF; //sls = (Label&0x00FF000000000000)>>48;
+ opc = (Label >> 24) & 0xFFFFFF;//opc = (Label&0x0000FFFFFF000000)>>24;
+ dpc = Label & 0xFFFFFF; //dpc = (Label&0x0000000000FFFFFF);
+ debuglog("Function GetPointCodes called for service type MTP3mpt(nat)");
+ }
+ else
+ {
+ label= decode_32bLSB_int(msg);
+ sls = (label>>28)&0xF; //sls = (label&0xF0000000)>>28;
+ opc = (label>>14)&0x3FFF; //opc = (label&0x0FFFC000)>>14;
+ dpc = label&0x3FFF; //dpc = (label&0x00003FFF);
+ debuglog("Function GetPointCodes called for service type MTP3mpt(int)");
+ }
+ break;
+ default:
+ break;
+ }
+ debuglog("sls:%u opc:%u, dpc:%u",sls,opc,dpc);
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::GetPointCodesIUP(unsigned int &cic,unsigned int &opc,unsigned int &dpc, unsigned char* msg)
+{
+ debuglog("Function GetPointCodesIUP called");
+ cic=0; opc=0; dpc=0;
+ unsigned long long int Label;
+ Label=decode_40bLSB_int(msg); //0x0102030405
+ cic = (Label>>28)&0xFFF; //cic = (label&0xFFF0000000)>>28;
+ opc = (Label>>14)&0x3FFF; //opc = (label&0x000FFFC000)>>14;
+ dpc = Label&0x3FFF; //dpc = (label&0x0000003FFF);
+ debuglog("cic:%u opc:%u, dpc:%u",cic,opc,dpc);
+}
+
+void MTP3asp__PT_PROVIDER::SetPointCodes(unsigned int sls,unsigned int opc,unsigned int dpc, unsigned char* msg)
+{
+ unsigned long long int Sls,Opc,Dpc;
+
+ switch( MTPServiceType)
+ {
+ case MTP3itu:
+ encode_32bLSB_int( msg, ((sls<<28)|(opc<<14)|dpc ));
+ debuglog("Function SetPointCodes called for service type MTP3itu");
+ break;
+ case MTP3iup:
+ encode_32bLSB_int( msg, ((sls<<28)|(opc<<14)|dpc ));
+ debuglog("Function SetPointCodes called for service type MTP3iup");
+ break;
+ case MTP3ansi:
+ Sls=sls; Opc=opc; Dpc=dpc;
+ encode_56bLSB_int( msg, ((Sls<<48)|(Opc<<24)|Dpc));
+ debuglog("Function SetPointCodes called for service type MTP3ansi");
+ break;
+ case MTP3ttc:
+ /* if ( mtp3_ni == 0 ){
+ encode_32bLSB_int( msg, ((sls<<28)|(opc<<14)|dpc ));
+ debuglog("Function SetPointCodes called for service type MTP3ttc/international");
+ } else {
+ */
+ Sls=sls; Opc=opc; Dpc=dpc;
+ encode_48bLSB_int( msg, ((Sls<<32)|(Opc<<16)|Dpc));
+ debuglog("Function SetPointCodes called for service type MTP3ttc/national");
+ //}
+ break;
+ case MTP3bttc:
+ Sls=sls; Opc=opc; Dpc=dpc;
+ encode_48bLSB_int( msg, ((Sls<<32)|(Opc<<16)|Dpc));
+ debuglog("Function SetPointCodes called for service type MTP3bttc/national");
+ break;
+ case MTP3mpt:
+ if ( mtp3_ni == 2 )
+ { Sls=sls; Opc=opc; Dpc=dpc;
+ encode_56bLSB_int( msg, ((Sls<<48)|(Opc<<24)|Dpc));
+ debuglog("Function SetPointCodes called for service type MTP3mpt(nat)");
+ }
+ else
+ { encode_32bLSB_int( msg, ((sls<<28)|(opc<<14)|dpc ));
+ debuglog("Function SetPointCodes called for service type MTP3mpt(int)");
+ }
+ break;
+ default:
+ break;
+ }
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::SetPointCodesIUP(unsigned int cic,unsigned int opc,unsigned int dpc, unsigned char* msg)
+{
+ unsigned long long int Cic,Opc,Dpc;
+ Cic=cic; Opc=opc; Dpc=dpc;
+ debuglog("Function SetPointCodesIUP called");
+ encode_40bLSB_int( msg, ((Cic<<28)|(Opc<<14)|Dpc ));
+}
+
+//Changes the Point codes: dpc<->opc ie. destination <->orig
+// inbuff starts from dpc i.e doesn't contain sio !!!!
+int MTP3asp__PT_PROVIDER::ChangePointCodes(unsigned char* outbuff, unsigned char *inbuff, int len)
+{
+ switch( MTPServiceType)
+ {
+ case MTP3itu:
+ case MTP3iup:
+ if (len<5)
+ { warn("MTP3itu:len<5. Too short message!"); return 0; };
+ break;
+ case MTP3ansi:
+ if (len<9 ) return 0;
+ break;
+ case MTP3ttc:
+ //if ( mtp3_ni == 0 && len<5)
+ //{ warn("MTP3ttc:len<5. Too short message!"); return 0; }
+ //else
+ if (len<6)
+ { warn("MTP3ttc:len<6. Too short message!"); return 0; }
+ break;
+ case MTP3bttc:
+ if (len<7)
+ { warn("MTP3bttc:len<7. Too short message!"); return 0; }
+ break;
+ case MTP3mpt:
+ if ( mtp3_ni == 2 && len<8)
+ { warn("MTP3mpt:len<8. Too short message!"); return 0; }
+ else if (len<5)
+ { warn("MTP3mpt:len<5. Too short message!"); return 0; }
+ break;
+ default:
+ warn("Unknown MTPServiceType!!!");
+ break;
+ }
+ unsigned int sls,opc,dpc;
+ GetPointCodes(sls,opc,dpc,inbuff);
+ SetPointCodes(sls,dpc,opc,outbuff);
+ return 1;
+}
+//------------
+
+int MTP3asp__PT_PROVIDER::Check_PcMatch(unsigned int opc, unsigned int dpc, unsigned char *buff)
+{
+ unsigned int temp_opc,temp_dpc,temp_sls;
+
+ GetPointCodes(temp_sls,temp_opc,temp_dpc,buff);
+ if ( (temp_opc == opc) && (temp_dpc == dpc) ) return 1;
+ return 0;
+}
+//------------
+
+
+// -------------------------------------------------
+// M3UA Functions and definitions for test with SEA
+// -------------------------------------------------
+
+// Structures for M3UA
+static unsigned char aspup_msg[] =
+{
+ //common MsUA msg hdr, see M3UA PS
+ //Doc no. 1/1056-FCP 103 3571/F Uen, RevA
+ 0x01, //Release Version
+ 0x00, //reserved
+ M3UA_MSG_CLS_ASPSM, //Msg class: ASPSM
+ M3UA_MSG_TYP_ASPSM_ASPUP, //Msg type: ASPUP
+ 0x00, //Msg length begins (4 octets)
+ 0x00, //
+ 0x00, //
+ 0x08 // length ends = 8 octets
+ // ,PAR_PREFIX_COMMON, //optional Info string tag, in included, then msg
+ // PAR_INFO_STR //msg length should be +20, that is 28=0x1c
+ // 0x00,0x0f, // length: "TTCN-3 Executor" is 15 chars
+ // 'T', 'T', 'C', 'N',
+ // '-', '3', ' ', 'E',
+ // 'x', 'e', 'c', 'u',
+ // 't', 'o', 'r', 0x00 //las octet is padding
+};
+const int sizeof_aspup_msg = 8;
+
+static unsigned char aspupack_msg[] =
+{
+ //common MsUA msg hdr, see M3UA PS
+ //Doc no. 1/1056-FCP 103 3571/F Uen, RevA
+ 0x01, //Release Version
+ 0x00, //reserved
+ M3UA_MSG_CLS_ASPSM, //Msg class: ASPSM
+ M3UA_MSG_TYP_ASPSM_ASPUPAck, //Msg type: ASPUP
+ 0x00, //Msg length begins (4 octets)
+ 0x00, //
+ 0x00, //
+ 0x08 // length ends = 8 octets
+};
+const int sizeof_aspupack_msg = 8;
+
+static unsigned char aspac_msg[] =
+{
+ //common MsUA msg hdr, see M3UA PS
+ //Doc no. 1/1056-FCP 103 3571/F Uen, RevA
+ 0x01, //Release Version: 01
+ 0x00, //reserved
+ M3UA_MSG_CLS_ASPTM, //Msg class
+ M3UA_MSG_TYP_ASPTM_ASPAC, //Msg type
+ 0x00, //Msg length begins (4 octets)
+ 0x00, //
+ 0x00, //
+ 0x08 // length ends = 8 octets
+};
+const int sizeof_aspac_msg = 8;
+
+// ASP Active Acknowledge msg:
+static unsigned char aspac_ack_msg[] =
+{
+ //common MsUA msg hdr, see M3UA PS
+ //Doc no. 1/1056-FCP 103 3571/F Uen, RevA
+ 0x01, //Release Version: 01
+ 0x00, //reserved
+ M3UA_MSG_CLS_ASPTM, //Msg class
+ M3UA_MSG_TYP_ASPTM_ASPACAck, //Msg type
+ 0x00, //Msg length begins (4 octets)
+ 0x00, //
+ 0x00, //
+ 0x08 // length ends = 8 octets
+};
+const int sizeof_aspac_ack_msg = 8;
+
+static unsigned char aspia_ack_msg[] =
+{
+ //common MsUA msg hdr, see M3UA PS
+ //Doc no. 1/1056-FCP 103 3571/F Uen, RevA
+ 0x01, //Release Version: 01
+ 0x00, //reserved
+ M3UA_MSG_CLS_ASPTM, //Msg class
+ M3UA_MSG_TYP_ASPTM_ASPIAAck, //Msg type
+ 0x00, //Msg length begins (4 octets)
+ 0x00, //
+ 0x00, //
+ 0x08 // length ends = 8 octets
+};
+const int sizeof_aspia_ack_msg = 8;
+
+// ASP DOWN Acknowledge msg:
+static unsigned char aspdn_ack_msg[] =
+{
+ //common MsUA msg hdr, see M3UA PS
+ //Doc no. 1/1056-FCP 103 3571/F Uen, RevA
+ 0x01, //Release Version: 01
+ 0x00, //reserved
+ M3UA_MSG_CLS_ASPSM, //Msg class
+ M3UA_MSG_TYP_ASPSM_ASPDNAck, //Msg type
+ 0x00, //Msg length begins (4 octets)
+ 0x00, //
+ 0x00, //
+ 0x08 // length ends = 8 octets
+};
+const int sizeof_aspdn_ack_msg = 8;
+
+//ASP Destination Available msg:
+static unsigned char dava_1apc_msg[] =
+{
+ //common MsUA msg hdr, see M3UA PS
+ //Doc no. 1/1056-FCP 103 3571/F Uen, RevA
+ //or updated doc 2/1056-FCPW 101 86/P-1
+ 0x01, //Release Version: 01
+ 0x00, //reserved
+ M3UA_MSG_CLS_SSNM, //Msg class
+ M3UA_MSG_TYP_SSNM_DAVA, //Msg type
+ 0x00, //Msg length begins (4 octets)
+ 0x00, //
+ 0x00, //
+ 0x10, // length ends, 16 octets
+ //Affected point code
+ PAR_PREFIX_COMMON,
+ PAR_AFFECTED_PC,
+ 0x00, //par length begins (2 octets)
+ 0x08, //length ends, 8 octets
+ 0x00, // point code placeholder begins
+ 0x00, //
+ 0x00, //
+ 0x00 // point code placeholder ends
+};
+const int sizeof_dava_1apc_msg = 16;
+
+static unsigned char duna_1apc_msg[] =
+{
+ //common MsUA msg hdr, see M3UA PS
+ //Doc no. 1/1056-FCP 103 3571/F Uen, RevA
+ 0x01, //Release Version: 01
+ 0x00, //reserved
+ M3UA_MSG_CLS_SSNM, //Msg class
+ M3UA_MSG_TYP_SSNM_DUNA, //Msg type
+ 0x00, //Msg length begins (4 octets)
+ 0x00, //
+ 0x00, //
+ 0x10, // length ends, 16 octets
+ //Affected point code
+ PAR_PREFIX_COMMON,
+ PAR_AFFECTED_PC,
+ 0x00, //par length begins (2 octets)
+ 0x08, //length ends, 8 octets
+ 0x00, // point code placeholder begins
+ 0x00, //
+ 0x00, //
+ 0x00 // point code placeholder ends
+};
+const int sizeof_duna_1apc_msg = 16;
+
+static unsigned char error_msg[] =
+{
+ //common MsUA msg hdr, see M3UA PS
+ //Doc no. 1/1056-FCP 103 3571/F Uen, RevA
+ 0x01, //Release Version: 01
+ 0x00, //reserved
+ M3UA_MSG_CLS_MGMT, //Msg class
+ M3UA_MSG_TYP_MGMT_ERR, //Msg type
+ 0x00, //Msg length begins (4 octets)
+ 0x00, //
+ 0x00, //
+ 0x18, // length ends, 16+8 octets
+ // Error code field:
+ PAR_PREFIX_COMMON,
+ PAR_ERROR_CODE,
+ 0x00, //par length begins (2 octets)
+ 0x08, //length ends, 8 octets
+ 0x00, // error code placeholder begins (M3UA_MSG_OFFS+4)
+ 0x00, //
+ 0x00, //
+ 0x00, // error code placeholder ends
+ // additional field:
+ 0x00, // M3UA_MSG_OFFS+8
+ 0x00, // Routing context or Network Appearanance or APC or DI = error_code_id
+ 0x00, // par length begins (2 octets)
+ 0x08, // length ends, 8 octets
+ 0x00, // value placeholder begins M3UA_MSG_OFFS+12
+ 0x00, //
+ 0x00, //
+ 0x00 // value place holder ends
+};
+const int sizeof_error_msg = 24;
+
+void MTP3asp__PT_PROVIDER::M3UA_user_unmap(const char *system_port)
+{
+ MTP3_close_connection();
+ dynamicConnection = FALSE;
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::M3UA_user_map(const char *system_port)
+{
+ M3UAState = AssocDown;
+ Check_TestPort_Variables();
+ if(dynamicConnection)
+ {
+ connectionUp = FALSE;
+ }
+ else
+ {
+ MTP3_open_channel(TRUE);
+ M3UA_user_connect();
+ }
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::M3UA_user_connect()
+{
+ M3UAState = AssocEstabl;
+ // Sending out an ASPUP message
+ log("Message ASPUP will be sent");
+ send_msg(aspup_msg, sizeof_aspup_msg);
+ // NOTE: the ASPUPAck will be handled by M3UA_interpreter, which
+ // also will take care of sending ASPAC upon receiving the ASPUPAck
+}
+//------------
+
+// M3UA_interpreter
+void MTP3asp__PT_PROVIDER::M3UA_interpreter(unsigned char* inbuffer,int length,int from_channel,CONNECTION* con)
+{
+ if ((length==0) || (inbuffer==NULL))
+ { warn("0 byte long message received -> packet dropped.");
+ return;
+ }
+
+ if (length==1)
+ {
+ log("1 byte long internal SEA message received -> packet dropped.");
+ return;
+ }
+
+ if ( !strcmp((const char*)inbuffer,"start") )
+ { log("start message received from SEA");
+ return;
+ }
+ else if (!strcmp((const char*)inbuffer,"stop"))
+ { log("stop message received from SEA");
+ return;
+ }
+
+ // writing out the contents of the buffer
+ OCTETSTRING buff(length,inbuffer);
+ TTCN_Logger::begin_event(TTCN_PORTEVENT);
+ TTCN_Logger::log_event("incoming buffer: ");
+ buff.log();
+ TTCN_Logger::end_event();
+
+ // version checking
+ if ( inbuffer[M3UA_VER_OFFS] != M3UA_version )
+ { warn("Incompatible M3UA protocol version in header -> packet dropped");
+ return;
+ }
+
+ //length checking
+ unsigned int indicated_length = decode_32b_int(inbuffer + M3UA_LGT_OFFS );
+ if ( indicated_length != (unsigned)length)
+ warn("Length in common header (%d) mismatches received buffer length (%d),"
+ "Assuming that it is because of the omission of final parameter padding"
+ "in indicated length",indicated_length, length);
+
+ // checking MSG class
+ int unprocessed_chars = 0;
+ switch (inbuffer[M3UA_CLS_OFFS])
+ {
+ case M3UA_MSG_CLS_MGMT:
+ unprocessed_chars = processing_M3UA_MGMT_msg(inbuffer, length);
+ break;
+ case M3UA_MSG_CLS_TRNSFM :
+ unprocessed_chars = processing_M3UA_Transfer_msg(inbuffer, length);
+ break;
+ case M3UA_MSG_CLS_SSNM :
+ unprocessed_chars = processing_M3UA_SSNM_msg(inbuffer, length);
+ break;
+ case M3UA_MSG_CLS_ASPSM :
+ unprocessed_chars = processing_M3UA_ASPSM_msg(inbuffer, length);
+ break;
+ case M3UA_MSG_CLS_ASPTM :
+ unprocessed_chars = processing_M3UA_ASPTM_msg(inbuffer, length);
+ break;
+ case M3UA_MSG_CLS_RKM :
+ unprocessed_chars = processing_M3UA_RKM_msg(inbuffer, length);
+ break;
+ default:
+ unprocessed_chars = processing_M3UA_unsupported_msg_class(inbuffer, length);
+ break;
+ }
+ debuglog("%d chars remained unprocessed (might be due to padding)", unprocessed_chars);
+}
+//------------
+
+//processing M3UA MGMT msg
+int MTP3asp__PT_PROVIDER::processing_M3UA_MGMT_msg(unsigned char* inbuffer,int length)
+{
+ debuglog("Entering function:processing_MGMT_msg");
+ int offset = M3UA_MSG_OFFS; //pointer for processing
+
+ TTCN_Logger::begin_event(TTCN_DEBUG);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): {", get_name());
+ TTCN_Logger::log_event("decoded msg class: Mgmt, ");
+ switch (inbuffer[M3UA_TYP_OFFS])//msg type
+ {
+ case M3UA_MSG_TYP_MGMT_ERR:
+ TTCN_Logger::log_event("type: ERROR-> ignored");
+ TTCN_Logger::log_event("}");
+ TTCN_Logger::end_event();
+ break;
+ case M3UA_MSG_TYP_MGMT_NTFY:
+ TTCN_Logger::log_event("type: NOTIFY -> ignored");
+ TTCN_Logger::log_event("}");
+ TTCN_Logger::end_event();
+ break;
+ default:
+ send_M3UA_error_msg( PAR_ERRC_UNSMT, inbuffer[M3UA_TYP_OFFS]);
+ TTCN_Logger::log_event("Unsupported M3UA msg type %x of class MGMT -> packet dropped.", inbuffer[M3UA_TYP_OFFS]);
+ TTCN_Logger::log_event("}");
+ TTCN_Logger::end_event();
+ break;
+ }
+ return length - offset;
+}
+//------------
+
+//processing M3UA SSNM msg
+int MTP3asp__PT_PROVIDER::processing_M3UA_SSNM_msg(unsigned char* inbuffer,int length)
+{
+ debuglog("Entering function:processing_SSNM_msg");
+ TTCN_Logger::begin_event(TTCN_PORTEVENT);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): {", get_name());
+ TTCN_Logger::log_event("decoded msg class: SSNM, ");
+ int offset = M3UA_MSG_OFFS; //pointer for processing
+
+ switch (inbuffer[M3UA_TYP_OFFS])
+ {
+ case M3UA_MSG_TYP_SSNM_DAUD:
+ while (offset <= length-8 ) //processing potential params
+ {
+ switch (inbuffer[offset++]) //1st octet of tag
+ {
+ case PAR_PREFIX_COMMON:
+ TTCN_Logger::log_event (" DAUD: COMMON parameter ");
+ switch (inbuffer[offset++]) //2nd octet of COMMON tag
+ {
+ case PAR_ROUTING_CTX:
+ TTCN_Logger::log_event ("Routing Context (unsupported par) -> skipped), ");
+ skip_par_after_tag(inbuffer, offset);
+ break;
+ case PAR_INFO_STR:
+ TTCN_Logger::log_event ("Info String (unsupported par) -> skipped), ");
+ skip_par_after_tag(inbuffer, offset);
+ break;
+ case PAR_AFFECTED_PC:
+ TTCN_Logger::log_event ("Affected Point Code -> will send DUNA/DAVA, ");
+ TTCN_Logger::log_event("will ignore remainder parameters after APC}");
+ TTCN_Logger::end_event();
+ Send_DAVA_DUNA_to_APCinDAUD(Tester_Pc, inbuffer, offset);
+ return length-offset;
+ default:
+ TTCN_Logger::log_event ("invalid COMMON param tag:0x%02x%02x-> skipped", PAR_PREFIX_COMMON, inbuffer[offset-1]);
+ send_M3UA_error_msg( PAR_ERRC_PARFE, inbuffer[offset-1]);
+ skip_par_after_tag(inbuffer, offset);
+ break;
+ }
+ break;
+ case PAR_PREFIX_M3UA:
+ TTCN_Logger::log_event ("DAUD: M3UA parameter: ");
+ switch (inbuffer[offset++]) //2nd octet of M3UA tag
+ {
+ case PAR_NETW_APP:
+ TTCN_Logger::log_event ("Network Appearance (unsupported par) -> skipped), ");
+ skip_par_after_tag(inbuffer, offset);
+ break;
+ default:
+ TTCN_Logger::log_event ("invalid M3UA param tag:0x%02x%02x-> skipped",
+ PAR_PREFIX_M3UA, inbuffer[offset-1]);
+ send_M3UA_error_msg( PAR_ERRC_PARFE, inbuffer[offset-1]);
+ skip_par_after_tag(inbuffer, offset);
+ }
+ break;
+ default: //1st octet of tag
+ TTCN_Logger::log_event ("invalid 1st octet param tag:0x%02x in DATA (packet dropped)",inbuffer[offset-1]);
+ close_log_event();
+ return length -offset;
+ break;
+ }
+ }
+ break;
+ case M3UA_MSG_TYP_SSNM_DAVA: // Destination Available // Notification to the user part ?????
+ TTCN_Logger::log_event("type: SSNM_DAVA -> ignored");
+ close_log_event();
+ break;
+ case M3UA_MSG_TYP_SSNM_DUNA: // Destination Unavailable // Notification to the user part ?????
+ TTCN_Logger::log_event("type: SSNM_DUNA -> ignored");
+ close_log_event();
+ break;
+ case M3UA_MSG_TYP_SSNM_SCON: // Signalling Congestion // Notification to the user part ?????
+ TTCN_Logger::log_event("type: SSNM_SCON -> ignored");
+ close_log_event();
+ break;
+ case M3UA_MSG_TYP_SSNM_DUPU: //Destinationn User Part Unavailable // Notification to the user part ?????
+ TTCN_Logger::log_event("type: SSNM_DUPU -> ignored");
+ close_log_event();
+ break;
+ case M3UA_MSG_TYP_SSNM_DRST: //Destination Restricted // Notification to the user part ?????
+ TTCN_Logger::log_event("type: SSNM_DRST -> ignored");
+ close_log_event();
+ break;
+ default: //msg type
+ send_M3UA_error_msg( PAR_ERRC_UNSMT, inbuffer[M3UA_TYP_OFFS]);
+ TTCN_Logger::log_event("Unsupported M3UA msg type -> packet dropped.");
+ close_log_event();
+ break;
+ }
+ return length - offset;
+}
+//------------
+
+//processing M3UA ASPSM msg
+int MTP3asp__PT_PROVIDER::processing_M3UA_ASPSM_msg(unsigned char* inbuffer,int length)
+{
+ debuglog("Entering function:processing_ASPSM_msg");
+ TTCN_Logger::begin_event(TTCN_PORTEVENT);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): {", get_name());
+ TTCN_Logger::log_event("decoded msg class: ASPSM, ");
+
+ int offset = M3UA_MSG_OFFS; //pointer for processing
+ switch (inbuffer[M3UA_TYP_OFFS])
+ {
+ case M3UA_MSG_TYP_ASPSM_ASPUP:
+ TTCN_Logger::log_event("type: ASPSM_ASPUP -> ASPUPAck will be sent");
+ close_log_event();
+ send_msg(aspupack_msg, sizeof_aspupack_msg);
+ break;
+ case M3UA_MSG_TYP_ASPSM_ASPDN:
+ TTCN_Logger::log_event("type: ASPSM_ASPDN -> ASPDNAck will be sent");
+ close_log_event();
+ send_msg(aspdn_ack_msg, sizeof_aspdn_ack_msg);
+ break;
+ case M3UA_MSG_TYP_ASPSM_BEAT:
+ TTCN_Logger::log_event("type: ASPSM_BEAT -> ASPSM_BEATAck will be sent");
+ close_log_event();
+ //Sending back the packet as acknowledge:
+ inbuffer[M3UA_TYP_OFFS]= M3UA_MSG_TYP_ASPSM_BEATAck;
+ send_msg(inbuffer, length);
+ break;
+ case M3UA_MSG_TYP_ASPSM_ASPUPAck:
+ TTCN_Logger::log_event("type: ASPSM_ASPUPAck -> ASPAC will be sent");
+ M3UAState = AssocInac;
+ TTCN_Logger::log_event(" M3UAState's been changed to AssocInac");
+ close_log_event();
+ send_msg(aspac_msg, sizeof_aspac_msg );
+ break;
+ case M3UA_MSG_TYP_ASPSM_ASPDNAck:
+ M3UAState = AssocDown;
+ TTCN_Logger::log_event(" M3UAState's been changed to AssocDown");
+ TTCN_Logger::log_event("type: ASPSM_ASPDNAck -> nothing will be sent");
+ close_log_event();
+ break;
+ case M3UA_MSG_TYP_ASPSM_BEATAck:
+ TTCN_Logger::log_event("type: ASPSM_BEATAck -> nothing will be sent");
+ close_log_event();
+ break;
+ default:
+ TTCN_Logger::log_event("Unsupported M3UA msg type %x of class ASPSM-> packet dropped.", (unsigned char)(inbuffer[M3UA_TYP_OFFS]));
+ close_log_event();
+ send_M3UA_error_msg( PAR_ERRC_UNSMT, inbuffer[M3UA_TYP_OFFS]);
+ break;
+ }
+ return length - offset;
+}
+//------------
+
+//processing M3UA ASPTM msg
+int MTP3asp__PT_PROVIDER::processing_M3UA_ASPTM_msg(unsigned char* inbuffer,int length)
+{
+ debuglog("Entering function:processing_ASPTM_msg");
+ TTCN_Logger::begin_event(TTCN_PORTEVENT);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): {", get_name());
+ TTCN_Logger::log_event("decoded msg class: ASPTM, ");
+
+ int offset = M3UA_MSG_OFFS; //pointer for processing
+ switch (inbuffer[M3UA_TYP_OFFS])
+ {
+ case M3UA_MSG_TYP_ASPTM_ASPAC: //ASP Active
+ M3UAState = AssocActive;
+ TTCN_Logger::log_event("type: ASPTM_ASPAC -> ASPACAck will be sent");
+ close_log_event();
+ send_msg(aspac_ack_msg, sizeof_aspac_ack_msg);
+ break;
+ case M3UA_MSG_TYP_ASPTM_ASPIA: //ASP InActive
+ TTCN_Logger::log_event("type: ASPTM_ASPIA -> ASPIAAck will be sent");
+ close_log_event();
+ send_msg(aspia_ack_msg, sizeof_aspia_ack_msg);
+ break;
+ case M3UA_MSG_TYP_ASPTM_ASPACAck:
+ M3UAState = AssocActive;
+ TTCN_Logger::log_event("type: ASPTM_ASPACAck -> nothing will be sent");
+ TTCN_Logger::log_event("M3UAState's been changed to AssocActive.");
+ close_log_event();
+ break;
+ case M3UA_MSG_TYP_ASPTM_ASPIAAck:
+ TTCN_Logger::log_event("type: ASPTM_ASPIAAck -> nothing will be sent");
+ close_log_event();
+ break;
+ default:
+ TTCN_Logger::log_event("Unsupported M3UA msg type %x of class ASPSM-> packet dropped.", (unsigned char)(inbuffer[M3UA_TYP_OFFS]));
+ close_log_event();
+ send_M3UA_error_msg( PAR_ERRC_UNSMT, inbuffer[M3UA_TYP_OFFS]);
+ break;
+ }
+ return length - offset;
+}
+//------------
+
+//processing M3UA RKM msg
+int MTP3asp__PT_PROVIDER::processing_M3UA_RKM_msg(unsigned char* inbuffer,int length)
+{
+ debuglog("Entering function:processing_RKM_msg");
+ int offset = M3UA_MSG_OFFS; //pointer for processing
+ warn("Unsupported M3UA msg class M3UA_RKM -> packet dropped.");
+ return length - offset;
+}
+//------------
+
+//processing M3UA unsupported msg class
+int MTP3asp__PT_PROVIDER::processing_M3UA_unsupported_msg_class(unsigned char* inbuffer,int length)
+{
+ warn("Unsupported M3UA msg class -> packet dropped.");
+ send_M3UA_error_msg( PAR_ERRC_UNSMC, inbuffer[M3UA_CLS_OFFS] );
+ int offset = M3UA_MSG_OFFS; //pointer for processing
+ return length - offset;
+}
+//------------
+
+// processing_M3UA_Transfer_msg - called if the msg class is "Transfer" i.e M3UA_MSG_CLS_TRNSFM:
+int MTP3asp__PT_PROVIDER::processing_M3UA_Transfer_msg(unsigned char* inbuffer,int length)
+{
+ debuglog("Entering function:processing_M3UA_Transfer_msg");
+ int offset = M3UA_MSG_OFFS; //pointer for processing
+ unsigned int recv_opc, recv_dpc,recv_si, recv_ni, recv_mp,recv_sls =0;
+ int param_length = 0;
+ TTCN_Logger::begin_event(TTCN_DEBUG);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): {", get_name());
+ TTCN_Logger::log_event("decoded msg class: DataTrnsf, ");
+
+ switch (inbuffer[M3UA_TYP_OFFS]) //msg type
+ {
+ case M3UA_MSG_TYP_TRSNFM_DATA:
+ TTCN_Logger::log_event("msg type DATA, ");
+ while (offset <= length-8) //processing potential params
+ {
+ switch (inbuffer[offset++]) //1st octet of tag. Offset already incremented after the 'case' !
+ {
+ case PAR_PREFIX_COMMON:
+ TTCN_Logger::log_event (" DATA: COMMON parameter, ");
+ switch (inbuffer[offset++]) //2nd octet of tag
+ {
+ case PAR_ROUTING_CTX:
+ TTCN_Logger::log_event ("Routing Context (unsupported par) -> skipped), ");
+ // Send back an error msg
+ skip_par_after_tag(inbuffer, offset);
+ break;
+ case PAR_CORREL_ID:
+ TTCN_Logger::log_event ("Correlation ID (unsupported par) -> skipped), ");
+ skip_par_after_tag(inbuffer, offset);
+ break;
+ default:
+ TTCN_Logger::log_event ("invalid COMMON param tag:0x%02x%02x -> skipped", PAR_PREFIX_COMMON, inbuffer[offset-1]);
+ skip_par_after_tag(inbuffer, offset);
+ break;
+ }
+ case PAR_PREFIX_M3UA:
+ TTCN_Logger::log_event ("DATA: M3UA parameter: ");
+ switch (inbuffer[offset++]) //2nd octet of M3UA tag
+ {
+ case PAR_PROT_DATA:
+ //---------------------------------------------
+ TTCN_Logger::log_event ("Protocol Data");
+ // retrieving length
+ param_length = decode_16b_int(inbuffer+offset); offset+=2;
+ TTCN_Logger::log_event(", DATA: Length of Protocol Data parameter is %d",param_length);
+ // retrieving M3UA protocol data paremeter opc, dpc, si, ni, mp,
+ // sls
+ recv_opc = decode_32b_int(inbuffer+offset); offset +=4;
+ recv_dpc = decode_32b_int(inbuffer+offset); offset +=4;
+ recv_si = (unsigned int)(inbuffer[offset++]);
+ recv_ni = (unsigned int)(inbuffer[offset++]);
+ recv_mp = (unsigned int)(inbuffer[offset++]);
+ recv_sls = (unsigned int)(inbuffer[offset++]);
+ TTCN_Logger::log_event(", DATA: decoded Protocol Data parameter:");
+ // filling up TTCN structure
+ if ((Loop==MTP3_ON) ||
+ (!Filter) ||
+ (Filter &&
+ (recv_opc == (unsigned)Sut_Pc) && (recv_dpc == (unsigned)Tester_Pc) &&
+ (recv_ni == (unsigned)mtp3_ni)
+ ))
+ {
+ ASP__MTP3__TRANSFERind recv_msg;
+ MTP3__Field__sio recv_sio;
+ recv_sio.ni()= int2bit(recv_ni,2);
+ recv_sio.prio()= int2bit(recv_mp,2);
+ recv_sio.si()= int2bit(recv_si,4);
+ recv_msg.sio() = recv_sio;
+ recv_msg.sls() = recv_sls;
+ recv_msg.opc()= recv_opc;
+ recv_msg.dpc() = recv_dpc;;
+ recv_msg.data() = OCTETSTRING(param_length-16, // 16 octet paramheader + 5 routing label
+ &inbuffer[offset]);
+ recv_msg.log();
+ close_log_event();
+ incoming_message ( recv_msg );
+ offset += param_length-16;
+ return length - offset;
+ }
+ else
+ {
+ close_log_event();
+ log("Either the received M3UA(OPC, DPC, SI) fields, or the embedded MTP3 rooting label (OPC, DPC) not matched with the filter setting -> packet dropped.");
+ return length - offset;
+ }
+ break;
+ default:
+ TTCN_Logger::log_event ("invalid M3UA param tag:0x%02x%02x-> skipped", PAR_PREFIX_M3UA, inbuffer[offset-1]);
+ skip_par_after_tag(inbuffer, offset);
+ }
+ break;
+ default:
+ TTCN_Logger::log_event ("invalid 1st octet param tag:0x%02x in DATA (packet dropped)",inbuffer[offset-1]);
+ close_log_event();
+ return length -offset;
+ break;
+ }
+ }// Checking parameter tag (offset <length-8)
+ break;
+ default:
+ TTCN_Logger::log_event("Invalid M3UA msg class TransferMessage msg type %d -> packet dropped",
+ (unsigned int)(inbuffer[M3UA_TYP_OFFS]));
+ close_log_event();
+ send_M3UA_error_msg( PAR_ERRC_UNSMT, inbuffer[M3UA_TYP_OFFS]);
+ break;
+ }
+
+ return length -offset;
+}
+
+// Set M3UA SingleAPC - Stores field Single Affected Point Code
+void MTP3asp__PT_PROVIDER::Set_M3UA_SingleAPC(unsigned int pc, unsigned char* apc_par)
+{
+ //setting par type to APC
+ apc_par[0] = PAR_PREFIX_COMMON;
+ apc_par[1] = PAR_AFFECTED_PC;
+ //setting the length to 4+4 = 8
+ apc_par[2] = 0x00;
+ apc_par[3] = 0x08;
+ //setting the mask
+ apc_par[4] = 0x00;
+ //setting the pc
+ encode_24b_int(apc_par+5,pc);
+}
+
+// Send DAVA DUNA to APCinDAUD
+void MTP3asp__PT_PROVIDER::Send_DAVA_DUNA_to_APCinDAUD(unsigned int dava_sep, unsigned char* inbuffer, int & offset)
+{
+ unsigned int length = decode_16b_int(inbuffer+offset);
+ offset +=2;
+ unsigned int current_pc;
+
+ //checking the length
+ if ((length < 8) || (length%4))
+ { warn("Invalid length in APC parameter -> not processed");
+ return;
+ }
+
+ for (unsigned int i = 4 ; i < length; i += 4)
+ {
+ if (inbuffer[offset++] == 0x00) // mask===>single pc
+ {
+ current_pc = decode_24b_int(inbuffer+offset);
+ offset +=3;
+ if (dava_sep == current_pc) //dava
+ { Set_M3UA_SingleAPC(dava_sep, dava_1apc_msg+M3UA_MSG_OFFS);
+ log("DAVA will be sent for pc=%d", dava_sep);
+ send_msg(dava_1apc_msg, sizeof_dava_1apc_msg);
+ }
+ else //duna
+ { Set_M3UA_SingleAPC(current_pc, duna_1apc_msg+M3UA_MSG_OFFS);
+ log("DUNA will be sent for pc=%d", current_pc);
+ send_msg(duna_1apc_msg, sizeof_duna_1apc_msg);
+ }
+ }
+ else //masked pc
+ { warn("Unsupported masking (mask=0x%02x) for PC=%d in APC parameter -> ignored",
+ inbuffer[offset-1], current_pc);
+ }
+ }
+ return;
+}
+
+// send M3UA error msg
+// send an eror msg with error_code. Additional parameter matches to the error code:
+void MTP3asp__PT_PROVIDER::send_M3UA_error_msg(unsigned int error_code, unsigned int add_par )
+{
+ encode_16b_int( error_msg+M3UA_MSG_OFFS+4, error_code);
+ encode_16b_int( error_msg+M3UA_MSG_OFFS+8, add_par);
+ send_msg(error_msg, sizeof_error_msg );
+};
+
+// Coder functions for M3UA: int -> unsigned char array
+//------------------------------------------------------
+// Result:Less significant byte in highest address
+// Most Significant Byte first (in lowest address) = MSB = Big Endian = Network Byte Order
+void MTP3asp__PT_PROVIDER::encode_32b_int(unsigned char *to, unsigned int from)
+{
+ to[3] = from & 0xFF;
+ from >>= 8;
+ to[2] = from & 0xFF;
+ from >>= 8;
+ to[1] = from & 0xFF;
+ from >>= 8;
+ to[0] = from & 0xFF;
+}
+//------------
+
+unsigned int MTP3asp__PT_PROVIDER::decode_32b_int(const unsigned char *from)
+{
+ return from[3] | (from[2] << 8) | (from[1] << 16) | (from[0] << 24);
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::encode_24b_int(unsigned char *to, unsigned int from)
+{
+ to[2] = from & 0xFF;
+ from >>= 8;
+ to[1] = from & 0xFF;
+ from >>= 8;
+ to[0] = from & 0xFF;
+}
+//------------
+
+unsigned int MTP3asp__PT_PROVIDER::decode_24b_int(const unsigned char *from)
+{
+ return from[2] | (from[1] << 8) | (from[0] << 16);
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::encode_16b_int(unsigned char *to, int from)
+{
+ to[1] = from & 0xFF;
+ from >>= 8;
+ to[0] = from & 0xFF;
+}
+//------------
+
+unsigned int MTP3asp__PT_PROVIDER::decode_16b_int(const unsigned char *from)
+{
+ return from[1] | (from[0] << 8);
+}
+//------------
+
+//skip par after tag
+void MTP3asp__PT_PROVIDER::skip_par_after_tag(unsigned char* inbuffer, int &offset)
+{
+ offset += decode_16b_int(inbuffer+offset)-2; //the length contains
+ //the param hdr. itself
+ if (offset%4) offset += 4-(offset%4); //skipping padding
+}
+//------------
+#endif
+
+
+
+#ifdef TARGET_TEST
+// --------------------------
+// Functions for Target testing
+// --------------------------
+// In case of target this function handles the received message
+void MTP3asp__PT_PROVIDER::message_incoming(const unsigned char* msg, int messageLength, int)
+{
+ OCTETSTRING rcvData = OCTETSTRING(messageLength, msg);
+
+ int msgType = oct2int(substr(rcvData,0,1));
+ switch (msgType)
+ {
+ case 0: //TRANSFERind message received
+ if(Tcp_is_up) //Registration was already performed
+ {
+ ASP__MTP3__TRANSFERind recv_msg;
+ MTP3__Field__sio recv_sio;
+ BITSTRING sio_bit = oct2bit(substr(rcvData,5,1));
+ recv_sio.ni()= substr(sio_bit,0,2);
+ recv_sio.prio()= substr(sio_bit,2,2);
+ recv_sio.si()= substr(sio_bit,4,4);
+ recv_msg.sio() = recv_sio;
+ recv_msg.opc() = oct2int(substr(rcvData,6,4));
+ recv_msg.dpc() = oct2int(substr(rcvData,10,4));
+ recv_msg.sls() = oct2int(substr(rcvData,14,1));
+ recv_msg.data() = substr(rcvData,15,rcvData.lengthof()-15);
+ if (Tcp_is_up == 1) //No unregistration ongoing
+ incoming_message(recv_msg);
+ else //Unregistration ongoing
+ log("Received ASP_MTP3_TRANSFERind is ignored since unregistration is started.");
+ }
+ else
+ error("Message was received before successful registration in M3UA server.");
+ break;
+
+ case 4: //Status message received
+ {
+ int status = oct2int(substr(rcvData,5,1));
+ if(Tcp_is_up == 2) // Unregistration ongoing
+ {
+ const char * rcvDat = oct2str(rcvData);
+ log("Message \"%s\" received. Status = %i", rcvDat, status);
+ if (status == 2)
+ {
+ log("Unregistration performed.");
+ Tcp_is_up = 0;
+ }
+ else if (status == 3)
+ error("Unsuccessful unregistration.");
+ else if (status == 5) {
+ if(forward_status) {
+ incoming_message(ASP__MTP3__STATUS(NULL_VALUE));
+ }
+ else {
+ warn("Invalid STATUS message received from M3UA server with status code=%d.", status);
+ }
+ }
+ }
+ else if(Tcp_is_up == 1) // Active state
+ {
+ if (status == 5) {
+ if(forward_status) {
+ incoming_message(ASP__MTP3__STATUS(NULL_VALUE));
+ }
+ }
+ else {
+ warn("Invalid STATUS message received from M3UA server with status code=%d.", status);
+ }
+ }
+ else // Registration ongoing
+ {
+ const char * rcvDat = oct2str(rcvData);
+ log("Message \"%s\" received. Status = %i", rcvDat, status);
+ if (status == 0)
+ {
+ log("Registration performed.");
+ Tcp_is_up = 1;
+ }
+ else {
+ error("Unsuccessful registration.");
+ }
+ }
+ }
+ break;
+ case 5:
+ {
+ if(forward_pause) incoming_message(ASP__MTP3__PAUSE(NULL_VALUE));
+ }
+ break;
+ case 6:
+ {
+ if(forward_resume) incoming_message(ASP__MTP3__RESUME(NULL_VALUE));
+ }
+ break;
+
+
+ default: //Unexpected message received
+ warn("Invalid message received from M3UA server.");
+ }
+}
+
+void MTP3asp__PT_PROVIDER::Check_Target_TestPort_Variables()
+{
+ if (Sut_Pc==-1) error("Parameter SUT_Pc is not set.");
+ if (Tester_Pc==-1) error("Parameter TESTER_Pc is not set.");
+ if (!Ni_is_set) error("Parameter NI is not set.");
+ if (M3UA_version==0) error("Parameter M3UA_version cannot be set to 0 in TargetM3UA mode.");
+
+//packet header
+ header_descr = new PacketHeaderDescr( 1, 4, PacketHeaderDescr::Header_MSB);
+}
+
+void MTP3asp__PT_PROVIDER::Check_Target_TestPort_Variables_STC()
+{
+ if( destinationname == NULL) error("Parameter DestinationName is not set in TargetSTC mode.");
+
+ header_descr = new PacketHeaderDescr( 1, 4, PacketHeaderDescr::Header_MSB);
+}
+
+void MTP3asp__PT_PROVIDER::Target_user_map(const char *system_port)
+{
+ Tcp_is_up = 0;
+ Check_Target_TestPort_Variables();
+ map_user();
+
+ OCTETSTRING tcpData = int2oct(2,1); //Message type
+ if( destinationname == NULL)
+ tcpData = tcpData + int2oct(char2oct(system_port).lengthof()+15,4); //Length
+ else
+ tcpData = tcpData + int2oct(char2oct(destinationname).lengthof()+15,4);
+ tcpData = tcpData + int2oct(mtp3_ni,1);
+ tcpData = tcpData + int2oct(Sut_Pc,4);
+ tcpData = tcpData + int2oct(Tester_Pc,4);
+ tcpData = tcpData + int2oct(M3UA_version,1);
+ if( destinationname == NULL)
+ tcpData = tcpData + char2oct(system_port);
+ else
+ tcpData = tcpData + char2oct(destinationname);
+
+ send_outgoing((const unsigned char*)tcpData,tcpData.lengthof());
+
+ TTCN_Logger::begin_event(TTCN_DEBUG);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): ", get_name());
+ TTCN_Logger::log_event_str("Registration message sent: ");
+ tcpData.log();
+ TTCN_Logger::end_event();
+
+ int fd = get_socket_fd();
+ pollfd pollFd = { fd, POLLIN, 0 };
+ int nEvents = poll(&pollFd, 1, 3000 /* ms */);
+ if (nEvents == 0)
+ error("No response received for REGISTER message. Exiting after timeout.");
+ if (nEvents < 0 || (pollFd.revents & (POLLIN | POLLHUP)) == 0)
+ error("No response received for REGISTER message. Exiting after error (%d)",
+ (nEvents < 0) ? errno : 0);
+ Handle_Fd_Event(fd, TRUE, FALSE, FALSE);
+}
+
+void MTP3asp__PT_PROVIDER::TargetSTC_user_map(const char *system_port)
+{
+ Tcp_is_up = 0;
+ Check_Target_TestPort_Variables_STC();
+ map_user();
+
+ OCTETSTRING tcpData = int2oct(2,1); //Message type
+ tcpData = tcpData + int2oct(char2oct(destinationname).lengthof()+15,4);
+ tcpData = tcpData + int2oct(0,1);
+ tcpData = tcpData + int2oct(0,4);
+ tcpData = tcpData + int2oct(0,4);
+ tcpData = tcpData + int2oct(0,1);
+ tcpData = tcpData + char2oct(destinationname);
+
+ send_outgoing((const unsigned char*)tcpData,tcpData.lengthof());
+
+ TTCN_Logger::begin_event(TTCN_DEBUG);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): ", get_name());
+ TTCN_Logger::log_event_str("Registration message sent: ");
+ tcpData.log();
+ TTCN_Logger::end_event();
+
+ int fd = get_socket_fd();
+ pollfd pollFd = { fd, POLLIN, 0 };
+ int nEvents = poll(&pollFd, 1, 3000 /* ms */);
+ if (nEvents == 0)
+ error("No response received for REGISTER message. Exiting after timeout.");
+ if (nEvents < 0 || (pollFd.revents & (POLLIN | POLLHUP)) == 0)
+ error("No response received for REGISTER message. Exiting after error (%d)",
+ (nEvents < 0) ? errno : 0);
+ Handle_Fd_Event(fd, TRUE, FALSE, FALSE);
+}
+
+void MTP3asp__PT_PROVIDER::Target_user_unmap(const char *system_port)
+{
+ OCTETSTRING tcpData = int2oct(3,1); //Message type
+ tcpData = tcpData + int2oct(6,4); //Length
+ tcpData = tcpData + int2oct(0,1);
+ send_outgoing((const unsigned char*)tcpData,tcpData.lengthof());
+
+ TTCN_Logger::begin_event(TTCN_DEBUG);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): ", get_name());
+ TTCN_Logger::log_event_str("Unregistration message sent: ");
+ tcpData.log();
+ TTCN_Logger::end_event();
+
+ Tcp_is_up = 2; //Unregistration ongoing
+
+ while (Tcp_is_up == 2)
+ {
+ int fd = get_socket_fd();
+ pollfd pollFd = { fd, POLLIN, 0 };
+ int nEvents = poll(&pollFd, 1, 3000 /* ms */);
+ if (nEvents == 0)
+ error("No response received for UNREGISTER message. Exiting after timeout.");
+ if (nEvents < 0 || (pollFd.revents & (POLLIN | POLLHUP)) == 0)
+ error("No response received for UNREGISTER message. Exiting after error (%d)",
+ (nEvents < 0) ? errno : 0);
+ Handle_Fd_Event(fd, TRUE, FALSE, FALSE);
+ }
+ unmap_user();
+}
+#endif
+}
diff --git a/MTP3asp_CNL113337/demo/MTP3asp_PT.hh b/MTP3asp_CNL113337/demo/MTP3asp_PT.hh
new file mode 100644
index 0000000..340f24f
--- /dev/null
+++ b/MTP3asp_CNL113337/demo/MTP3asp_PT.hh
@@ -0,0 +1,249 @@
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Copyright Test Competence Center (TCC) ETH 2009 //
+// //
+// The copyright to the computer program(s) herein is the property of TCC. //
+// The program(s) may be used and/or copied only with the written permission //
+// of TCC or in accordance with the terms and conditions stipulated in the //
+// agreement/contract under which the program(s) have been supplied //
+// //
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: MTP3asp_PT.hh
+// Description: Implementation of port MTP3asp_PT
+// This test port is written to connect ttcn to SEA
+// according to specification ITU-T SS7 MTP3, ANSI, TCC, MPT, IETF,
+// Reference: ITU-T Recommendation Q.704, RFC3332
+// Rev: R11A01
+// Prodnr: CNL 113 337
+// Updated: 2009-04-03
+// Contact: http://ttcn.ericsson.se
+
+
+#ifndef MTP3asp_PT_HH
+#define MTP3asp_PT_HH
+
+#include <TTCN3.hh>
+
+#ifdef TARGET_TEST
+#include "Abstract_Socket.hh"
+#endif
+
+#ifndef TARGET_TEST
+#include "mphclib.h"
+#endif
+
+
+#define MAXSIZE 1532 //+32 needed for M3UA
+#define MTP3_ON 1
+#define MTP3_OFF 0
+namespace MTP3asp__Types {
+ class ASP__MTP3__TRANSFERind;
+ class ASP__MTP3__PAUSE;
+ class ASP__MTP3__RESUME;
+ class ASP__MTP3__STATUS;
+ class ASP__MTP3__TRANSFERreq;
+}
+namespace MTP3asp__PortType {
+
+class MTP3asp__PT_PROVIDER : public PORT
+#ifdef TARGET_TEST
+ , public Abstract_Socket
+#endif
+ {
+protected:
+ // pointer to member: user_map/unmap methods
+ typedef void (MTP3asp__PT_PROVIDER::*usermap_t)(const char *system_port);
+ // pointer to member: user_connect methods
+ typedef void (MTP3asp__PT_PROVIDER::*userconnect_t)();
+ // pointer to member: interpreter methods
+#ifndef TARGET_TEST
+ typedef void (MTP3asp__PT_PROVIDER::*interpreter_t)(unsigned char* inbuffer,int length,int from_channel,CONNECTION* con);
+
+ void M3UA_interpreter(unsigned char* inbuffer,int length,int from_channel,CONNECTION* con);
+ void M3UA_user_map(const char *system_port);
+ void M3UA_user_connect();
+ void M3UA_user_unmap(const char *system_port);
+ void MTP3_interpreter(unsigned char* inbuffer,int length,int from_channel,CONNECTION* con);
+ void MTP3_user_map(const char *system_port); // common for MTP3 ITU and MTP3 ANSI
+ void MTP3_user_connect();
+ void MTP3_user_unmap(const char *system_port);// common for MTP3 ITU and MTP3 ANSI
+ void STC_user_connect();
+ void STC_interpreter(unsigned char* inbuffer,int length,int from_channel,CONNECTION* con);
+ void STC_user_map(const char *system_port);
+ void STC_user_unmap(const char *system_port);
+#endif
+#ifdef TARGET_TEST
+ //Map and unmap for target
+ void Target_user_map(const char *system_port);
+ void Target_user_unmap(const char *system_port);
+ void TargetSTC_user_map(const char *system_port);
+#endif
+
+public:
+ MTP3asp__PT_PROVIDER(const char *par_port_name=NULL);
+ ~MTP3asp__PT_PROVIDER();
+
+ typedef enum { MTP3itu, MTP3ansi, MTP3ttc, MTP3mpt, M3UA, TargetM3UA, MTP3bttc,MTP3iup, STC, TargetSTC } MTPServiceType_t ;
+
+ MTPServiceType_t MTPServiceType ; // ctor default is MTP3itu
+ void set_parameter(const char *parameter_name, const char *parameter_value);
+ void error(const char *msg, ...);
+ void log(const char *msg, ...);
+#ifndef TARGET_TEST
+ void user_connect();
+
+ void set_channel(int chnl) {channel=chnl;};
+ void MTP3_open_channel(boolean http);
+ void MTP3_close_connection();
+
+ boolean wait_for_open();
+ int conn_state;
+
+ interpreter_t interpreter; // pointer to interpreter members, ctor default is MTP3_ITU_interpreter
+ void doInterpret(unsigned char* inbuffer,int length,int from_channel,CONNECTION* con)
+ { (this->*interpreter)(inbuffer,length,from_channel, con); }
+#endif
+ //parameter handling
+ boolean dynamicConnection, connectionUp;
+ char *hostname;
+ int httpport;
+ char *entityname;
+ int MTP_fd;
+
+protected:
+ void user_map(const char *system_port);
+ void user_unmap(const char *system_port);
+
+ void debuglog(const char *msg, ...);
+ void warn(const char *msg, ...);
+ void close_log_event();
+
+ usermap_t user_map_p ; // pointer to user_map members, default is MTP3itu
+ usermap_t user_unmap_p; // pointer to user_unmap members, default is MTP3itu
+ userconnect_t user_connect_p;
+
+ void user_start();
+ void user_stop();
+
+ void outgoing_send(const MTP3asp__Types::ASP__MTP3__TRANSFERreq& send_par);
+ virtual void incoming_message
+ (const MTP3asp__Types::ASP__MTP3__TRANSFERind& incoming_par) = 0;
+ virtual void incoming_message
+ (const MTP3asp__Types::ASP__MTP3__PAUSE& incoming_par) = 0;
+ virtual void incoming_message
+ (const MTP3asp__Types::ASP__MTP3__RESUME& incoming_par) = 0;
+ virtual void incoming_message
+ (const MTP3asp__Types::ASP__MTP3__STATUS& incoming_par) = 0;
+#ifndef TARGET_TEST
+ void encode_56bLSB_int(unsigned char *to, unsigned long long int from);
+ long long unsigned int decode_56bLSB_int(const unsigned char *from);
+ void encode_48bLSB_int(unsigned char *to, unsigned long long int from);
+ long long unsigned int decode_48bLSB_int(const unsigned char *from);
+ void encode_40bLSB_int(unsigned char *to, unsigned long long int from);
+ long long unsigned int decode_40bLSB_int(const unsigned char *from);
+ void encode_32bLSB_int(unsigned char *to, unsigned int from);
+ unsigned int decode_32bLSB_int(const unsigned char *from);
+ void encode_24bLSB_int(unsigned char *to, int from);
+ unsigned int decode_24bLSB_int(const unsigned char *from);
+ void encode_16bLSB_int(unsigned char *to, int from);
+ unsigned int decode_16bLSB_int(const unsigned char *from);
+ void encode_32b_int(unsigned char *to, unsigned int from);
+ unsigned int decode_32b_int(const unsigned char *from);
+ void encode_24b_int(unsigned char *to, unsigned int from);
+ unsigned int decode_24b_int(const unsigned char *from);
+ void encode_16b_int(unsigned char *to, int from);
+ unsigned int decode_16b_int(const unsigned char *from);
+ void skip_par_after_tag(unsigned char* inbuffer, int &offset);
+
+ void GetPointCodes(unsigned int &sls,unsigned int &opc,unsigned int &dpc, unsigned char* msg);
+ void GetPointCodesIUP(unsigned int &cic,unsigned int &opc,unsigned int &dpc, unsigned char* msg);
+ void SetPointCodes(unsigned int sls, unsigned int opc, unsigned int dpc, unsigned char* msg);
+ void SetPointCodesIUP(unsigned int cic, unsigned int opc, unsigned int dpc, unsigned char* msg);
+ int ChangePointCodes(unsigned char* outbuff, unsigned char *inbuff, int len);
+ void Set_M3UA_SingleAPC(unsigned int pc, unsigned char* apc_par); //for ITU and ANSI
+ bool Check_M3UA_SingleITUAPC(unsigned int pc, unsigned char* apc_par);
+ void Send_DAVA_DUNA_to_APCinDAUD(unsigned int dava_sep, unsigned char* inbuffer, int &offset );
+ void processing_MTP3_management_msg(unsigned char* inbuff,int len);
+ void processing_MTP3_test_msg(unsigned char* inbuff,int len);
+ int processing_M3UA_MGMT_msg(unsigned char* inbuff,int len);
+ int processing_M3UA_Transfer_msg(unsigned char* inbuff,int len);
+ int processing_M3UA_SSNM_msg(unsigned char* inbuff,int len);
+ int processing_M3UA_ASPSM_msg(unsigned char* inbuff,int len);
+ int processing_M3UA_ASPTM_msg(unsigned char* inbuff,int len);
+ int processing_M3UA_RKM_msg(unsigned char* inbuff,int len);
+ int processing_M3UA_unsupported_msg_class(unsigned char* inbuff,int len);
+ int Check_PcMatch(unsigned int opc, unsigned int dpc, unsigned char *buff);
+ void send_msg(unsigned char *outbuff, int length);
+ void send_M3UA_error_msg(unsigned int error_code, unsigned int add_par );
+ void Check_TestPort_Variables();
+ void Check_TestPort_Variables_STC();
+#endif
+#ifdef TARGET_TEST
+ void Check_Target_TestPort_Variables();
+ void Check_Target_TestPort_Variables_STC();
+
+ //Functions for abstract socket handling
+ void message_incoming(const unsigned char*, int length, int client_id = -1);
+ 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* local_address_name() { return "localIPAddr";}
+ const char* local_port_name() { return "localPort";}
+ const char* remote_address_name(){ return "M3UAtarget_TCP_IPAddr";}
+ const char* remote_port_name() { return "M3UAtarget_TCP_Port";}
+ const char* halt_on_connection_reset_name(){ return "halt_on_connection_reset";}
+ const char* server_mode_name() { return "client_mode";}
+ const char* socket_debugging_name(){ return "socket_debugging";}
+ const char* nagling_name() { return "nagling";}
+ const char* server_backlog_name(){ return "server_backlog";}
+ const PacketHeaderDescr* Get_Header_Descriptor() const {return header_descr;}
+#endif
+
+private:
+ void Handle_Fd_Event(int fd, boolean is_readable, boolean is_writable, boolean is_error);
+ void Handle_Timeout(double time_since_last_call);
+
+ unsigned char M3UA_version;
+ int channel;
+ unsigned char buffer[MAXSIZE];
+ char *destinationname;
+ char *iid_string;
+ boolean Ni_is_set;
+ int Loop,Filter,Sut_Pc,Tester_Pc;
+ typedef enum { AssocDown, AssocEstabl, AssocInac, AssocActive} M3UAStateType_t;
+ M3UAStateType_t M3UAState;
+ int mtp3_ni; // network indicator in case of MTP3
+ int stored_bttc_octet; // used for storage of an additional first byte in MTP3bttc
+
+#ifndef TARGET_TEST
+ MPH_IID iid;
+ CONNECTION *myConnection;
+#endif
+ bool forward_resume, forward_pause, forward_status;
+#ifdef TARGET_TEST
+ int Tcp_is_up;
+ PacketHeaderDescr *header_descr;
+ bool is_packet_hdr_length_offset, is_packet_hdr_nr_bytes_in_length,
+ is_packet_hdr_byte_order;
+ int packet_hdr_length_offset, packet_hdr_nr_bytes_in_length;
+ PacketHeaderDescr::HeaderByteOrder packet_hdr_byte_order;
+#endif
+};
+
+extern BOOLEAN f__MTP3__SEA__connect__extern
+ (MTP3asp__PT_PROVIDER& portRef, const CHARSTRING& Hostname,
+ const INTEGER& Port, const CHARSTRING& EntityName,const BOOLEAN& Http);
+
+extern BOOLEAN f__MTP3__SEA__disconnect__extern
+ (MTP3asp__PT_PROVIDER& portRef);
+
+}
+#endif
diff --git a/MTP3asp_CNL113337/demo/MTP3asp_PortType.ttcn b/MTP3asp_CNL113337/demo/MTP3asp_PortType.ttcn
new file mode 100644
index 0000000..86b7a83
--- /dev/null
+++ b/MTP3asp_CNL113337/demo/MTP3asp_PortType.ttcn
@@ -0,0 +1,61 @@
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Copyright Test Competence Center (TCC) ETH 2008 //
+// //
+// The copyright to the computer program(s) herein is the property of TCC. //
+// The program(s) may be used and/or copied only with the written permission //
+// of TCC or in accordance with the terms and conditions stipulated in the //
+// agreement/contract under which the program(s) have been supplied //
+// //
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: MTP3asp_PortType.ttcn
+// Reference: ITU-T Recommendation Q.704, RFC3332
+// Rev: R11A01
+// Prodnr: CNL 113 337
+// Updated: 2008-02-07
+// Contact: http://ttcn.ericsson.se
+
+module MTP3asp_PortType
+{
+
+ import from MTP3asp_Types all;
+// *************************************************************************
+// * MTP3 port type definitions *
+// *************************************************************************
+
+ // MTP3 port type used by the component up to the MTP3 SAP
+ // (eg. any component connected to the MTP3 test port)
+ type port MTP3asp_PT message
+ {
+ in ASP_MTP3_TRANSFERind;
+ in ASP_MTP3_PAUSE;
+ in ASP_MTP3_RESUME;
+ in ASP_MTP3_STATUS;
+ out ASP_MTP3_TRANSFERreq;
+ } with {extension "provider"}
+
+ // MTP3 port type used by the component up to the MTP3 SAP
+ // (e.g. the distribution component)
+ type port MTP3asp_SP_PT message
+ {
+ in ASP_MTP3_TRANSFERreq;
+ out ASP_MTP3_TRANSFERind;
+ }
+ with {extension "internal"}
+
+//Connecting functions
+//----------------------------
+external function f_MTP3_SEA_connect
+ ( inout MTP3asp_PT portRef,
+ in charstring Hostname,
+ in integer Port,
+ in charstring EntityName,
+ in boolean Http //or MPH Port is provided
+ )return boolean;
+
+external function f_MTP3_SEA_disconnect
+ ( inout MTP3asp_PT portRef
+ )return boolean;
+
+}//eof module
diff --git a/MTP3asp_CNL113337/demo/MTP3asp_Types.ttcn b/MTP3asp_CNL113337/demo/MTP3asp_Types.ttcn
new file mode 100644
index 0000000..e96f420
--- /dev/null
+++ b/MTP3asp_CNL113337/demo/MTP3asp_Types.ttcn
@@ -0,0 +1,324 @@
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Copyright Test Competence Center (TCC) ETH 2006 //
+// //
+// The copyright to the computer program(s) herein is the property of TCC. //
+// The program(s) may be used and/or copied only with the written permission //
+// of TCC or in accordance with the terms and conditions stipulated in the //
+// agreement/contract under which the program(s) have been supplied //
+// //
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: MTP3asp_Types.ttcn
+// Description: CCSS7 Message Transfer Part primitive (ASP) definitions
+// according to specification ITU-T SS7 MTP3,
+// Reference: ITU-T Recommendation Q.704, RFC3332, ANSI T.1.111.1-2001, TCC
+// Rev: R11A01
+// Prodnr: CNL 113 337
+// Updated: 2007-09-17
+// Contact: http://ttcn.ericsson.se
+//
+module MTP3asp_Types.objid
+ {
+ itu_t(0) identified_organization (4) etsi(0) reserved(127)
+ etsi_identified_organization(0) ericsson(5) testing (0)
+ generic(0) mtp3(0) v96(3) aspDefinitions(3) patchNo(0)
+ }
+
+{//start of the module
+
+// *************************************************************************
+// External encoding/decoding functions
+// *************************************************************************
+
+external function enc_MTP3_to_M3UAserver_msg (in MTP3_to_M3UAserver_msg pdu)
+ return octetstring
+ with { extension "prototype(convert)"
+ extension "encode(RAW)"
+ };
+
+external function dec_MTP3_to_M3UAserver_msg(in octetstring stream)
+ return MTP3_to_M3UAserver_msg
+ with { extension "prototype(convert)"
+ extension "decode(RAW)"
+ };
+
+
+// *************************************************************************
+// * Type Definitions Part *
+// *************************************************************************
+group Types
+{
+ group MessageTypes
+ {
+ group ASPs
+ {
+ //***********************************************************************
+ //* ASP type definitions *
+ //* Note, that ASP types shall be TTCN-3 definitions to allow *
+ //* the use of anytype in the data field *
+ //***********************************************************************
+
+ type record MTP3_Field_sio
+ {
+ bitstring ni length(2),
+ bitstring prio length(2),
+ bitstring si length(4)
+ } with { variant "FIELDORDER(msb)";
+ };
+
+ type record ASP_MTP3_TRANSFERind
+ {
+ MTP3_Field_sio sio,
+ integer opc,
+ integer dpc,
+ integer sls,
+ octetstring data
+ } with { variant (opc) "BYTEORDER(last), FIELDLENGTH(32)";
+ variant (dpc) "BYTEORDER(last), FIELDLENGTH(32)";
+ variant (sls) "FIELDLENGTH(8)"
+ };
+
+ type record ASP_MTP3_PAUSE {};
+
+ type record ASP_MTP3_RESUME {};
+
+ type record ASP_MTP3_STATUS {};
+
+ type record ASP_MTP3_TRANSFERreq
+ {
+ MTP3_Field_sio sio,
+ integer opc,
+ integer dpc,
+ integer sls,
+ octetstring data
+ } with { variant (opc) "BYTEORDER(last), FIELDLENGTH(32)";
+ variant (dpc) "BYTEORDER(last), FIELDLENGTH(32)";
+ variant (sls) "FIELDLENGTH(8)"
+ };
+ }//end group ASPs
+
+ //***********************************************************************
+ //* Type definition of the message which is sent between MTP3 test port *
+ //* and SCTP server over TCP. *
+ //***********************************************************************
+ group MTP3_SCTPserver
+ {
+ type record ASP_REGISTER_M3UA
+ {
+ integer ni (0..3),
+ integer sut_pc,
+ integer tester_pc,
+ integer m3ua_version,
+ charstring entity
+ } with { variant (ni) "FIELDLENGTH(8)";
+ variant (sut_pc) "BYTEORDER(last), FIELDLENGTH(32)";
+ variant (tester_pc) "BYTEORDER(last), FIELDLENGTH(32)";
+ variant (m3ua_version) "FIELDLENGTH(8)"
+ };
+
+
+ // Possible values:
+ // MTP3_to_SCTPserver_data/status:
+ const integer reg_ok_status := 0;
+ const integer reg_error_status := 1;
+ const integer unreg_ok_status := 2;
+ const integer unreg_error_status := 3;
+
+ const integer send_error_status := 5;
+ const integer kill_status := 255;
+
+ // MTP3_to_SCTPserver_data/pause:
+ const integer SCTP_COMLOST_pause := 0;
+ const integer M3UA_ASPDN_pause := 1;
+ const integer M3UA_ASPIA_pause := 2;
+
+ // MTP3_to_SCTPserver_data/resume:
+ const integer ok_resume := 0;
+
+ type union MTP3_to_SCTPserver_data
+ {
+ ASP_MTP3_TRANSFERind transfer_ind,
+ ASP_MTP3_TRANSFERreq transfer_req,
+ ASP_REGISTER_M3UA register,
+ integer unregister (0..255),
+ integer status (0..255),
+ integer pause (0..255),
+ integer resume (0..255)
+ }
+
+ // MTP3_to_M3UAserver_msg/msgType:
+ const integer transfer_ind_msgType := 0;
+ const integer transfer_req_msgType := 1;
+ const integer register_msgType := 2;
+ const integer unregister_msgType := 3;
+ const integer status_msgType := 4;
+ const integer pause_msgType := 5;
+ const integer resume_msgType := 6;
+
+ type record MTP3_to_M3UAserver_msg
+ {
+ integer msgType (0..255),
+ integer msgLength,
+ MTP3_to_SCTPserver_data data
+ } with { variant (data) "CROSSTAG(
+ transfer_ind, msgType = transfer_ind_msgType;
+ transfer_req, msgType = transfer_req_msgType;
+ register, msgType = register_msgType;
+ unregister, msgType = unregister_msgType;
+ status, msgType = status_msgType;
+ pause, msgType = pause_msgType;
+ resume, msgType = resume_msgType )";
+ variant (msgLength) "FIELDLENGTH(32)";
+ variant (msgLength) "LENGTHTO(msgType,msgLength,data)";
+ variant (msgLength) "BYTEORDER(last)"
+ };
+ }//end group MTP3_SCTPserver
+ }//end group Messagetypes
+} with {encode "RAW"}//Types
+
+group Templates
+{
+ group MessageTemplates
+ {
+ group ASPtemplates
+ {
+ // *******************************************************************
+ // * ASP template definitions *
+ // *******************************************************************
+
+ // Base templates
+ // These general templates can be used as an example or as a base
+ // template for other templates.
+ template ASP_MTP3_TRANSFERind t_ASP_MTP3_TRANSFERind
+ (
+ template MTP3_Field_sio pl_SIO,
+ template integer pl_OPC,
+ template integer pl_DPC,
+ template integer pl_SLS,
+ template octetstring pl_data
+ ):=
+ {
+ sio := pl_SIO,
+ opc := pl_OPC,
+ dpc := pl_DPC,
+ sls := pl_SLS,
+ data := pl_data
+ }
+
+ template ASP_MTP3_TRANSFERind tr_ASP_MTP3_TRANSFERind_sio
+ (
+ template bitstring pl_NI,
+ template bitstring pl_PRIO,
+ template bitstring pl_SI,
+ template integer pl_OPC,
+ template integer pl_DPC,
+ template integer pl_SLS,
+ template octetstring pl_data
+ ):=
+ {
+ sio :=
+ {
+ ni := pl_NI,
+ prio := pl_PRIO,
+ si := pl_SI
+ },
+ opc := pl_OPC,
+ dpc := pl_DPC,
+ sls := pl_SLS,
+ data := pl_data
+ }
+
+ template ASP_MTP3_TRANSFERind tr_ASP_MTP3_TRANSFERind :=
+ {
+ sio := ?,
+ opc := ?,
+ dpc := ?,
+ sls := ?,
+ data := ?
+ }
+
+ template ASP_MTP3_TRANSFERreq t_ASP_MTP3_TRANSFERreq
+ (
+ MTP3_Field_sio pl_SIO,
+ integer pl_OPC,
+ integer pl_DPC,
+ integer pl_SLS,
+ octetstring pl_data
+ ):=
+ {
+ sio := pl_SIO,
+ opc := pl_OPC,
+ dpc := pl_DPC,
+ sls := pl_SLS,
+ data := pl_data
+ }
+
+ template ASP_MTP3_TRANSFERreq tr_ASP_MTP3_TRANSFERreq_sio
+ (
+ template bitstring pl_NI,
+ template bitstring pl_PRIO,
+ template bitstring pl_SI,
+ template integer pl_OPC,
+ template integer pl_DPC,
+ template integer pl_SLS,
+ template octetstring pl_data
+ ):=
+ {
+ sio :=
+ {
+ ni := pl_NI,
+ prio := pl_PRIO,
+ si := pl_SI
+ },
+ opc := pl_OPC,
+ dpc := pl_DPC,
+ sls := pl_SLS,
+ data := pl_data
+ }
+
+ template ASP_MTP3_TRANSFERreq tr_ASP_MTP3_TRANSFERreq :=
+ {
+ sio := ?,
+ opc := ?,
+ dpc := ?,
+ sls := ?,
+ data := ?
+ }
+
+ template ASP_MTP3_TRANSFERind tr_ASP_MTP3_TRANSFERind_stc :=
+ {
+ sio :=
+ {
+ ni := '00'B,
+ prio := '00'B,
+ si := '0000'B
+ },
+ opc := 0,
+ dpc := 0,
+ sls := 0,
+ data := ?
+ }
+
+ template ASP_MTP3_TRANSFERreq t_ASP_MTP3_TRANSFERreq_stc
+ ( template octetstring pl_data ):=
+ {
+ sio :=
+ {
+ ni := '00'B,
+ prio := '00'B,
+ si := '0000'B
+ },
+ opc := 0,
+ dpc := 0,
+ sls := 0,
+ data := pl_data
+ }
+
+ }//end group ASPtemplates
+ }//end group Messagetemplates
+}//end group Templates
+
+}//end module
+
+
diff --git a/MTP3asp_CNL113337/demo/Makefile b/MTP3asp_CNL113337/demo/Makefile
new file mode 100644
index 0000000..53b19d3
--- /dev/null
+++ b/MTP3asp_CNL113337/demo/Makefile
@@ -0,0 +1,353 @@
+# This Makefile was generated by the compiler
+# of the TTCN-3 Test Executor version 1.4.pl3
+# for Attila Balasko (ethbaat@duna199) on Mon Sep 15 15:48:45 2003
+
+# Copyright 2000-2003 Conformance Center, Ericsson R & D, Hungary
+# Please send bug reports and comments to Szabo.Janos@eth.ericsson.se
+
+# The following make commands are available:
+# - make, make all Builds the executable test suite.
+# - make compile Translates TTCN-3 and ASN.1 modules to C++.
+# - make clean Removes all generated files.
+# - make dep Creates/updates dependency list.
+# - make archive Archives all source files.
+
+#
+# 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, LINUX, FREEBSD or WIN32)
+PLATFORM = SOLARIS8
+
+# Your C++ compiler:
+CXX = g++
+
+# Flags for the C++ preprocessor (and makedepend as well):
+CPPFLAGS = -D$(PLATFORM) -I$(TTCN3_DIR)/include -I$(SEA_DIR)/include
+
+# Flags for the C++ compiler:
+CXXFLAGS = -Wall
+
+# Flags for the linker:
+LDFLAGS =
+
+# Flags for the TTCN-3 and ASN.1 compiler:
+COMPILER_FLAGS = -L
+
+# Execution mode: (either ttcn3 or ttcn3-parallel)
+TTCN3_LIB = ttcn3-parallel
+
+# The path of your OpenSSL installation:
+# If you do not have your own one, leave it unchanged.
+OPENSSL_DIR = $(TTCN3_DIR)
+
+# Directory to store the archived source files:
+# Note: you can set any directory except ./archive
+ARCHIVE_DIR = ./backup
+
+SEA_DIR = /vobs/ttcn/TCC_Releases/Other/SEA_LATEST
+#
+# You may change these variables. Add your files if necessary...
+#
+
+# The TTCN-3 modules needed for this project:
+TTCN3_MODULES = mtp3test.ttcn MTP3asp_Types.ttcn MTP3asp_PortType.ttcn
+# The ASN.1 modules needed for this project:
+ASN1_MODULES =
+
+# C++ source & header files generated by TTCN-3 & ASN.1 compilers:
+GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc)
+GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh)
+# Source & header files of Test Ports and your other modules:
+USER_SOURCES = MTP3asp_PT.cc
+USER_HEADERS = MTP3asp_PT.hh
+
+# All object files needed for the executable test suite:
+#OBJECTS = mtp3test.o MTP3_ASPs.o general_typedefs.o MTP3user_porttype.o
+OBJECTS = $(GENERATED_SOURCES:.cc=.o) $(USER_SOURCES:.cc=.o)
+# The name of the executable test suite:
+TARGET = mtp3test
+
+#The names of the config files (to archive):
+TARGET_CONFIGS = mtp3test_MTP3_ansi2.cfg
+#
+# Do not modify these unless you know what you are doing...
+#
+SOLARIS_LIBS = -lxnet
+LINUX_LIBS =
+FREEBSD_LIBS =
+WIN32_LIBS =
+
+#
+# Rules for building the executable...
+#
+all: $(TARGET) ;
+
+$(TARGET): $(OBJECTS)
+ $(CXX) $(LDFLAGS) -o $@ $(OBJECTS) \
+ -L$(TTCN3_DIR)/lib -l$(TTCN3_LIB) \
+ -L$(OPENSSL_DIR)/lib -lcrypto $($(PLATFORM)_LIBS) $(SEA_DIR)/lib/libmphclib.a -lxml2
+
+.cc.o .c.o:
+ $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $<
+
+$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile
+ @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi
+
+compile: $(TTCN3_MODULES) $(ASN1_MODULES)
+ $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $(TTCN3_MODULES) \
+ $(ASN1_MODULES) - $?
+ touch $@
+
+clean:
+ -$(RM) $(TARGET) $(OBJECTS) $(GENERATED_HEADERS) \
+ $(GENERATED_SOURCES) compile *.log
+
+dep: $(GENERATED_SOURCES)
+ makedepend $(CPPFLAGS) $(USER_SOURCES) $(GENERATED_SOURCES)
+
+archive:
+ mkdir -p $(ARCHIVE_DIR)
+ tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \
+ $(USER_HEADERS) $(USER_SOURCES) $(TARGET_CONFIGS) Makefile \
+ | gzip >$(ARCHIVE_DIR)/$(TARGET)-`date '+%y%m%d-%H%M'`.tgz
+
+#
+# Add your rules here if necessary...
+#
+
+# DO NOT DELETE
+
+MTP3asp_PT.o: /usr/include/stdio.h /usr/include/iso/stdio_iso.h
+MTP3asp_PT.o: /usr/include/sys/feature_tests.h /usr/include/sys/isa_defs.h
+MTP3asp_PT.o: /usr/include/sys/va_list.h /usr/include/stdio_tag.h
+MTP3asp_PT.o: /usr/include/stdio_impl.h /usr/include/stdlib.h
+MTP3asp_PT.o: /usr/include/iso/stdlib_iso.h /usr/include/sys/types.h
+MTP3asp_PT.o: /usr/include/sys/machtypes.h /usr/include/sys/int_types.h
+MTP3asp_PT.o: /usr/include/sys/select.h /usr/include/sys/time.h
+MTP3asp_PT.o: /usr/include/time.h /usr/include/iso/time_iso.h
+MTP3asp_PT.o: /usr/include/netinet/in.h /usr/include/sys/stream.h
+MTP3asp_PT.o: /usr/include/sys/vnode.h /usr/include/sys/t_lock.h
+MTP3asp_PT.o: /usr/include/sys/machlock.h /usr/include/sys/param.h
+MTP3asp_PT.o: /usr/include/sys/unistd.h /usr/include/sys/mutex.h
+MTP3asp_PT.o: /usr/include/sys/rwlock.h /usr/include/sys/semaphore.h
+MTP3asp_PT.o: /usr/include/sys/condvar.h /usr/include/sys/time_impl.h
+MTP3asp_PT.o: /usr/include/sys/cred.h /usr/include/sys/uio.h
+MTP3asp_PT.o: /usr/include/sys/resource.h /usr/include/vm/seg_enum.h
+MTP3asp_PT.o: /usr/include/sys/poll.h /usr/include/sys/strmdep.h
+MTP3asp_PT.o: /usr/include/sys/model.h /usr/include/sys/strft.h
+MTP3asp_PT.o: /usr/include/sys/byteorder.h /usr/include/netdb.h
+MTP3asp_PT.o: /usr/include/sys/socket.h /usr/include/sys/netconfig.h
+MTP3asp_PT.o: /usr/include/sys/un.h /usr/include/net/if_dl.h
+MTP3asp_PT.o: /usr/include/sys/wait.h /usr/include/sys/siginfo.h
+MTP3asp_PT.o: /usr/include/sys/machsig.h /usr/include/sys/procset.h
+MTP3asp_PT.o: /usr/include/unistd.h /usr/include/arpa/inet.h
+MTP3asp_PT.o: /usr/include/stdarg.h /usr/include/iso/stdarg_iso.h
+MTP3asp_PT.o: /usr/include/string.h /usr/include/iso/string_iso.h
+MTP3asp_PT.o: MTP3asp_PT.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/TTCN3.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/version.h
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Basetype.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Types.h
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Encdec.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Template.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Integer.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Optional.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/BER.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Logger.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Textbuf.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Error.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Parameters.h
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Float.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Boolean.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/ASN_Null.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Objid.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Verdicttype.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Component.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Bitstring.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/RAW.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Hexstring.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Octetstring.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/ASN_Any.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Charstring.hh
+MTP3asp_PT.o: /usr/include/regex.h
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Universal_charstring.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Struct_of.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Array.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/ASN_CharacterString.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/ASN_External.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/ASN_EmbeddedPDV.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Addfunc.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Timer.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Port.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Module_list.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Snapshot.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Default.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Runtime.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/TEXT.hh
+MTP3asp_PT.o: /vobs/ttcn/TCC_Releases/Other/SEA_LATEST/include/mphclib.h
+MTP3asp_PT.o: MTP3asp_Types.hh MTP3asp_PortType.hh
+mtp3test.o: mtp3test.hh MTP3asp_PortType.hh MTP3asp_Types.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/TTCN3.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/version.h
+mtp3test.o: /usr/include/string.h /usr/include/iso/string_iso.h
+mtp3test.o: /usr/include/sys/feature_tests.h /usr/include/sys/isa_defs.h
+mtp3test.o: /usr/include/stdio.h /usr/include/iso/stdio_iso.h
+mtp3test.o: /usr/include/sys/va_list.h /usr/include/stdio_tag.h
+mtp3test.o: /usr/include/stdio_impl.h
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Basetype.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Types.h
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Encdec.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Template.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Integer.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Optional.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/BER.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Logger.hh
+mtp3test.o: /usr/include/stdlib.h /usr/include/iso/stdlib_iso.h
+mtp3test.o: /usr/include/stdarg.h /usr/include/iso/stdarg_iso.h
+mtp3test.o: /usr/include/sys/time.h /usr/include/sys/types.h
+mtp3test.o: /usr/include/sys/machtypes.h /usr/include/sys/int_types.h
+mtp3test.o: /usr/include/sys/select.h /usr/include/time.h
+mtp3test.o: /usr/include/iso/time_iso.h
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Textbuf.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Error.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Parameters.h
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Float.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Boolean.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/ASN_Null.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Objid.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Verdicttype.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Component.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Bitstring.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/RAW.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Hexstring.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Octetstring.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/ASN_Any.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Charstring.hh
+mtp3test.o: /usr/include/regex.h
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Universal_charstring.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Struct_of.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Array.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/ASN_CharacterString.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/ASN_External.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/ASN_EmbeddedPDV.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Addfunc.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Timer.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Port.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Module_list.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Snapshot.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Default.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Runtime.hh
+mtp3test.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/TEXT.hh
+mtp3test.o: MTP3asp_PT.hh
+mtp3test.o: /vobs/ttcn/TCC_Releases/Other/SEA_LATEST/include/mphclib.h
+MTP3asp_Types.o: MTP3asp_Types.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/TTCN3.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/version.h
+MTP3asp_Types.o: /usr/include/string.h /usr/include/iso/string_iso.h
+MTP3asp_Types.o: /usr/include/sys/feature_tests.h /usr/include/sys/isa_defs.h
+MTP3asp_Types.o: /usr/include/stdio.h /usr/include/iso/stdio_iso.h
+MTP3asp_Types.o: /usr/include/sys/va_list.h /usr/include/stdio_tag.h
+MTP3asp_Types.o: /usr/include/stdio_impl.h
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Basetype.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Types.h
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Encdec.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Template.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Integer.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Optional.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/BER.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Logger.hh
+MTP3asp_Types.o: /usr/include/stdlib.h /usr/include/iso/stdlib_iso.h
+MTP3asp_Types.o: /usr/include/stdarg.h /usr/include/iso/stdarg_iso.h
+MTP3asp_Types.o: /usr/include/sys/time.h /usr/include/sys/types.h
+MTP3asp_Types.o: /usr/include/sys/machtypes.h /usr/include/sys/int_types.h
+MTP3asp_Types.o: /usr/include/sys/select.h /usr/include/time.h
+MTP3asp_Types.o: /usr/include/iso/time_iso.h
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Textbuf.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Error.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Parameters.h
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Float.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Boolean.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/ASN_Null.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Objid.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Verdicttype.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Component.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Bitstring.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/RAW.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Hexstring.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Octetstring.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/ASN_Any.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Charstring.hh
+MTP3asp_Types.o: /usr/include/regex.h
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Universal_charstring.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Struct_of.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Array.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/ASN_CharacterString.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/ASN_External.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/ASN_EmbeddedPDV.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Addfunc.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Timer.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Port.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Module_list.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Snapshot.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Default.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Runtime.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/TEXT.hh
+MTP3asp_PortType.o: MTP3asp_PortType.hh MTP3asp_Types.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/TTCN3.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/version.h
+MTP3asp_PortType.o: /usr/include/string.h /usr/include/iso/string_iso.h
+MTP3asp_PortType.o: /usr/include/sys/feature_tests.h
+MTP3asp_PortType.o: /usr/include/sys/isa_defs.h /usr/include/stdio.h
+MTP3asp_PortType.o: /usr/include/iso/stdio_iso.h /usr/include/sys/va_list.h
+MTP3asp_PortType.o: /usr/include/stdio_tag.h /usr/include/stdio_impl.h
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Basetype.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Types.h
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Encdec.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Template.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Integer.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Optional.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/BER.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Logger.hh
+MTP3asp_PortType.o: /usr/include/stdlib.h /usr/include/iso/stdlib_iso.h
+MTP3asp_PortType.o: /usr/include/stdarg.h /usr/include/iso/stdarg_iso.h
+MTP3asp_PortType.o: /usr/include/sys/time.h /usr/include/sys/types.h
+MTP3asp_PortType.o: /usr/include/sys/machtypes.h /usr/include/sys/int_types.h
+MTP3asp_PortType.o: /usr/include/sys/select.h /usr/include/time.h
+MTP3asp_PortType.o: /usr/include/iso/time_iso.h
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Textbuf.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Error.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Parameters.h
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Float.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Boolean.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/ASN_Null.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Objid.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Verdicttype.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Component.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Bitstring.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/RAW.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Hexstring.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Octetstring.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/ASN_Any.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Charstring.hh
+MTP3asp_PortType.o: /usr/include/regex.h
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Universal_charstring.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Struct_of.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Array.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/ASN_CharacterString.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/ASN_External.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/ASN_EmbeddedPDV.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Addfunc.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Timer.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Port.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Module_list.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Snapshot.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Default.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/Runtime.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-1.7.pl2-gcc3.4.6/include/TEXT.hh
+MTP3asp_PortType.o: MTP3asp_PT.hh
+MTP3asp_PortType.o: /vobs/ttcn/TCC_Releases/Other/SEA_LATEST/include/mphclib.h
diff --git a/MTP3asp_CNL113337/demo/mtp3test.ttcn b/MTP3asp_CNL113337/demo/mtp3test.ttcn
new file mode 100644
index 0000000..1c84250
--- /dev/null
+++ b/MTP3asp_CNL113337/demo/mtp3test.ttcn
@@ -0,0 +1,292 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright Test Competence Center (TCC) ETH 2003
+//
+// The copyright to the computer program(s) herein is the property of TCC. //
+// The program(s) may be used and/or copied only with the written permission //
+// of TCC or in accordance with the terms and conditions stipulated in the //
+// agreement/contract under which the program(s) have been supplied
+//
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: mtp3test.cc
+// Description: basic test for MTP3asp_PT
+// Rev: <RnXnn>
+// Prodnr: CNL 113 337
+// Updated: 2004.06.02
+// Contact: http://ttcn.ericsson.se
+
+
+module mtp3test
+{
+
+modulepar
+{
+ //mtp3test specific data:
+ //OCT1n MTP3_UserPart_SIO;
+ MTP3_Field_sio MTP3_UserPart_SIO;
+ integer MTP3_UserPart_OPC,
+ MTP3_UserPart_DPC,
+ MTP3_UserPart_SLS
+};//modulepar
+
+import from MTP3asp_Types all;
+import from MTP3asp_PortType all;
+
+/*************************************
+* Components
+**************************************/
+
+/*
+**************** 1: 2: ************************
+* MTP3UserPart * <---------> * MTP3/M3UA in MSC *
+**************** (MTP3port)************************
+1: MTP3asp_PT MTP3_PCO alias: e.g. CMGW6
+
+*/
+
+type record of MTP3UserPart_CT CompArray;
+
+type component MTC_CT
+{
+ port MTP3asp_PT MTC_PCO;
+ var MTP3UserPart_CT vc_MTP3UserPart_BSC1A;
+ var MTP3UserPart_CT vc_MTP3UserPart_BSC1B;
+ var MTP3UserPart_CT vc_MTP3UserPart_BSC1C;
+ var MTP3UserPart_CT vc_MTP3UserPart_CMGW3;
+ var MTP3UserPart_CT vc_MTP3UserPart_CMGW6;
+ var MTP3UserPart_CT vc_MTP3UserPart_CMGW9;
+ var MTP3UserPart_CT vc_compArray[6];
+};
+
+// Model of MSC:
+type component MSC_SCT
+{
+ port MTP3asp_PT BSC1A;
+ port MTP3asp_PT BSC1B;
+ port MTP3asp_PT BSC1C;
+ port MTP3asp_PT CMGW3;
+ port MTP3asp_PT CMGW6;
+ port MTP3asp_PT CMGW9;
+};
+
+//Model of SS7 MTP3 User Part for Self Test. Only logs the messages
+type component MTP3UserPart_CT
+{
+ var ASP_MTP3_TRANSFERind v_MTP3_TRANSFERind;
+ var ASP_MTP3_TRANSFERreq v_MTP3_TRANSFERreq;
+ port MTP3asp_PT MTP3_PCO;
+ // port ... to the upper layers
+} // end component type definition
+
+/*
+function MTC_delay(integer time) runs on MTC_CT {
+ timer t:=time;
+ t.start;
+ setverdict(none);
+ alt{ []t.timeout {} }
+ }
+*/
+
+function mtp3_selftest( ) runs on MTP3UserPart_CT
+{
+ timer t_Guard := 6.0;
+ log( "mtp3_selftest started");
+ t_Guard.start;
+ setverdict(none);
+ alt
+ {
+ [] MTP3_PCO.receive ( ASP_MTP3_TRANSFERind:?) -> value v_MTP3_TRANSFERind
+ {
+ log("ASP_MTP3_TRANSFERind: received");
+ setverdict(pass);
+ repeat;
+ }
+ [] MTP3_PCO.receive
+ {
+ log("Unknown signal received");
+ setverdict(pass);
+ repeat;
+ }
+ [] t_Guard.timeout
+ { log("timeout reached");}
+ } //alt
+ log("mtp3_selftest finished");
+}
+
+function f_init( ) runs on MTC_CT
+{
+ vc_MTP3UserPart_BSC1A := MTP3UserPart_CT.create;
+ vc_MTP3UserPart_BSC1B := MTP3UserPart_CT.create;
+ vc_MTP3UserPart_BSC1C := MTP3UserPart_CT.create;
+ vc_MTP3UserPart_CMGW3 := MTP3UserPart_CT.create;
+ vc_MTP3UserPart_CMGW6 := MTP3UserPart_CT.create;
+ vc_MTP3UserPart_CMGW9 := MTP3UserPart_CT.create;
+
+ map(vc_MTP3UserPart_BSC1A:MTP3_PCO,system:BSC1A);
+ map(vc_MTP3UserPart_BSC1B:MTP3_PCO,system:BSC1B);
+ map(vc_MTP3UserPart_BSC1C:MTP3_PCO,system:BSC1C);
+ map(vc_MTP3UserPart_CMGW3:MTP3_PCO,system:CMGW3);
+ map(vc_MTP3UserPart_CMGW6:MTP3_PCO,system:CMGW6);
+ map(vc_MTP3UserPart_CMGW9:MTP3_PCO,system:CMGW9);
+
+ log("tc_3 map is ready");
+}
+
+function f_start() runs on MTC_CT
+{
+ vc_MTP3UserPart_BSC1A.start( mtp3userpart_test() );
+ vc_MTP3UserPart_BSC1B.start( mtp3userpart_test() );
+ vc_MTP3UserPart_BSC1C.start( mtp3userpart_test() );
+ vc_MTP3UserPart_CMGW3.start( mtp3userpart_test() );
+ vc_MTP3UserPart_CMGW6.start( mtp3userpart_test() );
+ vc_MTP3UserPart_CMGW9.start( mtp3userpart_test() );
+}
+
+function f_terminate() runs on MTC_CT
+{
+ all component.done;
+ unmap(vc_MTP3UserPart_BSC1A:MTP3_PCO,system:BSC1A);
+ unmap(vc_MTP3UserPart_BSC1B:MTP3_PCO,system:BSC1B);
+ unmap(vc_MTP3UserPart_BSC1C:MTP3_PCO,system:BSC1C);
+ unmap(vc_MTP3UserPart_CMGW3:MTP3_PCO,system:CMGW3);
+ unmap(vc_MTP3UserPart_CMGW6:MTP3_PCO,system:CMGW6);
+ unmap(vc_MTP3UserPart_CMGW9:MTP3_PCO,system:CMGW9);
+}
+
+function mtp3userpart_test( ) runs on MTP3UserPart_CT {
+ timer t_Guard := 5.0;
+ log( "mtp3userpart_test started");
+ v_MTP3_TRANSFERreq :=
+ {
+ sio := MTP3_UserPart_SIO,
+ opc := MTP3_UserPart_OPC,
+ dpc := MTP3_UserPart_DPC,
+ sls := 0,
+ data:= '010203040506070809000102030405060708090000010203040506070809000000'O
+ };
+ MTP3_PCO.send( v_MTP3_TRANSFERreq );
+ t_Guard.start;
+ setverdict(none);
+ alt
+ {
+ [] MTP3_PCO.receive ( ASP_MTP3_TRANSFERind:? ) -> value v_MTP3_TRANSFERind
+ {
+ log("ASP_MTP3_TRANSFERind: received");
+ setverdict(pass);
+ repeat;
+ }
+ [] MTP3_PCO.receive
+ {
+ log("Unknown signal received");
+ setverdict(pass);
+ repeat;
+ }
+ [] t_Guard.timeout
+ {
+ //setverdict(inconc);
+ log("timeout reached");
+ }
+ } //alt
+ log("mtp3userpart_test finished");
+}
+
+testcase tc_1() runs on MTC_CT system MSC_SCT
+{
+ log ("tc_1 started");
+ var MTP3UserPart_CT vc_MTP3userpart;
+ vc_MTP3userpart := MTP3UserPart_CT.create;
+ map(vc_MTP3userpart:MTP3_PCO, system:CMGW6);
+ log("map is ready");
+ vc_MTP3userpart.start( mtp3_selftest() );
+ //MTC_delay(6);
+ vc_MTP3userpart.done;
+ unmap(vc_MTP3userpart:MTP3_PCO, system:CMGW6);
+ log ("tc_1 finished");
+}
+
+// TC2: Testcase sending one simple message "MTP-transfer-req" and waiting
+testcase tc_2() runs on MTC_CT system MSC_SCT
+{
+ log ("tc_2 started");
+ var MTP3UserPart_CT vc_MTP3userpart;
+ vc_MTP3userpart := MTP3UserPart_CT.create;
+ map(vc_MTP3userpart:MTP3_PCO, system:CMGW6);
+ log("map is ready");
+ vc_MTP3userpart.start( mtp3userpart_test() );
+ //MTC_delay(6);
+ vc_MTP3userpart.done;
+ unmap(vc_MTP3userpart:MTP3_PCO, system:CMGW6);
+ log ("tc_2 finished");
+}
+
+testcase tc_3() runs on MTC_CT system MSC_SCT
+{
+ log ("tc_3 started");
+ vc_MTP3UserPart_BSC1A := MTP3UserPart_CT.create;
+ vc_MTP3UserPart_BSC1B := MTP3UserPart_CT.create;
+ vc_MTP3UserPart_BSC1C := MTP3UserPart_CT.create;
+ vc_MTP3UserPart_CMGW3 := MTP3UserPart_CT.create;
+ vc_MTP3UserPart_CMGW6 := MTP3UserPart_CT.create;
+ vc_MTP3UserPart_CMGW9 := MTP3UserPart_CT.create;
+
+ map(vc_MTP3UserPart_BSC1A:MTP3_PCO,system:BSC1A);
+ map(vc_MTP3UserPart_BSC1B:MTP3_PCO,system:BSC1B);
+ map(vc_MTP3UserPart_BSC1C:MTP3_PCO,system:BSC1C);
+ map(vc_MTP3UserPart_CMGW3:MTP3_PCO,system:CMGW3);
+ map(vc_MTP3UserPart_CMGW6:MTP3_PCO,system:CMGW6);
+ map(vc_MTP3UserPart_CMGW9:MTP3_PCO,system:CMGW9);
+
+ log("tc_3 map is ready");
+ vc_MTP3UserPart_BSC1A.start( mtp3userpart_test() );
+ vc_MTP3UserPart_BSC1B.start( mtp3userpart_test() );
+ vc_MTP3UserPart_BSC1C.start( mtp3userpart_test() );
+ vc_MTP3UserPart_CMGW3.start( mtp3userpart_test() );
+ vc_MTP3UserPart_CMGW6.start( mtp3userpart_test() );
+ vc_MTP3UserPart_CMGW9.start( mtp3userpart_test() );
+
+ //MTC_delay(6);
+ all component.done;
+ unmap(vc_MTP3UserPart_BSC1A:MTP3_PCO,system:BSC1A);
+ unmap(vc_MTP3UserPart_BSC1B:MTP3_PCO,system:BSC1B);
+ unmap(vc_MTP3UserPart_BSC1C:MTP3_PCO,system:BSC1C);
+ unmap(vc_MTP3UserPart_CMGW3:MTP3_PCO,system:CMGW3);
+ unmap(vc_MTP3UserPart_CMGW6:MTP3_PCO,system:CMGW6);
+ unmap(vc_MTP3UserPart_CMGW9:MTP3_PCO,system:CMGW9);
+ log ("tc_3 finished");
+}
+
+// tc_4 is the same as tc_3 but organized by arrays and cycles
+testcase tc_4() runs on MTC_CT system MSC_SCT
+{
+ f_init();
+ f_start();
+ f_terminate();
+}
+
+testcase tc_5() runs on MTC_CT
+{
+ var ASP_MTP3_TRANSFERreq vl_MTP3_TRANSFERreq :=
+ { sio :=
+ { ni := '00'B,
+ prio := '00'B,
+ si := '0000'B
+ },
+ opc := 0,
+ dpc := 0,
+ sls := 0,
+ data:= '010203040506070809000102030405060708090000010203040506070809000000'O
+ };
+
+ map(self:MTC_PCO,system:MTC_PCO);
+ MTC_PCO.send(vl_MTP3_TRANSFERreq);
+ MTC_PCO.receive;
+ unmap(self:MTC_PCO,system:MTC_PCO);
+}
+
+control
+{
+ execute (tc_1());
+}
+
+}//module
diff --git a/MTP3asp_CNL113337/demo/mtp3test_MTP3_ansi2.cfg b/MTP3asp_CNL113337/demo/mtp3test_MTP3_ansi2.cfg
new file mode 100644
index 0000000..35b3e09
--- /dev/null
+++ b/MTP3asp_CNL113337/demo/mtp3test_MTP3_ansi2.cfg
@@ -0,0 +1,75 @@
+[LOGGING]
+#FileName := "mtp3test_MTP3_ansi2.cfg"
+FileMask := LOG_ALL | TTCN_DEBUG | TTCN_MATCHING
+#ConsoleMask := LOG_ALL | TTCN_DEBUG | TTCN_MATCHING
+
+[EXECUTE]
+#Loopback
+#mtp3test.TC0
+#SEA test cases, LOOP := OFF
+#mtp3test.tc_1
+#mtp3test.tc_2
+#mtp3test.tc_3
+mtp3test.tc_4
+[TESTPORT_PARAMETERS]
+// *******************************************************
+// * DO NOT FORGET TO SET THE FOLLOWING TWO LINE TO YOUR SEA *
+// *******************************************************
+system.*.Hostname := "zaire" //sea server name
+system.*.HttpPort := "5000" //sea http port
+system.*.Loop:= "ON"
+system.*.Filter:= "OFF"
+system.*.MTP3ServiceType := "MTP3itu" // ["MTP3itu" (default)|"MTP3ansi" | "M3UA" | "MTP3ttc" | "MTP3mpt" ]
+
+system.CMGW3.EntityName := "S7ST-0" //device name to connect
+system.CMGW3.NI:= "2"
+system.CMGW3.SUT_Pc:= "461088"
+system.CMGW3.TESTER_Pc:= "461089"
+system.CMGW3.M3UA_version:= "1"
+
+system.CMGW6.EntityName := "S7ST-1" //device name to connect
+system.CMGW6.NI:= "2"
+system.CMGW6.SUT_Pc:= "461086" // 07-09-30 =0x07091E see command: s7stp:st=s7stg-0&&-32;
+system.CMGW6.TESTER_Pc:= "461087" //07-09-31=0x07091F
+system.CMGW6.M3UA_version:= "1"
+
+system.CMGW9.EntityName := "S7ST-2" //device name to connect
+system.CMGW9.NI:= "2"
+system.CMGW9.SUT_Pc:= "461088"
+system.CMGW9.TESTER_Pc:= "461089"
+system.CMGW9.M3UA_version:= "1"
+
+system.BSC1A.EntityName := "S7ST-3" //device name to connect
+system.BSC1A.NI:= "2"
+system.BSC1A.SUT_Pc:= "461088"
+system.BSC1A.TESTER_Pc:= "461089"
+system.BSC1A.M3UA_version:= "1"
+
+system.BSC1B.EntityName := "S7ST-4" //device name to connect
+system.BSC1B.NI:= "2"
+system.BSC1B.SUT_Pc:= "461088"
+system.BSC1B.TESTER_Pc:= "461089"
+system.BSC1B.M3UA_version:= "1"
+
+system.BSC1C.EntityName := "S7ST-5" //device name to connect
+system.BSC1C.NI:= "2"
+system.BSC1C.SUT_Pc:= "461088"
+system.BSC1C.TESTER_Pc:= "461089"
+system.BSC1C.M3UA_version:= "1"
+
+[MODULE_PARAMETERS]
+
+// MTP3_user_part for test suite 'mtp3userpart_test' in mtp3test.ttcn
+MTP3_UserPart_SIO :=
+{
+ ni := '10'B,
+ prio := '00'B,
+ si := '1110'B
+};
+MTP3_UserPart_OPC := 461087 // =0x07091E
+MTP3_UserPart_DPC := 461086 //
+MTP3_UserPart_SLS := 0;
+
+[MAIN_CONTROLLER]
+TCPPort := 9999
+NumHCs := 1
diff --git a/MTP3asp_CNL113337/doc/MTP3asp_CNL113337_FS.pdf b/MTP3asp_CNL113337/doc/MTP3asp_CNL113337_FS.pdf
new file mode 100644
index 0000000..b6cf46f
--- /dev/null
+++ b/MTP3asp_CNL113337/doc/MTP3asp_CNL113337_FS.pdf
Binary files differ
diff --git a/MTP3asp_CNL113337/doc/MTP3asp_CNL113337_PRI.pdf b/MTP3asp_CNL113337/doc/MTP3asp_CNL113337_PRI.pdf
new file mode 100644
index 0000000..4e8b25c
--- /dev/null
+++ b/MTP3asp_CNL113337/doc/MTP3asp_CNL113337_PRI.pdf
Binary files differ
diff --git a/MTP3asp_CNL113337/doc/MTP3asp_CNL113337_UG.pdf b/MTP3asp_CNL113337/doc/MTP3asp_CNL113337_UG.pdf
new file mode 100644
index 0000000..0c6b3d7
--- /dev/null
+++ b/MTP3asp_CNL113337/doc/MTP3asp_CNL113337_UG.pdf
Binary files differ
diff --git a/MTP3asp_CNL113337/src/MTP3asp_EncDec.cc b/MTP3asp_CNL113337/src/MTP3asp_EncDec.cc
new file mode 100644
index 0000000..394d726
--- /dev/null
+++ b/MTP3asp_CNL113337/src/MTP3asp_EncDec.cc
@@ -0,0 +1,20 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright Test Competence Center (TCC) ETH 2007
+// //
+// The copyright to the computer program(s) herein is the property of TCC. //
+// The program(s) may be used and/or copied only with the written permission //
+// of TCC or in accordance with the terms and conditions stipulated in the //
+// agreement/contract under which the program(s) have been supplied //
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: MTP3asp_EncDec.cc
+// Rev: R11A01
+// Prodnr: CNL 113 337
+// Updated: 2007-09-17
+// Contact: http://ttcn.ericsson.se
+///////////////////////////////////////////////////////////////////////////////
+
+// Please note: Because the encoder/decoder functions are generated by the
+// TITAN, the MTP3asp_EncDec.cc is kept only for compatibility issue and
+// should be removed from the projects.
diff --git a/MTP3asp_CNL113337/src/MTP3asp_PT.cc b/MTP3asp_CNL113337/src/MTP3asp_PT.cc
new file mode 100644
index 0000000..37bab8f
--- /dev/null
+++ b/MTP3asp_CNL113337/src/MTP3asp_PT.cc
@@ -0,0 +1,2952 @@
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Copyright Test Competence Center (TCC) ETH 2012 //
+// //
+// The copyright to the computer program(s) herein is the property of TCC. //
+// The program(s) may be used and/or copied only with the written permission //
+// of TCC or in accordance with the terms and conditions stipulated in the //
+// agreement/contract under which the program(s) have been supplied //
+// //
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: MTP3asp_PT.cc
+// Description: Implementation of port MTP3asp_PT
+// This test port is written to connect TTCN-3 to SEA according
+// to specification ITU-T SS7 MTP3, ANSI, TCC, IETF, MPT
+// Reference: ITU-T Recommendation Q.704, RFC3332
+// Rev: R11A01
+// Prodnr: CNL 113 337
+// Updated: 2012-05-24
+// Contact: http://ttcn.ericsson.se
+
+// IMPORTANT MODIFICATION:
+// mtp3_ttc uses ALWAYS 16 bits long SPCs, regardless of mtp3_ni sio
+
+#include "MTP3asp_PT.hh"
+
+#include "MTP3asp_Types.hh"
+#include "MTP3asp_PortType.hh"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <poll.h>
+#include <errno.h>
+#include <stdarg.h>
+#include <string.h>
+
+
+// Constans for M3UA, see rfc 3332 and 2/1056-FCPW 101 86/P-1
+// Constants for decoding M3UA common headers
+#define M3UA_VER_OFFS 0
+#define M3UA_CLS_OFFS 2
+#define M3UA_TYP_OFFS 3
+#define M3UA_LGT_OFFS 4
+#define M3UA_MSG_OFFS 8
+#define M3UA_MSG_LENGTH_LENGTH 4
+
+// Constants for M3UA protocol
+//Msg classes
+#define M3UA_MSG_CLS_MGMT 0x00
+#define M3UA_MSG_CLS_TRNSFM 0x01
+#define M3UA_MSG_CLS_SSNM 0x02
+#define M3UA_MSG_CLS_ASPSM 0x03
+#define M3UA_MSG_CLS_ASPTM 0x04
+#define M3UA_MSG_CLS_RKM 0x09
+//Msg types
+#define M3UA_MSG_TYP_MGMT_ERR 0x00
+#define M3UA_MSG_TYP_MGMT_NTFY 0x01
+
+#define M3UA_MSG_TYP_TRSNFM_DATA 0x01
+
+#define M3UA_MSG_TYP_SSNM_DUNA 0x01
+#define M3UA_MSG_TYP_SSNM_DAVA 0x02
+#define M3UA_MSG_TYP_SSNM_DAUD 0x03
+#define M3UA_MSG_TYP_SSNM_SCON 0x04
+#define M3UA_MSG_TYP_SSNM_DUPU 0x05
+#define M3UA_MSG_TYP_SSNM_DRST 0x06
+
+#define M3UA_MSG_TYP_ASPSM_ASPUP 0x01
+#define M3UA_MSG_TYP_ASPSM_ASPDN 0x02
+#define M3UA_MSG_TYP_ASPSM_BEAT 0x03
+#define M3UA_MSG_TYP_ASPSM_ASPUPAck 0x04
+#define M3UA_MSG_TYP_ASPSM_ASPDNAck 0x05
+#define M3UA_MSG_TYP_ASPSM_BEATAck 0x06
+
+#define M3UA_MSG_TYP_ASPTM_ASPAC 0x01
+#define M3UA_MSG_TYP_ASPTM_ASPIA 0x02
+#define M3UA_MSG_TYP_ASPTM_ASPACAck 0x03
+#define M3UA_MSG_TYP_ASPTM_ASPIAAck 0x04
+
+#define M3UA_MSG_TYP_RKM_REGREQ 0x01
+#define M3UA_MSG_TYP_RKM_REGRSP 0x02
+#define M3UA_MSG_TYP_RKM_DEREGREQ 0x03
+#define M3UA_MSG_TYP_RKM_DEREGRESP 0x04
+
+//parameters
+//common for all adaptation layer
+#define PAR_PREFIX_COMMON 0x00
+#define PAR_INFO_STR 0x04
+#define PAR_ROUTING_CTX 0x06
+#define PAR_DIAG_INFO 0x07
+#define PAR_HEART_BEAT 0x09
+#define PAR_TRAFFMODE_T 0x0b
+#define PAR_ERROR_CODE 0x0c
+#define PAR_STATUS 0x0d
+#define PAR_ASP_ID 0x11
+#define PAR_AFFECTED_PC 0x12
+#define PAR_CORREL_ID 0x13
+
+//M3UA specific
+#define PAR_PREFIX_M3UA 0x02
+#define PAR_NETW_APP 0x00
+#define PAR_USR_O_CAUSE 0x04
+#define PAR_CNGST_IND 0x05
+#define PAR_CNCRD_IND 0x06
+#define PAR_ROUTING_KEY 0x07
+#define PAR_REG_RSLT 0x08
+#define PAR_DEREG_RSLT 0x09
+#define PAR_LOC_RK_ID 0x0a
+#define PAR_DPC 0x0b
+#define PAR_SI 0x0c
+#define PAR_OPC_LIST 0x0e
+#define PAR_CIRC_RNG 0x0f
+#define PAR_PROT_DATA 0x10
+#define PAR_REG_STAT 0x12
+#define PAR_DEREG_STAT 0x13
+
+// error codes:
+#define PAR_ERRC_IVER 0x01
+#define PAR_ERRC_UNSMC 0x03
+#define PAR_ERRC_UNSMT 0x04
+#define PAR_ERRC_UNTMT 0x05
+#define PAR_ERRC_UNEM 0x06
+#define PAR_ERRC_PERR 0x07
+#define PAR_ERRC_ISI 0x09
+#define PAR_ERRC_RMB 0x0D
+#define PAR_ERRC_ASPIDR 0x0E
+#define PAR_ERRC_IASPID 0x0F
+#define PAR_ERRC_IPARV 0x11
+#define PAR_ERRC_PARFE 0x12
+#define PAR_ERRC_UPAR 0x13
+#define PAR_ERRC_DSU 0x14
+#define PAR_ERRC_INA 0x15
+#define PAR_ERRC_MP 0x16
+#define PAR_ERRC_IRC 0x19
+#define PAR_ERRC_NCFAS 0x1A
+
+
+// --------------------------
+// Basic Test Port functions
+// --------------------------
+using namespace MTP3asp__Types;
+namespace MTP3asp__PortType {
+
+//external functions
+//##########################################################
+
+//f__MTP3__SEA__connect (for MTP3asp_PT)
+BOOLEAN f__MTP3__SEA__connect(MTP3asp__PT& portRef,
+ const CHARSTRING& Hostname,const INTEGER& Port,const CHARSTRING& EntityName,const BOOLEAN& Http)
+{
+ return f__MTP3__SEA__connect__extern(portRef,Hostname,Port,EntityName,Http);
+}
+//------------
+
+//f__MTP3__SEA__disconnect (for MTP3asp_PT)
+BOOLEAN f__MTP3__SEA__disconnect(MTP3asp__PT& portRef)
+{
+ return f__MTP3__SEA__disconnect__extern(portRef);
+}
+//------------
+
+//f__MTP3__SEA__connect__extern
+BOOLEAN f__MTP3__SEA__connect__extern(MTP3asp__PT_PROVIDER& portRef,
+ const CHARSTRING& Hostname,const INTEGER& Port,const CHARSTRING& EntityName,const BOOLEAN& Http)
+{
+#ifndef TARGET_TEST
+ if (portRef.dynamicConnection && (!(portRef.connectionUp)))
+ {
+ delete [] portRef.hostname;
+ int len = strlen(Hostname);
+ portRef.hostname = new char[len + 1];
+ memcpy(portRef.hostname, Hostname, len + 1);
+
+ portRef.httpport = Port;
+
+ delete [] portRef.entityname;
+ len = strlen(EntityName);
+ portRef.entityname = new char[len + 1];
+ memcpy(portRef.entityname, EntityName, len + 1);
+
+ if(Http)
+ portRef.MTP3_open_channel(TRUE);
+ else
+ portRef.MTP3_open_channel(FALSE);
+
+ if(portRef.wait_for_open())
+ {
+ portRef.user_connect();
+ portRef.connectionUp = TRUE;
+ return TRUE;
+ }
+ }
+ else
+#endif
+ portRef.log("Dynamic connection feature is not active or already connected.");
+ return FALSE;
+}
+//------------
+
+//f__MTP3__SEA__disconnect__extern
+BOOLEAN f__MTP3__SEA__disconnect__extern(MTP3asp__PT_PROVIDER& portRef)
+{
+#ifndef TARGET_TEST
+ if (portRef.connectionUp)
+ {
+ portRef.MTP3_close_connection();
+ portRef.connectionUp = FALSE;
+ return TRUE;
+ }
+#endif
+ return FALSE;
+}
+//------------
+
+// Test Port constructor
+MTP3asp__PT_PROVIDER::MTP3asp__PT_PROVIDER(const char *par_port_name)
+ : PORT(par_port_name)
+{
+ MTP_fd=-1;
+ httpport=-1;
+ hostname=NULL;
+ destinationname = NULL;
+ dynamicConnection = FALSE;
+
+ const char *str="b303d76a-266c-11d4-b8f5-08002090d3da";
+ int len = strlen(str);
+ iid_string= new char[len + 1];
+ memcpy(iid_string, str, len + 1);
+
+ entityname=NULL;
+ Filter=Loop=-1;
+ Sut_Pc=Tester_Pc=-1;
+ Ni_is_set = FALSE;
+ MTPServiceType = MTP3itu;
+ M3UA_version = 1;
+ M3UAState = AssocDown; // unnecessary...
+ mtp3_ni=0;
+#ifndef TARGET_TEST
+ user_map_p = &MTP3asp__PT_PROVIDER::MTP3_user_map;
+ user_unmap_p = &MTP3asp__PT_PROVIDER::MTP3_user_unmap;
+ interpreter = &MTP3asp__PT_PROVIDER::MTP3_interpreter;
+#endif
+ forward_pause = FALSE;
+ forward_resume = FALSE;
+ forward_status = FALSE;
+}
+//------------
+
+// Test Port destructor
+MTP3asp__PT_PROVIDER::~MTP3asp__PT_PROVIDER()
+{
+ delete [] hostname;
+ delete [] entityname;
+ delete [] iid_string;
+}
+//------------
+
+// set_parameter
+void MTP3asp__PT_PROVIDER::set_parameter(const char *parameter_name,
+ const char *parameter_value)
+{
+ log("set_parameter: %s = %s",parameter_name,parameter_value);
+ if (!strcmp(parameter_name,"Hostname"))
+ {
+ delete [] hostname;
+ int len = strlen(parameter_value);
+ hostname = new char[len + 1];
+ memcpy(hostname, parameter_value, len + 1);
+ }
+ else if (!strcmp(parameter_name, "HttpPort"))
+ {
+ httpport = atoi(parameter_value);
+ }
+ else if (!strcmp(parameter_name,"EntityName"))
+ {
+ delete [] entityname;
+ int len = strlen(parameter_value);
+ entityname= new char[len + 1];
+ memcpy(entityname, parameter_value, len + 1);
+ }
+ else if (!strcmp(parameter_name,"DestinationName"))
+ {
+ delete [] destinationname;
+ int len = strlen(parameter_value);
+ destinationname= new char[len + 1];
+ memcpy(destinationname, parameter_value, len + 1);
+ }
+ else if (!strcmp(parameter_name,"Filter"))
+ {
+ if (!strcmp(parameter_value,"ON")) Filter = MTP3_ON;
+ else Filter = MTP3_OFF;
+ }
+ else if (!strcmp(parameter_name,"Loop"))
+ {
+ if (!strcmp(parameter_value,"ON")) Loop = MTP3_ON;
+ else Loop = MTP3_OFF;
+ }
+ else if (!strcmp(parameter_name,"NI"))
+ {
+ Ni_is_set = TRUE;
+ mtp3_ni = atoi(parameter_value);
+ debuglog("Network indicator is set to %i",mtp3_ni);
+ }
+ else if (!strcmp(parameter_name,"SUT_Pc"))
+ {
+ Sut_Pc = atoi(parameter_value);
+ }
+ else if (!strcmp(parameter_name,"TESTER_Pc"))
+ {
+ Tester_Pc = atoi(parameter_value);
+ }
+ else if (!strcmp(parameter_name,"M3UA_version"))
+ {
+ M3UA_version = atoi(parameter_value);
+ debuglog("%d",M3UA_version);
+ }
+#ifndef TARGET_TEST
+ else if (!strcmp(parameter_name,"DynamicConnection"))
+ {
+ if (!strcasecmp(parameter_value,"ON"))
+ {
+ dynamicConnection = TRUE;
+ }
+ }
+#endif
+ else if (!strcmp(parameter_name,"MTP3ServiceType"))
+ {
+ if (!strcmp(parameter_value,"TargetM3UA"))
+ {
+#ifndef TARGET_TEST
+ error("TargetM3UA not supported, since TARGET_TEST not in Makefile");
+#else
+ log("MTP3ServiceType is set to TargetM3UA");
+ user_map_p = &MTP3asp__PT_PROVIDER::Target_user_map;
+ user_unmap_p = &MTP3asp__PT_PROVIDER::Target_user_unmap;
+ MTPServiceType = TargetM3UA;
+#endif
+ }
+ else if (!strcmp(parameter_value,"TargetSTC"))
+ {
+#ifndef TARGET_TEST
+ error("TargetSTC not supported, since TARGET_TEST not in Makefile");
+#else
+ log("MTP3ServiceType is set to TargetSTC");
+ user_map_p = &MTP3asp__PT_PROVIDER::TargetSTC_user_map;
+ user_unmap_p = &MTP3asp__PT_PROVIDER::Target_user_unmap; //Same as by Target M3UA
+ MTPServiceType = TargetSTC;
+#endif
+ }
+#ifndef TARGET_TEST
+ else if (!strcmp(parameter_value,"M3UA"))
+ { //M3UA
+ log("MTP3ServiceType is set to M3UA");
+ interpreter = &MTP3asp__PT_PROVIDER::M3UA_interpreter;
+ user_map_p = &MTP3asp__PT_PROVIDER::M3UA_user_map;
+ user_connect_p = &MTP3asp__PT_PROVIDER::M3UA_user_connect;
+ user_unmap_p = &MTP3asp__PT_PROVIDER::M3UA_user_unmap;
+ MTPServiceType = M3UA;
+ }
+ else if (!strcmp(parameter_value,"MTP3itu"))
+ {
+ log("MTP3ServiceType is set to MTP3itu");
+ interpreter = &MTP3asp__PT_PROVIDER::MTP3_interpreter;
+ user_map_p = &MTP3asp__PT_PROVIDER::MTP3_user_map;
+ user_connect_p = &MTP3asp__PT_PROVIDER::MTP3_user_connect;
+ user_unmap_p = &MTP3asp__PT_PROVIDER::MTP3_user_unmap;
+ MTPServiceType = MTP3itu;
+ }
+ else if ( !strcmp(parameter_value,"MTP3ansi"))
+ {
+ log("MTP3ServiceType is set to MTP3ansi");
+ interpreter = &MTP3asp__PT_PROVIDER::MTP3_interpreter;
+ user_map_p = &MTP3asp__PT_PROVIDER::MTP3_user_map;
+ user_connect_p = &MTP3asp__PT_PROVIDER::MTP3_user_connect;
+ user_unmap_p = &MTP3asp__PT_PROVIDER::MTP3_user_unmap;
+ MTPServiceType = MTP3ansi;
+ }
+ else if ( !strcmp(parameter_value,"MTP3ttc"))
+ {
+ log("MTP3ServiceType is set to MTP3ttc");
+ interpreter = &MTP3asp__PT_PROVIDER::MTP3_interpreter;
+ user_map_p = &MTP3asp__PT_PROVIDER::MTP3_user_map;
+ user_connect_p = &MTP3asp__PT_PROVIDER::MTP3_user_connect;
+ user_unmap_p = &MTP3asp__PT_PROVIDER::MTP3_user_unmap;
+ MTPServiceType = MTP3ttc;
+ }
+ else if ( !strcmp(parameter_value,"MTP3mpt"))
+ {
+ log("MTP3ServiceType is set to MTP3mpt");
+ interpreter = &MTP3asp__PT_PROVIDER::MTP3_interpreter;
+ user_map_p = &MTP3asp__PT_PROVIDER::MTP3_user_map;
+ user_connect_p = &MTP3asp__PT_PROVIDER::MTP3_user_connect;
+ user_unmap_p = &MTP3asp__PT_PROVIDER::MTP3_user_unmap;
+ MTPServiceType = MTP3mpt;
+ }
+ else if ( !strcmp(parameter_value,"MTP3bttc"))
+ {
+ log("MTP3ServiceType is set to MTP3bttc");
+ interpreter = &MTP3asp__PT_PROVIDER::MTP3_interpreter;
+ user_map_p = &MTP3asp__PT_PROVIDER::MTP3_user_map;
+ user_connect_p = &MTP3asp__PT_PROVIDER::MTP3_user_connect;
+ user_unmap_p = &MTP3asp__PT_PROVIDER::MTP3_user_unmap;
+ MTPServiceType = MTP3bttc;
+ }
+ else if ( !strcmp(parameter_value,"MTP3iup"))
+ {
+ log("MTP3ServiceType is set to MTP3iup");
+ interpreter = &MTP3asp__PT_PROVIDER::MTP3_interpreter;
+ user_map_p = &MTP3asp__PT_PROVIDER::MTP3_user_map;
+ user_connect_p = &MTP3asp__PT_PROVIDER::MTP3_user_connect;
+ user_unmap_p = &MTP3asp__PT_PROVIDER::MTP3_user_unmap;
+ MTPServiceType = MTP3iup;
+ }
+ else if ( !strcmp(parameter_value,"STC"))
+ {
+ log("MTP3ServiceType is set to STC");
+ interpreter = &MTP3asp__PT_PROVIDER::STC_interpreter;
+ user_map_p = &MTP3asp__PT_PROVIDER::STC_user_map;
+ user_connect_p = &MTP3asp__PT_PROVIDER::STC_user_connect;
+ user_unmap_p = &MTP3asp__PT_PROVIDER::STC_user_unmap;
+ MTPServiceType = STC;
+ }
+#endif
+ else
+ {
+ log("Unsupported MTP3ServiceType: %s, falling back to MTP3itu",
+ parameter_value);
+ }
+ }
+ else if(strcasecmp(parameter_name, "forward_pause") == 0)
+ {
+ if (strcasecmp(parameter_value,"forward") == 0)
+ forward_pause = TRUE;
+ else if(strcasecmp(parameter_value,"ignore") == 0)
+ forward_pause = FALSE;
+ else
+ error("set_parameter(): Invalid parameter value: %s for parameter %s. Only forward and ignore can be used!" ,
+ parameter_value, parameter_name);
+ }
+ else if(strcasecmp(parameter_name, "forward_resume") == 0)
+ {
+ if (strcasecmp(parameter_value,"forward") == 0)
+ forward_resume = TRUE;
+ else if(strcasecmp(parameter_value,"ignore") == 0)
+ forward_resume = FALSE;
+ else
+ error("set_parameter(): Invalid parameter value: %s for parameter %s. Only forward and ignore can be used!" ,
+ parameter_value, parameter_name);
+ }
+ else if(strcasecmp(parameter_name, "forward_status") == 0)
+ {
+ if (strcasecmp(parameter_value,"forward") == 0)
+ forward_status = TRUE;
+ else if(strcasecmp(parameter_value,"ignore") == 0)
+ forward_status = FALSE;
+ else
+ error("set_parameter(): Invalid parameter value: %s for parameter %s. Only forward and ignore can be used!" ,
+ parameter_value, parameter_name);
+ }
+ else
+#ifdef TARGET_TEST
+ if(!parameter_set(parameter_name ,parameter_value)) //TCP parameters
+#endif
+ log("Unsupported parameter: %s", parameter_name);
+}
+//------------
+
+// User map
+void MTP3asp__PT_PROVIDER::user_map(const char *system_port)
+{
+ if (user_map_p == NULL)
+ error("Parameter MTP3ServiceType should be set to TargetM3UA in TARGET_TEST mode!");
+
+ (this->*user_map_p)(system_port);
+}
+//------------
+
+// User unmap
+void MTP3asp__PT_PROVIDER::user_unmap(const char *system_port)
+{
+ (this->*user_unmap_p)(system_port);
+}
+//------------
+
+#ifndef TARGET_TEST
+// User connect
+void MTP3asp__PT_PROVIDER::user_connect()
+{
+ (this->*user_connect_p)();
+}
+//------------
+#endif
+
+//User start
+void MTP3asp__PT_PROVIDER::user_start()
+{ debuglog("user start ordered");
+}
+//------------
+
+//User stop
+void MTP3asp__PT_PROVIDER::user_stop()
+{ debuglog("User stop ordered");
+}
+//------------
+
+//Event Handler
+void MTP3asp__PT_PROVIDER::Handle_Fd_Event(int fd,
+ boolean is_readable, boolean is_writable, boolean is_error)
+{
+ if (MTPServiceType == TargetM3UA )
+ {
+#ifdef TARGET_TEST
+ //In case of target Abstract Socket handles the received message
+ Handle_Socket_Event(fd, is_readable, is_writable, is_error);
+#endif
+ }
+#ifndef TARGET_TEST
+ else
+ {
+ int result;
+
+ result = MPH_ProcessConnection(myConnection);
+
+ if (result <= 0)
+ {
+ MPH_CloseConnection(myConnection);
+ if (result == 0) log("Connection closed by peer.");
+ else log("Error in incoming message.");
+ }
+ }
+#endif
+}
+
+void MTP3asp__PT_PROVIDER::Handle_Timeout(double time_since_last_call)
+{
+#ifdef TARGET_TEST
+ Handle_Timeout_Event(time_since_last_call);
+#endif
+}
+//------------
+
+//Outgoing send
+void MTP3asp__PT_PROVIDER::outgoing_send(const ASP__MTP3__TRANSFERreq& send_par)
+{
+ MTP3__Field__sio sio_field = send_par.sio();
+#ifndef TARGET_TEST
+ int si=bit2int(sio_field.si());
+#endif
+
+ OCTETSTRING sio_oct = bit2oct(sio_field.ni()+sio_field.prio()+sio_field.si());
+ OCTETSTRING bttc_oct = int2oct(stored_bttc_octet, 1); // additional octet for MTP3bttc
+
+ //Message sending by testing on Target
+ if (MTPServiceType == TargetM3UA)
+ {
+#ifdef TARGET_TEST
+ OCTETSTRING tcpData = int2oct(1,1); //Message type
+ tcpData = tcpData + int2oct(send_par.data().lengthof()+15,4); //Length
+ tcpData = tcpData + sio_oct;
+ tcpData = tcpData + int2oct(send_par.opc(),4);
+ tcpData = tcpData + int2oct(send_par.dpc(),4);
+ tcpData = tcpData + int2oct(send_par.sls(),1);
+ tcpData = tcpData + send_par.data();
+ send_outgoing((const unsigned char*)tcpData,tcpData.lengthof());
+
+ TTCN_Logger::begin_event(TTCN_DEBUG);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): ", get_name());
+ TTCN_Logger::log_event_str("Transfer Req message sent: ");
+ tcpData.log();
+ TTCN_Logger::end_event();
+#endif
+ return;
+ }
+ //Message sending by testing on Target
+ if (MTPServiceType == TargetSTC)
+ {
+#ifdef TARGET_TEST
+ OCTETSTRING tcpData = int2oct(1,1); //Message type
+ tcpData = tcpData + int2oct(send_par.data().lengthof()+15,4); //Length
+ tcpData = tcpData + int2oct(0,1);
+ tcpData = tcpData + int2oct(0,4);
+ tcpData = tcpData + int2oct(0,4);
+ tcpData = tcpData + int2oct(0,1);
+ tcpData = tcpData + send_par.data();
+ send_outgoing((const unsigned char*)tcpData,tcpData.lengthof());
+
+ TTCN_Logger::begin_event(TTCN_DEBUG);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): ", get_name());
+ TTCN_Logger::log_event_str("Transfer Req (STC) message sent: ");
+ tcpData.log();
+ TTCN_Logger::end_event();
+#endif
+ return;
+ }
+#ifndef TARGET_TEST
+ if (dynamicConnection &&(!connectionUp))
+ {
+ warn("Connection was not activated via function f_M3UA_SEA_connect.");
+ return;
+ }
+
+ unsigned int offset;
+ int MSU_length = send_par.data().lengthof();
+ int M3UA_par_length;
+ int length;
+ int labellen; // sio+routinglabel length
+
+ switch ( MTPServiceType)
+ {
+ case STC:
+ length = MSU_length;
+ memcpy(buffer, send_par.data(), send_par.data().lengthof());
+ break;
+ case MTP3iup:
+ if(si==4)
+ {
+ offset = 0;
+ labellen=6; //ITU-T:sio(1byte) + standard telephony label(5byte)
+ length = MSU_length+labellen;
+ buffer[0] = *((const unsigned char*)sio_oct);
+ SetPointCodesIUP(send_par.sls(), send_par.opc(), send_par.dpc(),
+ buffer + offset + 1);
+ memcpy(buffer + offset + labellen, send_par.data(), send_par.data().lengthof());
+ }
+ else
+ {
+ offset = 0;
+ labellen=5; //ITU-T:sio(1byte) + routing label(4byte) see /Q.704/15.4.1
+ length = MSU_length + labellen; //SIF+SIO ;
+ //append MTP3 MSU
+ buffer[offset] = *((const unsigned char*)sio_oct);
+ SetPointCodes(send_par.sls(), send_par.opc(), send_par.dpc(),
+ buffer + offset + 1);
+ memcpy(buffer + offset + labellen, send_par.data(), send_par.data().lengthof());
+ }
+ break;
+ case MTP3itu:
+ offset = 0;
+ labellen=5; //ITU-T:sio(1byte) + routing label(4byte) see /Q.704/15.4.1
+ length = MSU_length + labellen; //SIF+SIO ;
+ //append MTP3 MSU
+ buffer[offset] = *((const unsigned char*)sio_oct);
+ SetPointCodes(send_par.sls(), send_par.opc(), send_par.dpc(),
+ buffer + offset + 1);
+ memcpy(buffer + offset + labellen, send_par.data(), send_par.data().lengthof());
+ break;
+ case MTP3ansi:
+ offset = 0;
+ labellen=8; //ANSI: sio(1byte) +routing label(7byte) see T1.111.4
+ length = MSU_length + labellen; //SIF+SIO ;
+ //append MTP3 MSU
+ buffer[offset] = *((const unsigned char*)sio_oct);
+ SetPointCodes(send_par.sls(), send_par.opc(), send_par.dpc(),
+ buffer + offset + 1);
+ memcpy(buffer + offset + labellen, send_par.data(), send_par.data().lengthof());
+ break;
+ case MTP3ttc:
+ offset = 0;
+ //if (mtp3_ni==0){ labellen=5;}
+ //else {
+ labellen=6;
+ //} //TTC: sio(1byte) +routing label(6byte) see ...
+ length = MSU_length + labellen; //SIF+SIO ;
+ //append MTP3 MSU
+ buffer[offset] = *((const unsigned char*)sio_oct);
+ SetPointCodes(send_par.sls(), send_par.opc(), send_par.dpc(),
+ buffer + offset + 1);
+ memcpy(buffer + offset + labellen, send_par.data(), send_par.data().lengthof());
+ break;
+ case MTP3bttc:
+ offset = 0;
+ buffer[offset] = *((const unsigned char*)bttc_oct);
+ offset += 1;
+ labellen=7; //routing label(7byte)
+ length = 1 + MSU_length + labellen; //SIF+SIO ;
+ //append MTP3 MSU
+ buffer[offset] = *((const unsigned char*)sio_oct);
+ SetPointCodes(send_par.sls(), send_par.opc(), send_par.dpc(),
+ buffer + offset + 1);
+ memcpy(buffer + offset + labellen, send_par.data(), send_par.data().lengthof());
+ break;
+ case MTP3mpt:
+ offset = 0;
+ if (mtp3_ni==2)
+ { labellen=8;} //MPT national: sio(1byte) +routing label(7byte)
+ else
+ { labellen=5;} //MPT international: sio(1byte) +routing label(4byte)
+ length = MSU_length + labellen; //SIF+SIO ;
+ //append MTP3 MSU
+ buffer[offset] = *((const unsigned char*)sio_oct);
+ SetPointCodes(send_par.sls(), send_par.opc(), send_par.dpc(),
+ buffer + offset + 1);
+ memcpy(buffer + offset + labellen,
+ send_par.data(), send_par.data().lengthof());
+ break;
+ case M3UA :
+ TTCN_Logger::begin_event(TTCN_DEBUG);
+ TTCN_Logger::log_event("MTP3 test port debug: Message to be encoded is: {");
+ send_par.data().log();
+ TTCN_Logger::log_event(" ");
+ if( M3UAState != AssocActive )
+ {
+ TTCN_Logger::log_event(" M3UAState is not ready to send data. Its state code: %d",AssocActive);
+ TTCN_Logger::log_event("}");
+ TTCN_Logger::end_event();
+ return;
+ }
+ //calculating lengths
+ M3UA_par_length = MSU_length + 16; // ProtocolData parameter
+ // header length=16 <== see f
+ TTCN_Logger::log_event(", Adjusted M3UA_par_length to %d to support 16 octets M3UA param header",M3UA_par_length);
+ length = 8 + M3UA_par_length; //msg length = header+par
+ TTCN_Logger::log_event(", M3UA MSU_length is %d ==> there should be %d padding octets", MSU_length, 4-(MSU_length%4));
+ if (MSU_length%4) { //should be padded to be multiple of 4 octets
+ length += 4 - (MSU_length%4); //padding shall be counted in msg
+ //length, but not in par_length
+ }
+ TTCN_Logger::log_event(", Set msg length (which includes 8 octets M3UA hdr) to %d ",length);
+
+ //filling the first part of the buffer
+ //common msg hdr ======================================
+ buffer[0] = M3UA_version;
+ buffer[1] = 0x00; //spare
+ buffer[2] = M3UA_MSG_CLS_TRNSFM; // msg class
+ buffer[3] = M3UA_MSG_TYP_TRSNFM_DATA; // msg type
+ encode_32b_int(buffer+4, length); //msg length, 4 bytes
+ //ProtocolData parameter header=========================
+ //tag
+ buffer[M3UA_MSG_OFFS] = PAR_PREFIX_M3UA; //par. tag 1st octet
+ buffer[M3UA_MSG_OFFS+1] = PAR_PROT_DATA; // par tag 2nd octet
+ //length, NOTE: should not contain the padding bytes!
+ encode_16b_int(buffer+M3UA_MSG_OFFS+2,M3UA_par_length);
+ //OPC,DPC
+ encode_32b_int(buffer+M3UA_MSG_OFFS+4,send_par.opc());
+ encode_32b_int(buffer+M3UA_MSG_OFFS+8,send_par.dpc());
+ //SI, NI, MP, SLS
+ buffer[M3UA_MSG_OFFS+12] = bit2int(sio_field.si()); // SI LSb aligned
+ buffer[M3UA_MSG_OFFS+13] = bit2int(sio_field.ni()); // NI LSb aligned
+ buffer[M3UA_MSG_OFFS+14] = bit2int(sio_field.prio()); //MP LSb
+ //aligned
+ buffer[M3UA_MSG_OFFS+15] = 0xFF & send_par.sls(); //SLS
+ // finally the MTP3 MSU itself....
+ offset = M3UA_MSG_OFFS + 16;
+ TTCN_Logger::log_event(", buffer offset is now set to %d", offset);
+ TTCN_Logger::log_event("}");
+ TTCN_Logger::end_event();
+ //append MTP3 MSU
+ memcpy(buffer + offset, send_par.data(), send_par.data().lengthof());
+
+ //padding
+ for (int ii = 0; ii< (MSU_length%4); ++ii) buffer[offset+MSU_length+ii]= 0x00;
+ break;
+ default:
+ error("Invalid MTP3ServiceType setting!");
+ }
+ if (TTCN_Logger::log_this_event(TTCN_DEBUG))
+ {
+ TTCN_Logger::begin_event(TTCN_DEBUG);
+ TTCN_Logger::log_event("The encoded buffer is: {");
+ OCTETSTRING(length, buffer).log();
+ TTCN_Logger::log_event("}");
+ TTCN_Logger::end_event();
+ }
+ send_msg(buffer, length);
+#endif
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::log(const char *msg, ...)
+{
+ TTCN_Logger::begin_event(TTCN_PORTEVENT);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): ", get_name());
+ va_list ap;
+ va_start(ap, msg);
+ TTCN_Logger::log_event_va_list(msg, ap);
+ va_end(ap);
+ TTCN_Logger::end_event();
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::warn(const char *msg, ...)
+{
+ TTCN_Logger::begin_event(TTCN_WARNING);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): ", get_name());
+ va_list ap;
+ va_start(ap, msg);
+ TTCN_Logger::log_event_va_list(msg, ap);
+ va_end(ap);
+ TTCN_Logger::end_event();
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::debuglog(const char *msg, ...)
+{
+ TTCN_Logger::begin_event(TTCN_DEBUG);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): ", get_name());
+ va_list ap;
+ va_start(ap, msg);
+ TTCN_Logger::log_event_va_list(msg, ap);
+ va_end(ap);
+ TTCN_Logger::end_event();
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::error(const char *msg, ...)
+{
+ TTCN_Logger::begin_event(TTCN_ERROR);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): ", get_name());
+ va_list ap;
+ va_start(ap, msg);
+ TTCN_Logger::log_event_va_list(msg, ap);
+ va_end(ap);
+ TTCN_Logger::end_event();
+ TTCN_error("Fatal error in MTP3 Test Port %s.", get_name());
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::close_log_event()
+{
+ TTCN_Logger::log_event("}");
+ TTCN_Logger::end_event();
+}
+//------------
+
+
+#ifndef TARGET_TEST
+// --------------------------------------------
+// Functions and definitions for test with SEA
+// --------------------------------------------
+
+// Functions of MPH toolkit
+// ---------------------------
+void connectCallback(CONNECTION* con, int channel, void *clientData)
+{
+ ((MTP3asp__PT_PROVIDER *)clientData)->log("Opening channel succeeded "
+ "(channel number is %u)", channel);
+ ((MTP3asp__PT_PROVIDER *)clientData)->set_channel(channel);
+ if(((MTP3asp__PT_PROVIDER *)clientData)->dynamicConnection)
+ ((MTP3asp__PT_PROVIDER *)clientData)->conn_state = 1;
+}
+
+void messageCallback(CONNECTION* con, int channel, int length,
+ unsigned char *msg, void *clientData)
+{
+ ((MTP3asp__PT_PROVIDER *)clientData)->log("Incoming message from channel: %d",channel);
+ ((MTP3asp__PT_PROVIDER *)clientData)->doInterpret(msg,length,channel,con);
+}
+
+void closeCallback(CONNECTION* con, int channel, void *clientData)
+{
+ ((MTP3asp__PT_PROVIDER *)clientData)->log("Closed channel: %d", channel);
+}
+
+void errorCallback(CONNECTION* con, char *name, char *errorMessage,
+ void *clientData)
+{
+ if(((MTP3asp__PT_PROVIDER *)clientData)->dynamicConnection)
+ {
+ ((MTP3asp__PT_PROVIDER *)clientData)->log("Opening channel %s failed: %s", name, errorMessage);
+ ((MTP3asp__PT_PROVIDER *)clientData)->conn_state = 2;
+ }
+ else
+ ((MTP3asp__PT_PROVIDER *)clientData)->error("Opening channel %s failed: %s",
+ name, errorMessage);
+}
+//------------
+
+//MTP3_open_channel
+void MTP3asp__PT_PROVIDER::MTP3_open_channel(boolean http)
+{
+ int result;
+ int Mphport;
+ char *perrorString;
+ if( Loop == MTP3_ON )
+ {
+ MTP_fd=-1;
+ myConnection = NULL;
+ log("MTP3_open_channel finished for LOOP");
+ return;
+ }
+
+ if(http)
+ {
+ Mphport = MPH_GetMphPort(hostname,httpport,&perrorString);
+ }
+ else
+ {
+ Mphport = httpport;
+ }
+
+ if (Mphport == -1)
+ error("GetMphPort failed: %s", *perrorString);
+
+ result = MPH_StringToIid(iid_string, &iid);
+ if (result == -1)
+ error("Converting %s to MPH_IID failed.", iid_string);
+
+ myConnection = MPH_OpenConnection(hostname, Mphport);
+ if (myConnection == NULL)
+ error("Opening connection to %s:%d failed.", hostname, Mphport);
+
+ MPH_OpenChannel(myConnection,
+ entityname,
+ &iid,
+ connectCallback,
+ messageCallback,
+ closeCallback,
+ errorCallback,
+ this);
+
+ MTP_fd = MPH_GetConnectionFd(myConnection);
+ if (MTP_fd != -1)
+ Handler_Add_Fd_Read(MTP_fd);
+ else
+ error("Incorrect file descriptor: %d.", MTP_fd);
+}
+//------------
+
+// MTP3_close_connection
+void MTP3asp__PT_PROVIDER::MTP3_close_connection()
+{
+ MPH_CloseConnection(myConnection);
+ Handler_Remove_Fd_Read(MTP_fd);
+ close( MTP_fd );
+ //Uninstall_Handler(); // Unnecessary if only socket MTP_fd is in use
+}
+//------------
+
+// wait_for_open
+boolean MTP3asp__PT_PROVIDER::wait_for_open()
+{
+ conn_state = 0;
+ while(conn_state==0)
+ {
+ pollfd pollFd = { MTP_fd, POLLIN, 0 };
+ int nEvents = poll(&pollFd, 1, 3000 /* ms */);
+ if (nEvents == 0) {
+ log("MPH channel opening time out");
+ return FALSE;
+ }
+ if (nEvents < 0 || (pollFd.revents & (POLLIN | POLLHUP)) == 0) {
+ log("MPH channel opening error (%d)", (nEvents < 0) ? errno : 0);
+ return FALSE;
+ }
+ Handle_Fd_Event(MTP_fd, TRUE, FALSE, FALSE);
+ }
+ if(conn_state == 1) //connectCallback received
+ {
+ conn_state = 0;
+ return TRUE;
+ }
+ else //errorCallback received
+ {
+ conn_state = 0;
+ return FALSE;
+ }
+}
+//------------
+
+//send msg
+void MTP3asp__PT_PROVIDER::send_msg(unsigned char *outbuff, int length)
+{
+ OCTETSTRING buff(length,outbuff);
+ TTCN_Logger::begin_event(TTCN_DEBUG);
+ TTCN_Logger::log_event("MTP3/M3UA Test Port (%s): {", get_name());
+ TTCN_Logger::log_event("outgoing buffer= ");
+ buff.log();
+ TTCN_Logger::log_event("}");
+ TTCN_Logger::end_event();
+ if (Loop == MTP3_ON)
+ {
+ log("Message looped back");
+ doInterpret(outbuff, length, channel, myConnection);
+ } else
+ {
+ MPH_SendMessage(myConnection,channel,length,outbuff);
+ log("Message sent on channel %d", channel);
+ }
+}
+//------------
+
+//Check TestPortVariables
+void MTP3asp__PT_PROVIDER::Check_TestPort_Variables()
+{
+ if(!dynamicConnection)
+ {
+ if (httpport==-1) error("Parameter HttpPort is not set.");
+ if (hostname==NULL) error("Parameter Hostname is not set.");
+ if (entityname==NULL) error("Parameter EntityName is not set.");
+ }
+ if (Filter==-1) error("Parameter Filter is not set.");
+ if (Loop==-1) error("Parameter Loop is not set.");
+ if (Sut_Pc==-1) error("Parameter SUT_Pc is not set.");
+ if (Tester_Pc==-1) error("Parameter TESTER_Pc is not set.");
+ if (!Ni_is_set) error("Parameter NI is not set.");
+}
+//------------
+
+// -------------------------------------------------
+// STC Functions and definitions for test with SEA
+// -------------------------------------------------
+void MTP3asp__PT_PROVIDER::Check_TestPort_Variables_STC()
+{
+ if(!dynamicConnection)
+ {
+ if (httpport==-1) error("Parameter HttpPort is not set.");
+ if (hostname==NULL) error("Parameter Hostname is not set.");
+ if (entityname==NULL) error("Parameter EntityName is not set.");
+ }
+}
+//------------
+
+//STC user map
+void MTP3asp__PT_PROVIDER::STC_user_map(const char *system_port)
+{
+ debuglog("Function STC_user_map started");
+ Check_TestPort_Variables_STC();
+ if(dynamicConnection)
+ {
+ connectionUp = FALSE;
+ }
+ else
+ {
+ MTP3_open_channel(TRUE);
+ STC_user_connect();
+ }
+}
+//------------
+
+//STC user connect
+void MTP3asp__PT_PROVIDER::STC_user_connect()
+{
+}
+
+//STC user unmap
+void MTP3asp__PT_PROVIDER::STC_user_unmap(const char *system_port)
+{
+ MTP3_close_connection();
+ dynamicConnection = FALSE;
+}
+//------------
+
+//STC interpreter
+void MTP3asp__PT_PROVIDER::STC_interpreter(unsigned char* inbuffer,int length,int from_channel,CONNECTION* con)
+{
+ if ((length==0) || (inbuffer==NULL))
+ {
+ log("0 byte long message received -> packet dropped.");
+ return;
+ }
+
+ if (length==1)
+ {
+ log("1 byte long internal SEA message received -> packet dropped.");
+ return;
+ }
+
+ if ( !strcmp((const char*)inbuffer,"start") )
+ {
+ log("start message received from SEA");
+ return;
+ }
+ else if (!strcmp((const char*)inbuffer,"stop"))
+ {
+ log("stop message received from SEA");
+ return;
+ }
+
+ // writing out the contents of the buffer
+ OCTETSTRING buff(length,inbuffer);
+ TTCN_Logger::begin_event(TTCN_PORTEVENT);
+ TTCN_Logger::log_event("incoming buffer: ");
+ buff.log();
+ TTCN_Logger::end_event();
+
+ ASP__MTP3__TRANSFERind recv_msg;
+ MTP3__Field__sio recv_sio;
+ recv_sio.ni()= int2bit(0,2);
+ recv_sio.prio()= int2bit(0,2);
+ recv_sio.si()= int2bit(0,4);
+ recv_msg.sio() = recv_sio;
+ recv_msg.sls() = 0;
+ recv_msg.opc() = 0;
+ recv_msg.dpc() = 0;
+ recv_msg.data() = OCTETSTRING(length, &inbuffer[0]);
+ incoming_message( recv_msg );
+}
+
+// -------------------------------------------------
+// MTP3 Functions and definitions for test with SEA
+// -------------------------------------------------
+
+// SLTM messages for MTP3
+// -----------------------
+unsigned char ttcn_in_sltm[] = {
+ 'T','T','C','N','-','3',' ','E','x','e','c','u','t','o','r'};
+
+const int sizeof_ttcn_in_sltm=15;
+
+// ITU:
+unsigned char sltm_msg_itu[] =
+{
+ 0x1, //SIO /'test & maint' see Q.704 /14.2.1 => 0x81 suggested !!!
+ 0x0, 0x0, 0x0, 0x0, //4 bytes for label (dpc, opc,sls)
+ 0x11, //Heading code ITU, see Q.707/5.4
+ 0xF0, //spare+Length of the following string:
+ 'T', 'T', 'C', 'N', '-', '3', ' ', 'E', 'x', 'e', 'c', 'u', 't', 'o', 'r'
+};
+const int sizeof_sltm_msg_itu=7+15;
+
+// ANSI:
+unsigned char sltm_msg_ansi[]=
+{
+ 0xB1, //SIO
+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0, // 7 bytes for label
+ 0x11, // Heading Code ANSI T1.111.7-2001
+ 0xF0, // SLC(is 0 OK???)+Length in bytes of the following string:
+ 'T', 'T', 'C', 'N', '-', '3', ' ', 'E', 'x', 'e', 'c', 'u', 't', 'o', 'r'
+};
+const int sizeof_sltm_ansi=10+15;
+
+// TTC:
+unsigned char sltm_msg_ttc_national[]=
+{
+ 0x81, //SIO
+ 0x0,0x0,0x0,0x0,0x0,0x0, // 6 bytes for label TO BE CONT!!!
+ 0x11, // Heading Code
+ 0xF0, // SLC(is 0 OK???)+Length in bytes of the following string:
+ 'T', 'T', 'C', 'N', '-', '3', ' ', 'E', 'x', 'e', 'c', 'u', 't', 'o', 'r'
+};
+const int sizeof_sltm_msg_ttc_national=9+15;
+
+// BTTC:
+unsigned char sltm_msg_bttc_national[]=
+{
+ 0x0, // extra octet, ignored
+ 0x81, //SIO
+ 0x0,0x0,0x0,0x0,0x0,0x0, // 6 bytes for label TO BE CONT!!!
+ 0x23, // Heading Code
+ 'T', 'T'
+};
+const int sizeof_sltm_msg_bttc_national=1+8+2;
+
+// MPT:
+unsigned char sltm_msg_mpt_national[]=
+{
+ 0x81, //SIO
+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0, // 7 bytes for label
+ 0x11, // Heading Code
+ 0xF0, // SLC(is 0 OK???)+Length in bytes of the following string:
+ 'T', 'T', 'C', 'N', '-', '3', ' ', 'E', 'x', 'e', 'c', 'u', 't', 'o', 'r'
+};
+const int sizeof_sltm_msg_mpt_national=10+15;
+//------------
+
+
+// coder functions for MTP3
+// -------------------------
+// unsigned int<-> unsigned char array
+// Integer encode/decode functions that will encode/decode from/to
+// Result: Least Significant Byte first (in lowest address) = LSB = Little Endian
+void MTP3asp__PT_PROVIDER::encode_56bLSB_int(unsigned char *to, unsigned long long int from)
+{
+ to[0] = from & 0xFF;
+ from >>= 8;
+ to[1] = from & 0xFF;
+ from >>= 8;
+ to[2] = from & 0xFF;
+ from >>= 8;
+ to[3] = from & 0xFF;
+ from >>= 8;
+ to[4] = from & 0xFF;
+ from >>= 8;
+ to[5] = from & 0xFF;
+ from >>= 8;
+ to[6] = from & 0xFF;
+}
+//------------
+
+unsigned long long int MTP3asp__PT_PROVIDER::decode_56bLSB_int(const unsigned char *from)
+{
+ typedef unsigned long long int ull;
+ return ((ull) from[0]) |
+ ((ull) from[1] <<8)|
+ ((ull) from[2] << 16)|
+ ((ull) from[3] << 24)|
+ ((ull) from[4] << 32)|
+ ((ull) from[5] << 40)|
+ ((ull) from[6] << 48);
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::encode_48bLSB_int(unsigned char *to, unsigned long long int from)
+{
+ to[0] = from & 0xFF;
+ from >>= 8;
+ to[1] = from & 0xFF;
+ from >>= 8;
+ to[2] = from & 0xFF;
+ from >>= 8;
+ to[3] = from & 0xFF;
+ from >>= 8;
+ to[4] = from & 0xFF;
+ from >>= 8;
+ to[5] = from & 0xFF;
+}
+//------------
+
+unsigned long long int MTP3asp__PT_PROVIDER::decode_48bLSB_int(const unsigned char *from)
+{
+ typedef unsigned long long int ull;
+ return ((ull) from[0]) |
+ ((ull) from[1] <<8)|
+ ((ull) from[2] << 16)|
+ ((ull) from[3] << 24)|
+ ((ull) from[4] << 32)|
+ ((ull) from[5] << 40);
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::encode_40bLSB_int(unsigned char *to, unsigned long long int from)
+{
+ to[0] = from & 0xFF;
+ from >>= 8;
+ to[1] = from & 0xFF;
+ from >>= 8;
+ to[2] = from & 0xFF;
+ from >>= 8;
+ to[3] = from & 0xFF;
+ from >>= 8;
+ to[4] = from & 0xFF;
+}
+//------------
+
+unsigned long long int MTP3asp__PT_PROVIDER::decode_40bLSB_int(const unsigned char *from)
+{
+ typedef unsigned long long int ull;
+ return ((ull) from[0]) |
+ ((ull) from[1] <<8)|
+ ((ull) from[2] << 16)|
+ ((ull) from[3] << 24)|
+ ((ull) from[4] << 32);
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::encode_32bLSB_int(unsigned char *to, unsigned int from)
+{
+ to[0] = from & 0xFF;
+ from >>= 8;
+ to[1] = from & 0xFF;
+ from >>= 8;
+ to[2] = from & 0xFF;
+ from >>= 8;
+ to[3] = from & 0xFF;
+}
+//------------
+
+unsigned int MTP3asp__PT_PROVIDER::decode_32bLSB_int(const unsigned char *from)
+{
+ return from[0] | (from[1] << 8) | (from[2] << 16) | (from[3] << 24);
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::encode_24bLSB_int(unsigned char *to, int from)
+{
+ to[0] = from & 0xFF;
+ from >>= 8;
+ to[1] = from & 0xFF;
+ from >>= 8;
+ to[2] = from & 0xFF;
+}
+//------------
+
+unsigned int MTP3asp__PT_PROVIDER::decode_24bLSB_int(const unsigned char *from)
+{
+ return from[0] | (from[1] << 8) | (from[2] << 16);
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::encode_16bLSB_int(unsigned char *to, int from)
+{
+ to[0] = from & 0xFF;
+ from >>= 8;
+ to[1] = from & 0xFF;
+}
+//------------
+
+unsigned int MTP3asp__PT_PROVIDER::decode_16bLSB_int(const unsigned char *from)
+{
+ return from[0] | (from[1] << 8);
+}
+//------------
+
+//MTP3 user map
+void MTP3asp__PT_PROVIDER::MTP3_user_map(const char *system_port)
+{
+ debuglog("Function MTP3_user_map started");
+ Check_TestPort_Variables();
+ if(dynamicConnection)
+ {
+ connectionUp = FALSE;
+ }
+ else
+ {
+ MTP3_open_channel(TRUE);
+ MTP3_user_connect();
+ }
+ debuglog("Function MTP3_user_map finished");
+}
+//------------
+
+//MTP3 user connect
+void MTP3asp__PT_PROVIDER::MTP3_user_connect()
+{
+ // Sending out an SLTM message:
+ unsigned char * sltm_msg;
+ unsigned int offset = 0;
+ int sizeof_msg;
+ switch( MTPServiceType)
+ {
+ case MTP3itu:
+ case MTP3iup:
+ sltm_msg=sltm_msg_itu;
+ sizeof_msg=sizeof_sltm_msg_itu;
+ break;
+ case MTP3ansi:
+ sltm_msg=sltm_msg_ansi;
+ sizeof_msg=sizeof_sltm_ansi;
+ break;
+ case MTP3ttc:
+ /* if (mtp3_ni == 0){
+ sltm_msg=sltm_msg_itu;
+ sizeof_msg=sizeof_sltm_msg_itu;
+ }
+ else {
+ */
+ sltm_msg=sltm_msg_ttc_national;
+ sizeof_msg=sizeof_sltm_msg_ttc_national;
+ // }
+ break;
+ case MTP3bttc:
+ sltm_msg=sltm_msg_bttc_national;
+ sizeof_msg=sizeof_sltm_msg_bttc_national;
+ offset = 1;
+ break;
+ case MTP3mpt:
+ if (mtp3_ni == 2)
+ {
+ sltm_msg = sltm_msg_mpt_national;
+ sizeof_msg = sizeof_sltm_msg_mpt_national;
+ } else
+ {
+ sltm_msg = sltm_msg_itu;
+ sizeof_msg = sizeof_sltm_msg_itu;
+ }
+ break;
+ default:
+ sltm_msg=sltm_msg_itu;
+ sizeof_msg=sizeof_sltm_msg_itu;
+ break;
+ }
+ stored_bttc_octet = 0;
+ unsigned char sio = ((unsigned char) mtp3_ni) << 6;
+
+ if (Ni_is_set)
+ { sltm_msg[0+offset] = sio | 0x1; }
+ else
+ { sltm_msg[0+offset] = 0x1; };//SIO /'test & maint' see Q.704 /14.2.1 => 0x81 suggested !!!
+
+ SetPointCodes(0, Tester_Pc, Sut_Pc, sltm_msg + 1 +offset); // common for ITU, ANSI and TTC
+ log("MTP3/SLTM message sending...");
+ send_msg(sltm_msg, sizeof_msg);
+}
+//MTP3 user unmap
+void MTP3asp__PT_PROVIDER::MTP3_user_unmap(const char *system_port)
+{
+ MTP3_close_connection();
+ dynamicConnection = FALSE;
+}
+
+//MTP3 interpreter
+void MTP3asp__PT_PROVIDER::MTP3_interpreter(unsigned char* inbuffer,int length,int from_channel,CONNECTION* con)
+{
+ if ((length==0) || (inbuffer==NULL))
+ {
+ log("0 byte long message received -> packet dropped.");
+ return;
+ }
+
+ if (length==1)
+ {
+ log("1 byte long internal SEA message received -> packet dropped.");
+ return;
+ }
+
+ if ( !strcmp((const char*)inbuffer,"start") )
+ {
+ log("start message received from SEA");
+ return;
+ }
+ else if (!strcmp((const char*)inbuffer,"stop"))
+ {
+ log("stop message received from SEA");
+ return;
+ }
+
+ // writing out the contents of the buffer
+ OCTETSTRING buff(length,inbuffer);
+ TTCN_Logger::begin_event(TTCN_PORTEVENT);
+ TTCN_Logger::log_event("incoming buffer: ");
+ buff.log();
+ TTCN_Logger::end_event();
+
+ unsigned int offset = 0;
+ if ( MTPServiceType==MTP3bttc )
+ {
+ stored_bttc_octet = inbuffer[0];
+ offset = 1;
+ }
+ int labellen; // sio+routinglabel length
+ int rec_ni = (inbuffer[offset]) >> 6; //network indicator
+ if (rec_ni != mtp3_ni)
+ error("Received NI is different from sent NI.");
+
+ unsigned char sio = inbuffer[offset];
+ unsigned int si = sio&0x0F;
+
+ if ( MTPServiceType==MTP3itu )
+ { labellen=5; //ITU-T:sio(1byte) + routing label(4byte) see /Q.704/15.4.1
+ }
+ else if ( MTPServiceType==MTP3iup )
+ {
+ if(si==4)
+ labellen=6; //ITU-T:sio(1byte) + standard telephony label(5byte)
+ else
+ labellen=5; //ITU-T:sio(1byte) + routing label(4byte) see /Q.704/15.4.1
+ }
+ else if ( MTPServiceType==MTP3ansi )
+ { labellen=8; //ANSI: sio(1byte) +routing label(7byte) see T1.111.4
+ }
+ else if (MTPServiceType==MTP3ttc)
+ { labellen=6; //new (2004-03-02): 6= sio(1byte)+ routing label(5bytes)
+ }
+ else if (MTPServiceType==MTP3mpt)
+ {
+ if ( mtp3_ni == 2)
+ {labellen=8;} //MPT national: sio(1byte) +routing label(7byte)
+ else
+ {labellen=5;} //MPT international: sio(1byte) +routing label(4byte)
+ }
+ else if (MTPServiceType==MTP3bttc)
+ { labellen=7; //7= sio(1byte)+ routing label(6bytes)
+ }
+ else
+ { log("incorrect MTPServiceType - programming error-> packet dropped");
+ return;
+ }
+
+ // checking SIO field (first incoming byte) - management or test message
+ switch (si)
+ {
+ case 0: processing_MTP3_management_msg(inbuffer+offset,length-offset);
+ return;
+ case 1: //MTP3itu
+ case 2: processing_MTP3_test_msg(inbuffer+offset,length-offset); //MTP3ansi
+ return;
+ default:
+ break;
+ }
+
+ // filling up TTCN structure
+ if ((Loop==MTP3_ON) || (!Filter) || (Filter&&Check_PcMatch(Sut_Pc,Tester_Pc,&inbuffer[offset+1])))
+ {
+ ASP__MTP3__TRANSFERind recv_msg;
+ MTP3__Field__sio recv_sio;
+ BITSTRING sio_bit = oct2bit(OCTETSTRING(1,inbuffer+offset));
+ recv_sio.ni()= substr(sio_bit,0,2);
+ recv_sio.prio()= substr(sio_bit,2,2);
+ recv_sio.si()= substr(sio_bit,4,4);
+ recv_msg.sio() = recv_sio;
+ unsigned int sls,opc,dpc;
+ if ( (MTPServiceType==MTP3iup) && (si==4) )
+ GetPointCodesIUP(sls,opc,dpc,&inbuffer[1]);
+ else
+ GetPointCodes(sls,opc,dpc,&inbuffer[offset+1]);
+ recv_msg.sls() = sls;
+ recv_msg.opc() = opc;
+ recv_msg.dpc() = dpc;
+ int len;
+ len= length-labellen-offset; //len= length-labellen;
+ recv_msg.data() = OCTETSTRING(len, &inbuffer[offset+labellen]);
+ incoming_message( recv_msg );
+ }
+ else
+ { log("The rooting label (OPC, DPC) not matched with the filter setting -> packet dropped.");
+ return;
+ }
+}
+
+void MTP3asp__PT_PROVIDER::processing_MTP3_management_msg(unsigned char* inbuff,int len)
+{
+ int outlen=0;
+ int labellen; // sio+routinglabel length
+ int chm_addlen; // (Changeback) additional length = Heading Code + SLC+ (changeback codes)
+ int mim_addlen; // (MIM) -"-
+ unsigned int offset = 0;
+ OCTETSTRING bttc_oct = int2oct(stored_bttc_octet, 1); // additional octet for MTP3bttc
+
+ if ( MTPServiceType==MTP3itu || MTPServiceType==MTP3iup)
+ { labellen=5; //ITU-T:sio(1byte) + routing label(4byte) see /Q.704/15.4.1
+ chm_addlen = 2;
+ mim_addlen = 1;
+ }
+ else if ( MTPServiceType==MTP3ansi )
+ { labellen=8; //ANSI: sio(1byte) +routing label(7byte) see T.1.111.4
+ chm_addlen = 3;
+ mim_addlen = 2;
+ }
+ else if (MTPServiceType==MTP3ttc)
+ { //if ( mtp3_ni == 0 ) { labellen=5;} //ITU-T:sio(1byte) + routing label(4byte) see /Q.704/15.4.1
+ //else {
+ labellen=6;
+ //} //sio(1byte)+ routing label(6bytes) see 3/15517-FAY 112 011/2 or jt-q704.
+ }
+ else if (MTPServiceType==MTP3mpt)
+ { if ( mtp3_ni == 2 ) { labellen=8; }
+ else { labellen=5; }
+ chm_addlen = 2;
+ mim_addlen = 1;
+ }
+ else if (MTPServiceType==MTP3bttc)
+ { labellen=7;//sio(1byte)+routing label(6bytes) see 3/15517-FAY 112 011/2 or jt-q704
+ offset = 1;
+ }
+ else
+ { log("incorrect MTPServiceType- programming error-> packet dropped");
+ return;
+ }
+
+ if (MTPServiceType==MTP3bttc)
+ {
+ buffer[0]=*((const unsigned char*)bttc_oct); //additional stored octet in front
+ buffer[1]=inbuff[0]; //SIO
+ if (!ChangePointCodes(&buffer[2],&inbuff[1],len))
+ { log("incorrect incoming management message -> packet dropped.");
+ return;
+ }
+ }
+ else
+ {
+ buffer[0]=inbuff[0]; //SIO
+ if (!ChangePointCodes(&buffer[1],&inbuff[1],len))
+ { log("incorrect incoming management message -> packet dropped.");
+ return;
+ }
+ }
+
+ // Changeover & changeback(CHM) see ITU: Q.704/15.4.1 ANSI: T.1.111.4/15.2-4
+ if (inbuff[labellen]==0x51) //CBD
+ {
+ outlen=labellen+chm_addlen;
+ if (len<outlen)
+ { log("incorrect incoming CHM message -> packet dropped.");
+ return;
+ }
+ else
+ { buffer[offset + labellen]= 0x61; // Heading Code <- CBA
+ memcpy(&buffer[offset + labellen+1],&inbuff[labellen+1],len-labellen-1);
+ outlen = len;
+ }
+ }
+ else if (inbuff[labellen]==0x16) //MIM H0=6=Mgmt inhibit msg, H1=1=LIN
+ {
+ outlen=labellen+mim_addlen;
+ if (len<outlen)
+ { log("incorrect incoming MIM message -> packet dropped.");
+ return;
+ }
+ else
+ {
+ buffer[offset + labellen]= 0x56; // LIN -> LID ; LID = link inhibit denied
+ memcpy(&buffer[offset + labellen+1],&inbuff[labellen+1],(len-labellen-1)); //SLC+spare+...
+ outlen = len;
+ }
+ }
+ else if (inbuff[labellen]==0x17 && (MTPServiceType==MTP3iup))
+ {
+ if(forward_resume) incoming_message(ASP__MTP3__RESUME(NULL_VALUE));
+ return;
+ }
+
+/* else if (inbuff[labellen]==0x17 && (MTPServiceType==MTP3iup)) //TRM H0=7, H1=1 : TRA
+ {
+ outlen=labellen+1;
+ if (len<outlen)
+ { log("incorrect incoming TRA message -> packet dropped.");
+ return;
+ }
+ else
+ {
+ outlen = len;
+ }
+ }*/
+ else
+ { log("This management message type is not supported -> packet dropped.");
+ return;
+ }
+
+ // send message
+ log("function processing_MTP3_management_msg sends a msg");
+ send_msg(buffer, outlen+offset);
+}
+
+// processing MTP3 test msg
+// Signalling link test message handling according to Q.707 (ITU) and T1.111.7-2001 (ANSI)
+void MTP3asp__PT_PROVIDER::processing_MTP3_test_msg(unsigned char* inbuff,int len)
+{
+ int outlen=0;
+ int labellen; // sio+routinglabel length
+ int addlen; //Heading Code+length indicator
+ //unsigned int ni; //network indicator
+ OCTETSTRING bttc_oct = int2oct(stored_bttc_octet, 1); // additional octet for MTP3bttc
+ unsigned int offset = 0;
+ if ( MTPServiceType==MTP3itu || MTPServiceType==MTP3iup)
+ {
+ labellen=5; //ITU-T:sio(1byte) + routing label(4byte) see /Q.704/15.4.1
+ addlen = 2; //HC(1 byte)+length ind(1 byte) see Q.707/5.8
+ }
+ else if ( MTPServiceType==MTP3ansi )
+ {
+ labellen=8; //ANSI: sio(1byte) +routing label(7byte) see T1.111.4
+ addlen = 2; //HC(1byte) +(length ind+SLC(1byte)) see T1.111.7-2001/5
+ }
+ else if (MTPServiceType==MTP3ttc)
+ {
+ /* if (mtp3_ni == 0) {
+ debuglog("processing_MTP3_test_msg/TTC (Japanese) international");
+ labellen=5; //TTC (Japanese) international
+ addlen=2;
+ } else {
+ */
+ labellen=6; // previously 7
+ // TTC national [ 56bits=sio(1byte)+routing label ]
+ // r.label= dpc(2bytes)+opc(2bytes)+sls(4bit)+12bits (?)
+ addlen=2;
+ //}
+ }
+ else if (MTPServiceType==MTP3mpt)
+ {
+ if (mtp3_ni == 2)
+ { labellen=8; //MPT national
+ addlen=2;
+ }
+ else
+ { labellen=5; // MPT international
+ addlen=2;
+ }
+ }
+ else if (MTPServiceType==MTP3bttc)
+ {
+ labellen=7;
+ addlen=2;
+ offset = 1;
+ }
+ else
+ { log("incorrect MTPServiceType - programming error-> packet dropped");
+ return;
+ }
+
+ if (MTPServiceType==MTP3bttc)
+ {
+ buffer[0]=*((const unsigned char*)bttc_oct); //additional stored octet in front
+ buffer[1]=inbuff[0]; //SIO
+ if (!ChangePointCodes(&buffer[2],&inbuff[1],len))
+ {
+ log("incorrect incoming test message -> packet dropped.");
+ return;
+ }
+ }
+ else
+ {
+ buffer[0]=inbuff[0]; //SIO
+ if (!ChangePointCodes(&buffer[1],&inbuff[1],len))
+ {
+ log("incorrect incoming test message -> packet dropped.");
+ return;
+ }
+ }
+
+ // Test message handling: SLTM->SLTA, SRT->SRA, SLTA->TRA, others only logged
+ debuglog("\n==>Test message handling: msg type:%x\n", inbuff[labellen] ); // temporary
+ switch( inbuff[labellen] )
+ {
+ case 0x11: //SLTM
+ log("MTP3/SLTM message received");
+ outlen=labellen+addlen;
+ if (len<outlen )
+ { log("incorrect incoming MTP3/SLTM message -> packet dropped.");
+ return;
+ }
+ else
+ { buffer[offset + labellen]= 0x21; // SLTA
+ memcpy(&buffer[offset + labellen+1],&inbuff[labellen+1],(len-labellen-1));
+ outlen = len;
+ }
+ break;
+ case 0x21: //SLTA
+ if(!strncmp((const char *)(inbuff+labellen+addlen),(const char *)ttcn_in_sltm,sizeof_ttcn_in_sltm))
+ {
+ log("MTP3/SLTA message received for SLTM sent by Test Port-> TRA message sent");
+ buffer[offset]--;
+ buffer[offset + labellen]= 0x17; // TRA
+ outlen = labellen+1;
+ return;
+// if(forward_resume) incoming_message(ASP__MTP3__RESUME(NULL_VALUE));
+ }
+ else
+ {
+ log("MTP3/SLTA message received -> packet dropped");
+ return;
+ }
+ break;
+ case 0x23: // TTC (Japanese) SRT (Signalling Routing Test signal)
+ log("MTP3ttc/SRT message received");
+ outlen=labellen+addlen;
+ if (len<outlen )
+ { log("incorrect incoming MTP3ttc/SRT message (length error)-> packet dropped.");
+ return;
+ }
+ else
+ { buffer[offset + labellen]= 0x84; // TTC (Japanese) SRA
+ memcpy(&buffer[offset + labellen+1],&inbuff[labellen+1],(len-labellen-1));
+ outlen = len;
+ }
+ break;
+ case 0x84: // TTC (Japanese) SRA (Signalling Routing test Ack signal)
+ log("MTP3ttc/SRA message received -> packet dropped");
+ return;
+ default:
+ log("This management message type is not supported -> packet dropped ");
+ return;
+ }
+
+ // send message
+ log("function processing_MTP3_test_msg sends a message");
+ send_msg( buffer,outlen+offset);
+}
+
+// Point Code Manipulation (Get/Set/Change)
+// -------------------------------------------------
+void MTP3asp__PT_PROVIDER::GetPointCodes(unsigned int &sls,unsigned int &opc,unsigned int &dpc, unsigned char* msg)
+{
+ unsigned int label;
+ sls=0; opc=0; dpc=0;
+ unsigned long long int Label;
+
+ switch( MTPServiceType)
+ {
+ case MTP3itu:
+ label= decode_32bLSB_int(msg);
+ sls = (label>>28)&0xF; //sls = (label&0xF0000000)>>28;
+ opc = (label>>14)&0x3FFF; //opc = (label&0x0FFFC000)>>14;
+ dpc = label&0x3FFF; //dpc = (label&0x00003FFF);
+ debuglog("Function GetPointCodes called for service type MTP3itu");
+ break;
+ case MTP3iup:
+ label= decode_32bLSB_int(msg);
+ sls = (label>>28)&0xF; //sls = (label&0xF0000000)>>28;
+ opc = (label>>14)&0x3FFF; //opc = (label&0x0FFFC000)>>14;
+ dpc = label&0x3FFF; //dpc = (label&0x00003FFF);
+ debuglog("Function GetPointCodes called for service type MTP3iup");
+ break;
+ case MTP3ansi:
+ Label=decode_56bLSB_int(msg);
+ sls = (Label >> 48) & 0xFF; //sls = (Label&0x00FF000000000000)>>48;
+ opc = (Label >> 24) & 0xFFFFFF;//opc = (Label&0x0000FFFFFF000000)>>24;
+ dpc = Label & 0xFFFFFF; //dpc = (Label&0x0000000000FFFFFF);
+ debuglog("Function GetPointCodes called for service type MTP3ansi");
+ break;
+ case MTP3ttc:
+ /*
+ if( mtp3_ni == 0)
+ {
+ label= decode_32bLSB_int(msg);
+ sls = (label>>28)&0xF; //sls = (label&0xF0000000)>>28;
+ opc = (label>>14)&0x3FFF; //opc = (label&0x0FFFC000)>>14;
+ dpc = label&0x3FFF;
+ debuglog("Function GetPointCodes called for service type MTP3ttc/international");
+ } else
+ {*/
+ Label=decode_48bLSB_int(msg); //0x010203040506
+ sls = (Label>>32)&0xF; // sls = (Label&0x000F00000000)>>32; // only 4 bits!!!
+ opc = (Label>>16)&0xFFFF;//opc = (Label&0x0000FFFF0000)>>16;
+ dpc = Label&0xFFFF; //dpc = (Label&0x00000000FFFF);
+ debuglog("Function GetPointCodes called for service type MTP3ttc/national");
+ //}
+ break;
+ case MTP3bttc:
+ Label=decode_48bLSB_int(msg);
+ sls = (Label>>32)&0xF; // sls = (Label&0x000F00000000)>>32; // only 4 bits!!!
+ opc = (Label>>16)&0xFFFF;//opc = (Label&0x0000FFFF0000)>>16;
+ dpc = Label&0xFFFF; //dpc = (Label&0x00000000FFFF);
+ debuglog("Function GetPointCodes called for service type MTP3bttc/national");
+ break;
+ case MTP3mpt:
+ if( mtp3_ni == 2)
+ {
+ Label=decode_56bLSB_int(msg);
+ sls = (Label >> 48) & 0xFF; //sls = (Label&0x00FF000000000000)>>48;
+ opc = (Label >> 24) & 0xFFFFFF;//opc = (Label&0x0000FFFFFF000000)>>24;
+ dpc = Label & 0xFFFFFF; //dpc = (Label&0x0000000000FFFFFF);
+ debuglog("Function GetPointCodes called for service type MTP3mpt(nat)");
+ }
+ else
+ {
+ label= decode_32bLSB_int(msg);
+ sls = (label>>28)&0xF; //sls = (label&0xF0000000)>>28;
+ opc = (label>>14)&0x3FFF; //opc = (label&0x0FFFC000)>>14;
+ dpc = label&0x3FFF; //dpc = (label&0x00003FFF);
+ debuglog("Function GetPointCodes called for service type MTP3mpt(int)");
+ }
+ break;
+ default:
+ break;
+ }
+ debuglog("sls:%u opc:%u, dpc:%u",sls,opc,dpc);
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::GetPointCodesIUP(unsigned int &cic,unsigned int &opc,unsigned int &dpc, unsigned char* msg)
+{
+ debuglog("Function GetPointCodesIUP called");
+ cic=0; opc=0; dpc=0;
+ unsigned long long int Label;
+ Label=decode_40bLSB_int(msg); //0x0102030405
+ cic = (Label>>28)&0xFFF; //cic = (label&0xFFF0000000)>>28;
+ opc = (Label>>14)&0x3FFF; //opc = (label&0x000FFFC000)>>14;
+ dpc = Label&0x3FFF; //dpc = (label&0x0000003FFF);
+ debuglog("cic:%u opc:%u, dpc:%u",cic,opc,dpc);
+}
+
+void MTP3asp__PT_PROVIDER::SetPointCodes(unsigned int sls,unsigned int opc,unsigned int dpc, unsigned char* msg)
+{
+ unsigned long long int Sls,Opc,Dpc;
+
+ switch( MTPServiceType)
+ {
+ case MTP3itu:
+ encode_32bLSB_int( msg, ((sls<<28)|(opc<<14)|dpc ));
+ debuglog("Function SetPointCodes called for service type MTP3itu");
+ break;
+ case MTP3iup:
+ encode_32bLSB_int( msg, ((sls<<28)|(opc<<14)|dpc ));
+ debuglog("Function SetPointCodes called for service type MTP3iup");
+ break;
+ case MTP3ansi:
+ Sls=sls; Opc=opc; Dpc=dpc;
+ encode_56bLSB_int( msg, ((Sls<<48)|(Opc<<24)|Dpc));
+ debuglog("Function SetPointCodes called for service type MTP3ansi");
+ break;
+ case MTP3ttc:
+ /* if ( mtp3_ni == 0 ){
+ encode_32bLSB_int( msg, ((sls<<28)|(opc<<14)|dpc ));
+ debuglog("Function SetPointCodes called for service type MTP3ttc/international");
+ } else {
+ */
+ Sls=sls; Opc=opc; Dpc=dpc;
+ encode_48bLSB_int( msg, ((Sls<<32)|(Opc<<16)|Dpc));
+ debuglog("Function SetPointCodes called for service type MTP3ttc/national");
+ //}
+ break;
+ case MTP3bttc:
+ Sls=sls; Opc=opc; Dpc=dpc;
+ encode_48bLSB_int( msg, ((Sls<<32)|(Opc<<16)|Dpc));
+ debuglog("Function SetPointCodes called for service type MTP3bttc/national");
+ break;
+ case MTP3mpt:
+ if ( mtp3_ni == 2 )
+ { Sls=sls; Opc=opc; Dpc=dpc;
+ encode_56bLSB_int( msg, ((Sls<<48)|(Opc<<24)|Dpc));
+ debuglog("Function SetPointCodes called for service type MTP3mpt(nat)");
+ }
+ else
+ { encode_32bLSB_int( msg, ((sls<<28)|(opc<<14)|dpc ));
+ debuglog("Function SetPointCodes called for service type MTP3mpt(int)");
+ }
+ break;
+ default:
+ break;
+ }
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::SetPointCodesIUP(unsigned int cic,unsigned int opc,unsigned int dpc, unsigned char* msg)
+{
+ unsigned long long int Cic,Opc,Dpc;
+ Cic=cic; Opc=opc; Dpc=dpc;
+ debuglog("Function SetPointCodesIUP called");
+ encode_40bLSB_int( msg, ((Cic<<28)|(Opc<<14)|Dpc ));
+}
+
+//Changes the Point codes: dpc<->opc ie. destination <->orig
+// inbuff starts from dpc i.e doesn't contain sio !!!!
+int MTP3asp__PT_PROVIDER::ChangePointCodes(unsigned char* outbuff, unsigned char *inbuff, int len)
+{
+ switch( MTPServiceType)
+ {
+ case MTP3itu:
+ case MTP3iup:
+ if (len<5)
+ { warn("MTP3itu:len<5. Too short message!"); return 0; };
+ break;
+ case MTP3ansi:
+ if (len<9 ) return 0;
+ break;
+ case MTP3ttc:
+ //if ( mtp3_ni == 0 && len<5)
+ //{ warn("MTP3ttc:len<5. Too short message!"); return 0; }
+ //else
+ if (len<6)
+ { warn("MTP3ttc:len<6. Too short message!"); return 0; }
+ break;
+ case MTP3bttc:
+ if (len<7)
+ { warn("MTP3bttc:len<7. Too short message!"); return 0; }
+ break;
+ case MTP3mpt:
+ if ( mtp3_ni == 2 && len<8)
+ { warn("MTP3mpt:len<8. Too short message!"); return 0; }
+ else if (len<5)
+ { warn("MTP3mpt:len<5. Too short message!"); return 0; }
+ break;
+ default:
+ warn("Unknown MTPServiceType!!!");
+ break;
+ }
+ unsigned int sls,opc,dpc;
+ GetPointCodes(sls,opc,dpc,inbuff);
+ SetPointCodes(sls,dpc,opc,outbuff);
+ return 1;
+}
+//------------
+
+int MTP3asp__PT_PROVIDER::Check_PcMatch(unsigned int opc, unsigned int dpc, unsigned char *buff)
+{
+ unsigned int temp_opc,temp_dpc,temp_sls;
+
+ GetPointCodes(temp_sls,temp_opc,temp_dpc,buff);
+ if ( (temp_opc == opc) && (temp_dpc == dpc) ) return 1;
+ return 0;
+}
+//------------
+
+
+// -------------------------------------------------
+// M3UA Functions and definitions for test with SEA
+// -------------------------------------------------
+
+// Structures for M3UA
+static unsigned char aspup_msg[] =
+{
+ //common MsUA msg hdr, see M3UA PS
+ //Doc no. 1/1056-FCP 103 3571/F Uen, RevA
+ 0x01, //Release Version
+ 0x00, //reserved
+ M3UA_MSG_CLS_ASPSM, //Msg class: ASPSM
+ M3UA_MSG_TYP_ASPSM_ASPUP, //Msg type: ASPUP
+ 0x00, //Msg length begins (4 octets)
+ 0x00, //
+ 0x00, //
+ 0x08 // length ends = 8 octets
+ // ,PAR_PREFIX_COMMON, //optional Info string tag, in included, then msg
+ // PAR_INFO_STR //msg length should be +20, that is 28=0x1c
+ // 0x00,0x0f, // length: "TTCN-3 Executor" is 15 chars
+ // 'T', 'T', 'C', 'N',
+ // '-', '3', ' ', 'E',
+ // 'x', 'e', 'c', 'u',
+ // 't', 'o', 'r', 0x00 //las octet is padding
+};
+const int sizeof_aspup_msg = 8;
+
+static unsigned char aspupack_msg[] =
+{
+ //common MsUA msg hdr, see M3UA PS
+ //Doc no. 1/1056-FCP 103 3571/F Uen, RevA
+ 0x01, //Release Version
+ 0x00, //reserved
+ M3UA_MSG_CLS_ASPSM, //Msg class: ASPSM
+ M3UA_MSG_TYP_ASPSM_ASPUPAck, //Msg type: ASPUP
+ 0x00, //Msg length begins (4 octets)
+ 0x00, //
+ 0x00, //
+ 0x08 // length ends = 8 octets
+};
+const int sizeof_aspupack_msg = 8;
+
+static unsigned char aspac_msg[] =
+{
+ //common MsUA msg hdr, see M3UA PS
+ //Doc no. 1/1056-FCP 103 3571/F Uen, RevA
+ 0x01, //Release Version: 01
+ 0x00, //reserved
+ M3UA_MSG_CLS_ASPTM, //Msg class
+ M3UA_MSG_TYP_ASPTM_ASPAC, //Msg type
+ 0x00, //Msg length begins (4 octets)
+ 0x00, //
+ 0x00, //
+ 0x08 // length ends = 8 octets
+};
+const int sizeof_aspac_msg = 8;
+
+// ASP Active Acknowledge msg:
+static unsigned char aspac_ack_msg[] =
+{
+ //common MsUA msg hdr, see M3UA PS
+ //Doc no. 1/1056-FCP 103 3571/F Uen, RevA
+ 0x01, //Release Version: 01
+ 0x00, //reserved
+ M3UA_MSG_CLS_ASPTM, //Msg class
+ M3UA_MSG_TYP_ASPTM_ASPACAck, //Msg type
+ 0x00, //Msg length begins (4 octets)
+ 0x00, //
+ 0x00, //
+ 0x08 // length ends = 8 octets
+};
+const int sizeof_aspac_ack_msg = 8;
+
+static unsigned char aspia_ack_msg[] =
+{
+ //common MsUA msg hdr, see M3UA PS
+ //Doc no. 1/1056-FCP 103 3571/F Uen, RevA
+ 0x01, //Release Version: 01
+ 0x00, //reserved
+ M3UA_MSG_CLS_ASPTM, //Msg class
+ M3UA_MSG_TYP_ASPTM_ASPIAAck, //Msg type
+ 0x00, //Msg length begins (4 octets)
+ 0x00, //
+ 0x00, //
+ 0x08 // length ends = 8 octets
+};
+const int sizeof_aspia_ack_msg = 8;
+
+// ASP DOWN Acknowledge msg:
+static unsigned char aspdn_ack_msg[] =
+{
+ //common MsUA msg hdr, see M3UA PS
+ //Doc no. 1/1056-FCP 103 3571/F Uen, RevA
+ 0x01, //Release Version: 01
+ 0x00, //reserved
+ M3UA_MSG_CLS_ASPSM, //Msg class
+ M3UA_MSG_TYP_ASPSM_ASPDNAck, //Msg type
+ 0x00, //Msg length begins (4 octets)
+ 0x00, //
+ 0x00, //
+ 0x08 // length ends = 8 octets
+};
+const int sizeof_aspdn_ack_msg = 8;
+
+//ASP Destination Available msg:
+static unsigned char dava_1apc_msg[] =
+{
+ //common MsUA msg hdr, see M3UA PS
+ //Doc no. 1/1056-FCP 103 3571/F Uen, RevA
+ //or updated doc 2/1056-FCPW 101 86/P-1
+ 0x01, //Release Version: 01
+ 0x00, //reserved
+ M3UA_MSG_CLS_SSNM, //Msg class
+ M3UA_MSG_TYP_SSNM_DAVA, //Msg type
+ 0x00, //Msg length begins (4 octets)
+ 0x00, //
+ 0x00, //
+ 0x10, // length ends, 16 octets
+ //Affected point code
+ PAR_PREFIX_COMMON,
+ PAR_AFFECTED_PC,
+ 0x00, //par length begins (2 octets)
+ 0x08, //length ends, 8 octets
+ 0x00, // point code placeholder begins
+ 0x00, //
+ 0x00, //
+ 0x00 // point code placeholder ends
+};
+const int sizeof_dava_1apc_msg = 16;
+
+static unsigned char duna_1apc_msg[] =
+{
+ //common MsUA msg hdr, see M3UA PS
+ //Doc no. 1/1056-FCP 103 3571/F Uen, RevA
+ 0x01, //Release Version: 01
+ 0x00, //reserved
+ M3UA_MSG_CLS_SSNM, //Msg class
+ M3UA_MSG_TYP_SSNM_DUNA, //Msg type
+ 0x00, //Msg length begins (4 octets)
+ 0x00, //
+ 0x00, //
+ 0x10, // length ends, 16 octets
+ //Affected point code
+ PAR_PREFIX_COMMON,
+ PAR_AFFECTED_PC,
+ 0x00, //par length begins (2 octets)
+ 0x08, //length ends, 8 octets
+ 0x00, // point code placeholder begins
+ 0x00, //
+ 0x00, //
+ 0x00 // point code placeholder ends
+};
+const int sizeof_duna_1apc_msg = 16;
+
+static unsigned char error_msg[] =
+{
+ //common MsUA msg hdr, see M3UA PS
+ //Doc no. 1/1056-FCP 103 3571/F Uen, RevA
+ 0x01, //Release Version: 01
+ 0x00, //reserved
+ M3UA_MSG_CLS_MGMT, //Msg class
+ M3UA_MSG_TYP_MGMT_ERR, //Msg type
+ 0x00, //Msg length begins (4 octets)
+ 0x00, //
+ 0x00, //
+ 0x18, // length ends, 16+8 octets
+ // Error code field:
+ PAR_PREFIX_COMMON,
+ PAR_ERROR_CODE,
+ 0x00, //par length begins (2 octets)
+ 0x08, //length ends, 8 octets
+ 0x00, // error code placeholder begins (M3UA_MSG_OFFS+4)
+ 0x00, //
+ 0x00, //
+ 0x00, // error code placeholder ends
+ // additional field:
+ 0x00, // M3UA_MSG_OFFS+8
+ 0x00, // Routing context or Network Appearanance or APC or DI = error_code_id
+ 0x00, // par length begins (2 octets)
+ 0x08, // length ends, 8 octets
+ 0x00, // value placeholder begins M3UA_MSG_OFFS+12
+ 0x00, //
+ 0x00, //
+ 0x00 // value place holder ends
+};
+const int sizeof_error_msg = 24;
+
+void MTP3asp__PT_PROVIDER::M3UA_user_unmap(const char *system_port)
+{
+ MTP3_close_connection();
+ dynamicConnection = FALSE;
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::M3UA_user_map(const char *system_port)
+{
+ M3UAState = AssocDown;
+ Check_TestPort_Variables();
+ if(dynamicConnection)
+ {
+ connectionUp = FALSE;
+ }
+ else
+ {
+ MTP3_open_channel(TRUE);
+ M3UA_user_connect();
+ }
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::M3UA_user_connect()
+{
+ M3UAState = AssocEstabl;
+ // Sending out an ASPUP message
+ log("Message ASPUP will be sent");
+ send_msg(aspup_msg, sizeof_aspup_msg);
+ // NOTE: the ASPUPAck will be handled by M3UA_interpreter, which
+ // also will take care of sending ASPAC upon receiving the ASPUPAck
+}
+//------------
+
+// M3UA_interpreter
+void MTP3asp__PT_PROVIDER::M3UA_interpreter(unsigned char* inbuffer,int length,int from_channel,CONNECTION* con)
+{
+ if ((length==0) || (inbuffer==NULL))
+ { warn("0 byte long message received -> packet dropped.");
+ return;
+ }
+
+ if (length==1)
+ {
+ log("1 byte long internal SEA message received -> packet dropped.");
+ return;
+ }
+
+ if ( !strcmp((const char*)inbuffer,"start") )
+ { log("start message received from SEA");
+ return;
+ }
+ else if (!strcmp((const char*)inbuffer,"stop"))
+ { log("stop message received from SEA");
+ return;
+ }
+
+ // writing out the contents of the buffer
+ OCTETSTRING buff(length,inbuffer);
+ TTCN_Logger::begin_event(TTCN_PORTEVENT);
+ TTCN_Logger::log_event("incoming buffer: ");
+ buff.log();
+ TTCN_Logger::end_event();
+
+ // version checking
+ if ( inbuffer[M3UA_VER_OFFS] != M3UA_version )
+ { warn("Incompatible M3UA protocol version in header -> packet dropped");
+ return;
+ }
+
+ //length checking
+ unsigned int indicated_length = decode_32b_int(inbuffer + M3UA_LGT_OFFS );
+ if ( indicated_length != (unsigned)length)
+ warn("Length in common header (%d) mismatches received buffer length (%d),"
+ "Assuming that it is because of the omission of final parameter padding"
+ "in indicated length",indicated_length, length);
+
+ // checking MSG class
+ int unprocessed_chars = 0;
+ switch (inbuffer[M3UA_CLS_OFFS])
+ {
+ case M3UA_MSG_CLS_MGMT:
+ unprocessed_chars = processing_M3UA_MGMT_msg(inbuffer, length);
+ break;
+ case M3UA_MSG_CLS_TRNSFM :
+ unprocessed_chars = processing_M3UA_Transfer_msg(inbuffer, length);
+ break;
+ case M3UA_MSG_CLS_SSNM :
+ unprocessed_chars = processing_M3UA_SSNM_msg(inbuffer, length);
+ break;
+ case M3UA_MSG_CLS_ASPSM :
+ unprocessed_chars = processing_M3UA_ASPSM_msg(inbuffer, length);
+ break;
+ case M3UA_MSG_CLS_ASPTM :
+ unprocessed_chars = processing_M3UA_ASPTM_msg(inbuffer, length);
+ break;
+ case M3UA_MSG_CLS_RKM :
+ unprocessed_chars = processing_M3UA_RKM_msg(inbuffer, length);
+ break;
+ default:
+ unprocessed_chars = processing_M3UA_unsupported_msg_class(inbuffer, length);
+ break;
+ }
+ debuglog("%d chars remained unprocessed (might be due to padding)", unprocessed_chars);
+}
+//------------
+
+//processing M3UA MGMT msg
+int MTP3asp__PT_PROVIDER::processing_M3UA_MGMT_msg(unsigned char* inbuffer,int length)
+{
+ debuglog("Entering function:processing_MGMT_msg");
+ int offset = M3UA_MSG_OFFS; //pointer for processing
+
+ TTCN_Logger::begin_event(TTCN_DEBUG);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): {", get_name());
+ TTCN_Logger::log_event("decoded msg class: Mgmt, ");
+ switch (inbuffer[M3UA_TYP_OFFS])//msg type
+ {
+ case M3UA_MSG_TYP_MGMT_ERR:
+ TTCN_Logger::log_event("type: ERROR-> ignored");
+ TTCN_Logger::log_event("}");
+ TTCN_Logger::end_event();
+ break;
+ case M3UA_MSG_TYP_MGMT_NTFY:
+ TTCN_Logger::log_event("type: NOTIFY -> ignored");
+ TTCN_Logger::log_event("}");
+ TTCN_Logger::end_event();
+ break;
+ default:
+ send_M3UA_error_msg( PAR_ERRC_UNSMT, inbuffer[M3UA_TYP_OFFS]);
+ TTCN_Logger::log_event("Unsupported M3UA msg type %x of class MGMT -> packet dropped.", inbuffer[M3UA_TYP_OFFS]);
+ TTCN_Logger::log_event("}");
+ TTCN_Logger::end_event();
+ break;
+ }
+ return length - offset;
+}
+//------------
+
+//processing M3UA SSNM msg
+int MTP3asp__PT_PROVIDER::processing_M3UA_SSNM_msg(unsigned char* inbuffer,int length)
+{
+ debuglog("Entering function:processing_SSNM_msg");
+ TTCN_Logger::begin_event(TTCN_PORTEVENT);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): {", get_name());
+ TTCN_Logger::log_event("decoded msg class: SSNM, ");
+ int offset = M3UA_MSG_OFFS; //pointer for processing
+
+ switch (inbuffer[M3UA_TYP_OFFS])
+ {
+ case M3UA_MSG_TYP_SSNM_DAUD:
+ while (offset <= length-8 ) //processing potential params
+ {
+ switch (inbuffer[offset++]) //1st octet of tag
+ {
+ case PAR_PREFIX_COMMON:
+ TTCN_Logger::log_event (" DAUD: COMMON parameter ");
+ switch (inbuffer[offset++]) //2nd octet of COMMON tag
+ {
+ case PAR_ROUTING_CTX:
+ TTCN_Logger::log_event ("Routing Context (unsupported par) -> skipped), ");
+ skip_par_after_tag(inbuffer, offset);
+ break;
+ case PAR_INFO_STR:
+ TTCN_Logger::log_event ("Info String (unsupported par) -> skipped), ");
+ skip_par_after_tag(inbuffer, offset);
+ break;
+ case PAR_AFFECTED_PC:
+ TTCN_Logger::log_event ("Affected Point Code -> will send DUNA/DAVA, ");
+ TTCN_Logger::log_event("will ignore remainder parameters after APC}");
+ TTCN_Logger::end_event();
+ Send_DAVA_DUNA_to_APCinDAUD(Tester_Pc, inbuffer, offset);
+ return length-offset;
+ default:
+ TTCN_Logger::log_event ("invalid COMMON param tag:0x%02x%02x-> skipped", PAR_PREFIX_COMMON, inbuffer[offset-1]);
+ send_M3UA_error_msg( PAR_ERRC_PARFE, inbuffer[offset-1]);
+ skip_par_after_tag(inbuffer, offset);
+ break;
+ }
+ break;
+ case PAR_PREFIX_M3UA:
+ TTCN_Logger::log_event ("DAUD: M3UA parameter: ");
+ switch (inbuffer[offset++]) //2nd octet of M3UA tag
+ {
+ case PAR_NETW_APP:
+ TTCN_Logger::log_event ("Network Appearance (unsupported par) -> skipped), ");
+ skip_par_after_tag(inbuffer, offset);
+ break;
+ default:
+ TTCN_Logger::log_event ("invalid M3UA param tag:0x%02x%02x-> skipped",
+ PAR_PREFIX_M3UA, inbuffer[offset-1]);
+ send_M3UA_error_msg( PAR_ERRC_PARFE, inbuffer[offset-1]);
+ skip_par_after_tag(inbuffer, offset);
+ }
+ break;
+ default: //1st octet of tag
+ TTCN_Logger::log_event ("invalid 1st octet param tag:0x%02x in DATA (packet dropped)",inbuffer[offset-1]);
+ close_log_event();
+ return length -offset;
+ break;
+ }
+ }
+ break;
+ case M3UA_MSG_TYP_SSNM_DAVA: // Destination Available // Notification to the user part ?????
+ TTCN_Logger::log_event("type: SSNM_DAVA -> ignored");
+ close_log_event();
+ break;
+ case M3UA_MSG_TYP_SSNM_DUNA: // Destination Unavailable // Notification to the user part ?????
+ TTCN_Logger::log_event("type: SSNM_DUNA -> ignored");
+ close_log_event();
+ break;
+ case M3UA_MSG_TYP_SSNM_SCON: // Signalling Congestion // Notification to the user part ?????
+ TTCN_Logger::log_event("type: SSNM_SCON -> ignored");
+ close_log_event();
+ break;
+ case M3UA_MSG_TYP_SSNM_DUPU: //Destinationn User Part Unavailable // Notification to the user part ?????
+ TTCN_Logger::log_event("type: SSNM_DUPU -> ignored");
+ close_log_event();
+ break;
+ case M3UA_MSG_TYP_SSNM_DRST: //Destination Restricted // Notification to the user part ?????
+ TTCN_Logger::log_event("type: SSNM_DRST -> ignored");
+ close_log_event();
+ break;
+ default: //msg type
+ send_M3UA_error_msg( PAR_ERRC_UNSMT, inbuffer[M3UA_TYP_OFFS]);
+ TTCN_Logger::log_event("Unsupported M3UA msg type -> packet dropped.");
+ close_log_event();
+ break;
+ }
+ return length - offset;
+}
+//------------
+
+//processing M3UA ASPSM msg
+int MTP3asp__PT_PROVIDER::processing_M3UA_ASPSM_msg(unsigned char* inbuffer,int length)
+{
+ debuglog("Entering function:processing_ASPSM_msg");
+ TTCN_Logger::begin_event(TTCN_PORTEVENT);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): {", get_name());
+ TTCN_Logger::log_event("decoded msg class: ASPSM, ");
+
+ int offset = M3UA_MSG_OFFS; //pointer for processing
+ switch (inbuffer[M3UA_TYP_OFFS])
+ {
+ case M3UA_MSG_TYP_ASPSM_ASPUP:
+ TTCN_Logger::log_event("type: ASPSM_ASPUP -> ASPUPAck will be sent");
+ close_log_event();
+ send_msg(aspupack_msg, sizeof_aspupack_msg);
+ break;
+ case M3UA_MSG_TYP_ASPSM_ASPDN:
+ TTCN_Logger::log_event("type: ASPSM_ASPDN -> ASPDNAck will be sent");
+ close_log_event();
+ send_msg(aspdn_ack_msg, sizeof_aspdn_ack_msg);
+ break;
+ case M3UA_MSG_TYP_ASPSM_BEAT:
+ TTCN_Logger::log_event("type: ASPSM_BEAT -> ASPSM_BEATAck will be sent");
+ close_log_event();
+ //Sending back the packet as acknowledge:
+ inbuffer[M3UA_TYP_OFFS]= M3UA_MSG_TYP_ASPSM_BEATAck;
+ send_msg(inbuffer, length);
+ break;
+ case M3UA_MSG_TYP_ASPSM_ASPUPAck:
+ TTCN_Logger::log_event("type: ASPSM_ASPUPAck -> ASPAC will be sent");
+ M3UAState = AssocInac;
+ TTCN_Logger::log_event(" M3UAState's been changed to AssocInac");
+ close_log_event();
+ send_msg(aspac_msg, sizeof_aspac_msg );
+ break;
+ case M3UA_MSG_TYP_ASPSM_ASPDNAck:
+ M3UAState = AssocDown;
+ TTCN_Logger::log_event(" M3UAState's been changed to AssocDown");
+ TTCN_Logger::log_event("type: ASPSM_ASPDNAck -> nothing will be sent");
+ close_log_event();
+ break;
+ case M3UA_MSG_TYP_ASPSM_BEATAck:
+ TTCN_Logger::log_event("type: ASPSM_BEATAck -> nothing will be sent");
+ close_log_event();
+ break;
+ default:
+ TTCN_Logger::log_event("Unsupported M3UA msg type %x of class ASPSM-> packet dropped.", (unsigned char)(inbuffer[M3UA_TYP_OFFS]));
+ close_log_event();
+ send_M3UA_error_msg( PAR_ERRC_UNSMT, inbuffer[M3UA_TYP_OFFS]);
+ break;
+ }
+ return length - offset;
+}
+//------------
+
+//processing M3UA ASPTM msg
+int MTP3asp__PT_PROVIDER::processing_M3UA_ASPTM_msg(unsigned char* inbuffer,int length)
+{
+ debuglog("Entering function:processing_ASPTM_msg");
+ TTCN_Logger::begin_event(TTCN_PORTEVENT);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): {", get_name());
+ TTCN_Logger::log_event("decoded msg class: ASPTM, ");
+
+ int offset = M3UA_MSG_OFFS; //pointer for processing
+ switch (inbuffer[M3UA_TYP_OFFS])
+ {
+ case M3UA_MSG_TYP_ASPTM_ASPAC: //ASP Active
+ M3UAState = AssocActive;
+ TTCN_Logger::log_event("type: ASPTM_ASPAC -> ASPACAck will be sent");
+ close_log_event();
+ send_msg(aspac_ack_msg, sizeof_aspac_ack_msg);
+ break;
+ case M3UA_MSG_TYP_ASPTM_ASPIA: //ASP InActive
+ TTCN_Logger::log_event("type: ASPTM_ASPIA -> ASPIAAck will be sent");
+ close_log_event();
+ send_msg(aspia_ack_msg, sizeof_aspia_ack_msg);
+ break;
+ case M3UA_MSG_TYP_ASPTM_ASPACAck:
+ M3UAState = AssocActive;
+ TTCN_Logger::log_event("type: ASPTM_ASPACAck -> nothing will be sent");
+ TTCN_Logger::log_event("M3UAState's been changed to AssocActive.");
+ close_log_event();
+ break;
+ case M3UA_MSG_TYP_ASPTM_ASPIAAck:
+ TTCN_Logger::log_event("type: ASPTM_ASPIAAck -> nothing will be sent");
+ close_log_event();
+ break;
+ default:
+ TTCN_Logger::log_event("Unsupported M3UA msg type %x of class ASPSM-> packet dropped.", (unsigned char)(inbuffer[M3UA_TYP_OFFS]));
+ close_log_event();
+ send_M3UA_error_msg( PAR_ERRC_UNSMT, inbuffer[M3UA_TYP_OFFS]);
+ break;
+ }
+ return length - offset;
+}
+//------------
+
+//processing M3UA RKM msg
+int MTP3asp__PT_PROVIDER::processing_M3UA_RKM_msg(unsigned char* inbuffer,int length)
+{
+ debuglog("Entering function:processing_RKM_msg");
+ int offset = M3UA_MSG_OFFS; //pointer for processing
+ warn("Unsupported M3UA msg class M3UA_RKM -> packet dropped.");
+ return length - offset;
+}
+//------------
+
+//processing M3UA unsupported msg class
+int MTP3asp__PT_PROVIDER::processing_M3UA_unsupported_msg_class(unsigned char* inbuffer,int length)
+{
+ warn("Unsupported M3UA msg class -> packet dropped.");
+ send_M3UA_error_msg( PAR_ERRC_UNSMC, inbuffer[M3UA_CLS_OFFS] );
+ int offset = M3UA_MSG_OFFS; //pointer for processing
+ return length - offset;
+}
+//------------
+
+// processing_M3UA_Transfer_msg - called if the msg class is "Transfer" i.e M3UA_MSG_CLS_TRNSFM:
+int MTP3asp__PT_PROVIDER::processing_M3UA_Transfer_msg(unsigned char* inbuffer,int length)
+{
+ debuglog("Entering function:processing_M3UA_Transfer_msg");
+ int offset = M3UA_MSG_OFFS; //pointer for processing
+ unsigned int recv_opc, recv_dpc,recv_si, recv_ni, recv_mp,recv_sls =0;
+ int param_length = 0;
+ TTCN_Logger::begin_event(TTCN_DEBUG);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): {", get_name());
+ TTCN_Logger::log_event("decoded msg class: DataTrnsf, ");
+
+ switch (inbuffer[M3UA_TYP_OFFS]) //msg type
+ {
+ case M3UA_MSG_TYP_TRSNFM_DATA:
+ TTCN_Logger::log_event("msg type DATA, ");
+ while (offset <= length-8) //processing potential params
+ {
+ switch (inbuffer[offset++]) //1st octet of tag. Offset already incremented after the 'case' !
+ {
+ case PAR_PREFIX_COMMON:
+ TTCN_Logger::log_event (" DATA: COMMON parameter, ");
+ switch (inbuffer[offset++]) //2nd octet of tag
+ {
+ case PAR_ROUTING_CTX:
+ TTCN_Logger::log_event ("Routing Context (unsupported par) -> skipped), ");
+ // Send back an error msg
+ skip_par_after_tag(inbuffer, offset);
+ break;
+ case PAR_CORREL_ID:
+ TTCN_Logger::log_event ("Correlation ID (unsupported par) -> skipped), ");
+ skip_par_after_tag(inbuffer, offset);
+ break;
+ default:
+ TTCN_Logger::log_event ("invalid COMMON param tag:0x%02x%02x -> skipped", PAR_PREFIX_COMMON, inbuffer[offset-1]);
+ skip_par_after_tag(inbuffer, offset);
+ break;
+ }
+ case PAR_PREFIX_M3UA:
+ TTCN_Logger::log_event ("DATA: M3UA parameter: ");
+ switch (inbuffer[offset++]) //2nd octet of M3UA tag
+ {
+ case PAR_PROT_DATA:
+ //---------------------------------------------
+ TTCN_Logger::log_event ("Protocol Data");
+ // retrieving length
+ param_length = decode_16b_int(inbuffer+offset); offset+=2;
+ TTCN_Logger::log_event(", DATA: Length of Protocol Data parameter is %d",param_length);
+ // retrieving M3UA protocol data paremeter opc, dpc, si, ni, mp,
+ // sls
+ recv_opc = decode_32b_int(inbuffer+offset); offset +=4;
+ recv_dpc = decode_32b_int(inbuffer+offset); offset +=4;
+ recv_si = (unsigned int)(inbuffer[offset++]);
+ recv_ni = (unsigned int)(inbuffer[offset++]);
+ recv_mp = (unsigned int)(inbuffer[offset++]);
+ recv_sls = (unsigned int)(inbuffer[offset++]);
+ TTCN_Logger::log_event(", DATA: decoded Protocol Data parameter:");
+ // filling up TTCN structure
+ if ((Loop==MTP3_ON) ||
+ (!Filter) ||
+ (Filter &&
+ (recv_opc == (unsigned)Sut_Pc) && (recv_dpc == (unsigned)Tester_Pc) &&
+ (recv_ni == (unsigned)mtp3_ni)
+ ))
+ {
+ ASP__MTP3__TRANSFERind recv_msg;
+ MTP3__Field__sio recv_sio;
+ recv_sio.ni()= int2bit(recv_ni,2);
+ recv_sio.prio()= int2bit(recv_mp,2);
+ recv_sio.si()= int2bit(recv_si,4);
+ recv_msg.sio() = recv_sio;
+ recv_msg.sls() = recv_sls;
+ recv_msg.opc()= recv_opc;
+ recv_msg.dpc() = recv_dpc;;
+ recv_msg.data() = OCTETSTRING(param_length-16, // 16 octet paramheader + 5 routing label
+ &inbuffer[offset]);
+ recv_msg.log();
+ close_log_event();
+ incoming_message ( recv_msg );
+ offset += param_length-16;
+ return length - offset;
+ }
+ else
+ {
+ close_log_event();
+ log("Either the received M3UA(OPC, DPC, SI) fields, or the embedded MTP3 rooting label (OPC, DPC) not matched with the filter setting -> packet dropped.");
+ return length - offset;
+ }
+ break;
+ default:
+ TTCN_Logger::log_event ("invalid M3UA param tag:0x%02x%02x-> skipped", PAR_PREFIX_M3UA, inbuffer[offset-1]);
+ skip_par_after_tag(inbuffer, offset);
+ }
+ break;
+ default:
+ TTCN_Logger::log_event ("invalid 1st octet param tag:0x%02x in DATA (packet dropped)",inbuffer[offset-1]);
+ close_log_event();
+ return length -offset;
+ break;
+ }
+ }// Checking parameter tag (offset <length-8)
+ break;
+ default:
+ TTCN_Logger::log_event("Invalid M3UA msg class TransferMessage msg type %d -> packet dropped",
+ (unsigned int)(inbuffer[M3UA_TYP_OFFS]));
+ close_log_event();
+ send_M3UA_error_msg( PAR_ERRC_UNSMT, inbuffer[M3UA_TYP_OFFS]);
+ break;
+ }
+
+ return length -offset;
+}
+
+// Set M3UA SingleAPC - Stores field Single Affected Point Code
+void MTP3asp__PT_PROVIDER::Set_M3UA_SingleAPC(unsigned int pc, unsigned char* apc_par)
+{
+ //setting par type to APC
+ apc_par[0] = PAR_PREFIX_COMMON;
+ apc_par[1] = PAR_AFFECTED_PC;
+ //setting the length to 4+4 = 8
+ apc_par[2] = 0x00;
+ apc_par[3] = 0x08;
+ //setting the mask
+ apc_par[4] = 0x00;
+ //setting the pc
+ encode_24b_int(apc_par+5,pc);
+}
+
+// Send DAVA DUNA to APCinDAUD
+void MTP3asp__PT_PROVIDER::Send_DAVA_DUNA_to_APCinDAUD(unsigned int dava_sep, unsigned char* inbuffer, int & offset)
+{
+ unsigned int length = decode_16b_int(inbuffer+offset);
+ offset +=2;
+ unsigned int current_pc;
+
+ //checking the length
+ if ((length < 8) || (length%4))
+ { warn("Invalid length in APC parameter -> not processed");
+ return;
+ }
+
+ for (unsigned int i = 4 ; i < length; i += 4)
+ {
+ if (inbuffer[offset++] == 0x00) // mask===>single pc
+ {
+ current_pc = decode_24b_int(inbuffer+offset);
+ offset +=3;
+ if (dava_sep == current_pc) //dava
+ { Set_M3UA_SingleAPC(dava_sep, dava_1apc_msg+M3UA_MSG_OFFS);
+ log("DAVA will be sent for pc=%d", dava_sep);
+ send_msg(dava_1apc_msg, sizeof_dava_1apc_msg);
+ }
+ else //duna
+ { Set_M3UA_SingleAPC(current_pc, duna_1apc_msg+M3UA_MSG_OFFS);
+ log("DUNA will be sent for pc=%d", current_pc);
+ send_msg(duna_1apc_msg, sizeof_duna_1apc_msg);
+ }
+ }
+ else //masked pc
+ { warn("Unsupported masking (mask=0x%02x) for PC=%d in APC parameter -> ignored",
+ inbuffer[offset-1], current_pc);
+ }
+ }
+ return;
+}
+
+// send M3UA error msg
+// send an eror msg with error_code. Additional parameter matches to the error code:
+void MTP3asp__PT_PROVIDER::send_M3UA_error_msg(unsigned int error_code, unsigned int add_par )
+{
+ encode_16b_int( error_msg+M3UA_MSG_OFFS+4, error_code);
+ encode_16b_int( error_msg+M3UA_MSG_OFFS+8, add_par);
+ send_msg(error_msg, sizeof_error_msg );
+};
+
+// Coder functions for M3UA: int -> unsigned char array
+//------------------------------------------------------
+// Result:Less significant byte in highest address
+// Most Significant Byte first (in lowest address) = MSB = Big Endian = Network Byte Order
+void MTP3asp__PT_PROVIDER::encode_32b_int(unsigned char *to, unsigned int from)
+{
+ to[3] = from & 0xFF;
+ from >>= 8;
+ to[2] = from & 0xFF;
+ from >>= 8;
+ to[1] = from & 0xFF;
+ from >>= 8;
+ to[0] = from & 0xFF;
+}
+//------------
+
+unsigned int MTP3asp__PT_PROVIDER::decode_32b_int(const unsigned char *from)
+{
+ return from[3] | (from[2] << 8) | (from[1] << 16) | (from[0] << 24);
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::encode_24b_int(unsigned char *to, unsigned int from)
+{
+ to[2] = from & 0xFF;
+ from >>= 8;
+ to[1] = from & 0xFF;
+ from >>= 8;
+ to[0] = from & 0xFF;
+}
+//------------
+
+unsigned int MTP3asp__PT_PROVIDER::decode_24b_int(const unsigned char *from)
+{
+ return from[2] | (from[1] << 8) | (from[0] << 16);
+}
+//------------
+
+void MTP3asp__PT_PROVIDER::encode_16b_int(unsigned char *to, int from)
+{
+ to[1] = from & 0xFF;
+ from >>= 8;
+ to[0] = from & 0xFF;
+}
+//------------
+
+unsigned int MTP3asp__PT_PROVIDER::decode_16b_int(const unsigned char *from)
+{
+ return from[1] | (from[0] << 8);
+}
+//------------
+
+//skip par after tag
+void MTP3asp__PT_PROVIDER::skip_par_after_tag(unsigned char* inbuffer, int &offset)
+{
+ offset += decode_16b_int(inbuffer+offset)-2; //the length contains
+ //the param hdr. itself
+ if (offset%4) offset += 4-(offset%4); //skipping padding
+}
+//------------
+#endif
+
+
+
+#ifdef TARGET_TEST
+// --------------------------
+// Functions for Target testing
+// --------------------------
+// In case of target this function handles the received message
+void MTP3asp__PT_PROVIDER::message_incoming(const unsigned char* msg, int messageLength, int)
+{
+ OCTETSTRING rcvData = OCTETSTRING(messageLength, msg);
+
+ int msgType = oct2int(substr(rcvData,0,1));
+ switch (msgType)
+ {
+ case 0: //TRANSFERind message received
+ if(Tcp_is_up) //Registration was already performed
+ {
+ ASP__MTP3__TRANSFERind recv_msg;
+ MTP3__Field__sio recv_sio;
+ BITSTRING sio_bit = oct2bit(substr(rcvData,5,1));
+ recv_sio.ni()= substr(sio_bit,0,2);
+ recv_sio.prio()= substr(sio_bit,2,2);
+ recv_sio.si()= substr(sio_bit,4,4);
+ recv_msg.sio() = recv_sio;
+ recv_msg.opc() = oct2int(substr(rcvData,6,4));
+ recv_msg.dpc() = oct2int(substr(rcvData,10,4));
+ recv_msg.sls() = oct2int(substr(rcvData,14,1));
+ recv_msg.data() = substr(rcvData,15,rcvData.lengthof()-15);
+ if (Tcp_is_up == 1) //No unregistration ongoing
+ incoming_message(recv_msg);
+ else //Unregistration ongoing
+ log("Received ASP_MTP3_TRANSFERind is ignored since unregistration is started.");
+ }
+ else
+ error("Message was received before successful registration in M3UA server.");
+ break;
+
+ case 4: //Status message received
+ {
+ int status = oct2int(substr(rcvData,5,1));
+ if(Tcp_is_up == 2) // Unregistration ongoing
+ {
+ const char * rcvDat = oct2str(rcvData);
+ log("Message \"%s\" received. Status = %i", rcvDat, status);
+ if (status == 2)
+ {
+ log("Unregistration performed.");
+ Tcp_is_up = 0;
+ }
+ else if (status == 3)
+ error("Unsuccessful unregistration.");
+ else if (status == 5) {
+ if(forward_status) {
+ incoming_message(ASP__MTP3__STATUS(NULL_VALUE));
+ }
+ else {
+ warn("Invalid STATUS message received from M3UA server with status code=%d.", status);
+ }
+ }
+ }
+ else if(Tcp_is_up == 1) // Active state
+ {
+ if (status == 5) {
+ if(forward_status) {
+ incoming_message(ASP__MTP3__STATUS(NULL_VALUE));
+ }
+ }
+ else {
+ warn("Invalid STATUS message received from M3UA server with status code=%d.", status);
+ }
+ }
+ else // Registration ongoing
+ {
+ const char * rcvDat = oct2str(rcvData);
+ log("Message \"%s\" received. Status = %i", rcvDat, status);
+ if (status == 0)
+ {
+ log("Registration performed.");
+ Tcp_is_up = 1;
+ }
+ else {
+ error("Unsuccessful registration.");
+ }
+ }
+ }
+ break;
+ case 5:
+ {
+ if(forward_pause) incoming_message(ASP__MTP3__PAUSE(NULL_VALUE));
+ }
+ break;
+ case 6:
+ {
+ if(forward_resume) incoming_message(ASP__MTP3__RESUME(NULL_VALUE));
+ }
+ break;
+
+
+ default: //Unexpected message received
+ warn("Invalid message received from M3UA server.");
+ }
+}
+
+void MTP3asp__PT_PROVIDER::Check_Target_TestPort_Variables()
+{
+ if (Sut_Pc==-1) error("Parameter SUT_Pc is not set.");
+ if (Tester_Pc==-1) error("Parameter TESTER_Pc is not set.");
+ if (!Ni_is_set) error("Parameter NI is not set.");
+ if (M3UA_version==0) error("Parameter M3UA_version cannot be set to 0 in TargetM3UA mode.");
+
+//packet header
+ header_descr = new PacketHeaderDescr( 1, 4, PacketHeaderDescr::Header_MSB);
+}
+
+void MTP3asp__PT_PROVIDER::Check_Target_TestPort_Variables_STC()
+{
+ if( destinationname == NULL) error("Parameter DestinationName is not set in TargetSTC mode.");
+
+ header_descr = new PacketHeaderDescr( 1, 4, PacketHeaderDescr::Header_MSB);
+}
+
+void MTP3asp__PT_PROVIDER::Target_user_map(const char *system_port)
+{
+ Tcp_is_up = 0;
+ Check_Target_TestPort_Variables();
+ map_user();
+
+ OCTETSTRING tcpData = int2oct(2,1); //Message type
+ if( destinationname == NULL)
+ tcpData = tcpData + int2oct(char2oct(system_port).lengthof()+15,4); //Length
+ else
+ tcpData = tcpData + int2oct(char2oct(destinationname).lengthof()+15,4);
+ tcpData = tcpData + int2oct(mtp3_ni,1);
+ tcpData = tcpData + int2oct(Sut_Pc,4);
+ tcpData = tcpData + int2oct(Tester_Pc,4);
+ tcpData = tcpData + int2oct(M3UA_version,1);
+ if( destinationname == NULL)
+ tcpData = tcpData + char2oct(system_port);
+ else
+ tcpData = tcpData + char2oct(destinationname);
+
+ send_outgoing((const unsigned char*)tcpData,tcpData.lengthof());
+
+ TTCN_Logger::begin_event(TTCN_DEBUG);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): ", get_name());
+ TTCN_Logger::log_event_str("Registration message sent: ");
+ tcpData.log();
+ TTCN_Logger::end_event();
+
+ int fd = get_socket_fd();
+ pollfd pollFd = { fd, POLLIN, 0 };
+ int nEvents = poll(&pollFd, 1, 3000 /* ms */);
+ if (nEvents == 0)
+ error("No response received for REGISTER message. Exiting after timeout.");
+ if (nEvents < 0 || (pollFd.revents & (POLLIN | POLLHUP)) == 0)
+ error("No response received for REGISTER message. Exiting after error (%d)",
+ (nEvents < 0) ? errno : 0);
+ Handle_Fd_Event(fd, TRUE, FALSE, FALSE);
+}
+
+void MTP3asp__PT_PROVIDER::TargetSTC_user_map(const char *system_port)
+{
+ Tcp_is_up = 0;
+ Check_Target_TestPort_Variables_STC();
+ map_user();
+
+ OCTETSTRING tcpData = int2oct(2,1); //Message type
+ tcpData = tcpData + int2oct(char2oct(destinationname).lengthof()+15,4);
+ tcpData = tcpData + int2oct(0,1);
+ tcpData = tcpData + int2oct(0,4);
+ tcpData = tcpData + int2oct(0,4);
+ tcpData = tcpData + int2oct(0,1);
+ tcpData = tcpData + char2oct(destinationname);
+
+ send_outgoing((const unsigned char*)tcpData,tcpData.lengthof());
+
+ TTCN_Logger::begin_event(TTCN_DEBUG);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): ", get_name());
+ TTCN_Logger::log_event_str("Registration message sent: ");
+ tcpData.log();
+ TTCN_Logger::end_event();
+
+ int fd = get_socket_fd();
+ pollfd pollFd = { fd, POLLIN, 0 };
+ int nEvents = poll(&pollFd, 1, 3000 /* ms */);
+ if (nEvents == 0)
+ error("No response received for REGISTER message. Exiting after timeout.");
+ if (nEvents < 0 || (pollFd.revents & (POLLIN | POLLHUP)) == 0)
+ error("No response received for REGISTER message. Exiting after error (%d)",
+ (nEvents < 0) ? errno : 0);
+ Handle_Fd_Event(fd, TRUE, FALSE, FALSE);
+}
+
+void MTP3asp__PT_PROVIDER::Target_user_unmap(const char *system_port)
+{
+ OCTETSTRING tcpData = int2oct(3,1); //Message type
+ tcpData = tcpData + int2oct(6,4); //Length
+ tcpData = tcpData + int2oct(0,1);
+ send_outgoing((const unsigned char*)tcpData,tcpData.lengthof());
+
+ TTCN_Logger::begin_event(TTCN_DEBUG);
+ TTCN_Logger::log_event("MTP3 Test Port (%s): ", get_name());
+ TTCN_Logger::log_event_str("Unregistration message sent: ");
+ tcpData.log();
+ TTCN_Logger::end_event();
+
+ Tcp_is_up = 2; //Unregistration ongoing
+
+ while (Tcp_is_up == 2)
+ {
+ int fd = get_socket_fd();
+ pollfd pollFd = { fd, POLLIN, 0 };
+ int nEvents = poll(&pollFd, 1, 3000 /* ms */);
+ if (nEvents == 0)
+ error("No response received for UNREGISTER message. Exiting after timeout.");
+ if (nEvents < 0 || (pollFd.revents & (POLLIN | POLLHUP)) == 0)
+ error("No response received for UNREGISTER message. Exiting after error (%d)",
+ (nEvents < 0) ? errno : 0);
+ Handle_Fd_Event(fd, TRUE, FALSE, FALSE);
+ }
+ unmap_user();
+}
+#endif
+}
diff --git a/MTP3asp_CNL113337/src/MTP3asp_PT.hh b/MTP3asp_CNL113337/src/MTP3asp_PT.hh
new file mode 100644
index 0000000..340f24f
--- /dev/null
+++ b/MTP3asp_CNL113337/src/MTP3asp_PT.hh
@@ -0,0 +1,249 @@
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Copyright Test Competence Center (TCC) ETH 2009 //
+// //
+// The copyright to the computer program(s) herein is the property of TCC. //
+// The program(s) may be used and/or copied only with the written permission //
+// of TCC or in accordance with the terms and conditions stipulated in the //
+// agreement/contract under which the program(s) have been supplied //
+// //
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: MTP3asp_PT.hh
+// Description: Implementation of port MTP3asp_PT
+// This test port is written to connect ttcn to SEA
+// according to specification ITU-T SS7 MTP3, ANSI, TCC, MPT, IETF,
+// Reference: ITU-T Recommendation Q.704, RFC3332
+// Rev: R11A01
+// Prodnr: CNL 113 337
+// Updated: 2009-04-03
+// Contact: http://ttcn.ericsson.se
+
+
+#ifndef MTP3asp_PT_HH
+#define MTP3asp_PT_HH
+
+#include <TTCN3.hh>
+
+#ifdef TARGET_TEST
+#include "Abstract_Socket.hh"
+#endif
+
+#ifndef TARGET_TEST
+#include "mphclib.h"
+#endif
+
+
+#define MAXSIZE 1532 //+32 needed for M3UA
+#define MTP3_ON 1
+#define MTP3_OFF 0
+namespace MTP3asp__Types {
+ class ASP__MTP3__TRANSFERind;
+ class ASP__MTP3__PAUSE;
+ class ASP__MTP3__RESUME;
+ class ASP__MTP3__STATUS;
+ class ASP__MTP3__TRANSFERreq;
+}
+namespace MTP3asp__PortType {
+
+class MTP3asp__PT_PROVIDER : public PORT
+#ifdef TARGET_TEST
+ , public Abstract_Socket
+#endif
+ {
+protected:
+ // pointer to member: user_map/unmap methods
+ typedef void (MTP3asp__PT_PROVIDER::*usermap_t)(const char *system_port);
+ // pointer to member: user_connect methods
+ typedef void (MTP3asp__PT_PROVIDER::*userconnect_t)();
+ // pointer to member: interpreter methods
+#ifndef TARGET_TEST
+ typedef void (MTP3asp__PT_PROVIDER::*interpreter_t)(unsigned char* inbuffer,int length,int from_channel,CONNECTION* con);
+
+ void M3UA_interpreter(unsigned char* inbuffer,int length,int from_channel,CONNECTION* con);
+ void M3UA_user_map(const char *system_port);
+ void M3UA_user_connect();
+ void M3UA_user_unmap(const char *system_port);
+ void MTP3_interpreter(unsigned char* inbuffer,int length,int from_channel,CONNECTION* con);
+ void MTP3_user_map(const char *system_port); // common for MTP3 ITU and MTP3 ANSI
+ void MTP3_user_connect();
+ void MTP3_user_unmap(const char *system_port);// common for MTP3 ITU and MTP3 ANSI
+ void STC_user_connect();
+ void STC_interpreter(unsigned char* inbuffer,int length,int from_channel,CONNECTION* con);
+ void STC_user_map(const char *system_port);
+ void STC_user_unmap(const char *system_port);
+#endif
+#ifdef TARGET_TEST
+ //Map and unmap for target
+ void Target_user_map(const char *system_port);
+ void Target_user_unmap(const char *system_port);
+ void TargetSTC_user_map(const char *system_port);
+#endif
+
+public:
+ MTP3asp__PT_PROVIDER(const char *par_port_name=NULL);
+ ~MTP3asp__PT_PROVIDER();
+
+ typedef enum { MTP3itu, MTP3ansi, MTP3ttc, MTP3mpt, M3UA, TargetM3UA, MTP3bttc,MTP3iup, STC, TargetSTC } MTPServiceType_t ;
+
+ MTPServiceType_t MTPServiceType ; // ctor default is MTP3itu
+ void set_parameter(const char *parameter_name, const char *parameter_value);
+ void error(const char *msg, ...);
+ void log(const char *msg, ...);
+#ifndef TARGET_TEST
+ void user_connect();
+
+ void set_channel(int chnl) {channel=chnl;};
+ void MTP3_open_channel(boolean http);
+ void MTP3_close_connection();
+
+ boolean wait_for_open();
+ int conn_state;
+
+ interpreter_t interpreter; // pointer to interpreter members, ctor default is MTP3_ITU_interpreter
+ void doInterpret(unsigned char* inbuffer,int length,int from_channel,CONNECTION* con)
+ { (this->*interpreter)(inbuffer,length,from_channel, con); }
+#endif
+ //parameter handling
+ boolean dynamicConnection, connectionUp;
+ char *hostname;
+ int httpport;
+ char *entityname;
+ int MTP_fd;
+
+protected:
+ void user_map(const char *system_port);
+ void user_unmap(const char *system_port);
+
+ void debuglog(const char *msg, ...);
+ void warn(const char *msg, ...);
+ void close_log_event();
+
+ usermap_t user_map_p ; // pointer to user_map members, default is MTP3itu
+ usermap_t user_unmap_p; // pointer to user_unmap members, default is MTP3itu
+ userconnect_t user_connect_p;
+
+ void user_start();
+ void user_stop();
+
+ void outgoing_send(const MTP3asp__Types::ASP__MTP3__TRANSFERreq& send_par);
+ virtual void incoming_message
+ (const MTP3asp__Types::ASP__MTP3__TRANSFERind& incoming_par) = 0;
+ virtual void incoming_message
+ (const MTP3asp__Types::ASP__MTP3__PAUSE& incoming_par) = 0;
+ virtual void incoming_message
+ (const MTP3asp__Types::ASP__MTP3__RESUME& incoming_par) = 0;
+ virtual void incoming_message
+ (const MTP3asp__Types::ASP__MTP3__STATUS& incoming_par) = 0;
+#ifndef TARGET_TEST
+ void encode_56bLSB_int(unsigned char *to, unsigned long long int from);
+ long long unsigned int decode_56bLSB_int(const unsigned char *from);
+ void encode_48bLSB_int(unsigned char *to, unsigned long long int from);
+ long long unsigned int decode_48bLSB_int(const unsigned char *from);
+ void encode_40bLSB_int(unsigned char *to, unsigned long long int from);
+ long long unsigned int decode_40bLSB_int(const unsigned char *from);
+ void encode_32bLSB_int(unsigned char *to, unsigned int from);
+ unsigned int decode_32bLSB_int(const unsigned char *from);
+ void encode_24bLSB_int(unsigned char *to, int from);
+ unsigned int decode_24bLSB_int(const unsigned char *from);
+ void encode_16bLSB_int(unsigned char *to, int from);
+ unsigned int decode_16bLSB_int(const unsigned char *from);
+ void encode_32b_int(unsigned char *to, unsigned int from);
+ unsigned int decode_32b_int(const unsigned char *from);
+ void encode_24b_int(unsigned char *to, unsigned int from);
+ unsigned int decode_24b_int(const unsigned char *from);
+ void encode_16b_int(unsigned char *to, int from);
+ unsigned int decode_16b_int(const unsigned char *from);
+ void skip_par_after_tag(unsigned char* inbuffer, int &offset);
+
+ void GetPointCodes(unsigned int &sls,unsigned int &opc,unsigned int &dpc, unsigned char* msg);
+ void GetPointCodesIUP(unsigned int &cic,unsigned int &opc,unsigned int &dpc, unsigned char* msg);
+ void SetPointCodes(unsigned int sls, unsigned int opc, unsigned int dpc, unsigned char* msg);
+ void SetPointCodesIUP(unsigned int cic, unsigned int opc, unsigned int dpc, unsigned char* msg);
+ int ChangePointCodes(unsigned char* outbuff, unsigned char *inbuff, int len);
+ void Set_M3UA_SingleAPC(unsigned int pc, unsigned char* apc_par); //for ITU and ANSI
+ bool Check_M3UA_SingleITUAPC(unsigned int pc, unsigned char* apc_par);
+ void Send_DAVA_DUNA_to_APCinDAUD(unsigned int dava_sep, unsigned char* inbuffer, int &offset );
+ void processing_MTP3_management_msg(unsigned char* inbuff,int len);
+ void processing_MTP3_test_msg(unsigned char* inbuff,int len);
+ int processing_M3UA_MGMT_msg(unsigned char* inbuff,int len);
+ int processing_M3UA_Transfer_msg(unsigned char* inbuff,int len);
+ int processing_M3UA_SSNM_msg(unsigned char* inbuff,int len);
+ int processing_M3UA_ASPSM_msg(unsigned char* inbuff,int len);
+ int processing_M3UA_ASPTM_msg(unsigned char* inbuff,int len);
+ int processing_M3UA_RKM_msg(unsigned char* inbuff,int len);
+ int processing_M3UA_unsupported_msg_class(unsigned char* inbuff,int len);
+ int Check_PcMatch(unsigned int opc, unsigned int dpc, unsigned char *buff);
+ void send_msg(unsigned char *outbuff, int length);
+ void send_M3UA_error_msg(unsigned int error_code, unsigned int add_par );
+ void Check_TestPort_Variables();
+ void Check_TestPort_Variables_STC();
+#endif
+#ifdef TARGET_TEST
+ void Check_Target_TestPort_Variables();
+ void Check_Target_TestPort_Variables_STC();
+
+ //Functions for abstract socket handling
+ void message_incoming(const unsigned char*, int length, int client_id = -1);
+ 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* local_address_name() { return "localIPAddr";}
+ const char* local_port_name() { return "localPort";}
+ const char* remote_address_name(){ return "M3UAtarget_TCP_IPAddr";}
+ const char* remote_port_name() { return "M3UAtarget_TCP_Port";}
+ const char* halt_on_connection_reset_name(){ return "halt_on_connection_reset";}
+ const char* server_mode_name() { return "client_mode";}
+ const char* socket_debugging_name(){ return "socket_debugging";}
+ const char* nagling_name() { return "nagling";}
+ const char* server_backlog_name(){ return "server_backlog";}
+ const PacketHeaderDescr* Get_Header_Descriptor() const {return header_descr;}
+#endif
+
+private:
+ void Handle_Fd_Event(int fd, boolean is_readable, boolean is_writable, boolean is_error);
+ void Handle_Timeout(double time_since_last_call);
+
+ unsigned char M3UA_version;
+ int channel;
+ unsigned char buffer[MAXSIZE];
+ char *destinationname;
+ char *iid_string;
+ boolean Ni_is_set;
+ int Loop,Filter,Sut_Pc,Tester_Pc;
+ typedef enum { AssocDown, AssocEstabl, AssocInac, AssocActive} M3UAStateType_t;
+ M3UAStateType_t M3UAState;
+ int mtp3_ni; // network indicator in case of MTP3
+ int stored_bttc_octet; // used for storage of an additional first byte in MTP3bttc
+
+#ifndef TARGET_TEST
+ MPH_IID iid;
+ CONNECTION *myConnection;
+#endif
+ bool forward_resume, forward_pause, forward_status;
+#ifdef TARGET_TEST
+ int Tcp_is_up;
+ PacketHeaderDescr *header_descr;
+ bool is_packet_hdr_length_offset, is_packet_hdr_nr_bytes_in_length,
+ is_packet_hdr_byte_order;
+ int packet_hdr_length_offset, packet_hdr_nr_bytes_in_length;
+ PacketHeaderDescr::HeaderByteOrder packet_hdr_byte_order;
+#endif
+};
+
+extern BOOLEAN f__MTP3__SEA__connect__extern
+ (MTP3asp__PT_PROVIDER& portRef, const CHARSTRING& Hostname,
+ const INTEGER& Port, const CHARSTRING& EntityName,const BOOLEAN& Http);
+
+extern BOOLEAN f__MTP3__SEA__disconnect__extern
+ (MTP3asp__PT_PROVIDER& portRef);
+
+}
+#endif
diff --git a/MTP3asp_CNL113337/src/MTP3asp_PortType.ttcn b/MTP3asp_CNL113337/src/MTP3asp_PortType.ttcn
new file mode 100644
index 0000000..7c5a06b
--- /dev/null
+++ b/MTP3asp_CNL113337/src/MTP3asp_PortType.ttcn
@@ -0,0 +1,66 @@
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Copyright Test Competence Center (TCC) ETH 2008 //
+// //
+// The copyright to the computer program(s) herein is the property of TCC. //
+// The program(s) may be used and/or copied only with the written permission //
+// of TCC or in accordance with the terms and conditions stipulated in the //
+// agreement/contract under which the program(s) have been supplied //
+// //
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: MTP3asp_PortType.ttcn
+// Reference: ITU-T Recommendation Q.704, RFC3332
+// Rev: R11A01
+// Prodnr: CNL 113 337
+// Updated: 2008-02-07
+// Contact: http://ttcn.ericsson.se
+
+module MTP3asp_PortType
+{
+
+ import from MTP3asp_Types all;
+// *************************************************************************
+// * MTP3 port type definitions *
+// *************************************************************************
+
+ // MTP3 port type used by the component up to the MTP3 SAP
+ // (eg. any component connected to the MTP3 test port)
+ type port MTP3asp_PT message
+ {
+ in ASP_MTP3_TRANSFERind;
+ in ASP_MTP3_PAUSE;
+ in ASP_MTP3_RESUME;
+ in ASP_MTP3_STATUS;
+ out ASP_MTP3_TRANSFERreq;
+ } with {extension "provider internal"} //!!ethlel
+
+ // MTP3 port type used by the component up to the MTP3 SAP
+ // (e.g. the distribution component)
+ type port MTP3asp_SP_PT message
+ {
+ in ASP_MTP3_TRANSFERreq;
+ out ASP_MTP3_TRANSFERind;
+ }
+ with {extension "internal"}
+
+//Connecting functions
+//----------------------------
+/*
+ethlel
+
+external function f_MTP3_SEA_connect
+ ( inout MTP3asp_PT portRef,
+ in charstring Hostname,
+ in integer Port,
+ in charstring EntityName,
+ in boolean Http //or MPH Port is provided
+ )return boolean;
+
+external function f_MTP3_SEA_disconnect
+ ( inout MTP3asp_PT portRef
+ )return boolean;
+*/
+
+
+}//eof module
diff --git a/MTP3asp_CNL113337/src/MTP3asp_Types.ttcn b/MTP3asp_CNL113337/src/MTP3asp_Types.ttcn
new file mode 100644
index 0000000..e96f420
--- /dev/null
+++ b/MTP3asp_CNL113337/src/MTP3asp_Types.ttcn
@@ -0,0 +1,324 @@
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Copyright Test Competence Center (TCC) ETH 2006 //
+// //
+// The copyright to the computer program(s) herein is the property of TCC. //
+// The program(s) may be used and/or copied only with the written permission //
+// of TCC or in accordance with the terms and conditions stipulated in the //
+// agreement/contract under which the program(s) have been supplied //
+// //
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: MTP3asp_Types.ttcn
+// Description: CCSS7 Message Transfer Part primitive (ASP) definitions
+// according to specification ITU-T SS7 MTP3,
+// Reference: ITU-T Recommendation Q.704, RFC3332, ANSI T.1.111.1-2001, TCC
+// Rev: R11A01
+// Prodnr: CNL 113 337
+// Updated: 2007-09-17
+// Contact: http://ttcn.ericsson.se
+//
+module MTP3asp_Types.objid
+ {
+ itu_t(0) identified_organization (4) etsi(0) reserved(127)
+ etsi_identified_organization(0) ericsson(5) testing (0)
+ generic(0) mtp3(0) v96(3) aspDefinitions(3) patchNo(0)
+ }
+
+{//start of the module
+
+// *************************************************************************
+// External encoding/decoding functions
+// *************************************************************************
+
+external function enc_MTP3_to_M3UAserver_msg (in MTP3_to_M3UAserver_msg pdu)
+ return octetstring
+ with { extension "prototype(convert)"
+ extension "encode(RAW)"
+ };
+
+external function dec_MTP3_to_M3UAserver_msg(in octetstring stream)
+ return MTP3_to_M3UAserver_msg
+ with { extension "prototype(convert)"
+ extension "decode(RAW)"
+ };
+
+
+// *************************************************************************
+// * Type Definitions Part *
+// *************************************************************************
+group Types
+{
+ group MessageTypes
+ {
+ group ASPs
+ {
+ //***********************************************************************
+ //* ASP type definitions *
+ //* Note, that ASP types shall be TTCN-3 definitions to allow *
+ //* the use of anytype in the data field *
+ //***********************************************************************
+
+ type record MTP3_Field_sio
+ {
+ bitstring ni length(2),
+ bitstring prio length(2),
+ bitstring si length(4)
+ } with { variant "FIELDORDER(msb)";
+ };
+
+ type record ASP_MTP3_TRANSFERind
+ {
+ MTP3_Field_sio sio,
+ integer opc,
+ integer dpc,
+ integer sls,
+ octetstring data
+ } with { variant (opc) "BYTEORDER(last), FIELDLENGTH(32)";
+ variant (dpc) "BYTEORDER(last), FIELDLENGTH(32)";
+ variant (sls) "FIELDLENGTH(8)"
+ };
+
+ type record ASP_MTP3_PAUSE {};
+
+ type record ASP_MTP3_RESUME {};
+
+ type record ASP_MTP3_STATUS {};
+
+ type record ASP_MTP3_TRANSFERreq
+ {
+ MTP3_Field_sio sio,
+ integer opc,
+ integer dpc,
+ integer sls,
+ octetstring data
+ } with { variant (opc) "BYTEORDER(last), FIELDLENGTH(32)";
+ variant (dpc) "BYTEORDER(last), FIELDLENGTH(32)";
+ variant (sls) "FIELDLENGTH(8)"
+ };
+ }//end group ASPs
+
+ //***********************************************************************
+ //* Type definition of the message which is sent between MTP3 test port *
+ //* and SCTP server over TCP. *
+ //***********************************************************************
+ group MTP3_SCTPserver
+ {
+ type record ASP_REGISTER_M3UA
+ {
+ integer ni (0..3),
+ integer sut_pc,
+ integer tester_pc,
+ integer m3ua_version,
+ charstring entity
+ } with { variant (ni) "FIELDLENGTH(8)";
+ variant (sut_pc) "BYTEORDER(last), FIELDLENGTH(32)";
+ variant (tester_pc) "BYTEORDER(last), FIELDLENGTH(32)";
+ variant (m3ua_version) "FIELDLENGTH(8)"
+ };
+
+
+ // Possible values:
+ // MTP3_to_SCTPserver_data/status:
+ const integer reg_ok_status := 0;
+ const integer reg_error_status := 1;
+ const integer unreg_ok_status := 2;
+ const integer unreg_error_status := 3;
+
+ const integer send_error_status := 5;
+ const integer kill_status := 255;
+
+ // MTP3_to_SCTPserver_data/pause:
+ const integer SCTP_COMLOST_pause := 0;
+ const integer M3UA_ASPDN_pause := 1;
+ const integer M3UA_ASPIA_pause := 2;
+
+ // MTP3_to_SCTPserver_data/resume:
+ const integer ok_resume := 0;
+
+ type union MTP3_to_SCTPserver_data
+ {
+ ASP_MTP3_TRANSFERind transfer_ind,
+ ASP_MTP3_TRANSFERreq transfer_req,
+ ASP_REGISTER_M3UA register,
+ integer unregister (0..255),
+ integer status (0..255),
+ integer pause (0..255),
+ integer resume (0..255)
+ }
+
+ // MTP3_to_M3UAserver_msg/msgType:
+ const integer transfer_ind_msgType := 0;
+ const integer transfer_req_msgType := 1;
+ const integer register_msgType := 2;
+ const integer unregister_msgType := 3;
+ const integer status_msgType := 4;
+ const integer pause_msgType := 5;
+ const integer resume_msgType := 6;
+
+ type record MTP3_to_M3UAserver_msg
+ {
+ integer msgType (0..255),
+ integer msgLength,
+ MTP3_to_SCTPserver_data data
+ } with { variant (data) "CROSSTAG(
+ transfer_ind, msgType = transfer_ind_msgType;
+ transfer_req, msgType = transfer_req_msgType;
+ register, msgType = register_msgType;
+ unregister, msgType = unregister_msgType;
+ status, msgType = status_msgType;
+ pause, msgType = pause_msgType;
+ resume, msgType = resume_msgType )";
+ variant (msgLength) "FIELDLENGTH(32)";
+ variant (msgLength) "LENGTHTO(msgType,msgLength,data)";
+ variant (msgLength) "BYTEORDER(last)"
+ };
+ }//end group MTP3_SCTPserver
+ }//end group Messagetypes
+} with {encode "RAW"}//Types
+
+group Templates
+{
+ group MessageTemplates
+ {
+ group ASPtemplates
+ {
+ // *******************************************************************
+ // * ASP template definitions *
+ // *******************************************************************
+
+ // Base templates
+ // These general templates can be used as an example or as a base
+ // template for other templates.
+ template ASP_MTP3_TRANSFERind t_ASP_MTP3_TRANSFERind
+ (
+ template MTP3_Field_sio pl_SIO,
+ template integer pl_OPC,
+ template integer pl_DPC,
+ template integer pl_SLS,
+ template octetstring pl_data
+ ):=
+ {
+ sio := pl_SIO,
+ opc := pl_OPC,
+ dpc := pl_DPC,
+ sls := pl_SLS,
+ data := pl_data
+ }
+
+ template ASP_MTP3_TRANSFERind tr_ASP_MTP3_TRANSFERind_sio
+ (
+ template bitstring pl_NI,
+ template bitstring pl_PRIO,
+ template bitstring pl_SI,
+ template integer pl_OPC,
+ template integer pl_DPC,
+ template integer pl_SLS,
+ template octetstring pl_data
+ ):=
+ {
+ sio :=
+ {
+ ni := pl_NI,
+ prio := pl_PRIO,
+ si := pl_SI
+ },
+ opc := pl_OPC,
+ dpc := pl_DPC,
+ sls := pl_SLS,
+ data := pl_data
+ }
+
+ template ASP_MTP3_TRANSFERind tr_ASP_MTP3_TRANSFERind :=
+ {
+ sio := ?,
+ opc := ?,
+ dpc := ?,
+ sls := ?,
+ data := ?
+ }
+
+ template ASP_MTP3_TRANSFERreq t_ASP_MTP3_TRANSFERreq
+ (
+ MTP3_Field_sio pl_SIO,
+ integer pl_OPC,
+ integer pl_DPC,
+ integer pl_SLS,
+ octetstring pl_data
+ ):=
+ {
+ sio := pl_SIO,
+ opc := pl_OPC,
+ dpc := pl_DPC,
+ sls := pl_SLS,
+ data := pl_data
+ }
+
+ template ASP_MTP3_TRANSFERreq tr_ASP_MTP3_TRANSFERreq_sio
+ (
+ template bitstring pl_NI,
+ template bitstring pl_PRIO,
+ template bitstring pl_SI,
+ template integer pl_OPC,
+ template integer pl_DPC,
+ template integer pl_SLS,
+ template octetstring pl_data
+ ):=
+ {
+ sio :=
+ {
+ ni := pl_NI,
+ prio := pl_PRIO,
+ si := pl_SI
+ },
+ opc := pl_OPC,
+ dpc := pl_DPC,
+ sls := pl_SLS,
+ data := pl_data
+ }
+
+ template ASP_MTP3_TRANSFERreq tr_ASP_MTP3_TRANSFERreq :=
+ {
+ sio := ?,
+ opc := ?,
+ dpc := ?,
+ sls := ?,
+ data := ?
+ }
+
+ template ASP_MTP3_TRANSFERind tr_ASP_MTP3_TRANSFERind_stc :=
+ {
+ sio :=
+ {
+ ni := '00'B,
+ prio := '00'B,
+ si := '0000'B
+ },
+ opc := 0,
+ dpc := 0,
+ sls := 0,
+ data := ?
+ }
+
+ template ASP_MTP3_TRANSFERreq t_ASP_MTP3_TRANSFERreq_stc
+ ( template octetstring pl_data ):=
+ {
+ sio :=
+ {
+ ni := '00'B,
+ prio := '00'B,
+ si := '0000'B
+ },
+ opc := 0,
+ dpc := 0,
+ sls := 0,
+ data := pl_data
+ }
+
+ }//end group ASPtemplates
+ }//end group Messagetemplates
+}//end group Templates
+
+}//end module
+
+
diff --git a/SCCP_CNL113341/SCCP_CNL113341.tpd b/SCCP_CNL113341/SCCP_CNL113341.tpd
new file mode 100644
index 0000000..31e5153
--- /dev/null
+++ b/SCCP_CNL113341/SCCP_CNL113341.tpd
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright Test Competence Center (TCC) ETH 2012
+
+ The copyright to the computer program(s) herein is the property of TCC.
+ The program(s) may be used and/or copied only with the written permission
+ of TCC or in accordance with the terms and conditions stipulated in the
+ agreement/contract under which the program(s) has been supplied.
+
+
+ File: SCCP_CNL113341.tpd
+ Description: tpd project file
+ Rev: R6A05
+ Prodnr: CNL 113 341
+ Updated: 2012-11-23
+ Contact: http://ttcn.ericsson.se
+
+ -->
+<TITAN_Project_File_Information version="1.0">
+ <ProjectName>SCCP_CNL113341</ProjectName>
+ <ReferencedProjects>
+ <ReferencedProject name="MTP3asp_CNL113337" projectLocationURI="../../TestPorts/MTP3asp_CNL113337/MTP3asp_CNL113337.tpd"/>
+ <ReferencedProject name="ProtocolModules_Common" projectLocationURI="../../ProtocolModules/COMMON/ProtocolModules_Common.tpd"/>
+ </ReferencedProjects>
+ <Folders>
+ <FolderResource projectRelativePath="doc" relativeURI="doc"/>
+ <FolderResource projectRelativePath="src" relativeURI="src"/>
+ </Folders>
+ <Files>
+ <FileResource projectRelativePath="doc/SCCP_CNL113341_FS.pdf" relativeURI="doc/SCCP_CNL113341_FS.pdf"/>
+ <FileResource projectRelativePath="doc/SCCP_CNL113341_PRI.pdf" relativeURI="doc/SCCP_CNL113341_PRI.pdf"/>
+ <FileResource projectRelativePath="doc/SCCP_CNL113341_UG.pdf" relativeURI="doc/SCCP_CNL113341_UG.pdf"/>
+ <FileResource projectRelativePath="src/SCCP_Emulation.ttcn" relativeURI="src/SCCP_Emulation.ttcn"/>
+ <FileResource projectRelativePath="src/SCCP_EncDec.cc" relativeURI="src/SCCP_EncDec.cc"/>
+ <FileResource projectRelativePath="src/SCCP_Mapping.ttcnpp" relativeURI="src/SCCP_Mapping.ttcnpp"/>
+ <FileResource projectRelativePath="src/SCCP_Types.ttcn" relativeURI="src/SCCP_Types.ttcn"/>
+ <FileResource projectRelativePath="src/SCCPasp_Types.ttcn" relativeURI="src/SCCPasp_Types.ttcn"/>
+ </Files>
+ <ActiveConfiguration>USE_MTP3_DISTRIBUTOR</ActiveConfiguration>
+ <Configurations>
+ <Configuration name="Default">
+ <ProjectProperties>
+ <MakefileSettings>
+ <generateInternalMakefile>true</generateInternalMakefile>
+ <GNUMake>true</GNUMake>
+ <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+ <targetExecutable>bin/SCCP_CNL113341</targetExecutable>
+ <buildLevel>Level 3 - Creating object files with dependency update</buildLevel>
+ </MakefileSettings>
+ <LocalBuildSettings>
+ <workingDirectory>bin</workingDirectory>
+ </LocalBuildSettings>
+ </ProjectProperties>
+ </Configuration>
+ <Configuration name="USE_MTP3_DISTRIBUTOR">
+ <ProjectProperties>
+ <MakefileSettings>
+ <generateInternalMakefile>true</generateInternalMakefile>
+ <GNUMake>true</GNUMake>
+ <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+ <targetExecutable>bin/SCCP_CNL113341</targetExecutable>
+ <TTCN3preprocessorDefines>
+ <listItem>USE_MTP3_DISTRIBUTOR</listItem>
+ </TTCN3preprocessorDefines>
+ <buildLevel>Level 3 - Creating object files with dependency update</buildLevel>
+ </MakefileSettings>
+ <LocalBuildSettings>
+ <workingDirectory>bin</workingDirectory>
+ </LocalBuildSettings>
+ </ProjectProperties>
+ </Configuration>
+ <Configuration name="NO USE_MTP3_DISTRIBUTOR">
+ <ProjectProperties>
+ <MakefileSettings>
+ <generateInternalMakefile>true</generateInternalMakefile>
+ <GNUMake>true</GNUMake>
+ <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+ <targetExecutable>bin/SCCP_CNL113341</targetExecutable>
+ <buildLevel>Level 3 - Creating object files with dependency update</buildLevel>
+ </MakefileSettings>
+ <LocalBuildSettings>
+ <workingDirectory>bin</workingDirectory>
+ </LocalBuildSettings>
+ </ProjectProperties>
+ </Configuration>
+ </Configurations>
+</TITAN_Project_File_Information>
diff --git a/SCCP_CNL113341/demo/General_Types.ttcn b/SCCP_CNL113341/demo/General_Types.ttcn
new file mode 120000
index 0000000..354ebf3
--- /dev/null
+++ b/SCCP_CNL113341/demo/General_Types.ttcn
@@ -0,0 +1 @@
+../../../ProtocolModules/COMMON/src/General_Types.ttcn \ No newline at end of file
diff --git a/SCCP_CNL113341/demo/MTP3asp_PT.cc b/SCCP_CNL113341/demo/MTP3asp_PT.cc
new file mode 120000
index 0000000..44d08bb
--- /dev/null
+++ b/SCCP_CNL113341/demo/MTP3asp_PT.cc
@@ -0,0 +1 @@
+../../../TestPorts/MTP3asp_CNL113337/src/MTP3asp_PT.cc \ No newline at end of file
diff --git a/SCCP_CNL113341/demo/MTP3asp_PT.hh b/SCCP_CNL113341/demo/MTP3asp_PT.hh
new file mode 120000
index 0000000..30dfc24
--- /dev/null
+++ b/SCCP_CNL113341/demo/MTP3asp_PT.hh
@@ -0,0 +1 @@
+../../../TestPorts/MTP3asp_CNL113337/src/MTP3asp_PT.hh \ No newline at end of file
diff --git a/SCCP_CNL113341/demo/MTP3asp_PortType.ttcn b/SCCP_CNL113341/demo/MTP3asp_PortType.ttcn
new file mode 120000
index 0000000..1994864
--- /dev/null
+++ b/SCCP_CNL113341/demo/MTP3asp_PortType.ttcn
@@ -0,0 +1 @@
+../../../TestPorts/MTP3asp_CNL113337/src/MTP3asp_PortType.ttcn \ No newline at end of file
diff --git a/SCCP_CNL113341/demo/MTP3asp_Types.ttcn b/SCCP_CNL113341/demo/MTP3asp_Types.ttcn
new file mode 120000
index 0000000..9f03c54
--- /dev/null
+++ b/SCCP_CNL113341/demo/MTP3asp_Types.ttcn
@@ -0,0 +1 @@
+../../../TestPorts/MTP3asp_CNL113337/src/MTP3asp_Types.ttcn \ No newline at end of file
diff --git a/SCCP_CNL113341/demo/Makefile.ini b/SCCP_CNL113341/demo/Makefile.ini
new file mode 100644
index 0000000..4e764a3
--- /dev/null
+++ b/SCCP_CNL113341/demo/Makefile.ini
@@ -0,0 +1,737 @@
+# This Makefile was generated by the Makefile Generator
+# of the TTCN-3 Test Executor version 1.7.pl0
+# for Gabor Bettesch (ethgbh@mwux018) on Tue Apr 3 10:18:42 2007
+
+# Copyright 2000-2007 Test Competence Center, Ericsson R & D, Hungary
+# For trouble reporting use the tool MTTSMS.
+# For TR writers guide please visit the web page: http://ttcn.ericsson.se
+
+# 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 compile Translates TTCN-3 and ASN.1 modules to C++.
+# - make dep Creates/updates dependency list.
+# - make objects Builds the object files without linking the executable.
+# - make preprocess Preprocess TTCN-3 files.
+# - make tags Creates/updates tags file using ctags.
+
+# 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 archive check clean dep objects preprocess
+
+#
+# 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 = SOLARIS8
+
+# Your C++ compiler:
+CXX = g++
+
+# C preprocessor used for TTCN-3 files:
+CPP = cpp
+
+# Flags for the C++ preprocessor (and makedepend as well):
+CPPFLAGS = -D$(PLATFORM) -I$(TTCN3_DIR)/include -I$(SEA_DIR)/include
+
+# Flags for preprocessing TTCN-3 files:
+CPPFLAGS_TTCN3 =
+
+# Flags for the C++ compiler:
+CXXFLAGS = -Wall
+
+# Flags for the linker:
+LDFLAGS =
+
+# Flags for the TTCN-3 and ASN.1 compiler:
+COMPILER_FLAGS = -L
+
+# Execution mode: (either ttcn3 or ttcn3-parallel)
+TTCN3_LIB = ttcn3-parallel
+
+# The path of your OpenSSL installation:
+# If you do not have your own one, leave it unchanged.
+OPENSSL_DIR = $(TTCN3_DIR)
+
+SEA_DIR = /vobs/ttcn/TCC_Releases/Other/SEA_LATEST
+# 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 = General_Types.ttcn MTP3asp_PortType.ttcn MTP3asp_Types.ttcn SCCP_Emulation.ttcn SCCP_Types.ttcn SCCPasp_Types.ttcn SCCP_selftest.ttcn SCCP_Testcases.ttcn
+
+# TTCN-3 modules to preprocess:
+TTCN3_PP_MODULES = SCCP_Mapping.ttcnpp
+
+# Files to include in TTCN-3 preprocessed modules:
+TTCN3_INCLUDES =
+
+# ASN.1 modules of this project:
+ASN1_MODULES =
+
+# TTCN-3 source files generated by the C preprocessor:
+PREPROCESSED_TTCN3_MODULES = SCCP_Mapping.ttcn
+
+# C++ source & header files generated from the TTCN-3 & ASN.1 modules of
+# this project:
+GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc) $(TTCN3_PP_MODULES:.ttcnpp=.cc) $(ASN1_MODULES:.asn=.cc)
+GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh)
+
+# C/C++ Source & header files of Test Ports, external functions and
+# other modules:
+USER_SOURCES = MTP3asp_PT.cc
+USER_HEADERS = MTP3asp_PT.hh
+
+# Object files of this project that are needed for the executable test suite:
+OBJECTS = $(GENERATED_SOURCES:.cc=.o) $(USER_SOURCES:.cc=.o)
+
+# Other files of the project (Makefile, configuration files, etc.)
+# that will be added to the archived source files:
+OTHER_FILES = Makefile SCCP_selftest.cfg
+
+# The name of the executable test suite:
+TARGET = SCCP_selftest
+
+#
+# Do not modify these unless you know what you are doing...
+# Platform specific additional libraries:
+#
+SOLARIS_LIBS = -lsocket -lnsl
+SOLARIS8_LIBS = -lsocket -lnsl
+LINUX_LIBS =
+FREEBSD_LIBS =
+WIN32_LIBS =
+
+#
+# Rules for building the executable...
+#
+
+all: $(TARGET) ;
+
+objects: $(OBJECTS) ;
+
+$(TARGET): $(OBJECTS)
+ $(CXX) $(LDFLAGS) -o $@ $^ \
+ -L$(TTCN3_DIR)/lib -l$(TTCN3_LIB) \
+ -L$(OPENSSL_DIR)/lib -lcrypto $($(PLATFORM)_LIBS) \
+ $(SEA_DIR)/lib/libmphclib.a
+
+.cc.o .c.o:
+ $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $<
+
+%.ttcn: %.ttcnpp $(TTCN3_INCLUDES)
+ $(CPP) -x c -nostdinc $(CPPFLAGS_TTCN3) $< $@
+
+preprocess: $(PREPROCESSED_TTCN3_MODULES) ;
+
+$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile
+ @if [ ! -f $@ ]; then $(RM) compile; $(MAKE) compile; fi
+
+check: $(TTCN3_MODULES) $(PREPROCESSED_TTCN3_MODULES) $(ASN1_MODULES)
+ $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) $^
+
+compile: $(TTCN3_MODULES) $(PREPROCESSED_TTCN3_MODULES) $(ASN1_MODULES)
+ $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) $^ - $?
+ touch $@
+
+browserdata.dat: $(TTCN3_MODULES) $(PREPROCESSED_TTCN3_MODULES) $(ASN1_MODULES)
+ $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) $^
+
+tags: $(TTCN3_MODULES) $(PREPROCESSED_TTCN3_MODULES) $(ASN1_MODULES) \
+$(USER_HEADERS) $(USER_SOURCES)
+ $(TTCN3_DIR)/bin/ctags_ttcn3 --line-directives=yes $^
+
+clean:
+ -$(RM) $(TARGET) $(OBJECTS) $(GENERATED_HEADERS) \
+ $(GENERATED_SOURCES) $(PREPROCESSED_TTCN3_MODULES) compile \
+ browserdata.dat tags *.log
+
+dep: $(GENERATED_SOURCES) $(USER_SOURCES)
+ makedepend $(CPPFLAGS) $^
+
+archive:
+ mkdir -p $(ARCHIVE_DIR)
+ tar -cvhf - $(TTCN3_MODULES) $(TTCN3_PP_MODULES) \
+ $(TTCN3_INCLUDES) $(ASN1_MODULES) \
+ $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \
+ | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz
+
+#
+# Add your rules here if necessary...
+#
+
+# DO NOT DELETE
+
+General_Types.o: General_Types.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/TTCN3.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/version.h
+General_Types.o: /usr/include/string.h /usr/include/iso/string_iso.h
+General_Types.o: /usr/include/sys/feature_tests.h /usr/include/sys/isa_defs.h
+General_Types.o: /usr/include/stdio.h /usr/include/iso/stdio_iso.h
+General_Types.o: /usr/include/sys/va_list.h /usr/include/stdio_tag.h
+General_Types.o: /usr/include/stdio_impl.h
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Basetype.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Types.h
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Encdec.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Template.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Integer.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Optional.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/BER.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Logger.hh
+General_Types.o: /usr/include/stdlib.h /usr/include/iso/stdlib_iso.h
+General_Types.o: /usr/include/stdarg.h /usr/include/iso/stdarg_iso.h
+General_Types.o: /usr/include/sys/time.h /usr/include/sys/types.h
+General_Types.o: /usr/include/sys/machtypes.h /usr/include/sys/int_types.h
+General_Types.o: /usr/include/sys/select.h /usr/include/time.h
+General_Types.o: /usr/include/iso/time_iso.h
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Textbuf.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Error.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Parameters.h
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Float.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Boolean.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_Null.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Objid.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Verdicttype.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Component.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Bitstring.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/RAW.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Hexstring.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Octetstring.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_Any.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Charstring.hh
+General_Types.o: /usr/include/regex.h
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Universal_charstring.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Struct_of.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Array.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_CharacterString.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_External.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_EmbeddedPDV.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Addfunc.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Timer.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Port.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Module_list.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Snapshot.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Default.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Runtime.hh
+General_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/TEXT.hh
+MTP3asp_PortType.o: MTP3asp_PortType.hh MTP3asp_Types.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/TTCN3.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/version.h
+MTP3asp_PortType.o: /usr/include/string.h /usr/include/iso/string_iso.h
+MTP3asp_PortType.o: /usr/include/sys/feature_tests.h
+MTP3asp_PortType.o: /usr/include/sys/isa_defs.h /usr/include/stdio.h
+MTP3asp_PortType.o: /usr/include/iso/stdio_iso.h /usr/include/sys/va_list.h
+MTP3asp_PortType.o: /usr/include/stdio_tag.h /usr/include/stdio_impl.h
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Basetype.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Types.h
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Encdec.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Template.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Integer.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Optional.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/BER.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Logger.hh
+MTP3asp_PortType.o: /usr/include/stdlib.h /usr/include/iso/stdlib_iso.h
+MTP3asp_PortType.o: /usr/include/stdarg.h /usr/include/iso/stdarg_iso.h
+MTP3asp_PortType.o: /usr/include/sys/time.h /usr/include/sys/types.h
+MTP3asp_PortType.o: /usr/include/sys/machtypes.h /usr/include/sys/int_types.h
+MTP3asp_PortType.o: /usr/include/sys/select.h /usr/include/time.h
+MTP3asp_PortType.o: /usr/include/iso/time_iso.h
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Textbuf.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Error.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Parameters.h
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Float.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Boolean.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_Null.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Objid.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Verdicttype.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Component.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Bitstring.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/RAW.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Hexstring.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Octetstring.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_Any.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Charstring.hh
+MTP3asp_PortType.o: /usr/include/regex.h
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Universal_charstring.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Struct_of.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Array.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_CharacterString.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_External.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_EmbeddedPDV.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Addfunc.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Timer.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Port.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Module_list.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Snapshot.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Default.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Runtime.hh
+MTP3asp_PortType.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/TEXT.hh
+MTP3asp_PortType.o: MTP3asp_PT.hh
+MTP3asp_PortType.o: /vobs/ttcn/TCC_Releases/Other/SEA_LATEST/include/mphclib.h
+MTP3asp_Types.o: MTP3asp_Types.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/TTCN3.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/version.h
+MTP3asp_Types.o: /usr/include/string.h /usr/include/iso/string_iso.h
+MTP3asp_Types.o: /usr/include/sys/feature_tests.h /usr/include/sys/isa_defs.h
+MTP3asp_Types.o: /usr/include/stdio.h /usr/include/iso/stdio_iso.h
+MTP3asp_Types.o: /usr/include/sys/va_list.h /usr/include/stdio_tag.h
+MTP3asp_Types.o: /usr/include/stdio_impl.h
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Basetype.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Types.h
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Encdec.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Template.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Integer.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Optional.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/BER.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Logger.hh
+MTP3asp_Types.o: /usr/include/stdlib.h /usr/include/iso/stdlib_iso.h
+MTP3asp_Types.o: /usr/include/stdarg.h /usr/include/iso/stdarg_iso.h
+MTP3asp_Types.o: /usr/include/sys/time.h /usr/include/sys/types.h
+MTP3asp_Types.o: /usr/include/sys/machtypes.h /usr/include/sys/int_types.h
+MTP3asp_Types.o: /usr/include/sys/select.h /usr/include/time.h
+MTP3asp_Types.o: /usr/include/iso/time_iso.h
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Textbuf.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Error.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Parameters.h
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Float.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Boolean.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_Null.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Objid.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Verdicttype.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Component.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Bitstring.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/RAW.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Hexstring.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Octetstring.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_Any.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Charstring.hh
+MTP3asp_Types.o: /usr/include/regex.h
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Universal_charstring.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Struct_of.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Array.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_CharacterString.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_External.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_EmbeddedPDV.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Addfunc.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Timer.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Port.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Module_list.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Snapshot.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Default.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Runtime.hh
+MTP3asp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/TEXT.hh
+SCCP_Emulation.o: SCCP_Emulation.hh SCCP_Mapping.hh SCCP_Types.hh
+SCCP_Emulation.o: MTP3asp_PortType.hh MTP3asp_Types.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/TTCN3.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/version.h
+SCCP_Emulation.o: /usr/include/string.h /usr/include/iso/string_iso.h
+SCCP_Emulation.o: /usr/include/sys/feature_tests.h
+SCCP_Emulation.o: /usr/include/sys/isa_defs.h /usr/include/stdio.h
+SCCP_Emulation.o: /usr/include/iso/stdio_iso.h /usr/include/sys/va_list.h
+SCCP_Emulation.o: /usr/include/stdio_tag.h /usr/include/stdio_impl.h
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Basetype.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Types.h
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Encdec.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Template.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Integer.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Optional.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/BER.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Logger.hh
+SCCP_Emulation.o: /usr/include/stdlib.h /usr/include/iso/stdlib_iso.h
+SCCP_Emulation.o: /usr/include/stdarg.h /usr/include/iso/stdarg_iso.h
+SCCP_Emulation.o: /usr/include/sys/time.h /usr/include/sys/types.h
+SCCP_Emulation.o: /usr/include/sys/machtypes.h /usr/include/sys/int_types.h
+SCCP_Emulation.o: /usr/include/sys/select.h /usr/include/time.h
+SCCP_Emulation.o: /usr/include/iso/time_iso.h
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Textbuf.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Error.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Parameters.h
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Float.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Boolean.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_Null.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Objid.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Verdicttype.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Component.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Bitstring.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/RAW.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Hexstring.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Octetstring.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_Any.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Charstring.hh
+SCCP_Emulation.o: /usr/include/regex.h
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Universal_charstring.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Struct_of.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Array.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_CharacterString.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_External.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_EmbeddedPDV.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Addfunc.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Timer.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Port.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Module_list.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Snapshot.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Default.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Runtime.hh
+SCCP_Emulation.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/TEXT.hh
+SCCP_Emulation.o: MTP3asp_PT.hh
+SCCP_Emulation.o: /vobs/ttcn/TCC_Releases/Other/SEA_LATEST/include/mphclib.h
+SCCP_Emulation.o: SCCPasp_Types.hh General_Types.hh
+SCCP_Types.o: SCCP_Types.hh MTP3asp_PortType.hh MTP3asp_Types.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/TTCN3.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/version.h
+SCCP_Types.o: /usr/include/string.h /usr/include/iso/string_iso.h
+SCCP_Types.o: /usr/include/sys/feature_tests.h /usr/include/sys/isa_defs.h
+SCCP_Types.o: /usr/include/stdio.h /usr/include/iso/stdio_iso.h
+SCCP_Types.o: /usr/include/sys/va_list.h /usr/include/stdio_tag.h
+SCCP_Types.o: /usr/include/stdio_impl.h
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Basetype.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Types.h
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Encdec.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Template.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Integer.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Optional.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/BER.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Logger.hh
+SCCP_Types.o: /usr/include/stdlib.h /usr/include/iso/stdlib_iso.h
+SCCP_Types.o: /usr/include/stdarg.h /usr/include/iso/stdarg_iso.h
+SCCP_Types.o: /usr/include/sys/time.h /usr/include/sys/types.h
+SCCP_Types.o: /usr/include/sys/machtypes.h /usr/include/sys/int_types.h
+SCCP_Types.o: /usr/include/sys/select.h /usr/include/time.h
+SCCP_Types.o: /usr/include/iso/time_iso.h
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Textbuf.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Error.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Parameters.h
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Float.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Boolean.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_Null.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Objid.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Verdicttype.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Component.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Bitstring.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/RAW.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Hexstring.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Octetstring.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_Any.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Charstring.hh
+SCCP_Types.o: /usr/include/regex.h
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Universal_charstring.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Struct_of.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Array.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_CharacterString.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_External.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_EmbeddedPDV.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Addfunc.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Timer.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Port.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Module_list.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Snapshot.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Default.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Runtime.hh
+SCCP_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/TEXT.hh
+SCCP_Types.o: MTP3asp_PT.hh
+SCCP_Types.o: /vobs/ttcn/TCC_Releases/Other/SEA_LATEST/include/mphclib.h
+SCCP_Types.o: SCCPasp_Types.hh General_Types.hh
+SCCPasp_Types.o: SCCPasp_Types.hh General_Types.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/TTCN3.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/version.h
+SCCPasp_Types.o: /usr/include/string.h /usr/include/iso/string_iso.h
+SCCPasp_Types.o: /usr/include/sys/feature_tests.h /usr/include/sys/isa_defs.h
+SCCPasp_Types.o: /usr/include/stdio.h /usr/include/iso/stdio_iso.h
+SCCPasp_Types.o: /usr/include/sys/va_list.h /usr/include/stdio_tag.h
+SCCPasp_Types.o: /usr/include/stdio_impl.h
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Basetype.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Types.h
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Encdec.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Template.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Integer.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Optional.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/BER.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Logger.hh
+SCCPasp_Types.o: /usr/include/stdlib.h /usr/include/iso/stdlib_iso.h
+SCCPasp_Types.o: /usr/include/stdarg.h /usr/include/iso/stdarg_iso.h
+SCCPasp_Types.o: /usr/include/sys/time.h /usr/include/sys/types.h
+SCCPasp_Types.o: /usr/include/sys/machtypes.h /usr/include/sys/int_types.h
+SCCPasp_Types.o: /usr/include/sys/select.h /usr/include/time.h
+SCCPasp_Types.o: /usr/include/iso/time_iso.h
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Textbuf.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Error.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Parameters.h
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Float.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Boolean.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_Null.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Objid.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Verdicttype.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Component.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Bitstring.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/RAW.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Hexstring.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Octetstring.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_Any.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Charstring.hh
+SCCPasp_Types.o: /usr/include/regex.h
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Universal_charstring.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Struct_of.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Array.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_CharacterString.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_External.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_EmbeddedPDV.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Addfunc.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Timer.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Port.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Module_list.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Snapshot.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Default.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Runtime.hh
+SCCPasp_Types.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/TEXT.hh
+SCCP_selftest.o: SCCP_selftest.hh SCCP_Emulation.hh SCCP_Mapping.hh
+SCCP_selftest.o: SCCP_Types.hh MTP3asp_PortType.hh MTP3asp_Types.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/TTCN3.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/version.h
+SCCP_selftest.o: /usr/include/string.h /usr/include/iso/string_iso.h
+SCCP_selftest.o: /usr/include/sys/feature_tests.h /usr/include/sys/isa_defs.h
+SCCP_selftest.o: /usr/include/stdio.h /usr/include/iso/stdio_iso.h
+SCCP_selftest.o: /usr/include/sys/va_list.h /usr/include/stdio_tag.h
+SCCP_selftest.o: /usr/include/stdio_impl.h
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Basetype.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Types.h
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Encdec.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Template.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Integer.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Optional.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/BER.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Logger.hh
+SCCP_selftest.o: /usr/include/stdlib.h /usr/include/iso/stdlib_iso.h
+SCCP_selftest.o: /usr/include/stdarg.h /usr/include/iso/stdarg_iso.h
+SCCP_selftest.o: /usr/include/sys/time.h /usr/include/sys/types.h
+SCCP_selftest.o: /usr/include/sys/machtypes.h /usr/include/sys/int_types.h
+SCCP_selftest.o: /usr/include/sys/select.h /usr/include/time.h
+SCCP_selftest.o: /usr/include/iso/time_iso.h
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Textbuf.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Error.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Parameters.h
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Float.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Boolean.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_Null.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Objid.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Verdicttype.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Component.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Bitstring.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/RAW.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Hexstring.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Octetstring.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_Any.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Charstring.hh
+SCCP_selftest.o: /usr/include/regex.h
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Universal_charstring.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Struct_of.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Array.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_CharacterString.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_External.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_EmbeddedPDV.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Addfunc.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Timer.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Port.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Module_list.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Snapshot.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Default.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Runtime.hh
+SCCP_selftest.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/TEXT.hh
+SCCP_selftest.o: MTP3asp_PT.hh
+SCCP_selftest.o: /vobs/ttcn/TCC_Releases/Other/SEA_LATEST/include/mphclib.h
+SCCP_selftest.o: SCCPasp_Types.hh General_Types.hh
+SCCP_Testcases.o: SCCP_Testcases.hh SCCP_Emulation.hh SCCP_Mapping.hh
+SCCP_Testcases.o: SCCP_Types.hh MTP3asp_PortType.hh MTP3asp_Types.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/TTCN3.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/version.h
+SCCP_Testcases.o: /usr/include/string.h /usr/include/iso/string_iso.h
+SCCP_Testcases.o: /usr/include/sys/feature_tests.h
+SCCP_Testcases.o: /usr/include/sys/isa_defs.h /usr/include/stdio.h
+SCCP_Testcases.o: /usr/include/iso/stdio_iso.h /usr/include/sys/va_list.h
+SCCP_Testcases.o: /usr/include/stdio_tag.h /usr/include/stdio_impl.h
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Basetype.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Types.h
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Encdec.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Template.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Integer.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Optional.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/BER.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Logger.hh
+SCCP_Testcases.o: /usr/include/stdlib.h /usr/include/iso/stdlib_iso.h
+SCCP_Testcases.o: /usr/include/stdarg.h /usr/include/iso/stdarg_iso.h
+SCCP_Testcases.o: /usr/include/sys/time.h /usr/include/sys/types.h
+SCCP_Testcases.o: /usr/include/sys/machtypes.h /usr/include/sys/int_types.h
+SCCP_Testcases.o: /usr/include/sys/select.h /usr/include/time.h
+SCCP_Testcases.o: /usr/include/iso/time_iso.h
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Textbuf.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Error.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Parameters.h
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Float.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Boolean.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_Null.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Objid.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Verdicttype.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Component.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Bitstring.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/RAW.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Hexstring.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Octetstring.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_Any.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Charstring.hh
+SCCP_Testcases.o: /usr/include/regex.h
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Universal_charstring.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Struct_of.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Array.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_CharacterString.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_External.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_EmbeddedPDV.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Addfunc.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Timer.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Port.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Module_list.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Snapshot.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Default.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Runtime.hh
+SCCP_Testcases.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/TEXT.hh
+SCCP_Testcases.o: MTP3asp_PT.hh
+SCCP_Testcases.o: /vobs/ttcn/TCC_Releases/Other/SEA_LATEST/include/mphclib.h
+SCCP_Testcases.o: SCCPasp_Types.hh General_Types.hh
+SCCP_Mapping.o: SCCP_Mapping.hh SCCP_Types.hh MTP3asp_PortType.hh
+SCCP_Mapping.o: MTP3asp_Types.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/TTCN3.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/version.h
+SCCP_Mapping.o: /usr/include/string.h /usr/include/iso/string_iso.h
+SCCP_Mapping.o: /usr/include/sys/feature_tests.h /usr/include/sys/isa_defs.h
+SCCP_Mapping.o: /usr/include/stdio.h /usr/include/iso/stdio_iso.h
+SCCP_Mapping.o: /usr/include/sys/va_list.h /usr/include/stdio_tag.h
+SCCP_Mapping.o: /usr/include/stdio_impl.h
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Basetype.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Types.h
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Encdec.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Template.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Integer.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Optional.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/BER.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Logger.hh
+SCCP_Mapping.o: /usr/include/stdlib.h /usr/include/iso/stdlib_iso.h
+SCCP_Mapping.o: /usr/include/stdarg.h /usr/include/iso/stdarg_iso.h
+SCCP_Mapping.o: /usr/include/sys/time.h /usr/include/sys/types.h
+SCCP_Mapping.o: /usr/include/sys/machtypes.h /usr/include/sys/int_types.h
+SCCP_Mapping.o: /usr/include/sys/select.h /usr/include/time.h
+SCCP_Mapping.o: /usr/include/iso/time_iso.h
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Textbuf.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Error.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Parameters.h
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Float.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Boolean.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_Null.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Objid.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Verdicttype.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Component.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Bitstring.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/RAW.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Hexstring.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Octetstring.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_Any.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Charstring.hh
+SCCP_Mapping.o: /usr/include/regex.h
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Universal_charstring.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Struct_of.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Array.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_CharacterString.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_External.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_EmbeddedPDV.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Addfunc.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Timer.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Port.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Module_list.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Snapshot.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Default.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Runtime.hh
+SCCP_Mapping.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/TEXT.hh
+SCCP_Mapping.o: MTP3asp_PT.hh
+SCCP_Mapping.o: /vobs/ttcn/TCC_Releases/Other/SEA_LATEST/include/mphclib.h
+SCCP_Mapping.o: SCCPasp_Types.hh General_Types.hh
+MTP3asp_PT.o: /usr/include/stdio.h /usr/include/iso/stdio_iso.h
+MTP3asp_PT.o: /usr/include/sys/feature_tests.h /usr/include/sys/isa_defs.h
+MTP3asp_PT.o: /usr/include/sys/va_list.h /usr/include/stdio_tag.h
+MTP3asp_PT.o: /usr/include/stdio_impl.h /usr/include/stdlib.h
+MTP3asp_PT.o: /usr/include/iso/stdlib_iso.h /usr/include/sys/types.h
+MTP3asp_PT.o: /usr/include/sys/machtypes.h /usr/include/sys/int_types.h
+MTP3asp_PT.o: /usr/include/sys/select.h /usr/include/sys/time.h
+MTP3asp_PT.o: /usr/include/time.h /usr/include/iso/time_iso.h
+MTP3asp_PT.o: /usr/include/netinet/in.h /usr/include/sys/stream.h
+MTP3asp_PT.o: /usr/include/sys/vnode.h /usr/include/sys/t_lock.h
+MTP3asp_PT.o: /usr/include/sys/machlock.h /usr/include/sys/param.h
+MTP3asp_PT.o: /usr/include/sys/unistd.h /usr/include/sys/mutex.h
+MTP3asp_PT.o: /usr/include/sys/rwlock.h /usr/include/sys/semaphore.h
+MTP3asp_PT.o: /usr/include/sys/condvar.h /usr/include/sys/time_impl.h
+MTP3asp_PT.o: /usr/include/sys/cred.h /usr/include/sys/uio.h
+MTP3asp_PT.o: /usr/include/sys/resource.h /usr/include/vm/seg_enum.h
+MTP3asp_PT.o: /usr/include/sys/poll.h /usr/include/sys/strmdep.h
+MTP3asp_PT.o: /usr/include/sys/model.h /usr/include/sys/strft.h
+MTP3asp_PT.o: /usr/include/sys/byteorder.h /usr/include/netdb.h
+MTP3asp_PT.o: /usr/include/sys/socket.h /usr/include/sys/netconfig.h
+MTP3asp_PT.o: /usr/include/sys/un.h /usr/include/net/if_dl.h
+MTP3asp_PT.o: /usr/include/sys/wait.h /usr/include/sys/siginfo.h
+MTP3asp_PT.o: /usr/include/sys/machsig.h /usr/include/sys/procset.h
+MTP3asp_PT.o: /usr/include/unistd.h /usr/include/arpa/inet.h
+MTP3asp_PT.o: /usr/include/stdarg.h /usr/include/iso/stdarg_iso.h
+MTP3asp_PT.o: /usr/include/string.h /usr/include/iso/string_iso.h
+MTP3asp_PT.o: MTP3asp_PT.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/TTCN3.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/version.h
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Basetype.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Types.h
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Encdec.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Template.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Integer.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Optional.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/BER.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Logger.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Textbuf.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Error.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Parameters.h
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Float.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Boolean.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_Null.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Objid.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Verdicttype.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Component.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Bitstring.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/RAW.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Hexstring.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Octetstring.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_Any.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Charstring.hh
+MTP3asp_PT.o: /usr/include/regex.h
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Universal_charstring.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Struct_of.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Array.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_CharacterString.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_External.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/ASN_EmbeddedPDV.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Addfunc.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Timer.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Port.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Module_list.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Snapshot.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Default.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/Runtime.hh
+MTP3asp_PT.o: /mnt/projects/TTCN/Releases/TTCNv3-latest/include/TEXT.hh
+MTP3asp_PT.o: /vobs/ttcn/TCC_Releases/Other/SEA_LATEST/include/mphclib.h
+MTP3asp_PT.o: MTP3asp_Types.hh MTP3asp_PortType.hh
diff --git a/SCCP_CNL113341/demo/N_UNITDATAtest_600longdata_xudt_ansi_log b/SCCP_CNL113341/demo/N_UNITDATAtest_600longdata_xudt_ansi_log
new file mode 100644
index 0000000..b8b3021
--- /dev/null
+++ b/SCCP_CNL113341/demo/N_UNITDATAtest_600longdata_xudt_ansi_log
@@ -0,0 +1,2141 @@
+18:21:32.381643 hc TTCN-3 Host Controller started on duna199.
+18:21:32.385186 hc The address of MC was set to duna199[159.107.196.57]:38400
+18:21:32.387940 hc Connected to MC.
+18:21:41.084400 hc Processing configuration data received from MC.
+18:21:41.161669 hc Module SCCP has the following parameters: tsp_maxLocalReference := 16777216.000000, tsp_max_ConnectionId := 16777216.000000, tsp_force_xudt := 1, tsp_SIF_MaxLength := 272
+18:21:41.162623 hc Module SCCP_selftest has the following parameters: tsp_own_GT := '14377760'H, tsp_remote_GT := '14375760'H, tsp_SSN := 2, tsp_SIO := '83'O, tsp_own_SPC := 16382, tsp_remote_SPC := 16383, tsp_SLS := 0, tsp_sccp_serviceType := "mtp3_ansi"
+18:21:41.163400 hc Module SCCP_typedefs has the following parameters: tspc_timer_T_conn_est := 120.000000, tspc_timer_T_ias := 600.000000, tspc_timer_T_iar := 1260.000000, tspc_timer_T_rel := 20.000000, tspc_timer_T_repeat_rel := 20.000000, tspc_timer_T_int := 60.000000, tspc_timer_T_guard := 1500.000000, tspc_timer_T_reset := 20.000000, tspc_timer_T_internal_reset := 0.000000, tspc_timer_guard := 120.000000
+18:21:41.164026 hc Initializing module MTP3_ASPs.
+18:21:41.164735 hc Initialization of module MTP3_ASPs finished.
+18:21:41.165299 hc Initializing module SCCP.
+18:21:41.166336 hc Initializing module general_typedefs.
+18:21:41.166948 hc Initialization of module general_typedefs finished.
+18:21:41.167549 hc Initializing module SCCP_typedefs.
+18:21:41.168099 hc Initializing module SCCP_ASPs.
+18:21:41.169077 hc Initialization of module SCCP_ASPs finished.
+18:21:41.169895 hc Initialization of module SCCP_typedefs finished.
+18:21:41.171837 hc Initialization of module SCCP finished.
+18:21:41.172467 hc Initializing module SCCP_EncDec.
+18:21:41.173044 hc Initialization of module SCCP_EncDec finished.
+18:21:41.173588 hc Initializing module SCCP_selftest.
+18:21:41.174158 hc Initialization of module SCCP_selftest finished.
+18:21:41.175585 hc Configuration file was processed successfully.
+18:21:41.191379 hc MTC was created. Process id: 25833.
+18:21:41.236537 mtc TTCN-3 Main Test Component started on duna199.
+18:21:41.242045 mtc Connected to MC.
+18:21:45.199426 mtc Executing test case tc_ConnlessSendingShortASP in module SCCP_selftest.
+18:21:45.200795 mtc Test case tc_ConnlessSendingShortASP started.
+18:21:45.201500 mtc Ports of component type MTC_CT were initialized.
+18:21:45.202177 mtc Port PCO_A was started.
+18:21:45.202752 mtc Port PCO_B was started.
+18:21:45.204047 mtc v_Boot: {
+ own_GT := '14377760'H,
+ remote_GT := '14375760'H,
+ SSN := 2,
+ SIO := '83'O,
+ own_SPC := 16382,
+ remote_SPC := 16383,
+ SLS := 0,
+ sccp_serviceType := "mtp3_ansi"
+}
+18:21:45.204729 mtc v_BootB: {
+ own_GT := '14375760'H,
+ remote_GT := '14377760'H,
+ SSN := 2,
+ SIO := '83'O,
+ own_SPC := 16383,
+ remote_SPC := 16382,
+ SLS := 0,
+ sccp_serviceType := "mtp3_ansi"
+}
+18:21:45.205333 mtc Creating new PTC with component type MTPsim_CT.
+18:21:45.221298 hc PTC was created. Component reference: 3, component type: MTPsim_CT, process id: 25834.
+18:21:45.264675 3 TTCN-3 Parallel Test Component started on duna199. Component reference: 3, component type: MTPsim_CT.
+18:21:45.269726 3 Connected to MC.
+18:21:45.270497 mtc PTC was created. Component reference: 3.
+18:21:45.271118 mtc Creating new PTC with component type SCCP_EncDec_comptype.
+18:21:45.272412 3 Ports of component type MTPsim_CT were initialized.
+18:21:45.274405 3 Port MTP_portA was started.
+18:21:45.275097 3 Port MTP_portB was started.
+18:21:45.309134 hc PTC was created. Component reference: 4, component type: SCCP_EncDec_comptype, process id: 25835.
+18:21:45.349568 4 TTCN-3 Parallel Test Component started on duna199. Component reference: 4, component type: SCCP_EncDec_comptype.
+18:21:45.355068 4 Connected to MC.
+18:21:45.356259 mtc PTC was created. Component reference: 4.
+18:21:45.356923 mtc Creating new PTC with component type SCCP_comptype.
+18:21:45.358309 4 Ports of component type SCCP_EncDec_comptype were initialized.
+18:21:45.359056 4 Port MTP3sccpEncDec_PCO was started.
+18:21:45.359861 4 MTP3 Test Port (MTP3user_sccp_PCO): user start ordered
+18:21:45.360447 4 Port MTP3user_sccp_PCO was started.
+18:21:45.392629 hc PTC was created. Component reference: 5, component type: SCCP_comptype, process id: 25836.
+18:21:45.420667 5 TTCN-3 Parallel Test Component started on duna199. Component reference: 5, component type: SCCP_comptype.
+18:21:45.426421 5 Connected to MC.
+18:21:45.427258 mtc PTC was created. Component reference: 5.
+18:21:45.427896 mtc Connecting ports 4:MTP3user_sccp_PCO and 3:MTP_portA.
+18:21:45.431119 4 Port MTP3user_sccp_PCO is waiting for connection from 3:MTP_portA on TCP port 38406.
+18:21:45.433281 3 Port MTP_portA has established the connection with 4:MTP3user_sccp_PCO.
+18:21:45.435413 mtc Connect operation finished.
+18:21:45.436566 mtc Connecting ports 5:MTP3sccp_PCO and 4:MTP3sccpEncDec_PCO.
+18:21:45.437940 4 Port MTP3user_sccp_PCO has accepted the connection from 3:MTP_portA.
+18:21:45.439013 5 Ports of component type SCCP_comptype were initialized.
+18:21:45.439756 5 Port MTP3sccp_PCO was started.
+18:21:45.440445 5 Port SCCP_PCO was started.
+18:21:45.442861 5 Port MTP3sccp_PCO is waiting for connection from 4:MTP3sccpEncDec_PCO on TCP port 38408.
+18:21:45.445256 4 Port MTP3sccpEncDec_PCO has established the connection with 5:MTP3sccp_PCO.
+18:21:45.463598 mtc Connect operation finished.
+18:21:45.464271 mtc Connecting ports mtc:PCO_A and 5:SCCP_PCO.
+18:21:45.471897 mtc Port PCO_A is waiting for connection from 5:SCCP_PCO on TCP port 38410.
+18:21:45.475092 5 Port MTP3sccp_PCO has accepted the connection from 4:MTP3sccpEncDec_PCO.
+18:21:45.478859 mtc Port PCO_A has accepted the connection from 5:SCCP_PCO.
+18:21:45.479620 mtc Connect operation finished.
+18:21:45.480218 mtc Creating new PTC with component type SCCP_EncDec_comptype.
+18:21:45.481484 5 Port SCCP_PCO has established the connection with mtc:PCO_A.
+18:21:45.515409 hc PTC was created. Component reference: 6, component type: SCCP_EncDec_comptype, process id: 25837.
+18:21:45.536738 6 TTCN-3 Parallel Test Component started on duna199. Component reference: 6, component type: SCCP_EncDec_comptype.
+18:21:45.542075 6 Connected to MC.
+18:21:45.542872 mtc PTC was created. Component reference: 6.
+18:21:45.543505 mtc Creating new PTC with component type SCCP_comptype.
+18:21:45.544857 6 Ports of component type SCCP_EncDec_comptype were initialized.
+18:21:45.545594 6 Port MTP3sccpEncDec_PCO was started.
+18:21:45.547107 6 MTP3 Test Port (MTP3user_sccp_PCO): user start ordered
+18:21:45.547695 6 Port MTP3user_sccp_PCO was started.
+18:21:45.563127 hc PTC was created. Component reference: 7, component type: SCCP_comptype, process id: 25838.
+18:21:45.606608 7 TTCN-3 Parallel Test Component started on duna199. Component reference: 7, component type: SCCP_comptype.
+18:21:45.611933 7 Connected to MC.
+18:21:45.612740 mtc PTC was created. Component reference: 7.
+18:21:45.613371 mtc Connecting ports 6:MTP3user_sccp_PCO and 3:MTP_portB.
+18:21:45.622919 6 Port MTP3user_sccp_PCO is waiting for connection from 3:MTP_portB on TCP port 38414.
+18:21:45.625194 3 Port MTP_portB has established the connection with 6:MTP3user_sccp_PCO.
+18:21:45.628002 mtc Connect operation finished.
+18:21:45.628661 mtc Connecting ports 7:MTP3sccp_PCO and 6:MTP3sccpEncDec_PCO.
+18:21:45.630008 6 Port MTP3user_sccp_PCO has accepted the connection from 3:MTP_portB.
+18:21:45.631064 7 Ports of component type SCCP_comptype were initialized.
+18:21:45.631815 7 Port MTP3sccp_PCO was started.
+18:21:45.632502 7 Port SCCP_PCO was started.
+18:21:45.634990 7 Port MTP3sccp_PCO is waiting for connection from 6:MTP3sccpEncDec_PCO on TCP port 38416.
+18:21:45.654225 6 Port MTP3sccpEncDec_PCO has established the connection with 7:MTP3sccp_PCO.
+18:21:45.657305 mtc Connect operation finished.
+18:21:45.657970 mtc Connecting ports mtc:PCO_B and 7:SCCP_PCO.
+18:21:45.660027 mtc Port PCO_B is waiting for connection from 7:SCCP_PCO on TCP port 38418.
+18:21:45.661448 7 Port MTP3sccp_PCO has accepted the connection from 6:MTP3sccpEncDec_PCO.
+18:21:45.664441 mtc Port PCO_B has accepted the connection from 7:SCCP_PCO.
+18:21:45.665199 mtc Connect operation finished.
+18:21:45.666237 mtc Starting function MTPsim_EventHandler() on component 3.
+18:21:45.667397 mtc Function MTPsim_EventHandler was started.
+18:21:45.668124 mtc Starting function ScanRAWPorts() on component 4.
+18:21:45.669265 mtc Function ScanRAWPorts was started.
+18:21:45.669965 mtc Starting function SCCPStart( {
+ own_GT := '14377760'H,
+ remote_GT := '14375760'H,
+ SSN := 2,
+ SIO := '83'O,
+ own_SPC := 16382,
+ remote_SPC := 16383,
+ SLS := 0,
+ sccp_serviceType := "mtp3_ansi"
+} ) on component 5.
+18:21:45.671152 mtc Function SCCPStart was started.
+18:21:45.671741 mtc Starting function ScanRAWPorts() on component 6.
+18:21:45.672848 mtc Function ScanRAWPorts was started.
+18:21:45.673470 mtc Starting function SCCPStart( {
+ own_GT := '14375760'H,
+ remote_GT := '14377760'H,
+ SSN := 2,
+ SIO := '83'O,
+ own_SPC := 16383,
+ remote_SPC := 16382,
+ SLS := 0,
+ sccp_serviceType := "mtp3_ansi"
+} ) on component 7.
+18:21:45.674608 mtc Function SCCPStart was started.
+18:21:45.675177 mtc init() is done
+18:21:45.677985 mtc Start timer: 120 s
+18:21:45.679932 mtc Sent on PCO_A to 5 N_UNITDATA_req {
+ calledAddress := {
+ addressIndicator := {
+ pointCodeIndic := '1'B,
+ ssnIndicator := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B
+ },
+ signPointCode := '000000000011111111111111'B,
+ subsystemNumber := 2,
+ globalTitle := {
+ gti0011 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14375760'H
+ }
+ }
+ },
+ callingAddress := {
+ addressIndicator := {
+ pointCodeIndic := '1'B,
+ ssnIndicator := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B
+ },
+ signPointCode := '000000000011111111111111'B,
+ subsystemNumber := 2,
+ globalTitle := {
+ gti0011 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14377760'H
+ }
+ }
+ },
+ sequenceControl := '00000000'B,
+ returnOption := '00000000'B,
+ userData := '12345678901234567890'O,
+ importance := omit
+}
+18:21:45.696998 3 Starting function MTPsim_EventHandler()
+18:21:45.698443 4 Starting function ScanRAWPorts()
+18:21:45.701026 5 Received on SCCP_PCO from mtc N_UNITDATA_req {
+ calledAddress := {
+ addressIndicator := {
+ pointCodeIndic := '1'B,
+ ssnIndicator := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B
+ },
+ signPointCode := '000000000011111111111111'B,
+ subsystemNumber := 2,
+ globalTitle := {
+ gti0011 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14375760'H
+ }
+ }
+ },
+ callingAddress := {
+ addressIndicator := {
+ pointCodeIndic := '1'B,
+ ssnIndicator := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B
+ },
+ signPointCode := '000000000011111111111111'B,
+ subsystemNumber := 2,
+ globalTitle := {
+ gti0011 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14377760'H
+ }
+ }
+ },
+ sequenceControl := '00000000'B,
+ returnOption := '00000000'B,
+ userData := '12345678901234567890'O,
+ importance := omit
+} id 1
+18:21:45.702391 5 Starting function SCCPStart( {
+ own_GT := '14377760'H,
+ remote_GT := '14375760'H,
+ SSN := 2,
+ SIO := '83'O,
+ own_SPC := 16382,
+ remote_SPC := 16383,
+ SLS := 0,
+ sccp_serviceType := "mtp3_ansi"
+} )
+18:21:45.722883 5 v_sccp_pdu_maxlen:265
+18:21:45.725239 5 Receive operation on port SCCP_PCO failed: Type of the first message in the queue is not N_CONNECT_req.
+18:21:45.726734 5 Receive operation on port SCCP_PCO failed: Type of the first message in the queue is not N_CONNECT_res.
+18:21:45.727329 5 Receive operation on port SCCP_PCO failed: Type of the first message in the queue is not N_DATA_req.
+18:21:45.727949 5 Receive operation on port SCCP_PCO failed: Type of the first message in the queue is not N_DISCONNECT_req.
+18:21:45.728805 5 Message with id 1 was extracted from the queue of SCCP_PCO.
+18:21:45.730071 5 Encoding PDU_SCCP_Address_ansi: {
+ addressIndicator := {
+ ssnIndicator := '1'B,
+ pointCodeIndic := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B,
+ reserved := '0'B
+ },
+ signPointCode := {
+ present := '000000000011111111111111'B
+ },
+ subsystemNumber := {
+ present := 2
+ },
+ globalTitle := {
+ gti0001 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14375760'H
+ }
+ }
+}
+18:21:45.731289 5 Encoded PDU_SCCP_Address_ansi: '07FF3F0002077241737506'O
+18:21:45.732056 5 Encoding PDU_SCCP_Address_ansi: {
+ addressIndicator := {
+ ssnIndicator := '1'B,
+ pointCodeIndic := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B,
+ reserved := '0'B
+ },
+ signPointCode := {
+ present := '000000000011111111111111'B
+ },
+ subsystemNumber := {
+ present := 2
+ },
+ globalTitle := {
+ gti0001 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14377760'H
+ }
+ }
+}
+18:21:45.732925 5 Encoded PDU_SCCP_Address_ansi: '07FF3F0002077241737706'O
+18:21:45.734284 5 Random generator was initialized with seed 13.733935.
+18:21:45.735117 5 Function rnd() returned 0.227768.
+18:21:45.737985 5 Sent on MTP3sccp_PCO to 4 ASP_MTP3_TRANSFERreq_sccp {
+ sio := '83'O,
+ opc := 16382,
+ dpc := 16383,
+ sls := 0,
+ data := {
+ extudata := {
+ messageType := xudt (17),
+ protClass := {
+ class := '0000'B,
+ messageHandling := '0000'B
+ },
+ hopCounter := 15,
+ pointer1 := 0,
+ pointer2 := 0,
+ pointer3 := 0,
+ pointer4 := 0,
+ calledPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737506'O
+ },
+ callingPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737706'O
+ },
+ data := {
+ paramLength := 10,
+ data := '12345678901234567890'O
+ },
+ optionalPart := {
+ segmentation := {
+ paramName := con_SCCP_segm (16),
+ paramLength := 4,
+ remainingSegment := '0000'B,
+ reserved := '00'B,
+ class := '0'B,
+ firstSegm := '1'B,
+ segmLocalRef := '3A4F07'O
+ },
+ importance := omit
+ },
+ eop := omit
+ }
+ }
+}
+18:21:45.755078 5 Last remaining Segment:'0000'B
+18:21:45.758317 4 Received on MTP3sccpEncDec_PCO from 5 ASP_MTP3_TRANSFERreq_sccp {
+ sio := '83'O,
+ opc := 16382,
+ dpc := 16383,
+ sls := 0,
+ data := {
+ extudata := {
+ messageType := xudt (17),
+ protClass := {
+ class := '0000'B,
+ messageHandling := '0000'B
+ },
+ hopCounter := 15,
+ pointer1 := 0,
+ pointer2 := 0,
+ pointer3 := 0,
+ pointer4 := 0,
+ calledPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737506'O
+ },
+ callingPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737706'O
+ },
+ data := {
+ paramLength := 10,
+ data := '12345678901234567890'O
+ },
+ optionalPart := {
+ segmentation := {
+ paramName := con_SCCP_segm (16),
+ paramLength := 4,
+ remainingSegment := '0000'B,
+ reserved := '00'B,
+ class := '0'B,
+ firstSegm := '1'B,
+ segmLocalRef := '3A4F07'O
+ },
+ importance := omit
+ },
+ eop := omit
+ }
+ }
+} id 1
+18:21:45.759685 4 Message with id 1 was extracted from the queue of MTP3sccpEncDec_PCO.
+18:21:45.760414 4 Encoding PDU_SCCP: {
+ extudata := {
+ messageType := xudt (17),
+ protClass := {
+ class := '0000'B,
+ messageHandling := '0000'B
+ },
+ hopCounter := 15,
+ pointer1 := 0,
+ pointer2 := 0,
+ pointer3 := 0,
+ pointer4 := 0,
+ calledPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737506'O
+ },
+ callingPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737706'O
+ },
+ data := {
+ paramLength := 10,
+ data := '12345678901234567890'O
+ },
+ optionalPart := {
+ segmentation := {
+ paramName := con_SCCP_segm (16),
+ paramLength := 4,
+ remainingSegment := '0000'B,
+ reserved := '00'B,
+ class := '0'B,
+ firstSegm := '1'B,
+ segmLocalRef := '3A4F07'O
+ },
+ importance := omit
+ },
+ eop := omit
+ }
+}
+18:21:45.782218 4 Encoded PDU_SCCP: '11000F040F1A240B07FF3F00020772417375060B07FF3F00020772417377060A123456789012345678901004803A4F07'O
+18:21:45.783241 4 Sent on MTP3user_sccp_PCO to 3 ASP_MTP3_TRANSFERreq {
+ sio := '83'O,
+ opc := 16382,
+ dpc := 16383,
+ sls := 0,
+ data := '11000F040F1A240B07FF3F00020772417375060B07FF3F00020772417377060A123456789012345678901004803A4F07'O
+}
+18:21:45.784644 3 Received on MTP_portA from 4 ASP_MTP3_TRANSFERreq {
+ sio := '83'O,
+ opc := 16382,
+ dpc := 16383,
+ sls := 0,
+ data := '11000F040F1A240B07FF3F00020772417375060B07FF3F00020772417377060A123456789012345678901004803A4F07'O
+} id 1
+18:21:45.785139 3 Message with id 1 was extracted from the queue of MTP_portA.
+18:21:45.786161 3 Sent on MTP_portB to 6 ASP_MTP3_TRANSFERind {
+ sio := '83'O,
+ opc := 16382,
+ dpc := 16383,
+ sls := 0,
+ data := '11000F040F1A240B07FF3F00020772417375060B07FF3F00020772417377060A123456789012345678901004803A4F07'O
+}
+18:21:45.787838 6 Received on MTP3user_sccp_PCO from 3 ASP_MTP3_TRANSFERind {
+ sio := '83'O,
+ opc := 16382,
+ dpc := 16383,
+ sls := 0,
+ data := '11000F040F1A240B07FF3F00020772417375060B07FF3F00020772417377060A123456789012345678901004803A4F07'O
+} id 1
+18:21:45.788900 6 Starting function ScanRAWPorts()
+18:21:45.789920 6 Message with id 1 was extracted from the queue of MTP3user_sccp_PCO.
+18:21:45.790662 6 Decoding PDU_SCCP: '11000F040F1A240B07FF3F00020772417375060B07FF3F00020772417377060A123456789012345678901004803A4F07'O
+18:21:45.795388 6 Decoded PDU_SCCP: {
+ extudata := {
+ messageType := xudt (17),
+ protClass := {
+ class := '0000'B,
+ messageHandling := '0000'B
+ },
+ hopCounter := 15,
+ pointer1 := 4,
+ pointer2 := 15,
+ pointer3 := 26,
+ pointer4 := 36,
+ calledPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737506'O
+ },
+ callingPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737706'O
+ },
+ data := {
+ paramLength := 10,
+ data := '12345678901234567890'O
+ },
+ optionalPart := {
+ segmentation := {
+ paramName := con_SCCP_segm (16),
+ paramLength := 4,
+ remainingSegment := '0000'B,
+ reserved := '00'B,
+ class := '0'B,
+ firstSegm := '1'B,
+ segmLocalRef := '3A4F07'O
+ },
+ importance := omit
+ },
+ eop := omit
+ }
+}
+18:21:45.821005 6 Sent on MTP3sccpEncDec_PCO to 7 PDU_SCCP_ExtUnitdata {
+ messageType := xudt (17),
+ protClass := {
+ class := '0000'B,
+ messageHandling := '0000'B
+ },
+ hopCounter := 15,
+ pointer1 := 4,
+ pointer2 := 15,
+ pointer3 := 26,
+ pointer4 := 36,
+ calledPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737506'O
+ },
+ callingPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737706'O
+ },
+ data := {
+ paramLength := 10,
+ data := '12345678901234567890'O
+ },
+ optionalPart := {
+ segmentation := {
+ paramName := con_SCCP_segm (16),
+ paramLength := 4,
+ remainingSegment := '0000'B,
+ reserved := '00'B,
+ class := '0'B,
+ firstSegm := '1'B,
+ segmLocalRef := '3A4F07'O
+ },
+ importance := omit
+ },
+ eop := omit
+}
+18:21:45.822432 7 Port SCCP_PCO has established the connection with mtc:PCO_B.
+18:21:45.824903 7 Received on MTP3sccp_PCO from 6 PDU_SCCP_ExtUnitdata {
+ messageType := xudt (17),
+ protClass := {
+ class := '0000'B,
+ messageHandling := '0000'B
+ },
+ hopCounter := 15,
+ pointer1 := 4,
+ pointer2 := 15,
+ pointer3 := 26,
+ pointer4 := 36,
+ calledPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737506'O
+ },
+ callingPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737706'O
+ },
+ data := {
+ paramLength := 10,
+ data := '12345678901234567890'O
+ },
+ optionalPart := {
+ segmentation := {
+ paramName := con_SCCP_segm (16),
+ paramLength := 4,
+ remainingSegment := '0000'B,
+ reserved := '00'B,
+ class := '0'B,
+ firstSegm := '1'B,
+ segmLocalRef := '3A4F07'O
+ },
+ importance := omit
+ },
+ eop := omit
+} id 1
+18:21:45.845099 7 Starting function SCCPStart( {
+ own_GT := '14375760'H,
+ remote_GT := '14377760'H,
+ SSN := 2,
+ SIO := '83'O,
+ own_SPC := 16383,
+ remote_SPC := 16382,
+ SLS := 0,
+ sccp_serviceType := "mtp3_ansi"
+} )
+18:21:45.846866 7 v_sccp_pdu_maxlen:265
+18:21:45.849069 7 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_Unitdata.
+18:21:45.849964 7 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_UnitdataService.
+18:21:45.850594 7 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_ConnectionRequest.
+18:21:45.851248 7 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_ConnectionConfirm.
+18:21:45.851881 7 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_Released.
+18:21:45.852527 7 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_ProtDataUnitError.
+18:21:45.853160 7 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_ReleaseComplete.
+18:21:45.853741 7 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_InactivityTest.
+18:21:45.854352 7 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_ResetRequest.
+18:21:45.873504 7 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_ResetConfirm.
+18:21:45.874250 7 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_ConnectionRefused.
+18:21:45.874833 7 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_DataForm1.
+18:21:45.876205 7 Message with id 1 was extracted from the queue of MTP3sccp_PCO.
+18:21:45.877338 7 Decoding PDU_SCCP_Address_ansi: '07FF3F0002077241737506'O
+18:21:45.878490 7 Decoded PDU_SCCP_Address_ansi: {
+ addressIndicator := {
+ ssnIndicator := '1'B,
+ pointCodeIndic := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B,
+ reserved := '0'B
+ },
+ signPointCode := {
+ present := '000000000011111111111111'B
+ },
+ subsystemNumber := {
+ present := 2
+ },
+ globalTitle := {
+ gti0001 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14375760'H
+ }
+ }
+}
+18:21:45.879493 7 Decoding PDU_SCCP_Address_ansi: '07FF3F0002077241737706'O
+18:21:45.880295 7 Decoded PDU_SCCP_Address_ansi: {
+ addressIndicator := {
+ ssnIndicator := '1'B,
+ pointCodeIndic := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B,
+ reserved := '0'B
+ },
+ signPointCode := {
+ present := '000000000011111111111111'B
+ },
+ subsystemNumber := {
+ present := 2
+ },
+ globalTitle := {
+ gti0001 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14377760'H
+ }
+ }
+}
+18:21:45.881403 7 Sent on SCCP_PCO to mtc N_UNITDATA_ind {
+ calledAddress := {
+ addressIndicator := {
+ pointCodeIndic := '1'B,
+ ssnIndicator := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B
+ },
+ signPointCode := '000000000011111111111111'B,
+ subsystemNumber := 2,
+ globalTitle := {
+ gti0011 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14375760'H
+ }
+ }
+ },
+ callingAddress := {
+ addressIndicator := {
+ pointCodeIndic := '1'B,
+ ssnIndicator := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B
+ },
+ signPointCode := '000000000011111111111111'B,
+ subsystemNumber := 2,
+ globalTitle := {
+ gti0011 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14377760'H
+ }
+ }
+ },
+ sequenceControl := '00000000'B,
+ returnOption := '00000000'B,
+ userData := '12345678901234567890'O,
+ importance := omit
+}
+18:21:45.900251 mtc Received on PCO_B from 7 N_UNITDATA_ind {
+ calledAddress := {
+ addressIndicator := {
+ pointCodeIndic := '1'B,
+ ssnIndicator := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B
+ },
+ signPointCode := '000000000011111111111111'B,
+ subsystemNumber := 2,
+ globalTitle := {
+ gti0011 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14375760'H
+ }
+ }
+ },
+ callingAddress := {
+ addressIndicator := {
+ pointCodeIndic := '1'B,
+ ssnIndicator := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B
+ },
+ signPointCode := '000000000011111111111111'B,
+ subsystemNumber := 2,
+ globalTitle := {
+ gti0011 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14377760'H
+ }
+ }
+ },
+ sequenceControl := '00000000'B,
+ returnOption := '00000000'B,
+ userData := '12345678901234567890'O,
+ importance := omit
+} id 1
+18:21:45.900917 mtc Message with id 1 was extracted from the queue of PCO_B.
+18:21:45.901304 mtc Correct CalledAddress, CallingAddress and userData received, data are correct
+18:21:45.901623 mtc setverdict(pass): none -> pass
+18:21:45.901959 mtc Stop timer: 120 s
+18:21:45.902282 mtc termitate() started
+18:21:45.902595 mtc Stopping all components.
+18:21:45.907581 3 Stop was requested from MC.
+18:21:45.907937 3 Stopping test component execution.
+18:21:45.940594 3 Function MTPsim_EventHandler was stopped. PTC terminates.
+18:21:45.941545 3 Port MTP_portA was stopped.
+18:21:45.942176 3 Port MTP_portB was stopped.
+18:21:45.943023 3 Removing unterminated connection between ports MTP_portA and 4:MTP3user_sccp_PCO.
+18:21:45.944438 3 Removing unterminated connection between ports MTP_portB and 6:MTP3user_sccp_PCO.
+18:21:45.945612 3 Ports of component type MTPsim_CT were shut down.
+18:21:45.963063 3 getverdict: none
+18:21:45.965312 3 Disconnected from MC.
+18:21:45.965518 3 TTCN-3 Parallel Test Component finished.
+18:21:45.967406 4 Connection of port MTP3user_sccp_PCO to 3:MTP_portA is lost.
+18:21:45.969323 4 Port MTP3user_sccp_PCO was disconnected from 3:MTP_portA.
+18:21:45.970071 4 Stop was requested from MC.
+18:21:45.970686 4 Stopping test component execution.
+18:21:45.997674 4 Function ScanRAWPorts was stopped. PTC terminates.
+18:21:45.998715 4 Port MTP3sccpEncDec_PCO was stopped.
+18:21:45.999329 4 MTP3 Test Port (MTP3user_sccp_PCO): User stop ordered
+18:21:45.999934 4 Port MTP3user_sccp_PCO was stopped.
+18:21:46.000781 4 Removing unterminated connection between ports MTP3sccpEncDec_PCO and 5:MTP3sccp_PCO.
+18:21:46.002220 4 Ports of component type SCCP_EncDec_comptype were shut down.
+18:21:46.002866 4 getverdict: none
+18:21:46.004760 4 Disconnected from MC.
+18:21:46.004970 4 TTCN-3 Parallel Test Component finished.
+18:21:46.032470 5 Connection of port MTP3sccp_PCO to 4:MTP3sccpEncDec_PCO is lost.
+18:21:46.033807 5 Port MTP3sccp_PCO was disconnected from 4:MTP3sccpEncDec_PCO.
+18:21:46.034467 5 Stop was requested from MC.
+18:21:46.035074 5 Stopping test component execution.
+18:21:46.051967 5 Function SCCPStart was stopped. PTC terminates.
+18:21:46.052955 5 Port MTP3sccp_PCO was stopped.
+18:21:46.053550 5 Port SCCP_PCO was stopped.
+18:21:46.054596 5 Removing unterminated connection between ports SCCP_PCO and mtc:PCO_A.
+18:21:46.056442 mtc Connection of port PCO_A to 5:SCCP_PCO is lost.
+18:21:46.058014 mtc Port PCO_A was disconnected from 5:SCCP_PCO.
+18:21:46.059058 5 Ports of component type SCCP_comptype were shut down.
+18:21:46.059660 5 getverdict: none
+18:21:46.061555 5 Disconnected from MC.
+18:21:46.061761 5 TTCN-3 Parallel Test Component finished.
+18:21:46.063188 6 Connection of port MTP3user_sccp_PCO to 3:MTP_portB is lost.
+18:21:46.065270 6 Port MTP3user_sccp_PCO was disconnected from 3:MTP_portB.
+18:21:46.067053 6 Stop was requested from MC.
+18:21:46.068350 6 Stopping test component execution.
+18:21:46.115081 6 Function ScanRAWPorts was stopped. PTC terminates.
+18:21:46.116539 6 Port MTP3sccpEncDec_PCO was stopped.
+18:21:46.117177 6 MTP3 Test Port (MTP3user_sccp_PCO): User stop ordered
+18:21:46.117788 6 Port MTP3user_sccp_PCO was stopped.
+18:21:46.118635 6 Removing unterminated connection between ports MTP3sccpEncDec_PCO and 7:MTP3sccp_PCO.
+18:21:46.120040 6 Ports of component type SCCP_EncDec_comptype were shut down.
+18:21:46.120672 6 getverdict: none
+18:21:46.122539 6 Disconnected from MC.
+18:21:46.122745 6 TTCN-3 Parallel Test Component finished.
+18:21:46.124069 7 Connection of port MTP3sccp_PCO to 6:MTP3sccpEncDec_PCO is lost.
+18:21:46.126591 7 Port MTP3sccp_PCO was disconnected from 6:MTP3sccpEncDec_PCO.
+18:21:46.127348 7 Stop was requested from MC.
+18:21:46.127955 7 Stopping test component execution.
+18:21:46.152223 7 Function SCCPStart was stopped. PTC terminates.
+18:21:46.153287 7 Port MTP3sccp_PCO was stopped.
+18:21:46.153893 7 Port SCCP_PCO was stopped.
+18:21:46.154936 7 Removing unterminated connection between ports SCCP_PCO and mtc:PCO_B.
+18:21:46.156829 mtc Connection of port PCO_B to 7:SCCP_PCO is lost.
+18:21:46.158368 mtc Port PCO_B was disconnected from 7:SCCP_PCO.
+18:21:46.159390 7 Ports of component type SCCP_comptype were shut down.
+18:21:46.159990 7 getverdict: none
+18:21:46.161049 mtc All components were stopped.
+18:21:46.161673 mtc Disconnecting ports 4:MTP3user_sccp_PCO and 3:MTP_portA.
+18:21:46.162687 mtc Disconnect operation finished.
+18:21:46.163293 mtc Disconnecting ports 5:MTP3sccp_PCO and 4:MTP3sccpEncDec_PCO.
+18:21:46.164303 mtc Disconnect operation finished.
+18:21:46.164908 mtc Disconnecting ports mtc:PCO_A and 5:SCCP_PCO.
+18:21:46.179989 mtc Disconnect operation finished.
+18:21:46.180736 mtc Disconnecting ports 6:MTP3user_sccp_PCO and 3:MTP_portB.
+18:21:46.181756 mtc Disconnect operation finished.
+18:21:46.182361 mtc Disconnecting ports 7:MTP3sccp_PCO and 6:MTP3sccpEncDec_PCO.
+18:21:46.183375 mtc Disconnect operation finished.
+18:21:46.183981 mtc Disconnecting ports mtc:PCO_B and 7:SCCP_PCO.
+18:21:46.184989 mtc Disconnect operation finished.
+18:21:46.185569 mtc all components stopped
+18:21:46.186455 mtc Stopping test component execution.
+18:21:46.201652 mtc Test case tc_ConnlessSendingShortASP was stopped.
+18:21:46.202665 mtc Port PCO_A was stopped.
+18:21:46.203282 mtc Port PCO_B was stopped.
+18:21:46.205397 mtc Ports of component type MTC_CT were shut down.
+18:21:46.207477 7 Disconnected from MC.
+18:21:46.207705 7 TTCN-3 Parallel Test Component finished.
+18:21:46.208587 mtc Waiting for PTCs to finish.
+18:21:46.209933 mtc Setting final verdict of the test case.
+18:21:46.211165 mtc Local verdict of MTC: pass
+18:21:46.211855 mtc Local verdict of PTC with component reference 3: none (pass -> pass)
+18:21:46.212456 mtc Local verdict of PTC with component reference 4: none (pass -> pass)
+18:21:46.213073 mtc Local verdict of PTC with component reference 5: none (pass -> pass)
+18:21:46.213661 mtc Local verdict of PTC with component reference 6: none (pass -> pass)
+18:21:46.214802 mtc Local verdict of PTC with component reference 7: none (pass -> pass)
+18:21:46.215478 mtc Test case tc_ConnlessSendingShortASP finished. Verdict: pass
+18:21:46.217171 mtc Executing test case tc_ConnlessSendingLongASP in module SCCP_selftest.
+18:21:46.240225 mtc Test case tc_ConnlessSendingLongASP started.
+18:21:46.240961 mtc Ports of component type MTC_CT were initialized.
+18:21:46.241578 mtc Port PCO_A was started.
+18:21:46.242161 mtc Port PCO_B was started.
+18:21:46.242817 mtc v_Boot: {
+ own_GT := '14377760'H,
+ remote_GT := '14375760'H,
+ SSN := 2,
+ SIO := '83'O,
+ own_SPC := 16382,
+ remote_SPC := 16383,
+ SLS := 0,
+ sccp_serviceType := "mtp3_ansi"
+}
+18:21:46.243457 mtc v_BootB: {
+ own_GT := '14375760'H,
+ remote_GT := '14377760'H,
+ SSN := 2,
+ SIO := '83'O,
+ own_SPC := 16383,
+ remote_SPC := 16382,
+ SLS := 0,
+ sccp_serviceType := "mtp3_ansi"
+}
+18:21:46.244084 mtc Creating new PTC with component type MTPsim_CT.
+18:21:46.245603 hc Test component with component reference 7 finished. Process statistics: {
+ process id: 25838,
+ exit status: 0,
+ user time: 0.020000 s,
+ system time: 0.020000 s,
+ maximum resident set size: 0,
+ integral resident set size: 0,
+ page faults not requiring physical I/O: 0,
+ page faults requiring physical I/O: 0,
+ swaps: 0,
+ block input operations: 0,
+ block output operations 0,
+ messages sent: 0,
+ messages received: 0,
+ signals received: 0,
+ voluntary context switches: 0,
+ involuntary context switches: 0
+}
+18:21:46.246717 hc Test component with component reference 6 finished. Process statistics: {
+ process id: 25837,
+ exit status: 0,
+ user time: 0.050000 s,
+ system time: 0.030000 s,
+ maximum resident set size: 0,
+ integral resident set size: 0,
+ page faults not requiring physical I/O: 0,
+ page faults requiring physical I/O: 0,
+ swaps: 0,
+ block input operations: 0,
+ block output operations 0,
+ messages sent: 0,
+ messages received: 0,
+ signals received: 0,
+ voluntary context switches: 0,
+ involuntary context switches: 0
+}
+18:21:46.247491 hc Test component with component reference 5 finished. Process statistics: {
+ process id: 25836,
+ exit status: 0,
+ user time: 0.020000 s,
+ system time: 0.030000 s,
+ maximum resident set size: 0,
+ integral resident set size: 0,
+ page faults not requiring physical I/O: 0,
+ page faults requiring physical I/O: 0,
+ swaps: 0,
+ block input operations: 0,
+ block output operations 0,
+ messages sent: 0,
+ messages received: 0,
+ signals received: 0,
+ voluntary context switches: 0,
+ involuntary context switches: 0
+}
+18:21:46.264668 hc Test component with component reference 4 finished. Process statistics: {
+ process id: 25835,
+ exit status: 0,
+ user time: 0.040000 s,
+ system time: 0.030000 s,
+ maximum resident set size: 0,
+ integral resident set size: 0,
+ page faults not requiring physical I/O: 0,
+ page faults requiring physical I/O: 0,
+ swaps: 0,
+ block input operations: 0,
+ block output operations 0,
+ messages sent: 0,
+ messages received: 0,
+ signals received: 0,
+ voluntary context switches: 0,
+ involuntary context switches: 0
+}
+18:21:46.265568 hc Test component with component reference 3 finished. Process statistics: {
+ process id: 25834,
+ exit status: 0,
+ user time: 0.050000 s,
+ system time: 0.020000 s,
+ maximum resident set size: 0,
+ integral resident set size: 0,
+ page faults not requiring physical I/O: 0,
+ page faults requiring physical I/O: 0,
+ swaps: 0,
+ block input operations: 0,
+ block output operations 0,
+ messages sent: 0,
+ messages received: 0,
+ signals received: 0,
+ voluntary context switches: 0,
+ involuntary context switches: 0
+}
+18:21:46.280706 hc PTC was created. Component reference: 8, component type: MTPsim_CT, process id: 25839.
+18:21:46.327713 8 TTCN-3 Parallel Test Component started on duna199. Component reference: 8, component type: MTPsim_CT.
+18:21:46.333051 8 Connected to MC.
+18:21:46.333975 8 Ports of component type MTPsim_CT were initialized.
+18:21:46.334733 8 Port MTP_portA was started.
+18:21:46.335352 8 Port MTP_portB was started.
+18:21:46.336555 mtc PTC was created. Component reference: 8.
+18:21:46.337460 mtc Creating new PTC with component type SCCP_EncDec_comptype.
+18:21:46.353606 hc PTC was created. Component reference: 9, component type: SCCP_EncDec_comptype, process id: 25840.
+18:21:46.398779 9 TTCN-3 Parallel Test Component started on duna199. Component reference: 9, component type: SCCP_EncDec_comptype.
+18:21:46.404037 9 Connected to MC.
+18:21:46.404841 mtc PTC was created. Component reference: 9.
+18:21:46.405504 mtc Creating new PTC with component type SCCP_comptype.
+18:21:46.407469 9 Ports of component type SCCP_EncDec_comptype were initialized.
+18:21:46.408208 9 Port MTP3sccpEncDec_PCO was started.
+18:21:46.409009 9 MTP3 Test Port (MTP3user_sccp_PCO): user start ordered
+18:21:46.409590 9 Port MTP3user_sccp_PCO was started.
+18:21:46.424385 hc PTC was created. Component reference: 10, component type: SCCP_comptype, process id: 25841.
+18:21:46.468205 10 TTCN-3 Parallel Test Component started on duna199. Component reference: 10, component type: SCCP_comptype.
+18:21:46.473262 10 Connected to MC.
+18:21:46.474045 mtc PTC was created. Component reference: 10.
+18:21:46.474720 mtc Connecting ports 9:MTP3user_sccp_PCO and 8:MTP_portA.
+18:21:46.478439 9 Port MTP3user_sccp_PCO is waiting for connection from 8:MTP_portA on TCP port 38423.
+18:21:46.480561 8 Port MTP_portA has established the connection with 9:MTP3user_sccp_PCO.
+18:21:46.482674 mtc Connect operation finished.
+18:21:46.483347 mtc Connecting ports 10:MTP3sccp_PCO and 9:MTP3sccpEncDec_PCO.
+18:21:46.484727 9 Port MTP3user_sccp_PCO has accepted the connection from 8:MTP_portA.
+18:21:46.486409 10 Ports of component type SCCP_comptype were initialized.
+18:21:46.487183 10 Port MTP3sccp_PCO was started.
+18:21:46.487857 10 Port SCCP_PCO was started.
+18:21:46.490270 10 Port MTP3sccp_PCO is waiting for connection from 9:MTP3sccpEncDec_PCO on TCP port 38425.
+18:21:46.492618 9 Port MTP3sccpEncDec_PCO has established the connection with 10:MTP3sccp_PCO.
+18:21:46.494771 mtc Connect operation finished.
+18:21:46.495446 mtc Connecting ports mtc:PCO_A and 10:SCCP_PCO.
+18:21:46.497895 mtc Port PCO_A is waiting for connection from 10:SCCP_PCO on TCP port 38427.
+18:21:46.499342 10 Port MTP3sccp_PCO has accepted the connection from 9:MTP3sccpEncDec_PCO.
+18:21:46.501885 mtc Port PCO_A has accepted the connection from 10:SCCP_PCO.
+18:21:46.502633 mtc Connect operation finished.
+18:21:46.503254 mtc Creating new PTC with component type SCCP_EncDec_comptype.
+18:21:46.504536 10 Port SCCP_PCO has established the connection with mtc:PCO_A.
+18:21:46.535166 hc PTC was created. Component reference: 11, component type: SCCP_EncDec_comptype, process id: 25842.
+18:21:46.563650 11 TTCN-3 Parallel Test Component started on duna199. Component reference: 11, component type: SCCP_EncDec_comptype.
+18:21:46.569136 11 Connected to MC.
+18:21:46.569930 mtc PTC was created. Component reference: 11.
+18:21:46.570585 mtc Creating new PTC with component type SCCP_comptype.
+18:21:46.572003 11 Ports of component type SCCP_EncDec_comptype were initialized.
+18:21:46.572757 11 Port MTP3sccpEncDec_PCO was started.
+18:21:46.573568 11 MTP3 Test Port (MTP3user_sccp_PCO): user start ordered
+18:21:46.574160 11 Port MTP3user_sccp_PCO was started.
+18:21:46.607218 hc PTC was created. Component reference: 12, component type: SCCP_comptype, process id: 25843.
+18:21:46.634527 12 TTCN-3 Parallel Test Component started on duna199. Component reference: 12, component type: SCCP_comptype.
+18:21:46.640248 12 Connected to MC.
+18:21:46.641259 mtc PTC was created. Component reference: 12.
+18:21:46.641935 mtc Connecting ports 11:MTP3user_sccp_PCO and 8:MTP_portB.
+18:21:46.645205 11 Port MTP3user_sccp_PCO is waiting for connection from 8:MTP_portB on TCP port 38431.
+18:21:46.647813 8 Port MTP_portB has established the connection with 11:MTP3user_sccp_PCO.
+18:21:46.650037 mtc Connect operation finished.
+18:21:46.650705 mtc Connecting ports 12:MTP3sccp_PCO and 11:MTP3sccpEncDec_PCO.
+18:21:46.652085 11 Port MTP3user_sccp_PCO has accepted the connection from 8:MTP_portB.
+18:21:46.653166 12 Ports of component type SCCP_comptype were initialized.
+18:21:46.653902 12 Port MTP3sccp_PCO was started.
+18:21:46.654568 12 Port SCCP_PCO was started.
+18:21:46.674133 12 Port MTP3sccp_PCO is waiting for connection from 11:MTP3sccpEncDec_PCO on TCP port 38433.
+18:21:46.677229 11 Port MTP3sccpEncDec_PCO has established the connection with 12:MTP3sccp_PCO.
+18:21:46.679496 mtc Connect operation finished.
+18:21:46.680172 mtc Connecting ports mtc:PCO_B and 12:SCCP_PCO.
+18:21:46.682231 mtc Port PCO_B is waiting for connection from 12:SCCP_PCO on TCP port 38435.
+18:21:46.683671 12 Port MTP3sccp_PCO has accepted the connection from 11:MTP3sccpEncDec_PCO.
+18:21:46.687028 mtc Port PCO_B has accepted the connection from 12:SCCP_PCO.
+18:21:46.687831 mtc Connect operation finished.
+18:21:46.688466 mtc Starting function MTPsim_EventHandler() on component 8.
+18:21:46.689847 8 Starting function MTPsim_EventHandler()
+18:21:46.690910 mtc Function MTPsim_EventHandler was started.
+18:21:46.691559 mtc Starting function ScanRAWPorts() on component 9.
+18:21:46.692675 mtc Function ScanRAWPorts was started.
+18:21:46.693326 mtc Starting function SCCPStart( {
+ own_GT := '14377760'H,
+ remote_GT := '14375760'H,
+ SSN := 2,
+ SIO := '83'O,
+ own_SPC := 16382,
+ remote_SPC := 16383,
+ SLS := 0,
+ sccp_serviceType := "mtp3_ansi"
+} ) on component 10.
+18:21:46.694511 mtc Function SCCPStart was started.
+18:21:46.695121 mtc Starting function ScanRAWPorts() on component 11.
+18:21:46.696900 mtc Function ScanRAWPorts was started.
+18:21:46.697568 mtc Starting function SCCPStart( {
+ own_GT := '14375760'H,
+ remote_GT := '14377760'H,
+ SSN := 2,
+ SIO := '83'O,
+ own_SPC := 16383,
+ remote_SPC := 16382,
+ SLS := 0,
+ sccp_serviceType := "mtp3_ansi"
+} ) on component 12.
+18:21:46.698723 mtc Function SCCPStart was started.
+18:21:46.699310 mtc init() is done
+18:21:46.700287 mtc Start timer: 120 s
+18:21:46.701466 mtc Sent on PCO_A to 10 N_UNITDATA_req {
+ calledAddress := {
+ addressIndicator := {
+ pointCodeIndic := '1'B,
+ ssnIndicator := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B
+ },
+ signPointCode := '000000000011111111111111'B,
+ subsystemNumber := 2,
+ globalTitle := {
+ gti0011 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14375760'H
+ }
+ }
+ },
+ callingAddress := {
+ addressIndicator := {
+ pointCodeIndic := '1'B,
+ ssnIndicator := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B
+ },
+ signPointCode := '000000000011111111111111'B,
+ subsystemNumber := 2,
+ globalTitle := {
+ gti0011 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14377760'H
+ }
+ }
+ },
+ sequenceControl := '00000000'B,
+ returnOption := '00000000'B,
+ userData := '123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890'O,
+ importance := omit
+}
+18:21:46.718626 9 Starting function ScanRAWPorts()
+18:21:46.721380 10 Received on SCCP_PCO from mtc N_UNITDATA_req {
+ calledAddress := {
+ addressIndicator := {
+ pointCodeIndic := '1'B,
+ ssnIndicator := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B
+ },
+ signPointCode := '000000000011111111111111'B,
+ subsystemNumber := 2,
+ globalTitle := {
+ gti0011 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14375760'H
+ }
+ }
+ },
+ callingAddress := {
+ addressIndicator := {
+ pointCodeIndic := '1'B,
+ ssnIndicator := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B
+ },
+ signPointCode := '000000000011111111111111'B,
+ subsystemNumber := 2,
+ globalTitle := {
+ gti0011 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14377760'H
+ }
+ }
+ },
+ sequenceControl := '00000000'B,
+ returnOption := '00000000'B,
+ userData := '123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890'O,
+ importance := omit
+} id 1
+18:21:46.742310 10 Starting function SCCPStart( {
+ own_GT := '14377760'H,
+ remote_GT := '14375760'H,
+ SSN := 2,
+ SIO := '83'O,
+ own_SPC := 16382,
+ remote_SPC := 16383,
+ SLS := 0,
+ sccp_serviceType := "mtp3_ansi"
+} )
+18:21:46.743647 10 v_sccp_pdu_maxlen:265
+18:21:46.746564 10 Receive operation on port SCCP_PCO failed: Type of the first message in the queue is not N_CONNECT_req.
+18:21:46.747527 10 Receive operation on port SCCP_PCO failed: Type of the first message in the queue is not N_CONNECT_res.
+18:21:46.748104 10 Receive operation on port SCCP_PCO failed: Type of the first message in the queue is not N_DATA_req.
+18:21:46.766884 10 Receive operation on port SCCP_PCO failed: Type of the first message in the queue is not N_DISCONNECT_req.
+18:21:46.767864 10 Message with id 1 was extracted from the queue of SCCP_PCO.
+18:21:46.769126 10 Encoding PDU_SCCP_Address_ansi: {
+ addressIndicator := {
+ ssnIndicator := '1'B,
+ pointCodeIndic := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B,
+ reserved := '0'B
+ },
+ signPointCode := {
+ present := '000000000011111111111111'B
+ },
+ subsystemNumber := {
+ present := 2
+ },
+ globalTitle := {
+ gti0001 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14375760'H
+ }
+ }
+}
+18:21:46.770337 10 Encoded PDU_SCCP_Address_ansi: '07FF3F0002077241737506'O
+18:21:46.771120 10 Encoding PDU_SCCP_Address_ansi: {
+ addressIndicator := {
+ ssnIndicator := '1'B,
+ pointCodeIndic := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B,
+ reserved := '0'B
+ },
+ signPointCode := {
+ present := '000000000011111111111111'B
+ },
+ subsystemNumber := {
+ present := 2
+ },
+ globalTitle := {
+ gti0001 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14377760'H
+ }
+ }
+}
+18:21:46.771979 10 Encoded PDU_SCCP_Address_ansi: '07FF3F0002077241737706'O
+18:21:46.773573 10 Random generator was initialized with seed 14.773216.
+18:21:46.774419 10 Function rnd() returned 0.171705.
+18:21:46.777342 10 Sent on MTP3sccp_PCO to 9 ASP_MTP3_TRANSFERreq_sccp {
+ sio := '83'O,
+ opc := 16382,
+ dpc := 16383,
+ sls := 0,
+ data := {
+ extudata := {
+ messageType := xudt (17),
+ protClass := {
+ class := '0000'B,
+ messageHandling := '0000'B
+ },
+ hopCounter := 15,
+ pointer1 := 0,
+ pointer2 := 0,
+ pointer3 := 0,
+ pointer4 := 0,
+ calledPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737506'O
+ },
+ callingPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737706'O
+ },
+ data := {
+ paramLength := 225,
+ data := '123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890'O
+ },
+ optionalPart := {
+ segmentation := {
+ paramName := con_SCCP_segm (16),
+ paramLength := 4,
+ remainingSegment := '0001'B,
+ reserved := '00'B,
+ class := '0'B,
+ firstSegm := '1'B,
+ segmLocalRef := '2BF4DA'O
+ },
+ importance := omit
+ },
+ eop := omit
+ }
+ }
+}
+18:21:46.797926 9 Received on MTP3sccpEncDec_PCO from 10 ASP_MTP3_TRANSFERreq_sccp {
+ sio := '83'O,
+ opc := 16382,
+ dpc := 16383,
+ sls := 0,
+ data := {
+ extudata := {
+ messageType := xudt (17),
+ protClass := {
+ class := '0000'B,
+ messageHandling := '0000'B
+ },
+ hopCounter := 15,
+ pointer1 := 0,
+ pointer2 := 0,
+ pointer3 := 0,
+ pointer4 := 0,
+ calledPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737506'O
+ },
+ callingPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737706'O
+ },
+ data := {
+ paramLength := 225,
+ data := '123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890'O
+ },
+ optionalPart := {
+ segmentation := {
+ paramName := con_SCCP_segm (16),
+ paramLength := 4,
+ remainingSegment := '0001'B,
+ reserved := '00'B,
+ class := '0'B,
+ firstSegm := '1'B,
+ segmLocalRef := '2BF4DA'O
+ },
+ importance := omit
+ },
+ eop := omit
+ }
+ }
+} id 1
+18:21:46.818423 9 Message with id 1 was extracted from the queue of MTP3sccpEncDec_PCO.
+18:21:46.819292 9 Encoding PDU_SCCP: {
+ extudata := {
+ messageType := xudt (17),
+ protClass := {
+ class := '0000'B,
+ messageHandling := '0000'B
+ },
+ hopCounter := 15,
+ pointer1 := 0,
+ pointer2 := 0,
+ pointer3 := 0,
+ pointer4 := 0,
+ calledPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737506'O
+ },
+ callingPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737706'O
+ },
+ data := {
+ paramLength := 225,
+ data := '123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890'O
+ },
+ optionalPart := {
+ segmentation := {
+ paramName := con_SCCP_segm (16),
+ paramLength := 4,
+ remainingSegment := '0001'B,
+ reserved := '00'B,
+ class := '0'B,
+ firstSegm := '1'B,
+ segmLocalRef := '2BF4DA'O
+ },
+ importance := omit
+ },
+ eop := omit
+ }
+}
+18:21:46.840033 9 Encoded PDU_SCCP: '11000F040F1AFB0B07FF3F00020772417375060B07FF3F0002077241737706E11234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901004812BF4DA'O
+18:21:46.841117 9 Sent on MTP3user_sccp_PCO to 8 ASP_MTP3_TRANSFERreq {
+ sio := '83'O,
+ opc := 16382,
+ dpc := 16383,
+ sls := 0,
+ data := '11000F040F1AFB0B07FF3F00020772417375060B07FF3F0002077241737706E11234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901004812BF4DA'O
+}
+18:21:46.860927 8 Received on MTP_portA from 9 ASP_MTP3_TRANSFERreq {
+ sio := '83'O,
+ opc := 16382,
+ dpc := 16383,
+ sls := 0,
+ data := '11000F040F1AFB0B07FF3F00020772417375060B07FF3F0002077241737706E11234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901004812BF4DA'O
+} id 1
+18:21:46.861875 8 Message with id 1 was extracted from the queue of MTP_portA.
+18:21:46.862805 8 Sent on MTP_portB to 11 ASP_MTP3_TRANSFERind {
+ sio := '83'O,
+ opc := 16382,
+ dpc := 16383,
+ sls := 0,
+ data := '11000F040F1AFB0B07FF3F00020772417375060B07FF3F0002077241737706E11234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901004812BF4DA'O
+}
+18:21:46.864468 10 Sent on MTP3sccp_PCO to 9 ASP_MTP3_TRANSFERreq_sccp {
+ sio := '83'O,
+ opc := 16382,
+ dpc := 16383,
+ sls := 0,
+ data := {
+ extudata := {
+ messageType := xudt (17),
+ protClass := {
+ class := '0000'B,
+ messageHandling := '0000'B
+ },
+ hopCounter := 15,
+ pointer1 := 0,
+ pointer2 := 0,
+ pointer3 := 0,
+ pointer4 := 0,
+ calledPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737506'O
+ },
+ callingPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737706'O
+ },
+ data := {
+ paramLength := 75,
+ data := '123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890'O
+ },
+ optionalPart := {
+ segmentation := {
+ paramName := con_SCCP_segm (16),
+ paramLength := 4,
+ remainingSegment := '0000'B,
+ reserved := '00'B,
+ class := '0'B,
+ firstSegm := '0'B,
+ segmLocalRef := '2BF4DA'O
+ },
+ importance := omit
+ },
+ eop := omit
+ }
+ }
+}
+18:21:46.884418 9 Received on MTP3sccpEncDec_PCO from 10 ASP_MTP3_TRANSFERreq_sccp {
+ sio := '83'O,
+ opc := 16382,
+ dpc := 16383,
+ sls := 0,
+ data := {
+ extudata := {
+ messageType := xudt (17),
+ protClass := {
+ class := '0000'B,
+ messageHandling := '0000'B
+ },
+ hopCounter := 15,
+ pointer1 := 0,
+ pointer2 := 0,
+ pointer3 := 0,
+ pointer4 := 0,
+ calledPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737506'O
+ },
+ callingPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737706'O
+ },
+ data := {
+ paramLength := 75,
+ data := '123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890'O
+ },
+ optionalPart := {
+ segmentation := {
+ paramName := con_SCCP_segm (16),
+ paramLength := 4,
+ remainingSegment := '0000'B,
+ reserved := '00'B,
+ class := '0'B,
+ firstSegm := '0'B,
+ segmLocalRef := '2BF4DA'O
+ },
+ importance := omit
+ },
+ eop := omit
+ }
+ }
+} id 2
+18:21:46.885361 9 Message with id 2 was extracted from the queue of MTP3sccpEncDec_PCO.
+18:21:46.886556 9 Encoding PDU_SCCP: {
+ extudata := {
+ messageType := xudt (17),
+ protClass := {
+ class := '0000'B,
+ messageHandling := '0000'B
+ },
+ hopCounter := 15,
+ pointer1 := 0,
+ pointer2 := 0,
+ pointer3 := 0,
+ pointer4 := 0,
+ calledPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737506'O
+ },
+ callingPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737706'O
+ },
+ data := {
+ paramLength := 75,
+ data := '123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890'O
+ },
+ optionalPart := {
+ segmentation := {
+ paramName := con_SCCP_segm (16),
+ paramLength := 4,
+ remainingSegment := '0000'B,
+ reserved := '00'B,
+ class := '0'B,
+ firstSegm := '0'B,
+ segmLocalRef := '2BF4DA'O
+ },
+ importance := omit
+ },
+ eop := omit
+ }
+}
+18:21:46.905406 9 Encoded PDU_SCCP: '11000F040F1A650B07FF3F00020772417375060B07FF3F00020772417377064B1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901004002BF4DA'O
+18:21:46.906838 9 Sent on MTP3user_sccp_PCO to 8 ASP_MTP3_TRANSFERreq {
+ sio := '83'O,
+ opc := 16382,
+ dpc := 16383,
+ sls := 0,
+ data := '11000F040F1A650B07FF3F00020772417375060B07FF3F00020772417377064B1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901004002BF4DA'O
+}
+18:21:46.907795 8 Received on MTP_portA from 9 ASP_MTP3_TRANSFERreq {
+ sio := '83'O,
+ opc := 16382,
+ dpc := 16383,
+ sls := 0,
+ data := '11000F040F1A650B07FF3F00020772417375060B07FF3F00020772417377064B1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901004002BF4DA'O
+} id 2
+18:21:46.908539 8 Message with id 2 was extracted from the queue of MTP_portA.
+18:21:46.909214 8 Sent on MTP_portB to 11 ASP_MTP3_TRANSFERind {
+ sio := '83'O,
+ opc := 16382,
+ dpc := 16383,
+ sls := 0,
+ data := '11000F040F1A650B07FF3F00020772417375060B07FF3F00020772417377064B1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901004002BF4DA'O
+}
+18:21:46.928654 10 Last remaining Segment:'0000'B
+18:21:46.930294 11 Received on MTP3user_sccp_PCO from 8 ASP_MTP3_TRANSFERind {
+ sio := '83'O,
+ opc := 16382,
+ dpc := 16383,
+ sls := 0,
+ data := '11000F040F1AFB0B07FF3F00020772417375060B07FF3F0002077241737706E11234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901004812BF4DA'O
+} id 1
+18:21:46.931267 11 Received on MTP3user_sccp_PCO from 8 ASP_MTP3_TRANSFERind {
+ sio := '83'O,
+ opc := 16382,
+ dpc := 16383,
+ sls := 0,
+ data := '11000F040F1A650B07FF3F00020772417375060B07FF3F00020772417377064B1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901004002BF4DA'O
+} id 2
+18:21:46.932508 11 Starting function ScanRAWPorts()
+18:21:46.933526 11 Message with id 1 was extracted from the queue of MTP3user_sccp_PCO.
+18:21:46.934374 11 Decoding PDU_SCCP: '11000F040F1AFB0B07FF3F00020772417375060B07FF3F0002077241737706E11234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901004812BF4DA'O
+18:21:46.958297 11 Decoded PDU_SCCP: {
+ extudata := {
+ messageType := xudt (17),
+ protClass := {
+ class := '0000'B,
+ messageHandling := '0000'B
+ },
+ hopCounter := 15,
+ pointer1 := 4,
+ pointer2 := 15,
+ pointer3 := 26,
+ pointer4 := 251,
+ calledPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737506'O
+ },
+ callingPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737706'O
+ },
+ data := {
+ paramLength := 225,
+ data := '123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890'O
+ },
+ optionalPart := {
+ segmentation := {
+ paramName := con_SCCP_segm (16),
+ paramLength := 4,
+ remainingSegment := '0001'B,
+ reserved := '00'B,
+ class := '0'B,
+ firstSegm := '1'B,
+ segmLocalRef := '2BF4DA'O
+ },
+ importance := omit
+ },
+ eop := omit
+ }
+}
+18:21:46.960010 11 Sent on MTP3sccpEncDec_PCO to 12 PDU_SCCP_ExtUnitdata {
+ messageType := xudt (17),
+ protClass := {
+ class := '0000'B,
+ messageHandling := '0000'B
+ },
+ hopCounter := 15,
+ pointer1 := 4,
+ pointer2 := 15,
+ pointer3 := 26,
+ pointer4 := 251,
+ calledPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737506'O
+ },
+ callingPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737706'O
+ },
+ data := {
+ paramLength := 225,
+ data := '123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890'O
+ },
+ optionalPart := {
+ segmentation := {
+ paramName := con_SCCP_segm (16),
+ paramLength := 4,
+ remainingSegment := '0001'B,
+ reserved := '00'B,
+ class := '0'B,
+ firstSegm := '1'B,
+ segmLocalRef := '2BF4DA'O
+ },
+ importance := omit
+ },
+ eop := omit
+}
+18:21:46.979542 11 Message with id 2 was extracted from the queue of MTP3user_sccp_PCO.
+18:21:46.980311 11 Decoding PDU_SCCP: '11000F040F1A650B07FF3F00020772417375060B07FF3F00020772417377064B1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901004002BF4DA'O
+18:21:46.982225 11 Decoded PDU_SCCP: {
+ extudata := {
+ messageType := xudt (17),
+ protClass := {
+ class := '0000'B,
+ messageHandling := '0000'B
+ },
+ hopCounter := 15,
+ pointer1 := 4,
+ pointer2 := 15,
+ pointer3 := 26,
+ pointer4 := 101,
+ calledPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737506'O
+ },
+ callingPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737706'O
+ },
+ data := {
+ paramLength := 75,
+ data := '123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890'O
+ },
+ optionalPart := {
+ segmentation := {
+ paramName := con_SCCP_segm (16),
+ paramLength := 4,
+ remainingSegment := '0000'B,
+ reserved := '00'B,
+ class := '0'B,
+ firstSegm := '0'B,
+ segmLocalRef := '2BF4DA'O
+ },
+ importance := omit
+ },
+ eop := omit
+ }
+}
+18:21:47.002800 11 Sent on MTP3sccpEncDec_PCO to 12 PDU_SCCP_ExtUnitdata {
+ messageType := xudt (17),
+ protClass := {
+ class := '0000'B,
+ messageHandling := '0000'B
+ },
+ hopCounter := 15,
+ pointer1 := 4,
+ pointer2 := 15,
+ pointer3 := 26,
+ pointer4 := 101,
+ calledPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737506'O
+ },
+ callingPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737706'O
+ },
+ data := {
+ paramLength := 75,
+ data := '123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890'O
+ },
+ optionalPart := {
+ segmentation := {
+ paramName := con_SCCP_segm (16),
+ paramLength := 4,
+ remainingSegment := '0000'B,
+ reserved := '00'B,
+ class := '0'B,
+ firstSegm := '0'B,
+ segmLocalRef := '2BF4DA'O
+ },
+ importance := omit
+ },
+ eop := omit
+}
+18:21:47.004232 12 Port SCCP_PCO has established the connection with mtc:PCO_B.
+18:21:47.007365 12 Received on MTP3sccp_PCO from 11 PDU_SCCP_ExtUnitdata {
+ messageType := xudt (17),
+ protClass := {
+ class := '0000'B,
+ messageHandling := '0000'B
+ },
+ hopCounter := 15,
+ pointer1 := 4,
+ pointer2 := 15,
+ pointer3 := 26,
+ pointer4 := 251,
+ calledPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737506'O
+ },
+ callingPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737706'O
+ },
+ data := {
+ paramLength := 225,
+ data := '123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890'O
+ },
+ optionalPart := {
+ segmentation := {
+ paramName := con_SCCP_segm (16),
+ paramLength := 4,
+ remainingSegment := '0001'B,
+ reserved := '00'B,
+ class := '0'B,
+ firstSegm := '1'B,
+ segmLocalRef := '2BF4DA'O
+ },
+ importance := omit
+ },
+ eop := omit
+} id 1
+18:21:47.027803 12 Received on MTP3sccp_PCO from 11 PDU_SCCP_ExtUnitdata {
+ messageType := xudt (17),
+ protClass := {
+ class := '0000'B,
+ messageHandling := '0000'B
+ },
+ hopCounter := 15,
+ pointer1 := 4,
+ pointer2 := 15,
+ pointer3 := 26,
+ pointer4 := 101,
+ calledPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737506'O
+ },
+ callingPAddress := {
+ paramLength := 11,
+ addr := '07FF3F0002077241737706'O
+ },
+ data := {
+ paramLength := 75,
+ data := '123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890'O
+ },
+ optionalPart := {
+ segmentation := {
+ paramName := con_SCCP_segm (16),
+ paramLength := 4,
+ remainingSegment := '0000'B,
+ reserved := '00'B,
+ class := '0'B,
+ firstSegm := '0'B,
+ segmLocalRef := '2BF4DA'O
+ },
+ importance := omit
+ },
+ eop := omit
+} id 2
+18:21:47.029096 12 Starting function SCCPStart( {
+ own_GT := '14375760'H,
+ remote_GT := '14377760'H,
+ SSN := 2,
+ SIO := '83'O,
+ own_SPC := 16383,
+ remote_SPC := 16382,
+ SLS := 0,
+ sccp_serviceType := "mtp3_ansi"
+} )
+18:21:47.049950 12 v_sccp_pdu_maxlen:265
+18:21:47.052171 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_Unitdata.
+18:21:47.053061 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_UnitdataService.
+18:21:47.053634 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_ConnectionRequest.
+18:21:47.054301 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_ConnectionConfirm.
+18:21:47.054874 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_Released.
+18:21:47.055523 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_ProtDataUnitError.
+18:21:47.056867 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_ReleaseComplete.
+18:21:47.057484 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_InactivityTest.
+18:21:47.058038 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_ResetRequest.
+18:21:47.058620 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_ResetConfirm.
+18:21:47.059177 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_ConnectionRefused.
+18:21:47.059766 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_DataForm1.
+18:21:47.060612 12 Message with id 1 was extracted from the queue of MTP3sccp_PCO.
+18:21:47.061431 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_Unitdata.
+18:21:47.062036 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_UnitdataService.
+18:21:47.080392 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_ConnectionRequest.
+18:21:47.081093 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_ConnectionConfirm.
+18:21:47.081697 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_Released.
+18:21:47.082255 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_ProtDataUnitError.
+18:21:47.082850 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_ReleaseComplete.
+18:21:47.083413 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_InactivityTest.
+18:21:47.083998 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_ResetRequest.
+18:21:47.084553 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_ResetConfirm.
+18:21:47.085145 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_ConnectionRefused.
+18:21:47.085972 12 Receive operation on port MTP3sccp_PCO failed: Type of the first message in the queue is not PDU_SCCP_DataForm1.
+18:21:47.086667 12 Message with id 2 was extracted from the queue of MTP3sccp_PCO.
+18:21:47.087691 12 Decoding PDU_SCCP_Address_ansi: '07FF3F0002077241737506'O
+18:21:47.088831 12 Decoded PDU_SCCP_Address_ansi: {
+ addressIndicator := {
+ ssnIndicator := '1'B,
+ pointCodeIndic := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B,
+ reserved := '0'B
+ },
+ signPointCode := {
+ present := '000000000011111111111111'B
+ },
+ subsystemNumber := {
+ present := 2
+ },
+ globalTitle := {
+ gti0001 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14375760'H
+ }
+ }
+}
+18:21:47.089819 12 Decoding PDU_SCCP_Address_ansi: '07FF3F0002077241737706'O
+18:21:47.096495 12 Decoded PDU_SCCP_Address_ansi: {
+ addressIndicator := {
+ ssnIndicator := '1'B,
+ pointCodeIndic := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B,
+ reserved := '0'B
+ },
+ signPointCode := {
+ present := '000000000011111111111111'B
+ },
+ subsystemNumber := {
+ present := 2
+ },
+ globalTitle := {
+ gti0001 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14377760'H
+ }
+ }
+}
+18:21:47.097820 12 Sent on SCCP_PCO to mtc N_UNITDATA_ind {
+ calledAddress := {
+ addressIndicator := {
+ pointCodeIndic := '1'B,
+ ssnIndicator := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B
+ },
+ signPointCode := '000000000011111111111111'B,
+ subsystemNumber := 2,
+ globalTitle := {
+ gti0011 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14375760'H
+ }
+ }
+ },
+ callingAddress := {
+ addressIndicator := {
+ pointCodeIndic := '1'B,
+ ssnIndicator := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B
+ },
+ signPointCode := '000000000011111111111111'B,
+ subsystemNumber := 2,
+ globalTitle := {
+ gti0011 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14377760'H
+ }
+ }
+ },
+ sequenceControl := '00000000'B,
+ returnOption := '00000000'B,
+ userData := '123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890'O,
+ importance := omit
+}
+18:21:47.099690 mtc Received on PCO_B from 12 N_UNITDATA_ind {
+ calledAddress := {
+ addressIndicator := {
+ pointCodeIndic := '1'B,
+ ssnIndicator := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B
+ },
+ signPointCode := '000000000011111111111111'B,
+ subsystemNumber := 2,
+ globalTitle := {
+ gti0011 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14375760'H
+ }
+ }
+ },
+ callingAddress := {
+ addressIndicator := {
+ pointCodeIndic := '1'B,
+ ssnIndicator := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B
+ },
+ signPointCode := '000000000011111111111111'B,
+ subsystemNumber := 2,
+ globalTitle := {
+ gti0011 := {
+ translationType := '07'O,
+ encodingScheme := '0010'B,
+ numberingPlan := '0111'B,
+ globalTitleAddress := '14377760'H
+ }
+ }
+ },
+ sequenceControl := '00000000'B,
+ returnOption := '00000000'B,
+ userData := '123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890'O,
+ importance := omit
+} id 1
+18:21:47.101242 mtc Message with id 1 was extracted from the queue of PCO_B.
+18:21:47.101965 mtc Correct CalledAddress, CallingAddress and userData received, data are correct
+18:21:47.102580 mtc setverdict(pass): none -> pass
+18:21:47.103230 mtc Stop timer: 120 s
+18:21:47.103850 mtc termitate() started
+18:21:47.104464 mtc Stopping all components.
+18:21:47.106496 8 Stop was requested from MC.
+18:21:47.107164 8 Stopping test component execution.
+18:21:47.123129 8 Function MTPsim_EventHandler was stopped. PTC terminates.
+18:21:47.124103 8 Port MTP_portA was stopped.
+18:21:47.124749 8 Port MTP_portB was stopped.
+18:21:47.125610 8 Removing unterminated connection between ports MTP_portA and 9:MTP3user_sccp_PCO.
+18:21:47.127704 8 Removing unterminated connection between ports MTP_portB and 11:MTP3user_sccp_PCO.
+18:21:47.128884 8 Ports of component type MTPsim_CT were shut down.
+18:21:47.129510 8 getverdict: none
+18:21:47.131756 8 Disconnected from MC.
+18:21:47.131976 8 TTCN-3 Parallel Test Component finished.
+18:21:47.133209 9 Connection of port MTP3user_sccp_PCO to 8:MTP_portA is lost.
+18:21:47.135184 9 Port MTP3user_sccp_PCO was disconnected from 8:MTP_portA.
+18:21:47.136358 9 Stop was requested from MC.
+18:21:47.137032 9 Stopping test component execution.
+18:21:47.162489 9 Function ScanRAWPorts was stopped. PTC terminates.
+18:21:47.163557 9 Port MTP3sccpEncDec_PCO was stopped.
+18:21:47.164160 9 MTP3 Test Port (MTP3user_sccp_PCO): User stop ordered
+18:21:47.164766 9 Port MTP3user_sccp_PCO was stopped.
+18:21:47.165617 9 Removing unterminated connection between ports MTP3sccpEncDec_PCO and 10:MTP3sccp_PCO.
+18:21:47.167692 9 Ports of component type SCCP_EncDec_comptype were shut down.
+18:21:47.168343 9 getverdict: none
+18:21:47.170258 9 Disconnected from MC.
+18:21:47.170470 9 TTCN-3 Parallel Test Component finished.
+18:21:47.171868 10 Connection of port MTP3sccp_PCO to 9:MTP3sccpEncDec_PCO is lost.
+18:21:47.173933 10 Port MTP3sccp_PCO was disconnected from 9:MTP3sccpEncDec_PCO.
+18:21:47.174646 10 Stop was requested from MC.
+18:21:47.175246 10 Stopping test component execution.
+18:21:47.200504 10 Function SCCPStart was stopped. PTC terminates.
+18:21:47.201545 10 Port MTP3sccp_PCO was stopped.
+18:21:47.202136 10 Port SCCP_PCO was stopped.
+18:21:47.203172 10 Removing unterminated connection between ports SCCP_PCO and mtc:PCO_A.
+18:21:47.204521 mtc Connection of port PCO_A to 10:SCCP_PCO is lost.
+18:21:47.206622 mtc Port PCO_A was disconnected from 10:SCCP_PCO.
+18:21:47.207704 10 Ports of component type SCCP_comptype were shut down.
+18:21:47.208293 10 getverdict: none
+18:21:47.210197 10 Disconnected from MC.
+18:21:47.210401 10 TTCN-3 Parallel Test Component finished.
+18:21:47.211716 11 Connection of port MTP3user_sccp_PCO to 8:MTP_portB is lost.
+18:21:47.213172 11 Port MTP3user_sccp_PCO was disconnected from 8:MTP_portB.
+18:21:47.214488 11 Stop was requested from MC.
+18:21:47.215141 11 Stopping test component execution.
+18:21:47.240282 11 Function ScanRAWPorts was stopped. PTC terminates.
+18:21:47.241361 11 Port MTP3sccpEncDec_PCO was stopped.
+18:21:47.241973 11 MTP3 Test Port (MTP3user_sccp_PCO): User stop ordered
+18:21:47.242584 11 Port MTP3user_sccp_PCO was stopped.
+18:21:47.243436 11 Removing unterminated connection between ports MTP3sccpEncDec_PCO and 12:MTP3sccp_PCO.
+18:21:47.244858 11 Ports of component type SCCP_EncDec_comptype were shut down.
+18:21:47.245503 11 getverdict: none
+18:21:47.247937 11 Disconnected from MC.
+18:21:47.248146 11 TTCN-3 Parallel Test Component finished.
+18:21:47.249639 12 Connection of port MTP3sccp_PCO to 11:MTP3sccpEncDec_PCO is lost.
+18:21:47.251689 12 Port MTP3sccp_PCO was disconnected from 11:MTP3sccpEncDec_PCO.
+18:21:47.252406 12 Stop was requested from MC.
+18:21:47.252990 12 Stopping test component execution.
+18:21:47.344052 12 Function SCCPStart was stopped. PTC terminates.
+18:21:47.345109 12 Port MTP3sccp_PCO was stopped.
+18:21:47.346393 12 Port SCCP_PCO was stopped.
+18:21:47.347503 12 Removing unterminated connection between ports SCCP_PCO and mtc:PCO_B.
+18:21:47.348853 mtc Connection of port PCO_B to 12:SCCP_PCO is lost.
+18:21:47.350357 mtc Port PCO_B was disconnected from 12:SCCP_PCO.
+18:21:47.351354 12 Ports of component type SCCP_comptype were shut down.
+18:21:47.351934 12 getverdict: none
+18:21:47.352955 mtc All components were stopped.
+18:21:47.353582 mtc Disconnecting ports 9:MTP3user_sccp_PCO and 8:MTP_portA.
+18:21:47.354590 mtc Disconnect operation finished.
+18:21:47.355197 mtc Disconnecting ports 10:MTP3sccp_PCO and 9:MTP3sccpEncDec_PCO.
+18:21:47.356662 mtc Disconnect operation finished.
+18:21:47.357283 mtc Disconnecting ports mtc:PCO_A and 10:SCCP_PCO.
+18:21:47.358282 mtc Disconnect operation finished.
+18:21:47.358890 mtc Disconnecting ports 11:MTP3user_sccp_PCO and 8:MTP_portB.
+18:21:47.359898 mtc Disconnect operation finished.
+18:21:47.360508 mtc Disconnecting ports 12:MTP3sccp_PCO and 11:MTP3sccpEncDec_PCO.
+18:21:47.361519 mtc Disconnect operation finished.
+18:21:47.362127 mtc Disconnecting ports mtc:PCO_B and 12:SCCP_PCO.
+18:21:47.363126 mtc Disconnect operation finished.
+18:21:47.363708 mtc all components stopped
+18:21:47.364307 mtc Stopping test component execution.
+18:21:47.365131 mtc Test case tc_ConnlessSendingLongASP was stopped.
+18:21:47.366208 mtc Port PCO_A was stopped.
+18:21:47.366555 mtc Port PCO_B was stopped.
+18:21:47.368393 mtc Ports of component type MTC_CT were shut down.
+18:21:47.368667 mtc Waiting for PTCs to finish.
+18:21:47.370662 mtc Setting final verdict of the test case.
+18:21:47.371019 mtc Local verdict of MTC: pass
+18:21:47.371339 mtc Local verdict of PTC with component reference 8: none (pass -> pass)
+18:21:47.371635 mtc Local verdict of PTC with component reference 9: none (pass -> pass)
+18:21:47.371948 mtc Local verdict of PTC with component reference 10: none (pass -> pass)
+18:21:47.372245 mtc Local verdict of PTC with component reference 11: none (pass -> pass)
+18:21:47.372560 mtc Local verdict of PTC with component reference 12: none (pass -> pass)
+18:21:47.372855 mtc Test case tc_ConnlessSendingLongASP finished. Verdict: pass
+18:21:47.402761 12 Disconnected from MC.
+18:21:47.402997 12 TTCN-3 Parallel Test Component finished.
+18:22:04.264666 mtc Verdict statistics: 0 none (0.00 %), 2 pass (100.00 %), 0 inconc (0.00 %), 0 fail (0.00 %), 0 error (0.00 %).
+18:22:04.265451 mtc Test execution summary: 2 test cases were executed. Overall verdict: pass.
+18:22:04.266260 mtc Exit was requested from MC. Terminating MTC.
+18:22:04.269127 mtc Disconnected from MC.
+18:22:04.269382 mtc TTCN-3 Main Test Component finished.
+18:22:04.270509 hc Test component with component reference 12 finished. Process statistics: {
+ process id: 25843,
+ exit status: 0,
+ user time: 0.020000 s,
+ system time: 0.070000 s,
+ maximum resident set size: 0,
+ integral resident set size: 0,
+ page faults not requiring physical I/O: 0,
+ page faults requiring physical I/O: 0,
+ swaps: 0,
+ block input operations: 0,
+ block output operations 0,
+ messages sent: 0,
+ messages received: 0,
+ signals received: 0,
+ voluntary context switches: 0,
+ involuntary context switches: 0
+}
+18:22:04.271775 hc Test component with component reference 11 finished. Process statistics: {
+ process id: 25842,
+ exit status: 0,
+ user time: 0.020000 s,
+ system time: 0.030000 s,
+ maximum resident set size: 0,
+ integral resident set size: 0,
+ page faults not requiring physical I/O: 0,
+ page faults requiring physical I/O: 0,
+ swaps: 0,
+ block input operations: 0,
+ block output operations 0,
+ messages sent: 0,
+ messages received: 0,
+ signals received: 0,
+ voluntary context switches: 0,
+ involuntary context switches: 0
+}
+18:22:04.272732 hc Test component with component reference 10 finished. Process statistics: {
+ process id: 25841,
+ exit status: 0,
+ user time: 0.010000 s,
+ system time: 0.040000 s,
+ maximum resident set size: 0,
+ integral resident set size: 0,
+ page faults not requiring physical I/O: 0,
+ page faults requiring physical I/O: 0,
+ swaps: 0,
+ block input operations: 0,
+ block output operations 0,
+ messages sent: 0,
+ messages received: 0,
+ signals received: 0,
+ voluntary context switches: 0,
+ involuntary context switches: 0
+}
+18:22:04.274094 hc Test component with component reference 9 finished. Process statistics: {
+ process id: 25840,
+ exit status: 0,
+ user time: 0.020000 s,
+ system time: 0.020000 s,
+ maximum resident set size: 0,
+ integral resident set size: 0,
+ page faults not requiring physical I/O: 0,
+ page faults requiring physical I/O: 0,
+ swaps: 0,
+ block input operations: 0,
+ block output operations 0,
+ messages sent: 0,
+ messages received: 0,
+ signals received: 0,
+ voluntary context switches: 0,
+ involuntary context switches: 0
+}
+18:22:04.301155 hc Test component with component reference 1 finished. Process statistics: {
+ process id: 25833,
+ exit status: 0,
+ user time: 0.050000 s,
+ system time: 0.100000 s,
+ maximum resident set size: 0,
+ integral resident set size: 0,
+ page faults not requiring physical I/O: 0,
+ page faults requiring physical I/O: 0,
+ swaps: 0,
+ block input operations: 0,
+ block output operations 0,
+ messages sent: 0,
+ messages received: 0,
+ signals received: 0,
+ voluntary context switches: 0,
+ involuntary context switches: 0
+}
+18:22:04.302181 hc Test component with component reference 8 finished. Process statistics: {
+ process id: 25839,
+ exit status: 0,
+ user time: 0.020000 s,
+ system time: 0.030000 s,
+ maximum resident set size: 0,
+ integral resident set size: 0,
+ page faults not requiring physical I/O: 0,
+ page faults requiring physical I/O: 0,
+ swaps: 0,
+ block input operations: 0,
+ block output operations 0,
+ messages sent: 0,
+ messages received: 0,
+ signals received: 0,
+ voluntary context switches: 0,
+ involuntary context switches: 0
+}
+18:22:04.303133 hc Exit was requested from MC. Terminating HC.
+18:22:04.314953 hc Disconnected from MC.
+18:22:04.315230 hc TTCN-3 Host Controller finished on duna199.
diff --git a/SCCP_CNL113341/demo/SCCP_Emulation.ttcn b/SCCP_CNL113341/demo/SCCP_Emulation.ttcn
new file mode 120000
index 0000000..fae9605
--- /dev/null
+++ b/SCCP_CNL113341/demo/SCCP_Emulation.ttcn
@@ -0,0 +1 @@
+../src/SCCP_Emulation.ttcn \ No newline at end of file
diff --git a/SCCP_CNL113341/demo/SCCP_Mapping.ttcnpp b/SCCP_CNL113341/demo/SCCP_Mapping.ttcnpp
new file mode 120000
index 0000000..aabd0d4
--- /dev/null
+++ b/SCCP_CNL113341/demo/SCCP_Mapping.ttcnpp
@@ -0,0 +1 @@
+../src/SCCP_Mapping.ttcnpp \ No newline at end of file
diff --git a/SCCP_CNL113341/demo/SCCP_Testcases.cfg b/SCCP_CNL113341/demo/SCCP_Testcases.cfg
new file mode 100644
index 0000000..ae1c472
--- /dev/null
+++ b/SCCP_CNL113341/demo/SCCP_Testcases.cfg
@@ -0,0 +1,55 @@
+[LOGGING]
+#FileName := "SCCP_selftest.cfg"
+FileMask := LOG_ALL | TTCN_DEBUG | TTCN_MATCHING
+#ConsoleMask := LOG_ALL
+#ConsoleMask := TTCN_TESTCASE | TTCN_PORTEVENT | TTCN_DEBUG | TTCN_MATCHING
+#ConsoleMask := TTCN_WARNING | TTCN_ERROR | TTCN_TESTCASE | TTCN_STATISTICS | TTCN_PORTEVENT
+#ConsoleMask := LOG_ALL | TTCN_DEBUG | TTCN_MATCHING
+LogSourceInfo := Yes
+
+[EXECUTE]
+#SCCP_selftest.tc_ConnlessSendingShortASP
+#SCCP_selftest.tc_ConnlessSendingLongASP
+#SCCP_selftest.tc_ConnOrientedShortASPSending
+#SCCP_Testcases.tc_ConnlessSendingLongASP
+SCCP_Testcases.tc_ConnOrientedShortASPSending
+
+[TESTPORT_PARAMETERS]
+// *******************************************************
+// * DO NOT FORGET TO SET THE FOLLOWING TWO LINE TO YOUR SEA *
+// *******************************************************
+system.*.Hostname := "karasea" //sea server name
+system.*.HttpPort := "5001" //sea http port
+system.*.IID_String := "b303d76a-266c-11d4-b8f5-08002090d3da"
+ //Device Type ID
+system.*.Loop:= "OFF"
+system.*.Filter:= "OFF"
+system.*.MTP3ServiceType := "MTP3ttc" // ["MTP3itu" (default)|"MTP3ansi" | "M3UA" |"MTP3tcc]
+
+// CMGW6 -> SCTP_ASSOC_10.2.110.102
+// CMGW3 data: SCTP_ASSOC_10.2.110.2
+system.CMGW6.EntityName := "SAALH-0" //"S7ST-0" //device name to connect
+system.CMGW6.NI := "2"
+system.CMGW6.SUT_Pc := "2300"
+system.CMGW6.TESTER_Pc := "2351"
+system.CMGW6.M3UA_version:= "1"
+
+[MODULE_PARAMETERS]
+tsp_own_GT := '14377760'H
+tsp_remote_GT := '14375760'H
+tsp_SSN := 8 //8:MSC 5:MAP see 3.4.2.2/Q.713
+tsp_SIO := '83'O //SCCP national
+tsp_own_SPC := 2351
+tsp_remote_SPC := 2300// max value on 14 bits
+tsp_SLS := 0
+#[tsp_sccp_serviceType := "mtp3_itu" |"mtp3b_itu"|"mtp3_ansi"|"mtp3b_ansi"| "mtp3b_tcc"]
+tsp_sccp_serviceType := "mtp3_ttc"
+
+#for mtp3_itu/gti0011 or mtp3_ansi/gti0001 :
+#tsp_translationType := 7
+tsp_SIF_MaxLength := 272
+tsp_force_xudt := 0 // 1:yes, 0:no
+
+[MAIN_CONTROLLER]
+TCPPort := 7145
+NumHCs := 1
diff --git a/SCCP_CNL113341/demo/SCCP_Testcases.ttcn b/SCCP_CNL113341/demo/SCCP_Testcases.ttcn
new file mode 100644
index 0000000..0f8ba47
--- /dev/null
+++ b/SCCP_CNL113341/demo/SCCP_Testcases.ttcn
@@ -0,0 +1,468 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+//
+// Copyright Test Competence Center (TCC) ETH 2007
+//
+//
+//
+// The copyright to the computer program(s) herein is the property of TCC. //
+// The program(s) may be used and/or copied only with the written permission //
+// of TCC or in accordance with the terms and conditions stipulated in the //
+// agreement/contract under which the program(s) have been supplied
+//
+//
+//
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: SCCP_TestCases.ttcn
+// Description: SS7 SCCP basic SEA test
+// according to specification ITU-T SS7 SCCP, ANSI ..., TCC ...
+// References: ITU-T: Recommendation Q.711-Q.714,
+// ANSI T1.112-2001,
+// TCC
+// Rev: <RnXnn>
+// Updated: 2007.04.12
+// Contact: http://ttcn.ericsson.se
+//
+
+module SCCP_Testcases
+{//startmodule
+
+modulepar
+{
+ hexstring tsp_own_GT := '0614377760'H;
+ hexstring tsp_remote_GT := '0614375760'H;
+ integer tsp_SSN := 2; //8:MSC 5:MAP see 3.4.2.2/Q.713
+ octetstring tsp_SIO := '83'O;//SCCP national
+ integer tsp_own_SPC := 461087; // =0x07091E
+ integer tsp_remote_SPC := 461086; // =0x07091D
+ integer tsp_SLS := 0;
+ charstring tsp_sccp_serviceType := "mtp3_itu";
+
+ octetstring MTP3_UserPart_SIO;
+ integer MTP3_UserPart_OPC,
+ MTP3_UserPart_DPC,
+ MTP3_UserPart_SLS
+}//modulepar
+
+import from General_Types all;
+
+import from MTP3asp_Types all;
+import from MTP3asp_PortType all;
+
+import from SCCPasp_Types all;
+import from SCCP_Types all;
+import from SCCP_Emulation all;
+
+/*************************************
+* Components
+**************************************/
+
+
+// Model of MSC:
+type component MSC_ST {
+ port MTP3asp_SP_PT CMGW6;
+ //port MTP3asp_PT CMGW6;
+};
+
+
+// Main test component with behaviour SCCPuserA andSCCPuserB
+type component MTC_CT {
+ var SCCP_PAR_Address v_CalledAddress, v_CallingAddress;
+ var integer v_testvalue;
+ var SCCP_CT vc_SCCP_A ;
+ var MSC_SCCP_MTP3_parameters v_BootA;
+ var SCCP_PAR_Connection_Id v_cid_A ;
+
+ port SCCPasp_PT A_PORT; //SCCPuserA
+}
+
+function initBootParams() runs on MTC_CT
+{
+ v_BootA :=
+ { sio:=
+ { ni:= substr(oct2bit(tsp_SIO),0,2),
+ prio:= substr(oct2bit(tsp_SIO),2,2),
+ si:= substr(oct2bit(tsp_SIO),4,4)
+ },
+ opc:=tsp_own_SPC,
+ dpc:=tsp_remote_SPC,
+ sls:=tsp_SLS,
+ sccp_serviceType:=tsp_sccp_serviceType,
+ ssn:= tsp_SSN
+ };
+ return;
+} //initBootParams
+
+function init() runs on MTC_CT //system MSC_ST
+{
+ initBootParams();
+ log("v_BootA:",v_BootA);
+
+ // Protocol Stack A creation & connections:
+ vc_SCCP_A:=SCCP_CT.create;
+ map(vc_SCCP_A:MTP3_SCCP_PORT,system:CMGW6);
+ connect(self:A_PORT,vc_SCCP_A:SCCP_SP_PORT);
+
+ vc_SCCP_A.start( SCCPStart( v_BootA ) ); // Bootparameters
+
+
+ log( "init() is done");
+
+}// init
+
+function terminate( ) runs on MTC_CT //system MSC_ST
+{
+ log( "termitate() started");
+ /*while( all component.running != true )
+ {
+ //waits
+ }*/
+ all component.stop;
+ unmap(vc_SCCP_A:MTP3_SCCP_PORT,system:CMGW6);
+ disconnect(self:A_PORT,vc_SCCP_A:SCCP_SP_PORT);
+
+ log(" all components stopped");
+ self.stop;
+} //terminate
+
+// function getOddEven returns '0'
+// if even number of dec digit can be found in GT see Q.713
+function getOddEven( in hexstring pl_GT) return bitstring
+{
+ return int2bit( (lengthof(pl_GT) mod 2) ,1);
+}
+
+function getOddEven_ansi( in hexstring pl_GT) return bitstring
+{
+ if( (lengthof(pl_GT) mod 2) == 0 ) { return '0010'B;} //even
+ else { return '0001'B;} //odd
+}
+
+//******************************************************************
+//function setAddresses_gti0001() runs on MTC_CT
+// Sets CalledAddress and CallingAddress as a gti001-type address
+// according to the cfg file.
+//******************************************************************
+
+function setAddresses_gti0001() runs on MTC_CT
+{
+ if( (tsp_sccp_serviceType == "mtp3_itu") or
+ (tsp_sccp_serviceType == "mtp3b_itu") or
+ (tsp_sccp_serviceType == "mtp3_ttc") or
+ (tsp_sccp_serviceType == "mtp3b_ttc")
+ ) {
+ v_CalledAddress :={
+ addressIndicator := {
+ pointCodeIndic := '1'B,
+ ssnIndicator := '1'B,
+ globalTitleIndic := '0001'B,
+ routingIndicator := '0'B
+ },//addressIndicator
+ signPointCode := SCCP_SPC_int2bit(tsp_remote_SPC, tsp_sccp_serviceType, tsp_SIO), // see SCCP.ttcn
+ subsystemNumber :