PCU: add IPv6 support for SNS

With PCUIF 10 the remote can be IPv4 or IPv6.
Add all missing parts including SNS IPv6 elements,
the support to omit IPv4 elements and a PCU_Tests_SNSv6.cfg
configuration to run all tests with IPv6

Change-Id: I43d64caca600fff78f3fbbb3e8179f447f235d46
diff --git a/library/Osmocom_Gb_Types.ttcn b/library/Osmocom_Gb_Types.ttcn
index bd2de10..5ffca7a 100644
--- a/library/Osmocom_Gb_Types.ttcn
+++ b/library/Osmocom_Gb_Types.ttcn
@@ -229,6 +229,40 @@
 		return e;
 	}
 
+	template (value) IP6_Element ts_SNS_IPv6(charstring ip, integer udp_port,
+						 uint8_t sig_weight := 1, uint8_t data_weight := 1) := {
+		ipAddress := f_inet6_addr(ip),
+		uDP_Port := int2oct(udp_port, 2),
+		signallingWeight := int2oct(sig_weight, 1),
+		dataWeight := int2oct(data_weight, 1)
+	}
+	function tr_SNS_IPv6(template charstring ip, template integer udp_port,
+				template uint8_t sig_weight := ?, template uint8_t data_weight := ?)
+	return template IP6_Element {
+		var template IP6_Element e;
+		if (istemplatekind(ip, "?")) {
+			e.ipAddress := ?;
+		} else {
+			e.ipAddress := f_inet6_addr(valueof(ip));
+		}
+		if (istemplatekind(udp_port, "?")) {
+			e.uDP_Port := ?;
+		} else {
+			e.uDP_Port := int2oct(valueof(udp_port), 2);
+		}
+		if (istemplatekind(sig_weight, "?")) {
+			e.signallingWeight := ?;
+		} else {
+			e.signallingWeight := int2oct(valueof(sig_weight), 1);
+		}
+		if (istemplatekind(data_weight, "?")) {
+			e.dataWeight := ?;
+		} else {
+			e.dataWeight := int2oct(valueof(data_weight), 1);
+		}
+		return e;
+	}
+
 
 	template (value) PDU_NS ts_NS_RESET(NsCause cause, Nsvci nsvci, Nsei nsei) := {
 		pDU_NS_Reset := {
@@ -537,7 +571,7 @@
 	}
 
 	template (value) PDU_NS ts_SNS_CONFIG(Nsei nsei, boolean end_flag,
-					template (omit) IP4_Elements v4,
+					template (omit) IP4_Elements v4 := omit,
 					template (omit) IP6_Elements v6 := omit) := {
 		pDU_SNS_Config := {
 			nsPduType := '0F'O,
@@ -548,7 +582,7 @@
 		}
 	}
 	template PDU_NS tr_SNS_CONFIG(template Nsei nsei, template boolean end_flag,
-					template IP4_Elements v4,
+					template IP4_Elements v4 := omit,
 					template IP6_Elements v6 := omit) := {
 		pDU_SNS_Config := {
 			nsPduType := '0F'O,