IPA_Emulation: Make dependencies to RSL/MGCP/SCCP/GSUP conditional

Let's use the preprocessor to avoid IPA_Emulation pulling *all*
dependencies into each and any of our projects.  The code readability
suffers a bit from the many #ifdefs, but compilation speed increases
if we don't have to pull in all those (recursive) dependencies.

After all, a BTS test case will never need SCCP, GSUP or MGCP.

Change-Id: Ic0231adbd2171214de133d26b3fbf36130ee8aa0
This commit is contained in:
Harald Welte 2018-02-20 15:49:30 +01:00
parent 9abd1289ec
commit df277258f1
16 changed files with 130 additions and 267 deletions

View File

@ -55,5 +55,5 @@ FILES="RTP_EncDec.cc RTP_Types.ttcn"
gen_links $DIR $FILES
DIR=../library
FILES="General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcn L3_Templates.ttcn BSSMAP_Templates.ttcn BSSMAP_Emulation.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_CodecPort_CtrlFunctDef.cc RSL_Types.ttcn Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn BSSAP_CodecPort.ttcn GSUP_Types.ttcn"
FILES="General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcnpp L3_Templates.ttcn BSSMAP_Templates.ttcn BSSMAP_Emulation.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_CodecPort_CtrlFunctDef.cc Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn BSSAP_CodecPort.ttcn"
gen_links $DIR $FILES

View File

@ -2,6 +2,8 @@
MAIN=IPA_Test.ttcn
FILES="*.ttcn SCCP_EncDec.cc IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc RTP_EncDec.cc SDP_EncDec.cc *.c MGCP_CodecPort_CtrlFunctDef.cc"
FILES="*.ttcn *.ttcnpp SCCP_EncDec.cc IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc RTP_EncDec.cc SDP_EncDec.cc *.c MGCP_CodecPort_CtrlFunctDef.cc"
export CPPFLAGS_TTCN3="-DIPA_EMULATION_SCCP -DIPA_EMULATION_MGCP"
../regen-makefile.sh $MAIN $FILES

View File

@ -80,5 +80,5 @@ FILES="TELNETasp_PT.cc TELNETasp_PT.hh TELNETasp_PortType.ttcn"
gen_links $DIR $FILES
DIR=../library
FILES="General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn Osmocom_VTY_Functions.ttcn Native_Functions.ttcn Native_FunctionDefs.cc IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcn L3_Templates.ttcn BSSMAP_Templates.ttcn BSSMAP_Emulation.ttcn RLCMAC_CSN1_Types.ttcn GSM_RR_Types.ttcn RSL_Types.ttcn RSL_Emulation.ttcn MGCP_Emulation.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_CodecPort_CtrlFunctDef.cc BSSAP_CodecPort.ttcn BSSAP_Adapter.ttcn Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn RTP_CodecPort.ttcn RTP_CodecPort_CtrlFunct.ttcn RTP_CodecPort_CtrlFunctDef.cc RTP_Emulation.ttcn IuUP_Types.ttcn IuUP_EncDec.cc IuUP_Emulation.ttcn GSUP_Types.ttcn"
FILES="General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn Osmocom_VTY_Functions.ttcn Native_Functions.ttcn Native_FunctionDefs.cc IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcnpp L3_Templates.ttcn BSSMAP_Templates.ttcn BSSMAP_Emulation.ttcn RLCMAC_CSN1_Types.ttcn GSM_RR_Types.ttcn RSL_Types.ttcn RSL_Emulation.ttcn MGCP_Emulation.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_CodecPort_CtrlFunctDef.cc BSSAP_CodecPort.ttcn BSSAP_Adapter.ttcn Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn RTP_CodecPort.ttcn RTP_CodecPort_CtrlFunct.ttcn RTP_CodecPort_CtrlFunctDef.cc RTP_Emulation.ttcn IuUP_Types.ttcn IuUP_EncDec.cc IuUP_Emulation.ttcn "
gen_links $DIR $FILES

View File

@ -2,6 +2,8 @@
MAIN=BSC_Tests.ttcn
FILES="*.ttcn IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc SCTPasp_PT.cc RTP_EncDec.cc SDP_EncDec.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc IuUP_EncDec.cc Native_FunctionDefs.cc TELNETasp_PT.cc *.c"
FILES="*.ttcn *.ttcnpp IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc SCTPasp_PT.cc RTP_EncDec.cc SDP_EncDec.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc IuUP_EncDec.cc Native_FunctionDefs.cc TELNETasp_PT.cc *.c"
export CPPFLAGS_TTCN3="-DIPA_EMULATION_RSL -DIPA_EMULATION_MGCP"
../regen-makefile.sh $MAIN $FILES

View File

