lynxis lazus has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39063?usp=email )
Change subject: RAW_NS: SNS Add: handle IPv4/IPv6 element in SNS Ack ......................................................................
RAW_NS: SNS Add: handle IPv4/IPv6 element in SNS Ack
When adding a new NS-VC via SNS Add, the SNS Ack should only contains the IEs "List of IP4/6 elements" if the cause code is Unknown IP endpoint.
However the libosmocore/ns2 code isn't following this behavior yet.
Change-Id: I18c659e43db79400c1b428ed745267a5e6e59102 --- M library/RAW_NS.ttcnpp 1 file changed, 20 insertions(+), 2 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/63/39063/1
diff --git a/library/RAW_NS.ttcnpp b/library/RAW_NS.ttcnpp index da1a0cc..7ab09e9 100644 --- a/library/RAW_NS.ttcnpp +++ b/library/RAW_NS.ttcnpp @@ -503,18 +503,36 @@ log("f_outgoing_sns_add(idx_add=", idx_add, ")"); var PDU_NS rx; var NSVCConfiguration nsvc_cfg := g_nsconfig.nsvc[idx_add]; + var template IP4_Elements ack_v4 := omit; + var template IP6_Elements ack_v6 := omit; + + if (istemplatekind(cause, "*")) { + ack_v4 := *; + ack_v6 := *; + } else if (isvalue(cause) and valueof(cause) == NS_CAUSE_UNKNOWN_IP_ENDPOINT) { + if (nsvc_cfg.provider.ip.address_family == AF_INET) { + ack_v4 := { ts_SNS_IPv4(nsvc_cfg.provider.ip.local_ip, + nsvc_cfg.provider.ip.local_udp_port, + w_sig, w_user) }; + } else { + ack_v6 := { ts_SNS_IPv6(nsvc_cfg.provider.ip.local_ip, + nsvc_cfg.provider.ip.local_udp_port, + w_sig, w_user) }; + } + } + if (nsvc_cfg.provider.ip.address_family == AF_INET) { var template (omit) IP4_Elements v4 := { ts_SNS_IPv4(nsvc_cfg.provider.ip.local_ip, nsvc_cfg.provider.ip.local_udp_port, w_sig, w_user) }; NSCP[idx].send(ts_SNS_ADD(g_nsconfig.nsei, 23, v4)); - rx := f_ns_exp(tr_SNS_ACK(g_nsconfig.nsei, 23, cause, v4)); + rx := f_ns_exp(tr_SNS_ACK(g_nsconfig.nsei, 23, cause, ack_v4)); } else { var template (omit) IP6_Elements v6 := { ts_SNS_IPv6(nsvc_cfg.provider.ip.local_ip, nsvc_cfg.provider.ip.local_udp_port, w_sig, w_user) }; NSCP[idx].send(ts_SNS_ADD(g_nsconfig.nsei, 23, omit, v6)); - rx := f_ns_exp(tr_SNS_ACK(g_nsconfig.nsei, 23, cause, omit, v6)); + rx := f_ns_exp(tr_SNS_ACK(g_nsconfig.nsei, 23, cause, omit, ack_v6)); } }