make MTP3asp_PortType work without MTP3asp_PT.cc/hh

.. the latter depends on some third-party external library/code,
so let's make sure we can build it without that in the context of
a pure SIGTRAN stack.

Change-Id: I7f089c9cb1c0ccdc2c85f506fd8b48e0577ae1e5
Signed-off-by: Harald Welte <laforge@gnumonks.org>
diff --git a/src/MTP3asp_PT.cc b/src/MTP3asp_PT.cc
deleted file mode 100644
index 220dfdd..0000000
--- a/src/MTP3asp_PT.cc
+++ /dev/null
@@ -1,2951 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//
-// Copyright (c) 2000-2019 Ericsson Telecom AB
-//
-// All rights reserved. This program and the accompanying materials
-// are made available under the terms of the Eclipse Public License v2.0
-// which accompanies this distribution, and is available at
-// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
-///////////////////////////////////////////////////////////////////////////////
-//
-//  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:          R12A
-//  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/src/MTP3asp_PT.hh b/src/MTP3asp_PT.hh
deleted file mode 100644
index 1e5fdd7..0000000
--- a/src/MTP3asp_PT.hh
+++ /dev/null
@@ -1,248 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//
-// Copyright (c) 2000-2019 Ericsson Telecom AB
-//
-// All rights reserved. This program and the accompanying materials
-// are made available under the terms of the Eclipse Public License v2.0
-// which accompanies this distribution, and is available at
-// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
-///////////////////////////////////////////////////////////////////////////////
-//
-//  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:          R12A
-//  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/src/MTP3asp_PortType.ttcn b/src/MTP3asp_PortType.ttcn
index 291ed8f..1bb2cc0 100644
--- a/src/MTP3asp_PortType.ttcn
+++ b/src/MTP3asp_PortType.ttcn
@@ -32,7 +32,7 @@
       in  ASP_MTP3_RESUME;
       in  ASP_MTP3_STATUS;
       out ASP_MTP3_TRANSFERreq;
-     } with {extension "provider"}
+     } with {extension "provider internal"}
 
     // MTP3 port type used by the component up to the MTP3 SAP
     // (e.g. the distribution component)
@@ -43,18 +43,4 @@
      }
       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