diff --git a/hnbgw/HNBGW_Tests.ttcn b/hnbgw/HNBGW_Tests.ttcn
index d77a18f..d76ff9d 100644
--- a/hnbgw/HNBGW_Tests.ttcn
+++ b/hnbgw/HNBGW_Tests.ttcn
@@ -18,6 +18,7 @@
 import from GSM_Types all;
 import from Osmocom_Types all;
 import from IPL4asp_Types all;
+import from Native_Functions all;
 
 import from Osmocom_CTRL_Functions all;
 import from Osmocom_CTRL_Types all;
@@ -1314,7 +1315,7 @@
 
 	/* Acting as UPF, invent a new PFCP SEID to send to HNBGW. Respond to the Session Establishment.
 	 * The PFCP response must have the same sequence_number as the request. */
-	var F_SEID up_f_seid := valueof(ts_PFCP_F_SEID_ipv4("127.0.0.1", '1111111111111111'O));
+	var F_SEID up_f_seid := valueof(ts_PFCP_F_SEID_ipv4(f_inet_addr("127.0.0.1"), '1111111111111111'O));
 	var template PDU_PFCP r := ts_PFCP_Session_Est_Resp(m.sequence_number, upf_node_id, hnbgw_f_seid.seid);
 	r.message_body.pfcp_session_establishment_response := {
 		offending_ie := omit,
@@ -1322,10 +1323,10 @@
 		created_PDR_list := {
 			ts_PFCP_Created_PDR(pdr_id := serq.create_PDR_list[0].grouped_ie.pdr_id,
 					    local_F_TEID := ts_PFCP_F_TEID_ipv4(gtp_pars.core.local.teid,
-										gtp_pars.core.local.addr)),
+										f_inet_addr(gtp_pars.core.local.addr))),
 			ts_PFCP_Created_PDR(pdr_id := serq.create_PDR_list[1].grouped_ie.pdr_id,
 					    local_F_TEID := ts_PFCP_F_TEID_ipv4(gtp_pars.access.local.teid,
-										gtp_pars.access.local.addr))
+										f_inet_addr(gtp_pars.access.local.addr)))
 		},
 		load_control_information := omit,
 		overload_control_information := omit,
diff --git a/library/PFCP_Templates.ttcn b/library/PFCP_Templates.ttcn
index d0e8b67..3f14a1f 100644
--- a/library/PFCP_Templates.ttcn
+++ b/library/PFCP_Templates.ttcn
@@ -11,7 +11,6 @@
 module PFCP_Templates {
 
 import from General_Types all;
-import from Native_Functions all;
 import from Osmocom_Types all;
 import from PFCP_Types all;
 
@@ -209,14 +208,14 @@
 	return t;
 };
 
-template (value) F_SEID ts_PFCP_F_SEID_ipv4(charstring addr_v4, OCT8 seid) := {
+template (value) F_SEID ts_PFCP_F_SEID_ipv4(OCT4 addr_v4, OCT8 seid) := {
         elementIdentifier := 57,
         lengthIndicator := 0,
         v6 := '0'B,
         v4 := '1'B,
         spare := '000000'B,
         seid := seid,
-        ipv4_address := f_inet_addr(addr_v4),
+        ipv4_address := addr_v4,
         ipv6_address := omit
 }
 
@@ -235,18 +234,18 @@
         spare := '0000'B
 }
 
-template (value) UE_IP_Address ts_PFCP_UE_IP_Address_v4(charstring addr_v4, boolean is_destination := true) := {
+template (value) UE_IP_Address ts_PFCP_UE_IP_Address_v4(OCT4 addr_v4, boolean is_destination := true) := {
         elementIdentifier := 93,
         lengthIndicator := 0,
         v6 := '0'B,
         v4 := '1'B,
         sd := bool2bit(is_destination),
         spare := '00000'B,
-        ipv4_address := f_inet_addr(addr_v4),
+        ipv4_address := addr_v4,
         ipv6_address := omit
 }
 
-template (value) F_TEID ts_PFCP_F_TEID_ipv4(OCT4 teid, charstring addr_v4) := {
+template (value) F_TEID ts_PFCP_F_TEID_ipv4(OCT4 teid, OCT4 addr_v4) := {
         elementIdentifier := 21,
         lengthIndicator := 0,
         v4 := '1'B,
@@ -255,7 +254,7 @@
         chid := '0'B,
         spare := '0000'B,
         teid := teid,
-        ipv4_address := f_inet_addr(addr_v4),
+        ipv4_address := addr_v4,
         ipv6_address := omit,
         choose_id := omit
 }
@@ -325,13 +324,13 @@
         spare := '0000'B
 }
 
-template (value) Outer_Header_Creation ts_PFCP_Outer_Header_Creation_GTP_ipv4(OCT4 remote_teid, charstring remote_addr_v4) := {
+template (value) Outer_Header_Creation ts_PFCP_Outer_Header_Creation_GTP_ipv4(OCT4 remote_teid, OCT4 remote_addr_v4) := {
         elementIdentifier := 84,
         lengthIndicator := 0,
         ohc_description_oct5 := '00000001'B,
         ohc_description_oct6 := '00000000'B,
         teid := remote_teid,
-        ipv4 := f_inet_addr(remote_addr_v4),
+        ipv4 := remote_addr_v4,
         ipv6 := omit,
         udp_port := omit
 }
@@ -419,13 +418,16 @@
 	}
 }
 
