diff --git a/stp/STP_Tests_IPA.ttcn b/stp/STP_Tests_IPA.ttcn
index 946a950..beb2aa9 100644
--- a/stp/STP_Tests_IPA.ttcn
+++ b/stp/STP_Tests_IPA.ttcn
@@ -106,9 +106,15 @@
 	}
 }
 
-friend function f_connect_ipa(integer idx) runs on IPA_CT {
+friend function f_connect_ipa(integer idx, boolean use_unknown_asp_port := false) runs on IPA_CT {
+	var integer port_offset := 0;
+	if (use_unknown_asp_port) {
+		/* Add 100 to the port since we know that port is not configured in any
+		  ASP only up to NR_IPA are configured. */
+		port_offset := 100;
+	}
 	vc_IPA[idx].start(IPA_Emulation.main_client(mp_stp_ip, mp_stp_ipa_port, mp_local_ip,
-			mp_local_ipa_port+idx, g_ccm_pars[idx]));
+			mp_local_ipa_port + idx + port_offset, g_ccm_pars[idx]));
 }
 
 
@@ -118,10 +124,7 @@
 	f_vty_config2(VTY, {"cs7 instance 0", "listen ipa 5000"},
 		      "accept-asp-connections pre-configured");
 	f_init_ipa();
-	/* Add 100 to the port since we know that port is not configured in any
-	  ASP only up to NR_IPA are configured. */
-	vc_IPA[0].start(IPA_Emulation.main_client(mp_stp_ip, mp_stp_ipa_port, mp_local_ip,
-			mp_local_ipa_port+100, g_ccm_pars[0]));
+	f_connect_ipa(0, true);
 	f_sleep(1.0);
 	if (IPA[0].checkstate("Connected")) {
 		setverdict(fail, "Expected IPA port to be disconnected");
@@ -139,7 +142,7 @@
 	f_vty_config2(VTY, {"cs7 instance 0", "listen ipa 5000"},
 		      "accept-asp-connections pre-configured");
 	f_init_ipa();
-	f_connect_ipa(0);
+	f_connect_ipa(0, false);
 	f_sleep(1.0);
 	if (not IPA[0].checkstate("Connected")) {
 		setverdict(fail, "Expected IPA port to be connected");
@@ -156,10 +159,7 @@
 testcase TC_unknown_client_dynamic() runs on IPA_CT {
 	f_init_common();
 	f_init_ipa();
-	/* Add 100 to the port since we know that port is not configured in any
-	  ASP only up to NR_IPA are configured. */
-	vc_IPA[0].start(IPA_Emulation.main_client(mp_stp_ip, mp_stp_ipa_port, mp_local_ip,
-			mp_local_ipa_port+100, g_ccm_pars[0]));
+	f_connect_ipa(0, true);
 	f_sleep(1.0);
 	if (not IPA[0].checkstate("Connected")) {
 		setverdict(fail, "Expected IPA port to be connected");
