laforge has submitted this change. ( 
https://gerrit.osmocom.org/c/libosmo-sigtran/+/43399?usp=email )

Change subject: sua: Do SUA specific SNM msg validation [4/6]
......................................................................

sua: Do SUA specific SNM msg validation [4/6]

SUA SNM messages contain IEs different than those of related M3UA SNM
messages. Until now it was fine because we only checked for mandatory
IEs, but it's not the case anymore.

Related: OS#7074
Reported-By: Tristan Madani <[email protected]>
Change-Id: Iba32835035867175fa83f3c1e0639918b37432b5
---
M src/sua.c
1 file changed, 77 insertions(+), 1 deletion(-)

Approvals:
  osmith: Looks good to me, but someone else must approve
  laforge: Looks good to me, approved
  Jenkins Builder: Verified




diff --git a/src/sua.c b/src/sua.c
index ab84abe..ddd7e24 100644
--- a/src/sua.c
+++ b/src/sua.c
@@ -191,6 +191,12 @@
 #define SUA_MSG_PART_CLASS_DATA(mandatory) \
        XUA_MSG_PART_CLASS_UNBOUND(SUA_IEI_DATA, (mandatory))

+#define SUA_MSG_PART_CLASS_USER_CAUSE(mandatory) \
+       XUA_MSG_PART_CLASS_U32(SUA_IEI_USER_CAUSE, (mandatory))
+
+#define SUA_MSG_PART_CLASS_SMI(mandatory) \
+       XUA_MSG_PART_CLASS_U32(SUA_IEI_SMI, (mandatory))
+
 #define SUA_MSG_PART_CLASS_IMPORTANCE(mandatory) \
        XUA_MSG_PART_CLASS_U32(SUA_IEI_IMPORTANCE, (mandatory))

@@ -203,6 +209,76 @@
 #define SUA_MSG_PART_CLASS_SEGMENTATION(mandatory) \
        XUA_MSG_PART_CLASS_U32(SUA_IEI_SEGMENTATION, (mandatory))

+#define SUA_MSG_PART_CLASS_CONG_LEVEL(mandatory) \
+       XUA_MSG_PART_CLASS_U32(SUA_IEI_CONG_LEVEL, (mandatory))
+
+#define SUA_MSG_PART_CLASS_SSN(mandatory) \
+       XUA_MSG_PART_CLASS_U32(SUA_IEI_SSN, (mandatory))
+
+/* SNM */
+static const struct xua_msg_part_class duna_ies[] = {
+       SUA_MSG_PART_CLASS_ROUTE_CTX(false),
+       SUA_MSG_PART_CLASS_AFFECTED_PC(true),
+       SUA_MSG_PART_CLASS_SSN(false),
+       SUA_MSG_PART_CLASS_SMI(false),
+       SUA_MSG_PART_CLASS_INFO_STRING(false),
+       XUA_MSG_PART_CLASS_EOF
+};
+static const struct xua_msg_part_class dava_ies[] = {
+       SUA_MSG_PART_CLASS_ROUTE_CTX(false),
+       SUA_MSG_PART_CLASS_AFFECTED_PC(true),
+       SUA_MSG_PART_CLASS_SSN(false),
+       SUA_MSG_PART_CLASS_SMI(false),
+       SUA_MSG_PART_CLASS_INFO_STRING(false),
+       XUA_MSG_PART_CLASS_EOF
+};
+static const struct xua_msg_part_class daud_ies[] = {
+       SUA_MSG_PART_CLASS_ROUTE_CTX(false),
+       SUA_MSG_PART_CLASS_AFFECTED_PC(true),
+       SUA_MSG_PART_CLASS_SSN(false),
+       SUA_MSG_PART_CLASS_USER_CAUSE(false),
+       SUA_MSG_PART_CLASS_INFO_STRING(false),
+       XUA_MSG_PART_CLASS_EOF
+};
+static const struct xua_msg_part_class scon_ies[] = {
+       SUA_MSG_PART_CLASS_ROUTE_CTX(false),
+       SUA_MSG_PART_CLASS_AFFECTED_PC(true),
+       SUA_MSG_PART_CLASS_SSN(false),
+       SUA_MSG_PART_CLASS_CONG_LEVEL(true),
+       SUA_MSG_PART_CLASS_SMI(false),
+       SUA_MSG_PART_CLASS_INFO_STRING(false),
+       XUA_MSG_PART_CLASS_EOF
+};
+static const struct xua_msg_part_class dupu_ies[] = {
+       SUA_MSG_PART_CLASS_ROUTE_CTX(false),
+       SUA_MSG_PART_CLASS_AFFECTED_PC(true),
+       SUA_MSG_PART_CLASS_USER_CAUSE(true),
+       SUA_MSG_PART_CLASS_INFO_STRING(false),
+       XUA_MSG_PART_CLASS_EOF
+};
+static const struct xua_msg_part_class drst_ies[] = {
+       SUA_MSG_PART_CLASS_ROUTE_CTX(false),
+       SUA_MSG_PART_CLASS_AFFECTED_PC(true),
+       SUA_MSG_PART_CLASS_SSN(false),
+       SUA_MSG_PART_CLASS_SMI(false),
+       SUA_MSG_PART_CLASS_INFO_STRING(false),
+       XUA_MSG_PART_CLASS_EOF
+};
+const struct xua_msg_class sua_msg_class_snm = {
+       .name = "SNM",
+       /* message types are same as m3ua: */
+       .msgt_names = m3ua_snm_msgt_names,
+       .iei_names = sua_iei_names,
+       .ies = {
+               IES(SUA_SNM_DUNA, duna_ies),
+               IES(SUA_SNM_DAVA, dava_ies),
+               IES(SUA_SNM_DAUD, daud_ies),
+               IES(SUA_SNM_SCON, scon_ies),
+               IES(SUA_SNM_DUPU, dupu_ies),
+               IES(SUA_SNM_DRST, drst_ies),
+       },
+};
+
 static const struct xua_msg_part_class cldt_ies[] = {
        SUA_MSG_PART_CLASS_ROUTE_CTX(true),
        SUA_MSG_PART_CLASS_PROTO_CLASS(true),
@@ -406,7 +482,7 @@
        .log_subsys = DLSUA,
        .class = {
                [SUA_MSGC_MGMT] = &sua_msg_class_mgmt,
-               [SUA_MSGC_SNM] = &m3ua_msg_class_snm, /* TODO: different than 
M3UA */
+               [SUA_MSGC_SNM] = &sua_msg_class_snm,
                [SUA_MSGC_ASPSM] = &m3ua_msg_class_aspsm, /* Same as M3UA */
                [SUA_MSGC_ASPTM] = &m3ua_msg_class_asptm, /* TODO: different 
than M3UA */
                [SUA_MSGC_CL] = &sua_msg_class_cl,

--
To view, visit https://gerrit.osmocom.org/c/libosmo-sigtran/+/43399?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: Iba32835035867175fa83f3c1e0639918b37432b5
Gerrit-Change-Number: 43399
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: osmith <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>

Reply via email to