ns: SNS: add bss change weight testcase

Do a normal SNS configuration. Afterwards the BSS will change
the weights of the endpoints

Change-Id: I691b9d26bf3eb8fa65aa02eba3efd0fd3869fc2a
diff --git a/library/RAW_NS.ttcnpp b/library/RAW_NS.ttcnpp
index 298ef1e..c5b0d50 100644
--- a/library/RAW_NS.ttcnpp
+++ b/library/RAW_NS.ttcnpp
@@ -390,6 +390,26 @@
 	rx := f_ns_exp(tr_SNS_CONFIG_ACK(g_nsconfig.nsei, cause), idx);
 }
 
+/* perform inbound SNS-CHANGE-WEIGHT procedure */
+function f_incoming_sns_chg_weight(template (omit) NsCause cause := omit, integer idx := 0)
+runs on RAW_NS_CT {
+	log("f_incoming_sns_chg_weight(idx=", idx, ")");
+	var PDU_NS rx;
+	var NSVCConfiguration nsvc_cfg := g_nsconfig.nsvc[idx];
+
+	if (nsvc_cfg.provider.ip.address_family == AF_INET) {
+		var template IP4_Elements v4_elem := { tr_SNS_IPv4(nsvc_cfg.provider.ip.remote_ip,
+								   nsvc_cfg.provider.ip.remote_udp_port) };
+		rx := f_ns_exp(tr_SNS_CHG_WEIGHT(g_nsconfig.nsei, ?, v4 := v4_elem), idx);
+	} else {
+		var template IP6_Elements v6_elem := { tr_SNS_IPv6(nsvc_cfg.provider.ip.remote_ip,
+								   nsvc_cfg.provider.ip.remote_udp_port) };
+		rx := f_ns_exp(tr_SNS_CHG_WEIGHT(g_nsconfig.nsei, ?, v4 := omit, v6 := v6_elem), idx);
+	}
+	NSCP[idx].send(ts_SNS_ACK(g_nsconfig.nsei, rx.pDU_SNS_ChangeWeight.transactionID));
+}
+
+
 function f_outgoing_sns_add(integer idx_add, uint8_t w_sig := 1, uint8_t w_user := 1, integer idx := 0, template (omit) NsCause cause := omit)
 runs on RAW_NS_CT {
 	log("f_outgoing_sns_add(idx_add=", idx_add, ")");