ggsn: Support IPv4v6 PDP contexts in helper icmpv6 functions

Change-Id: I564d51e02ea4b3cb5fedb79dfc1903c04619bd61
diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn
index cebd6f2..4ea7cf4 100644
--- a/ggsn_tests/GGSN_Tests.ttcn
+++ b/ggsn_tests/GGSN_Tests.ttcn
@@ -750,9 +750,22 @@
 		return f_IPv6_enc(ip6);
 	}
 
+	/* Get link-id from PDP Context EUA */
+	function f_ctx_get_ipv6_interface_id(in PdpContext ctx) return OCT16 {
+		var OCT16 interface_id;
+		if (ischosen(ctx.eua.endUserAddress.endUserAddressIPv4andIPv6)) {
+			interface_id := ctx.eua.endUserAddress.endUserAddressIPv4andIPv6.ipv6_address;
+		} else if (ischosen(ctx.eua.endUserAddress.endUserAddressIPv6)) {
+			interface_id := ctx.eua.endUserAddress.endUserAddressIPv6.ipv6_address;
+		} else {
+			Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Unexpected request to submit icmpv6 rs in IPv4 PDP context");
+		}
+		return interface_id;
+	}
+
 	/* create ICMPv6 router solicitation deriving link-id from PDP Context EUA */
 	function f_icmpv6_rs_for_pdp(in PdpContext ctx) return octetstring {
-		var OCT16 interface_id := ctx.eua.endUserAddress.endUserAddressIPv6.ipv6_address;
+		var OCT16 interface_id := f_ctx_get_ipv6_interface_id(ctx);
 		return f_gen_icmpv6_router_solicitation(interface_id);
 	}
 
@@ -766,7 +779,7 @@
 
 	/* generate and encode ICMPv6 neighbor solicitation for PDP Context */
 	function f_gen_icmpv6_neigh_solicit_for_pdp(in PdpContext ctx) return octetstring {
-		var OCT16 interface_id := ctx.eua.endUserAddress.endUserAddressIPv6.ipv6_address;
+		var OCT16 interface_id := f_ctx_get_ipv6_interface_id(ctx);
 		var OCT16 link_local := f_ipv6_link_local(interface_id);
 		var OCT16 daddr := f_ipv6_sol_node_mcast(link_local);