-function ts_PFCP_Session_Est_Req(charstring node_id, OCT8 cp_seid, Create_PDR_list create_pdr, Create_FAR_list create_far)
+function ts_PFCP_Session_Est_Req(template (value) Node_ID node_id,
+				 template (value) F_SEID cp_f_seid,
+				 Create_PDR_list create_pdr,
+				 Create_FAR_list create_far)
  return template (value) PDU_PFCP {
 	var template (value) PDU_PFCP t := ts_PDU_PFCP();
 	t.message_body := {
 		pfcp_session_establishment_request := {
-			node_id := ts_PFCP_Node_ID_ipv4(f_inet_addr(node_id)),
-			CP_F_SEID := ts_PFCP_F_SEID_ipv4(node_id, cp_seid),
+			node_id := node_id,
+			CP_F_SEID := cp_f_seid,
 			create_PDR_list := create_pdr,
 			create_FAR_list := create_far,
 			create_URR_list := omit,
diff --git a/upf/UPF_Tests.ttcn b/upf/UPF_Tests.ttcn
index 796dc16..b5c65d2 100644
--- a/upf/UPF_Tests.ttcn
+++ b/upf/UPF_Tests.ttcn
@@ -539,7 +539,7 @@
 private function f_ruleset_add_GTP_encaps(inout PFCP_Ruleset r,
 					  charstring ue_addr_v4 := "192.168.23.42",
 					  OCT4 remote_teid,
-					  charstring gtp_dest_addr_v4) {
+					  OCT4 gtp_dest_addr_v4) {
 
 	var integer pdr_id := lengthof(r.pdr) + 1;
 	var integer far_id := lengthof(r.far) + 1;
@@ -550,7 +550,7 @@
 			pdr_id,
 			ts_PFCP_PDI(
 				CORE,
-				ue_addr_v4 := ts_PFCP_UE_IP_Address_v4(ue_addr_v4, is_destination := true)
+				ue_addr_v4 := ts_PFCP_UE_IP_Address_v4(f_inet_addr(ue_addr_v4), is_destination := true)
 				),
 			far_id := far_id
 			)
@@ -635,14 +635,16 @@
 {
 	var PFCP_Ruleset rules := { {}, {} };
 	f_ruleset_add_GTP_decaps(rules);
-	f_ruleset_add_GTP_encaps(rules, gtp.core_ip, gtp.teid_access_r, gtp.gtp_access_ip);
+	f_ruleset_add_GTP_encaps(rules, gtp.core_ip, gtp.teid_access_r, f_inet_addr(gtp.gtp_access_ip));
 	return rules;
 }
 
 /* Run a PFCP Session Establishment procedure */
 private function f_session_est(inout PFCP_session s, PFCP_Ruleset rules) runs on CPF_ConnHdlr {
 
-	PFCP.send(ts_PFCP_Session_Est_Req(g_pars.local_addr, s.cp_seid, rules.pdr, rules.far));
+	PFCP.send(ts_PFCP_Session_Est_Req(ts_PFCP_Node_ID_ipv4(f_inet_addr(g_pars.local_addr)),
+					  ts_PFCP_F_SEID_ipv4(f_inet_addr(g_pars.local_addr), s.cp_seid),
+					  rules.pdr, rules.far));
 
 	var PDU_PFCP pfcp;
 	PFCP.receive(tr_PFCP_Session_Est_Resp(s.cp_seid)) -> value pfcp;
