diff --git a/bsc-nat/gen_links.sh b/bsc-nat/gen_links.sh
index 9a45c89..65b1602 100755
--- a/bsc-nat/gen_links.sh
+++ b/bsc-nat/gen_links.sh
@@ -55,5 +55,5 @@
 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"
+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"
 gen_links $DIR $FILES
diff --git a/bsc/gen_links.sh b/bsc/gen_links.sh
index 4316966..14771a7 100755
--- a/bsc/gen_links.sh
+++ b/bsc/gen_links.sh
@@ -76,5 +76,5 @@
 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 RLCMAC_CSN1_Types.ttcn GSM_RR_Types.ttcn RSL_Types.ttcn RSL_Emulation.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_CodecPort_CtrlFunctDef.cc BSSAP_CodecPort.ttcn Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn RTP_CodecPort.ttcn RTP_CodecPort_CtrlFunct.ttcn RTP_CodecPort_CtrlFunctDef.cc RTP_Emulation.ttcn IuUP_Types.ttcn IuUP_EncDec.cc IuUP_Emulation.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.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_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_CodecPort_CtrlFunctDef.cc BSSAP_CodecPort.ttcn Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.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"
 gen_links $DIR $FILES
diff --git a/hlr/GSUP_Test.ttcn b/hlr/GSUP_Test.ttcn
new file mode 100644
index 0000000..1118369
--- /dev/null
+++ b/hlr/GSUP_Test.ttcn
@@ -0,0 +1,54 @@
+module GSUP_Test {
+
+import from GSUP_Types all;
+import from IPA_Emulation all;
+
+type component test_CT {
+	var IPA_Emulation_CT vc_IPA;
+	var IPA_CCM_Parameters ccm_pars;
+	port IPA_GSUP_PT GSUP;
+};
+
+modulepar {
+	charstring mp_hlr_ip := "127.0.0.1";
+	integer mp_hlr_gsup_port := 4222;
+	integer mp_hlr_ctrl_port := 4259;
+};
+
+function f_init() runs on test_CT {
+	ccm_pars := c_IPA_default_ccm_pars;
+	ccm_pars.name := "Osmocom TTCN-3 GSUP Simulator";
+
+	vc_IPA := IPA_Emulation_CT.create("IPA");
+	map(vc_IPA:IPA_PORT, system:IPA_CODEC_PT);
+	connect(vc_IPA:IPA_GSUP_PORT, self:GSUP);
+	vc_IPA.start(IPA_Emulation.main_client(mp_hlr_ip, mp_hlr_gsup_port, "", -1, ccm_pars));
+}
+
+testcase TC_gsup_sai_err_invalid_imsi() runs on test_CT {
+	var hexstring imsi;
+	timer T := 10.0;
+
+	f_init();
+
+	imsi := '01234'H;
+	GSUP.send(valueof(ts_GSUP_SAI_REQ(imsi)));
+	T.start;
+	alt {
+		[] GSUP.receive(tr_GSUP_SAI_ERR(imsi, 17)) {
+			setverdict(pass);
+		}
+		[] GSUP.receive(tr_GSUP_SAI_RES(imsi)) {
+			setverdict(fail);
+		}
+		[] T.timeout {
+			setverdict(inconc);
+		}
+	}
+}
+
+control {
+	execute( TC_gsup_sai_err_invalid_imsi() );
+};
+
+};
diff --git a/hlr/Makefile b/hlr/Makefile
new file mode 100644
index 0000000..3f0952a
--- /dev/null
+++ b/hlr/Makefile
@@ -0,0 +1,193 @@
+# 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...
+#
+
diff --git a/hlr/gen_links.sh b/hlr/gen_links.sh
new file mode 100755
index 0000000..6d83882
--- /dev/null
+++ b/hlr/gen_links.sh
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+BASEDIR=../deps
+
+gen_links() {
+	DIR=$1
+	FILES=$*
+	for f in $FILES; do
+		echo "Linking $f"
+		ln -sf $DIR/$f $f
+	done
+}
+
+DIR=$BASEDIR/titan.Libraries.TCCUsefulFunctions/src
+FILES="TCCInterface_Functions.ttcn TCCConversion_Functions.ttcn TCCConversion.cc TCCConversion.hh
+TCCInterface.cc TCCInterface_ip.h"
+gen_links $DIR $FILES
+
+DIR=$BASEDIR/titan.TestPorts.Common_Components.Socket-API/src
+FILES="Socket_API_Definitions.ttcn"
+gen_links $DIR $FILES
+
+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"
+gen_links $DIR $FILES
diff --git a/hlr/regen_makefile.sh b/hlr/regen_makefile.sh
new file mode 100755
index 0000000..37991a6
--- /dev/null
+++ b/hlr/regen_makefile.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+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"
+
+../regen-makefile.sh $MAIN $FILES
diff --git a/library/GSUP_Types.ttcn b/library/GSUP_Types.ttcn
new file mode 100644
index 0000000..b994d1f
--- /dev/null
+++ b/library/GSUP_Types.ttcn
@@ -0,0 +1,197 @@
+module GSUP_Types {
+
+import from General_Types all;
+import from Osmocom_Types all;
+
+type enumerated GSUP_IEI {
+	OSMO_GSUP_IMSI_IE		('01'O),
+	OSMO_GSUP_CAUSE_IE		('02'O),
+	OSMO_GSUP_AUTH_TUPLE_IE		('03'O),
+	OSMO_GSUP_PDP_INFO_COMPL_IE	('04'O),
+	OSMO_GSUP_PDP_INFO_IE		('05'O),
+	OSMO_GSUP_CANCEL_TYPE_IE	('06'O),
+	OSMO_GSUP_FREEZE_PTMSI_IE	('07'O),
+	OSMO_GSUP_MSISDN_IE		('08'O),
+	OSMO_GSUP_HLR_NUMBER_IE		('09'O),
+	OSMO_GSUP_PDP_CONTEXT_ID_IE	('10'O),
+	OSMO_GSUP_PDP_TYPE_IE		('11'O),
+	OSMO_GSUP_ACCESS_POINT_NAME_IE	('12'O),
+	OSMO_GSUP_PDP_QOS_IE		('13'O),
+	OSMO_GSUP_CHARG_CHAR_IE		('14'O),
+
+	OSMO_GSUP_RAND_IE		('20'O),
+	OSMO_GSUP_SRES_IE		('21'O),
+	OSMO_GSUP_KC_IE			('22'O),
+	OSMO_GSUP_IK_IE			('23'O),
+	OSMO_GSUP_CK_IE			('24'O),
+	OSMO_GSUP_AUTN_IE		('25'O),
+	OSMO_GSUP_AUTS_IE		('26'O),
+	OSMO_GSUP_RES_IE		('27'O),
+	OSMO_GSUP_CN_DOMAIN_IE		('28'O)
+} with { variant "FIELDLENGTH(8)" };
+
+type enumerated GSUP_MessageType {
+	OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST	('00000100'B),
+	OSMO_GSUP_MSGT_UPDATE_LOCATION_ERROR	('00000101'B),
+	OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT	('00000110'B),
+
+	OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST	('00001000'B),
+	OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR	('00001001'B),
+	OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT	('00001010'B),
+
+	OSMO_GSUP_MSGT_AUTH_FAIL_REPORT		('00001011'B),
+
+	OSMO_GSUP_MSGT_PURGE_MS_REQUEST		('00001100'B),
+	OSMO_GSUP_MSGT_PURGE_MS_ERROR		('00001101'B),
+	OSMO_GSUP_MSGT_PURGE_MS_RESULT		('00001110'B),
+
+	OSMO_GSUP_MSGT_INSERT_DATA_REQUEST	('00010000'B),
+	OSMO_GSUP_MSGT_INSERT_DATA_ERROR	('00010001'B),
+	OSMO_GSUP_MSGT_INSERT_DATA_RESULT	('00010010'B),
+
+	OSMO_GSUP_MSGT_DELETE_DATA_REQUEST	('00010100'B),
+	OSMO_GSUP_MSGT_DELETE_DATA_ERROR	('00010101'B),
+	OSMO_GSUP_MSGT_DELETE_DATA_RESULT	('00010110'B),
+
+	OSMO_GSUP_MSGT_LOCATION_CANCEL_REQUEST	('00011100'B),
+	OSMO_GSUP_MSGT_LOCATION_CANCEL_ERROR	('00011101'B),
+	OSMO_GSUP_MSGT_LOCATION_CANCEL_RESULT	('00011110'B)
+} with { variant "FIELDLENGTH(8)" };
+
+type enumerated GSUP_CancelType {
+	OSMO_GSUP_CANCEL_TYPE_UPDATE		(1),
+	OSMO_GSUP_CANCEL_TYPE_WITHDRAW		(2)
+} with { variant "FIELDLENGTH(8)" };
+
+type enumerated GSUP_CnDomain {
+	OSMO_GSUP_CN_DOMAIN_PS			(1),
+	OSMO_GSUP_CN_DOMAIN_CS			(2)
+} with { variant "FIELDLENGTH(8)" };
+
+type record GSUP_IE {
+	GSUP_IEI	tag,
+	uint8_t		len,
+	GSUP_IeValue	val
+} with { variant (len) "LENGTHTO(val)"
+	 variant (val) "CROSSTAG(imsi, tag = OSMO_GSUP_IMSI_IE;
+				 cause, tag = OSMO_GSUP_CAUSE_IE;
+				 cancel_type, tag = OSMO_GSUP_CANCEL_TYPE_IE;
+				 auts, tag = OSMO_GSUP_AUTS_IE;
+				 rand, tag = OSMO_GSUP_RAND_IE;
+				 msisdn, tag = OSMO_GSUP_MSISDN_IE;
+				 hlr_number, tag = OSMO_GSUP_HLR_NUMBER_IE;
+				 cn_domain, tag = OSMO_GSUP_CN_DOMAIN_IE;
+				 charg_char, tag = OSMO_GSUP_CHARG_CHAR_IE)"
+};
+
+type record of GSUP_IE GSUP_IEs;
+
+type union GSUP_IeValue {
+	hexstring	imsi,
+	integer		cause,
+	GSUP_CancelType	cancel_type,
+	//boolean		pdp_info_compl,
+	//boolean		freeze_ptmsi,
+	GSUP_IEs	pdp_info,
+	GSUP_IEs	auth_tuple,
+	octetstring	auts,
+	octetstring	rand,
+	hexstring	msisdn,
+	octetstring	hlr_number,
+	GSUP_CnDomain	cn_domain,
+	octetstring	charg_char
+};
+
+type record GSUP_PDU {
+	GSUP_MessageType	msg_type,
+	GSUP_IEs		ies
+};
+
+external function enc_GSUP_PDU(in GSUP_PDU msg) return octetstring
+	with { extension "prototype(convert) encode(RAW)" };
+
+external function dec_GSUP_PDU(in octetstring msg) return GSUP_PDU
+	with { extension "prototype(convert) decode(RAW)" };
+
+
+template GSUP_PDU tr_GSUP(template GSUP_MessageType msgt := ?, template GSUP_IEs ies := *) := {
+	msg_type := msgt,
+	ies := ies
+}
+
+template GSUP_PDU ts_GSUP(GSUP_MessageType msgt, GSUP_IEs ies := {}) := {
+	msg_type := msgt,
+	ies := ies
+}
+
+template GSUP_PDU ts_GSUP_SAI_REQ(hexstring imsi) :=
+	ts_GSUP(OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST, { valueof(ts_GSUP_IE_IMSI(imsi)) });
+
+template GSUP_PDU tr_GSUP_SAI_ERR(template hexstring imsi, template integer cause) :=
+	tr_GSUP(OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST, {
+			tr_GSUP_IE_IMSI(imsi), tr_GSUP_IE_Cause(cause) });
+
+template GSUP_PDU tr_GSUP_SAI_RES(template hexstring imsi) :=
+	tr_GSUP(OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST, {
+			tr_GSUP_IE_IMSI(imsi), *, tr_GSUP_IE(OSMO_GSUP_AUTH_TUPLE_IE), * });
+
+
+
+template GSUP_IE tr_GSUP_IE(template GSUP_IEI iei, template GSUP_IeValue val := ?) := {
+	tag := iei,
+	len := ?,
+	val := val
+}
+
+template (value) GSUP_IE ts_GSUP_IE_IMSI(hexstring imsi) := {
+	tag := OSMO_GSUP_IMSI_IE,
+	len := 0, /* overwritten */
+	val := {
+		imsi := imsi
+	}
+}
+
+template GSUP_IE tr_GSUP_IE_IMSI(template hexstring imsi) := {
+	tag := OSMO_GSUP_IMSI_IE,
+	len := ?,
+	val := {
+		imsi := imsi
+	}
+}
+
+template (value) GSUP_IE ts_GSUP_IE_Cause(integer cause) := {
+	tag := OSMO_GSUP_CAUSE_IE,
+	len := 0, /* overwritten */
+	val := {
+		cause := cause
+	}
+}
+
+template GSUP_IE tr_GSUP_IE_Cause(template integer cause) := {
+	tag := OSMO_GSUP_CAUSE_IE,
+	len := ?,
+	val := {
+		cause := cause
+	}
+}
+
+template (value) GSUP_IE ts_GSUP_IE_AUTS(octetstring auts) := {
+	tag := OSMO_GSUP_AUTS_IE,
+	len := 0, /* overwritten */
+	val := {
+		auts := auts
+	}
+}
+
+template (value) GSUP_IE ts_GSUP_IE_RAND(octetstring rand) := {
+	tag := OSMO_GSUP_RAND_IE,
+	len := 0, /* overwritten */
+	val := {
+		rand := rand
+	}
+}
+
+
+
+
+} with { encode "RAW"; variant "FIELDORDER(msb)" }
diff --git a/library/IPA_Emulation.ttcn b/library/IPA_Emulation.ttcn
index ddedb39..9bad69f 100644
--- a/library/IPA_Emulation.ttcn
+++ b/library/IPA_Emulation.ttcn
@@ -17,6 +17,7 @@
 import from RSL_Types all;
 
 import from MGCP_Types all;
