pespin has submitted this change. (
https://gerrit.osmocom.org/c/libosmo-sigtran/+/40702?usp=email )
Change subject: sccp_sclc: Remove SCCP cause mask in N-NOTICE.ind 'Reason for
return' field
......................................................................
sccp_sclc: Remove SCCP cause mask in N-NOTICE.ind 'Reason for return' field
ITU Q.713 A.5 states "There is a one-to-one mapping between the return cause of
UDTS, XUDTS or LUDTS messages and the reason for return in the N-NOTICE
primitives".
This matches with the list of strings listed in ITU Q.711 6.2.2.2.4
"Reason for return".
"return cause" can in turn be found in ITU Q.713 3.12.
During sccp_sclc_rx_scrc_rout_fail(), we are encoding the "return cause"
param into the xua_msg usig gen_ret_msg(), which encodes it as SUA by
prepending the SUA_CAUSE_T_RETURN bitmask cause-type to it.
However, when constructing the primitive N-NOTICE.ind, we need to remove
that mask when filling in "Reason for return".
Change-Id: Iccff1e8809769edae36081a79119eb8da901841a
---
M include/osmocom/sigtran/sccp_sap.h
M src/sccp_sclc.c
2 files changed, 4 insertions(+), 2 deletions(-)
Approvals:
Jenkins Builder: Verified
osmith: Looks good to me, but someone else must approve
fixeria: Looks good to me, approved
diff --git a/include/osmocom/sigtran/sccp_sap.h b/include/osmocom/sigtran/sccp_sap.h
index 65eff74..7399b3d 100644
--- a/include/osmocom/sigtran/sccp_sap.h
+++ b/include/osmocom/sigtran/sccp_sap.h
@@ -256,8 +256,10 @@
struct osmo_scu_notice_param {
struct osmo_sccp_addr called_addr;
struct osmo_sccp_addr calling_addr;
+ /* ITU Q.711 6.2.2.2.4 "Reason for return":
+ * enum sccp_return_cause (ITU Q.713 3.12), as per ITU Q.713 A.5. */
uint32_t cause;
- uint32_t importance;
+ uint32_t importance; /* ITU Q.711 6.2.2.2.6, Q.713 3.19 */
/* user data */
};
diff --git a/src/sccp_sclc.c b/src/sccp_sclc.c
index c7dce89..0a47cd9 100644
--- a/src/sccp_sclc.c
+++ b/src/sccp_sclc.c
@@ -287,7 +287,7 @@
}
param->importance = xua_msg_get_u32(xua, SUA_IEI_IMPORTANCE);
- param->cause = xua_msg_get_u32(xua, SUA_IEI_CAUSE);
+ param->cause = xua_msg_get_u32(xua, SUA_IEI_CAUSE) & ~SUA_CAUSE_T_MASK;
scu = sccp_user_find(inst, param->called_addr.ssn,
param->called_addr.pc);
--
To view, visit
https://gerrit.osmocom.org/c/libosmo-sigtran/+/40702?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: libosmo-sigtran
Gerrit-Branch: master
Gerrit-Change-Id: Iccff1e8809769edae36081a79119eb8da901841a
Gerrit-Change-Number: 40702
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>