diff --git a/library/GTP_Templates.ttcn b/library/GTP_Templates.ttcn
index 73d0bf0..049614a 100644
--- a/library/GTP_Templates.ttcn
+++ b/library/GTP_Templates.ttcn
@@ -163,6 +163,43 @@
 		gtpc := ts_GTP1C_PDU(echoRequest, '00000000'O, valueof(ts_EchoReqPDU), seq)
 	}
 
+	private function f_eua_ipv4_len(template OCT4 ip_addr) return template integer {
+		if (istemplatekind(ip_addr, "omit")) {
+			return 2;
+		} else if (istemplatekind(ip_addr, "*")) {
+			return ?;
+		} else if (istemplatekind(ip_addr, "?")) {
+			return 6;
+		}
+		return 6;
+	}
+
+	private function f_eua_ipv6_len(template OCT16 ip_addr) return template integer {
+		if (istemplatekind(ip_addr, "omit")) {
+			return 2;
+		} else if (istemplatekind(ip_addr, "*")) {
+			return ?;
+		} else if (istemplatekind(ip_addr, "?")) {
+			return 18;
+		}
+		return 18;
+	}
+
+	private function f_eua_ipv4v6_len(template OCT4 ip_addr4, template OCT16 ip_addr6) return template integer {
+		var integer len := 2;
+		if (istemplatekind(ip_addr4, "*") or
+		    istemplatekind(ip_addr6, "*")) {
+			return ?;
+		}
+		if (not istemplatekind(ip_addr4, "omit")) {
+			len := len + 4;
+		}
+		if (not istemplatekind(ip_addr6, "omit")) {
+			len := len + 16;
+		}
+		return len;
+	}
+
 	template EndUserAddress t_EuaIPv4(template OCT4 ip_addr) := {
 		type_gtpc := '80'O,
 		endUserAddress := {
@@ -179,7 +216,7 @@
 	template EndUserAddress tr_EuaIPv4(template OCT4 ip_addr) modifies t_EuaIPv4 := {
 		endUserAddress := {
 			endUserAddressIPv4 := {
-				lengthf := 2+lengthof(ip_addr)
+				lengthf := f_eua_ipv4_len(ip_addr)
 			}
 		}
 	}
@@ -200,7 +237,7 @@
 	template EndUserAddress tr_EuaIPv6(template OCT16 ip_addr) modifies t_EuaIPv6 := {
 		endUserAddress := {
 			endUserAddressIPv6 := {
-				lengthf := 2+lengthof(ip_addr)
+				lengthf := f_eua_ipv6_len(ip_addr)
 			}
 		}
 	}
@@ -223,7 +260,7 @@
 	template EndUserAddress tr_EuaIPv4v6(template OCT4 ip_addr4, template OCT16 ip_addr6) modifies t_EuaIPv4v6 := {
 		endUserAddress := {
 			endUserAddressIPv4andIPv6 := {
-				lengthf := 2+lengthof(ip_addr4)+lengthof(ip_addr6)
+				lengthf := f_eua_ipv4v6_len(ip_addr4, ip_addr6)
 			}
 		}
 	}