+import from GSUP_Types all;
 
 import from Osmocom_CTRL_Types all;
 
@@ -99,6 +100,12 @@
 	inout CtrlMessage, ASP_IPA_Event;
 } with { extension "internal" }
 
+/* Client port for CTRL inside IPA */
+type port IPA_GSUP_PT message {
+	inout GSUP_PDU, ASP_IPA_Event;
+} with { extension "internal" }
+
+
 type component IPA_Emulation_CT {
 	/* down-facing port to IPA codec port */
 	port IPA_CODEC_PT IPA_PORT;
@@ -110,6 +117,9 @@
 	port IPA_RSL_PT IPA_RSL_PORT;
 	/* up-facing port for CTRL */
 	port IPA_CTRL_PT IPA_CTRL_PORT;
+	/* up-facing port for GSUP */
+	port IPA_GSUP_PT IPA_GSUP_PORT;
+
 	/* up-facing port for other streams */
 	port IPA_SP_PT IPA_SP_PORT;
 
@@ -193,6 +203,9 @@
 	if (IPA_CTRL_PORT.checkstate("Connected")) {
 		IPA_CTRL_PORT.send(evt);
 	}
+	if (IPA_GSUP_PORT.checkstate("Connected")) {
+		IPA_GSUP_PORT.send(evt);
+	}
 	/* FIXME: to other ports */
 }
 