@ -1,193 +0,0 @@
# This Makefile was generated by the Makefile Generator
# of the TTCN-3 Test Executor version CRL 113 200/6 R3A
# for Harald Welte (laforge@nataraja) on Thu Dec 28 17:35:00 2017
# Copyright (c) 2000-2017 Ericsson Telecom AB
# The following make commands are available:
# - make, make all Builds the executable test suite.
# - make archive Archives all source files.
# - make check Checks the semantics of TTCN-3 and ASN.1modules.
# - make port Generates port skeletons.
# - make clean Removes all generated files.
# - make compile Translates TTCN-3 and ASN.1 modules to C++.
# - make dep Creates/updates dependency list.
# - make executable Builds the executable test suite.
# - make library Builds the library archive.
# - make objects Builds the object files without linking the executable.
# - make shared_objects Builds the shared object files without linking the executable.
#
# Set these variables...
#
# The path of your TTCN-3 Test Executor installation:
# Uncomment this line to override the environment variable.
ifndef TTCN3_DIR
TTCN3_DIR = /usr
endif
# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32)
PLATFORM = LINUX
# Your C++ compiler:
# (if you change the platform, you may need to change the compiler)
CXX = g++
# Flags for the C++ preprocessor (and makedepend as well):
CPPFLAGS = -D$(PLATFORM) -DMAKEDEPEND_RUN -I$(TTCN3_DIR)/include -I/usr/include/titan
# Flags for the C++ compiler:
CXXFLAGS = -Wall -fPIC
# Flags for the linker:
LDFLAGS = -L /usr/lib/titan -fPIC
ifeq ($(PLATFORM), WIN32)
# Silence linker warnings.
LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc
endif
# Utility to create library files
AR = ar
ARFLAGS =
# Flags for the TTCN-3 and ASN.1 compiler:
COMPILER_FLAGS = -L
# Execution mode: (either ttcn3 or ttcn3-parallel)
TTCN3_LIB = ttcn3-parallel-dynamic
# The path of your libxml2 installation:
# If you do not have your own one, leave it unchanged.
XMLDIR = $(TTCN3_DIR)
# Directory to store the archived source files:
# Note: you can set any directory except ./archive
ARCHIVE_DIR = backup
#
# You may change these variables. Add your files if necessary...
#
# TTCN-3 modules of this project:
TTCN3_MODULES = GSUP_Test.ttcn GSM_Types.ttcn GSUP_Types.ttcn General_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_Emulation.ttcn IPA_Types.ttcn IPL4asp_Functions.ttcn IPL4asp_PortType.ttcn IPL4asp_Types.ttcn MGCP_CodecPort.ttcn MGCP_Types.ttcn MTP3asp_PortType.ttcn MTP3asp_Types.ttcn Osmocom_CTRL_Types.ttcn Osmocom_Types.ttcn RSL_Types.ttcn SDP_Types.ttcn Socket_API_Definitions.ttcn TCCConversion_Functions.ttcn TCCInterface_Functions.ttcn
# ASN.1 modules of this project:
ASN1_MODULES =
# C++ source & header files generated from the TTCN-3 & ASN.1 modules of
# this project:
GENERATED_SOURCES = GSUP_Test.cc GSM_Types.cc GSUP_Types.cc General_Types.cc IPA_CodecPort.cc IPA_CodecPort_CtrlFunct.cc IPA_Emulation.cc IPA_Types.cc IPL4asp_Functions.cc IPL4asp_PortType.cc IPL4asp_Types.cc MGCP_CodecPort.cc MGCP_Types.cc MTP3asp_PortType.cc MTP3asp_Types.cc Osmocom_CTRL_Types.cc Osmocom_Types.cc RSL_Types.cc SDP_Types.cc Socket_API_Definitions.cc TCCConversion_Functions.cc TCCInterface_Functions.cc
GENERATED_HEADERS = GSUP_Test.hh GSM_Types.hh GSUP_Types.hh General_Types.hh IPA_CodecPort.hh IPA_CodecPort_CtrlFunct.hh IPA_Emulation.hh IPA_Types.hh IPL4asp_Functions.hh IPL4asp_PortType.hh IPL4asp_Types.hh MGCP_CodecPort.hh MGCP_Types.hh MTP3asp_PortType.hh MTP3asp_Types.hh Osmocom_CTRL_Types.hh Osmocom_Types.hh RSL_Types.hh SDP_Types.hh Socket_API_Definitions.hh TCCConversion_Functions.hh TCCInterface_Functions.hh
# C/C++ Source & header files of Test Ports, external functions and
# other modules:
USER_SOURCES = IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc SDP_EncDec.cc MGCP_CodecPort_CtrlFunctDef.cc SDP_parse_.tab.c lex.SDP_parse_.c
USER_HEADERS = IPL4asp_PT.hh SDP_parse_.tab.h
# Shared object files of this project:
SHARED_OBJECTS = GSUP_Test.so GSM_Types.so GSUP_Types.so General_Types.so IPA_CodecPort.so IPA_CodecPort_CtrlFunct.so IPA_Emulation.so IPA_Types.so IPL4asp_Functions.so IPL4asp_PortType.so IPL4asp_Types.so MGCP_CodecPort.so MGCP_Types.so MTP3asp_PortType.so MTP3asp_Types.so Osmocom_CTRL_Types.so Osmocom_Types.so RSL_Types.so SDP_Types.so Socket_API_Definitions.so TCCConversion_Functions.so TCCInterface_Functions.so IPA_CodecPort_CtrlFunctDef.so IPL4asp_PT.so IPL4asp_discovery.so TCCConversion.so TCCInterface.so SDP_EncDec.so MGCP_CodecPort_CtrlFunctDef.so SDP_parse_.tab.so lex.SDP_parse_.so
# Object files of this project that are needed for the executable test suite:
OBJECTS = $(GENERATED_OBJECTS) $(USER_OBJECTS)
GENERATED_OBJECTS = GSUP_Test.o GSM_Types.o GSUP_Types.o General_Types.o IPA_CodecPort.o IPA_CodecPort_CtrlFunct.o IPA_Emulation.o IPA_Types.o IPL4asp_Functions.o IPL4asp_PortType.o IPL4asp_Types.o MGCP_CodecPort.o MGCP_Types.o MTP3asp_PortType.o MTP3asp_Types.o Osmocom_CTRL_Types.o Osmocom_Types.o RSL_Types.o SDP_Types.o Socket_API_Definitions.o TCCConversion_Functions.o TCCInterface_Functions.o
USER_OBJECTS = IPA_CodecPort_CtrlFunctDef.o IPL4asp_PT.o IPL4asp_discovery.o TCCConversion.o TCCInterface.o SDP_EncDec.o MGCP_CodecPort_CtrlFunctDef.o SDP_parse_.tab.o lex.SDP_parse_.o
# Other files of the project (Makefile, configuration files, etc.)
# that will be added to the archived source files:
OTHER_FILES = Makefile
# The name of the executable test suite:
EXECUTABLE = GSUP_Test
LIBRARY = lib$(EXECUTABLE).so
TARGET = $(EXECUTABLE)
#
# Do not modify these unless you know what you are doing...
# Platform specific additional libraries:
#
SOLARIS_LIBS = -lsocket -lnsl -lxml2
SOLARIS8_LIBS = -lsocket -lnsl -lxml2
LINUX_LIBS = -lxml2
FREEBSD_LIBS = -lxml2
WIN32_LIBS = -lxml2
#
# Rules for building the executable...
#
all: $(TARGET) ;
shared_objects: $(SHARED_OBJECTS) ;
executable: $(EXECUTABLE) ;
library: $(LIBRARY) ;
objects: $(OBJECTS) compile;
$(EXECUTABLE): $(SHARED_OBJECTS)
if $(CXX) $(LDFLAGS) -o $@ -Wl,--no-as-needed $(SHARED_OBJECTS) \
-L$(TTCN3_DIR)/lib -l$(TTCN3_LIB) \
-L$(OPENSSL_DIR)/lib -lcrypto \
-L$(XMLDIR)/lib $($(PLATFORM)_LIBS); \
then : ; else $(TTCN3_DIR)/bin/titanver $(OBJECTS); exit 1; fi
$(LIBRARY): $(OBJECTS)
$(CXX) -shared -o $@ $(OBJECTS)
.cc.o .c.o:
$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $<
%.so: %.o
$(CXX) -shared -o $@ $<
$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile
@if [ ! -f $@ ]; then rm -f compile; $(MAKE) compile; fi
check: $(TTCN3_MODULES) $(ASN1_MODULES)
$(TTCN3_DIR)/bin/ttcn3_compiler -s $(COMPILER_FLAGS) \
$(TTCN3_MODULES) $(PREPROCESSED_TTCN3_MODULES) $(ASN1_MODULES)
port: $(TTCN3_MODULES) $(ASN1_MODULES)
$(TTCN3_DIR)/bin/ttcn3_compiler -t $(COMPILER_FLAGS) \
$(TTCN3_MODULES) $(PREPROCESSED_TTCN3_MODULES) $(ASN1_MODULES)
compile: $(TTCN3_MODULES) $(ASN1_MODULES)
$(TTCN3_DIR)/bin/ttcn3_compiler $(COMPILER_FLAGS) \
$(TTCN3_MODULES) $(ASN1_MODULES) - $?
touch $@
clean:
-rm -f $(EXECUTABLE) $(LIBRARY) $(OBJECTS) $(GENERATED_HEADERS) \
$(GENERATED_SOURCES) $(SHARED_OBJECTS) compile \
tags *.log
dep: $(GENERATED_SOURCES) $(USER_SOURCES) ;
makedepend $(CPPFLAGS) -DMAKEDEPEND_RUN $(GENERATED_SOURCES) $(USER_SOURCES)
archive:
mkdir -p $(ARCHIVE_DIR)
tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \
$(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \
| gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz
diag:
$(TTCN3_DIR)/bin/ttcn3_compiler -v 2>&1
$(TTCN3_DIR)/bin/mctr_cli -v 2>&1
$(CXX) -v 2>&1
@echo TTCN3_DIR=$(TTCN3_DIR)
@echo OPENSSL_DIR=$(OPENSSL_DIR)
@echo XMLDIR=$(XMLDIR)
@echo PLATFORM=$(PLATFORM)
#
# Add your rules here if necessary...
#

View File

@ -24,15 +24,7 @@ DIR=$BASEDIR/titan.TestPorts.IPL4asp/src
FILES="IPL4asp_Functions.ttcn IPL4asp_PT.cc IPL4asp_PT.hh IPL4asp_PortType.ttcn IPL4asp_Types.ttcn IPL4asp_discovery.cc IPL4asp_protocol_L234.hh"
gen_links $DIR $FILES
DIR=$BASEDIR/titan.ProtocolModules.SDP/src
FILES="SDP_EncDec.cc SDP_Types.ttcn SDP_parse_.tab.c SDP_parse_.tab.h SDP_parse_parser.h SDP_parser.l
SDP_parser.y lex.SDP_parse_.c"
gen_links $DIR $FILES
DIR=../MTP3asp_CNL113337/src
FILES="MTP3asp_PortType.ttcn MTP3asp_Types.ttcn"
gen_links $DIR $FILES
DIR=../library
FILES="General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcn RSL_Types.ttcn MGCP_Types.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunctDef.cc Osmocom_CTRL_Types.ttcn GSUP_Types.ttcn"
FILES="General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn IPA_Types.ttcn IPA_CodecPort.ttcn
IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcnpp Osmocom_CTRL_Types.ttcn GSUP_Types.ttcn"
gen_links $DIR $FILES

View File

@ -2,6 +2,8 @@
MAIN="GSUP_Test.ttcn"
FILES="*.ttcn IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc SDP_EncDec.cc MGCP_CodecPort_CtrlFunctDef.cc *.c"
FILES="*.ttcn *.ttcnpp IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc"
export CPPFLAGS_TTCN3="-DIPA_EMULATION_GSUP"
../regen-makefile.sh $MAIN $FILES

View File

@ -20,13 +20,24 @@ import from IPA_CodecPort all;
import from IPA_CodecPort_CtrlFunct all;
import from IPL4asp_Types all;
import from IPL4asp_PortType all;
import from MTP3asp_Types all;
import from MTP3asp_PortType all;
import from RSL_Types all;
import from Socket_API_Definitions all;
#ifdef IPA_EMULATION_SCCP
import from MTP3asp_Types all;
import from MTP3asp_PortType all;
#endif
#ifdef IPA_EMULATION_RSL
import from RSL_Types all;
#endif
#ifdef IPA_EMULATION_MGCP
import from MGCP_Types all;
#endif
#ifdef IPA_EMULATION_GSUP
import from GSUP_Types all;
#endif
import from Osmocom_CTRL_Types all;
@ -69,6 +80,7 @@ template ASP_IPA_Unitdata t_ASP_IPA_UD(IpaStreamId sid, octetstring pl,
payload := pl
}
#ifdef IPA_EMULATION_RSL
/* like ASP_IPA_Unitdata, but with RSL_Message abstract type instead of octetstring */
type record ASP_RSL_Unitdata {
IpaStreamId streamId,
@ -85,49 +97,63 @@ template ASP_RSL_Unitdata tr_ASP_RSL_UD(IpaStreamId sid, template RSL_Message rs
rsl := rsl
}
template IpaStreamId t_IpaSidRSL := ( IPAC_PROTO_RSL_TRX0, IPAC_PROTO_RSL_TRX1,
IPAC_PROTO_RSL_TRX2, IPAC_PROTO_RSL_TRX3 );
#endif
/* Client port for general IPA messages, not further decoded */
type port IPA_SP_PT message {
inout ASP_IPA_Unitdata, ASP_IPA_Event;
} with { extension "internal" }
#ifdef IPA_EMULATION_MGCP
/* Client port for MGCP inside IPA */
type port IPA_MGCP_PT message {
inout MgcpCommand, MgcpResponse;
} with { extension "internal" }
#endif
#ifdef IPA_EMULATION_RSL
/* Client port for A-bis RSL inside IPA */
type port IPA_RSL_PT message {
inout ASP_RSL_Unitdata, ASP_IPA_Event;
} with { extension "internal" }
#endif
/* Client port for CTRL inside IPA */
type port IPA_CTRL_PT message {
inout CtrlMessage, ASP_IPA_Event;
} with { extension "internal" }
#ifdef IPA_EMULATION_GSUP
/* Client port for CTRL inside IPA */
type port IPA_GSUP_PT message {
inout GSUP_PDU, ASP_IPA_Event;
} with { extension "internal" }
#endif
type component IPA_Emulation_CT {
/* down-facing port to IPA codec port */
port IPA_CODEC_PT IPA_PORT;
#ifdef IPA_EMULATION_SCCP
/* up-facing port to SCCP */
port MTP3asp_SP_PT MTP3_SP_PORT;
#endif
#ifdef IPA_EMULATION_MGCP
/* up-facing port for MGCP */
port IPA_MGCP_PT IPA_MGCP_PORT;
#endif
#ifdef IPA_EMULATION_RSL
/* up-facing port for RSL */
port IPA_RSL_PT IPA_RSL_PORT;
#endif
/* up-facing port for CTRL */
port IPA_CTRL_PT IPA_CTRL_PORT;
#ifdef IPA_EMULATION_GSUP
/* up-facing port for GSUP */
port IPA_GSUP_PT IPA_GSUP_PORT;
#endif
/* up-facing port for other streams */
port IPA_SP_PT IPA_SP_PORT;
@ -190,6 +216,7 @@ function f_bind(charstring local_host, IPL4asp_Types.PortNumber local_port,
g_is_bsc_mgw := false;
}
#ifdef IPA_EMULATION_SCCP
template ASP_MTP3_TRANSFERind ts_MTP3_XFER_ind(integer opc, octetstring data) := {
sio := { '10'B, '00'B, '0011'B },
opc := opc,
@ -197,6 +224,7 @@ template ASP_MTP3_TRANSFERind ts_MTP3_XFER_ind(integer opc, octetstring data) :=
sls := 0,
data := data
}
#endif
private template IpaCcmRespPart t_IdRespPart(IpaCcmIdTag tag, charstring payload) := {
@ -206,15 +234,19 @@ private template IpaCcmRespPart t_IdRespPart(IpaCcmIdTag tag, charstring payload
}
private function f_send_IPA_EVT(template ASP_IPA_Event evt) runs on IPA_Emulation_CT {
#ifdef IPA_EMULATION_RSL
if (IPA_RSL_PORT.checkstate("Connected")) {
IPA_RSL_PORT.send(evt);
}
#endif
if (IPA_CTRL_PORT.checkstate("Connected")) {
IPA_CTRL_PORT.send(evt);
}
#ifdef IPA_EMULATION_GSUP
if (IPA_GSUP_PORT.checkstate("Connected")) {
IPA_GSUP_PORT.send(evt);
}
#endif
/* FIXME: to other ports */
}
@ -331,11 +363,13 @@ private function f_from_asp(IPL4asp_Types.ConnectionId connId, ASP_IPA_Unitdata
return ret;
}
#ifdef IPA_EMULATION_RSL
private function f_from_rsl(IPL4asp_Types.ConnectionId connId, ASP_RSL_Unitdata rsl_tx) return IPA_Send {
var octetstring payload := enc_RSL_Message(rsl_tx.rsl);
var IPA_Send ret := valueof(t_IPA_Send(connId, rsl_tx.streamId, payload));
return ret;
}
#endif
/* main function to use for a client-side IPA implementation */
function main_client(charstring remote_host, IPL4asp_Types.PortNumber remote_port,
@ -354,6 +388,20 @@ function main_server(charstring local_host, IPL4asp_Types.PortNumber local_port)
ScanEvents();
}
private function f_ctrl_to_user(octetstring msg) runs on IPA_Emulation_CT {
var charstring msg_ch := oct2char(msg);
IPA_CTRL_PORT.send(dec_CtrlMessage(msg_ch));
}
#ifdef IPA_EMULATION_GSUP
private function f_gsup_to_user(octetstring msg) runs on IPA_Emulation_CT {
var GSUP_PDU gsup := dec_GSUP_PDU(msg);
f_gsup_postprocess_decoded(gsup);
IPA_GSUP_PORT.send(gsup);
}
#endif
#ifdef IPA_EMULATION_MGCP
private function f_mgcp_to_user(octetstring msg) runs on IPA_Emulation_CT {
var charstring msg_ch := oct2char(msg);
if (g_is_bsc_mgw) {
@ -365,17 +413,6 @@ private function f_mgcp_to_user(octetstring msg) runs on IPA_Emulation_CT {
}
}
private function f_ctrl_to_user(octetstring msg) runs on IPA_Emulation_CT {
var charstring msg_ch := oct2char(msg);
IPA_CTRL_PORT.send(dec_CtrlMessage(msg_ch));
}
private function f_gsup_to_user(octetstring msg) runs on IPA_Emulation_CT {
var GSUP_PDU gsup := dec_GSUP_PDU(msg);
f_gsup_postprocess_decoded(gsup);
IPA_GSUP_PORT.send(gsup);
}
private function f_mgcp_to_ud(octetstring payload) runs on IPA_Emulation_CT return ASP_IPA_Unitdata {
if (mp_ipa_mgcp_uses_osmo_ext) {
return valueof(t_ASP_IPA_UD(IPAC_PROTO_MGCP_OLD, payload));
@ -383,20 +420,29 @@ private function f_mgcp_to_ud(octetstring payload) runs on IPA_Emulation_CT retu
return valueof(t_ASP_IPA_UD(IPAC_PROTO_OSMO, payload, IPAC_PROTO_EXT_MGCP));
}
}
#endif
/* main loop function for both client and server. 'thread' of the component */
private function ScanEvents() runs on IPA_Emulation_CT {
var IPA_RecvFrom ipa_rx;
var ASP_IPA_Unitdata ipa_ud;
var ASP_MTP3_TRANSFERreq mtp_req;
var ASP_Event asp_evt;
var Socket_API_Definitions.PortEvent port_evt;
var octetstring payload;
var CtrlMessage ctrl_msg;
var ASP_IPA_Unitdata ipa_ud;
#ifdef IPA_EMULATION_SCCP
var ASP_MTP3_TRANSFERreq mtp_req;
#endif
#ifdef IPA_EMULATION_MGCP
var MgcpCommand mgcp_cmd;
var MgcpResponse mgcp_rsp;
var CtrlMessage ctrl_msg;
#endif
#ifdef IPA_EMULATION_GSUP
var GSUP_PDU gsup_msg;
var octetstring payload;
#endif
#ifdef IPA_EMULATION_RSL
var ASP_RSL_Unitdata rsl;
#endif
/* Set function for dissecting the binary */
var f_IPL4_getMsgLen vl_f := refers(f_IPL4_fixedMsgLen);
@ -411,31 +457,49 @@ private function ScanEvents() runs on IPA_Emulation_CT {
var PDU_IPA_CCM ccm := dec_PDU_IPA_CCM(ipa_rx.msg);
log("CCM Rx:", ccm);
f_ccm_rx(ccm);
} case (IPAC_PROTO_SCCP) {
}
#ifdef IPA_EMULATION_SCCP
case (IPAC_PROTO_SCCP) {
var ASP_MTP3_TRANSFERind mtp;
mtp := valueof(ts_MTP3_XFER_ind(0, ipa_rx.msg));
MTP3_SP_PORT.send(mtp);
} case (IPAC_PROTO_MGCP_OLD) {
}
#endif
#ifdef IPA_EMULATION_MGCP
case (IPAC_PROTO_MGCP_OLD) {
f_mgcp_to_user(ipa_rx.msg);
} case (t_IpaSidRSL) {
}
#endif
#ifdef IPA_EMULATION_RSL
case (t_IpaSidRSL) {
rsl := {
streamId := ipa_rx.streamId,
rsl := dec_RSL_Message(ipa_rx.msg)
};
IPA_RSL_PORT.send(rsl);
} case (IPAC_PROTO_OSMO) {
}
#endif
case (IPAC_PROTO_OSMO) {
select (ipa_rx.streamIdExt) {
#ifdef IPA_EMULATION_MGCP
case (IPAC_PROTO_EXT_MGCP) {
f_mgcp_to_user(ipa_rx.msg);
} case (IPAC_PROTO_EXT_CTRL) {
}
#endif
case (IPAC_PROTO_EXT_CTRL) {
f_ctrl_to_user(ipa_rx.msg);
} case (IPAC_PROTO_EXT_GSUP) {
}
#ifdef IPA_EMULATION_GSUP
case (IPAC_PROTO_EXT_GSUP) {
f_gsup_to_user(ipa_rx.msg);
} case else {
}
#endif
case else {
IPA_SP_PORT.send(f_to_asp(ipa_rx));
}
}
} case else {
}
case else {
IPA_SP_PORT.send(f_to_asp(ipa_rx));
}
}
@ -465,13 +529,16 @@ private function ScanEvents() runs on IPA_Emulation_CT {
self.stop;
}
#ifdef IPA_EMULATION_SCCP
/* Received SCCP -> down into IPA */
[] MTP3_SP_PORT.receive(ASP_MTP3_TRANSFERreq: ?) -> value mtp_req {
var IPA_Send ipa_tx := valueof(t_IPA_Send(g_ipa_conn_id, IPAC_PROTO_SCCP,
mtp_req.data));
IPA_PORT.send(ipa_tx);
}
#endif
#ifdef IPA_EMULATION_MGCP
/* Received MGCP -> down into IPA */
[] IPA_MGCP_PORT.receive(MgcpCommand:?) -> value mgcp_cmd {
payload := char2oct(enc_MgcpCommand(mgcp_cmd));
@ -483,6 +550,7 @@ private function ScanEvents() runs on IPA_Emulation_CT {
ipa_ud := f_mgcp_to_ud(payload);
IPA_PORT.send(f_from_asp(g_ipa_conn_id, ipa_ud));
}
#endif
[] IPA_CTRL_PORT.receive(CtrlMessage:?) -> value ctrl_msg {
payload := char2oct(enc_CtrlMessage(ctrl_msg));
@ -490,18 +558,21 @@ private function ScanEvents() runs on IPA_Emulation_CT {
IPA_PORT.send(f_from_asp(g_ipa_conn_id, ipa_ud));
}
#ifdef IPA_EMULATION_GSUP
[] IPA_GSUP_PORT.receive(GSUP_PDU:?) -> value gsup_msg {
f_gsup_preprocess_encoded(gsup_msg);
payload := enc_GSUP_PDU(gsup_msg);
ipa_ud := valueof(t_ASP_IPA_UD(IPAC_PROTO_OSMO, payload, IPAC_PROTO_EXT_GSUP));
IPA_PORT.send(f_from_asp(g_ipa_conn_id, ipa_ud));
}
#endif
#ifdef IPA_EMULATION_RSL
/* Received RSL -> down into IPA */
[] IPA_RSL_PORT.receive(ASP_RSL_Unitdata:?) -> value rsl {
IPA_PORT.send(f_from_rsl(g_ipa_conn_id, rsl));
}
#endif
/* Received MISC (OML/CTRL) -> down into IPA */
[] IPA_SP_PORT.receive(ASP_IPA_Unitdata: ?) -> value ipa_ud {

View File

@ -76,9 +76,9 @@ gen_links $DIR $FILES
DIR=../library
FILES="General_Types.ttcn GSM_Types.ttcn Osmocom_Types.ttcn MNCC_Types.ttcn MNCC_EncDec.cc MNCC_CodecPort.ttcn mncc.h MNCC_Emulation.ttcn Osmocom_VTY_Functions.ttcn Native_Functions.ttcn Native_FunctionDefs.cc "
FILES+="IPA_Types.ttcn IPA_Emulation.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc RSL_Types.ttcn GSUP_Types.ttcn GSUP_Emulation.ttcn "
FILES+="IPA_Types.ttcn IPA_Emulation.ttcnpp IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc GSUP_Types.ttcn GSUP_Emulation.ttcn "
FILES+="Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn L3_Templates.ttcn L3_Common.ttcn "
FILES+="BSSMAP_Emulation.ttcn BSSAP_CodecPort.ttcn BSSMAP_Templates.ttcn BSSAP_Adapter.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_Emulation.ttcn IPA_Emulation.ttcn "
FILES+="BSSMAP_Emulation.ttcn BSSAP_CodecPort.ttcn BSSMAP_Templates.ttcn BSSAP_Adapter.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_Emulation.ttcn "
FILES+="RTP_CodecPort.ttcn RTP_CodecPort_CtrlFunctDef.cc "
FILES+="MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunctDef.cc "
gen_links $DIR $FILES

View File

@ -1,5 +1,7 @@
#!/bin/sh
FILES="*.ttcn SCCP_EncDec.cc SCTPasp_PT.cc TCCConversion.cc TCCInterface.cc UD_PT.cc MNCC_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc SDP_EncDec.cc RTP_EncDec.cc IPA_CodecPort_CtrlFunctDef.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc TELNETasp_PT.cc Native_FunctionDefs.cc *.c"
FILES="*.ttcn *.ttcnpp SCCP_EncDec.cc SCTPasp_PT.cc TCCConversion.cc TCCInterface.cc UD_PT.cc MNCC_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc SDP_EncDec.cc RTP_EncDec.cc IPA_CodecPort_CtrlFunctDef.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc TELNETasp_PT.cc Native_FunctionDefs.cc *.c"
export CPPFLAGS_TTCN3="-DIPA_EMULATION_MGCP -DIPA_EMULATION_GSUP"
../regen-makefile.sh MSC_Tests.ttcn $FILES

View File

@ -12,7 +12,7 @@
test -x "$(which ttcn3_makefilegen 2>/dev/null)" || { echo "ERROR: ttcn3_makefilegen not in PATH"; exit 1; }
ttcn3_makefilegen -l -f $*
ttcn3_makefilegen -p -l -f $*
sed -i -e 's/# TTCN3_DIR = /TTCN3_DIR = \/usr/' Makefile
sed -i -e 's/LDFLAGS = /LDFLAGS = -L \/usr\/lib\/titan /' Makefile
#sed -i -e 's/TTCN3_LIB = ttcn3-parallel/TTCN3_LIB = ttcn3/' Makefile
@ -21,6 +21,10 @@ sed -i -e 's/LDFLAGS = /LDFLAGS = -L \/usr\/lib\/titan /' Makefile
# see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=879816 for details
sed -i -e 's/CPPFLAGS = -D$(PLATFORM) -I$(TTCN3_DIR)\/include/CPPFLAGS = -D$(PLATFORM) -DMAKEDEPEND_RUN -I$(TTCN3_DIR)\/include -I\/usr\/include\/titan/' Makefile
if [ "x$CPPFLAGS_TTCN3" != "x" ]; then
sed -i -e 's/CPPFLAGS_TTCN3 =/CPPFLAGS_TTCN3 = '"$CPPFLAGS_TTCN3"'/' Makefile
fi
# for TITAN 6.3.0
if cat /etc/issue | grep "Arch Linux" >/dev/null 2>&1; then
sed -i -e 's/TTCN3_DIR = $/TTCN3_DIR = \/usr\/ttcn3/' Makefile

View File

@ -5,7 +5,6 @@ import from Osmocom_Types all;
import from GSM_Types all;
import from IPL4asp_Types all;
import from IPL4asp_PortType all;
import from MTP3asp_PortType all;
import from BSSAP_Types all;
//import from BSSAP_Adapter all;
@ -25,8 +24,6 @@ import from GSM_RR_Types all;
type component IPA_selftest_CT {
/* upper end of IPA_Emulation */
port MTP3asp_PT IPA_MTP3;
port IPA_MGCP_PT IPA_MGCP;
port IPA_RSL_PT IPA_RSL;
port IPA_CTRL_PT IPA_CTRL;
port IPA_SP_PT IPA_SP;
@ -42,10 +39,8 @@ type component IPA_selftest_CT {
function f_ipa_srv_init() runs on IPA_selftest_CT {
vc_IPA := IPA_Emulation_CT.create("IPA_Emulation");
map(vc_IPA:IPA_PORT, system: IPA_CODEC_PT);
connect(vc_IPA:IPA_MGCP_PORT, self:IPA_MGCP);
connect(vc_IPA:IPA_RSL_PORT, self:IPA_RSL);
connect(vc_IPA:IPA_CTRL_PORT, self:IPA_CTRL);
connect(vc_IPA:MTP3_SP_PORT, self:IPA_MTP3);
vc_IPA.start(IPA_Emulation.main_server("127.0.0.1", 55555));
}

View File

@ -46,11 +46,6 @@ DIR=$BASEDIR/titan.ProtocolModules.MobileL3_v13.4.0/src
FILES="MobileL3_CC_Types.ttcn MobileL3_CommonIE_Types.ttcn MobileL3_GMM_SM_Types.ttcn MobileL3_MM_Types.ttcn MobileL3_RRM_Types.ttcn MobileL3_SMS_Types.ttcn MobileL3_SS_Types.ttcn MobileL3_Types.ttcn"
gen_links $DIR $FILES
DIR=$BASEDIR/titan.ProtocolModules.SDP/src
FILES="SDP_EncDec.cc SDP_Types.ttcn SDP_parse_.tab.c SDP_parse_.tab.h SDP_parse_parser.h SDP_parser.l
SDP_parser.y lex.SDP_parse_.c"
gen_links $DIR $FILES
DIR=../library
FILES="General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcn L3_Templates.ttcn BSSMAP_Templates.ttcn RLCMAC_CSN1_Types.ttcn GSM_RR_Types.ttcn RSL_Types.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn BSSAP_CodecPort.ttcn Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn GSUP_Types.ttcn"
FILES="General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcnpp L3_Templates.ttcn BSSMAP_Templates.ttcn RLCMAC_CSN1_Types.ttcn GSM_RR_Types.ttcn RSL_Types.ttcn BSSAP_CodecPort.ttcn Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn GSUP_Types.ttcn"
gen_links $DIR $FILES

View File

@ -2,6 +2,8 @@
MAIN=Selftest.ttcn
FILES="*.ttcn IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc SDP_EncDec.cc *.c"
FILES="*.ttcn *.ttcnpp IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc"
export CPPFLAGS_TTCN3="-DIPA_EMULATION_RSL"
../regen-makefile.sh $MAIN $FILES

View File

@ -36,17 +36,6 @@ DIR=$BASEDIR/titan.TestPorts.TELNETasp/src
FILES="TELNETasp_PT.cc TELNETasp_PT.hh TELNETasp_PortType.ttcn"
gen_links $DIR $FILES
# required by IPA Emulation
DIR=../MTP3asp_CNL113337/src
FILES="MTP3asp_PortType.ttcn MTP3asp_Types.ttcn"
gen_links $DIR $FILES
# required by MGCP Types, which is required by IPA Emulation
DIR=$BASEDIR/titan.ProtocolModules.SDP/src
FILES="SDP_EncDec.cc SDP_Types.ttcn SDP_parse_.tab.c SDP_parse_.tab.h SDP_parse_parser.h SDP_parser.l
SDP_parser.y lex.SDP_parse_.c"
gen_links $DIR $FILES
DIR=$BASEDIR/titan.ProtocolModules.NS_v7.3.0/src
FILES="NS_Types.ttcn"
gen_links $DIR $FILES
@ -63,7 +52,6 @@ DIR=$BASEDIR/titan.ProtocolModules.SNDCP_v7.0.0/src
FILES="SNDCP_Types.ttcn"
gen_links $DIR $FILES
DIR=$BASEDIR/titan.ProtocolModules.MobileL3_v13.4.0/src
FILES="MobileL3_CC_Types.ttcn MobileL3_CommonIE_Types.ttcn MobileL3_GMM_SM_Types.ttcn MobileL3_MM_Types.ttcn MobileL3_RRM_Types.ttcn MobileL3_SMS_Types.ttcn MobileL3_SS_Types.ttcn MobileL3_Types.ttcn"
gen_links $DIR $FILES
@ -80,8 +68,7 @@ FILES+="Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter
FILES+="Osmocom_VTY_Functions.ttcn "
FILES+="LLC_Templates.ttcn L3_Templates.ttcn L3_Common.ttcn "
# IPA_Emulation + dependencies
FILES+="IPA_Types.ttcn IPA_Emulation.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn
IPA_CodecPort_CtrlFunctDef.cc Native_Functions.ttcn Native_FunctionDefs.cc GSUP_Types.ttcn GSUP_Emulation.ttcn MGCP_Types.ttcn RSL_Types.ttcn "
FILES+="IPA_Types.ttcn IPA_Emulation.ttcnpp IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc Native_Functions.ttcn Native_FunctionDefs.cc GSUP_Types.ttcn GSUP_Emulation.ttcn "
FILES+="GTP_CodecPort.ttcn GTP_CodecPort_CtrlFunct.ttcn GTP_CodecPort_CtrlFunctDef.cc GTP_Emulation.ttcn
GTP_Templates.ttcn IPCP_Types.ttcn "
gen_links $DIR $FILES

View File

@ -1,5 +1,7 @@
#!/bin/sh
FILES="*.ttcn BSSGP_EncDec.cc LLC_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc NS_CodecPort_CtrlFunctDef.cc RLCMAC_EncDec.cc Native_FunctionDefs.cc SDP_EncDec.cc SDP_parse_.tab.c lex.SDP_parse_.c TELNETasp_PT.cc IPA_CodecPort_CtrlFunctDef.cc GTPU_EncDec.cc GTPC_EncDec.cc GTP_CodecPort_CtrlFunctDef.cc"
FILES="*.ttcn *.ttcnpp BSSGP_EncDec.cc LLC_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc NS_CodecPort_CtrlFunctDef.cc RLCMAC_EncDec.cc Native_FunctionDefs.cc TELNETasp_PT.cc IPA_CodecPort_CtrlFunctDef.cc GTPU_EncDec.cc GTPC_EncDec.cc GTP_CodecPort_CtrlFunctDef.cc"
export CPPFLAGS_TTCN3="-DIPA_EMULATION_GSUP"
../regen-makefile.sh SGSN_Tests.ttcn $FILES