diff options
94 files changed, 28239 insertions, 0 deletions
diff --git a/COMMON/ProtocolModules_Common.tpd b/COMMON/ProtocolModules_Common.tpd new file mode 100644 index 00000000..f861d7b4 --- /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 00000000..615d8188 --- /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 00000000..bd2dc54e --- /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 00000000..0685484c --- /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 00000000..90214d52 --- /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 00000000..911e1a5a --- /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 00000000..64157a04 --- /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 00000000..6432e533 --- /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 00000000..99f570ad --- /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 00000000..c6729023 --- /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 00000000..eb68bfba --- /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 00000000..d79d8327 --- /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 00000000..6d1b3f35 --- /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 00000000..ecb6c036 --- /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 00000000..f3f7144d --- /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 00000000..de200f7a --- /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 00000000..354ebf3f --- /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 00000000..bf12ab9e --- /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 00000000..4c1e86af --- /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 00000000..ca43cb34 --- /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 00000000..88f10839 --- /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 00000000..9f03c54e --- /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 00000000..ffc0aeb0 --- /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 00000000..2b931e95 --- /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 00000000..e37473f5 --- /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 00000000..4394e347 --- /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 00000000..71876a06 --- /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 00000000..9533515d --- /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 00000000..7a4a7e9b --- /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 00000000..bc2b89ee --- /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 00000000..37bab8f0 --- /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 00000000..340f24ff --- /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 00000000..86b7a83e --- /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 00000000..e96f4201 --- /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 00000000..53b19d35 --- /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 00000000..1c842503 --- /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 00000000..35b3e09a --- /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 Binary files differnew file mode 100644 index 00000000..b6cf46f1 --- /dev/null +++ b/MTP3asp_CNL113337/doc/MTP3asp_CNL113337_FS.pdf diff --git a/MTP3asp_CNL113337/doc/MTP3asp_CNL113337_PRI.pdf b/MTP3asp_CNL113337/doc/MTP3asp_CNL113337_PRI.pdf Binary files differnew file mode 100644 index 00000000..4e8b25c6 --- /dev/null +++ b/MTP3asp_CNL113337/doc/MTP3asp_CNL113337_PRI.pdf diff --git a/MTP3asp_CNL113337/doc/MTP3asp_CNL113337_UG.pdf b/MTP3asp_CNL113337/doc/MTP3asp_CNL113337_UG.pdf Binary files differnew file mode 100644 index 00000000..0c6b3d78 --- /dev/null +++ b/MTP3asp_CNL113337/doc/MTP3asp_CNL113337_UG.pdf diff --git a/MTP3asp_CNL113337/src/MTP3asp_EncDec.cc b/MTP3asp_CNL113337/src/MTP3asp_EncDec.cc new file mode 100644 index 00000000..394d7269 --- /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 00000000..37bab8f0 --- /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 00000000..340f24ff --- /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 00000000..7c5a06b4 --- /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 00000000..e96f4201 --- /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 00000000..31e51537 --- /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 00000000..354ebf3f --- /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 00000000..44d08bbf --- /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 00000000..30dfc24c --- /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 00000000..19948640 --- /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 00000000..9f03c54e --- /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 00000000..4e764a32 --- /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 00000000..b8b30219 --- /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 00000000..fae96059 --- /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 00000000..aabd0d40 --- /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 00000000..ae1c4724 --- /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 00000000..0f8ba47c --- /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 := tsp_SSN, + globalTitle := { + gti0001:= { + natureOfAddress := '0000011'B, + oddeven := getOddEven( tsp_remote_GT ), + globalTitleAddress := tsp_remote_GT + } + }//globalTitle + } // v_CalledAddress + + v_CallingAddress :={ + addressIndicator := { + pointCodeIndic := '1'B, + ssnIndicator := '1'B, + globalTitleIndic := '0001'B, + routingIndicator := '0'B + },//addressIndicator + signPointCode := SCCP_SPC_int2bit(tsp_own_SPC, tsp_sccp_serviceType, tsp_SIO), // see SCCP.ttcn + subsystemNumber := tsp_SSN, + globalTitle:= { + gti0001 := { + natureOfAddress := '0000011'B, + oddeven := getOddEven( tsp_own_GT ), + globalTitleAddress := tsp_own_GT + } + }//globalTitle + } // v_CallingAddress + + } else if( + (tsp_sccp_serviceType == "mtp3_ansi") or + (tsp_sccp_serviceType == "mtp3b_ansi") + ) { + + 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 := tsp_SSN, + globalTitle := { + gti0011:= { + translationType := int2oct(7,1), + encodingScheme := getOddEven_ansi( tsp_remote_GT ), + numberingPlan := '0111'B, //ISDN/mobile numbering plan, see T1.112.3-2001/3.4.2.3.1 + globalTitleAddress:= tsp_remote_GT + } + }//globalTitle + } // v_CalledAddress + + v_CallingAddress :={ + 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 := tsp_SSN, + globalTitle := { + gti0011:= { + translationType := int2oct(7,1), + encodingScheme := getOddEven_ansi( tsp_own_GT ), + numberingPlan := '0111'B, //ISDN/mobile numbering plan, see T1.112.3-2001/3.4.2.3.1 + globalTitleAddress:= tsp_own_GT + } + }//globalTitle + } // v_CallingAddress + }//if + +}//setAddresses_gti001 + +function f_SendAndReceive1N_UNITDATA(in octetstring pl_userdata) runs on MTC_CT +{ + var ASP_SCCP_N_UNITDATA_ind vl_N_UNITDATA_ind; + timer TL_timer:= 120.0; + TL_timer.start; + A_PORT.send( t_ASP_N_UNITDATA_req( v_CalledAddress, + v_CallingAddress, + '00000001'B, //sequence control + '00000001'B, //return option + pl_userdata, + omit ) ); + alt { + [] A_PORT.receive( tr_ASP_N_UNITDATA_ind ) -> value vl_N_UNITDATA_ind + { + + if( (vl_N_UNITDATA_ind.calledAddress == v_CalledAddress ) and + (vl_N_UNITDATA_ind.callingAddress == v_CallingAddress) and + (vl_N_UNITDATA_ind.userData == pl_userdata) ) + { + log("Correct CalledAddress, CallingAddress and userData received, data are correct"); + setverdict(pass); + } + else + { + log("Some data corrupted"); + setverdict( fail ); + } + }; + [] TL_timer.timeout + { + setverdict( fail ); + log("Timeout...."); + }; |