@@ -348,6 +361,10 @@
 	IPA_CTRL_PORT.send(dec_CtrlMessage(msg_ch));
 }
 
+private function f_gsup_to_user(octetstring msg) runs on IPA_Emulation_CT {
+	IPA_GSUP_PORT.send(dec_GSUP_PDU(msg));
+}
+
 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));
@@ -365,6 +382,7 @@
 	var MgcpCommand mgcp_cmd;
 	var MgcpResponse mgcp_rsp;
 	var CtrlMessage ctrl_msg;
+	var GSUP_PDU gsup_msg;
 	var octetstring payload;
 	var ASP_RSL_Unitdata rsl;
 
@@ -399,6 +417,8 @@
 						f_mgcp_to_user(ipa_rx.msg);
 					} case (IPAC_PROTO_EXT_CTRL) {
 						f_ctrl_to_user(ipa_rx.msg);
+					} case (IPAC_PROTO_EXT_GSUP) {
+						f_gsup_to_user(ipa_rx.msg);
 					} case else {
 						IPA_SP_PORT.send(f_to_asp(ipa_rx));
 					}
@@ -451,6 +471,12 @@
 			IPA_PORT.send(f_from_asp(g_ipa_conn_id, ipa_ud));
 		}
 
+		[] IPA_GSUP_PORT.receive(GSUP_PDU:?) -> value 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));
+		}
+
 		/* 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));
diff --git a/selftest/gen_links.sh b/selftest/gen_links.sh
index 0dd6ea0..5f53e44 100755
--- a/selftest/gen_links.sh
+++ b/selftest/gen_links.sh
@@ -52,5 +52,5 @@
 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"
+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"
 gen_links $DIR $FILES
