ggsn: add tests to validate IPv4v6 pdp ctx

Add related templates based on 3GPP TS 29.060 Figure 37A and create
tests based on existing IPv4 and v6 ones.

Related: OS#2900
Change-Id: I3bab7df5caddc5c8b973c81544f954d5473ac234
diff --git a/library/GTP_Templates.ttcn b/library/GTP_Templates.ttcn
index 018f6da..bd39e27 100644
--- a/library/GTP_Templates.ttcn
+++ b/library/GTP_Templates.ttcn
@@ -161,6 +161,29 @@
 		}
 	}
 
+	/* 3GPP TS 29.060 Figure 37A: End User Address Information Element for IPv4v6 (both static) */
+	template EndUserAddress t_EuaIPv4v6(template OCT4 ip_addr4, template OCT16 ip_addr6) := {
+		type_gtpc := '80'O,
+		endUserAddress := {
+			endUserAddressIPv4andIPv6 := {
+				lengthf := 2,
+				pdp_typeorg := '0001'B,
+				spare := '1111'B,
+				pdp_typenum := '8D'O,
+				ipv4_address := ip_addr4,
+				ipv6_address := ip_addr6
+			}
+		}
+	}
+	template EndUserAddress t_EuaIPv4Dynv6Dyn := t_EuaIPv4v6(omit, omit);
+	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)
+			}
+		}
+	}
+
 	template AccessPointName ts_APN(octetstring apn) := {
 		type_gtpc := '83'O,
 		lengthf := lengthof(apn),