pespin has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/libosmo-sigtran/+/43399?usp=email )


Change subject: sua: Do SUA specific SNM msg validation
......................................................................

sua: Do SUA specific SNM msg validation

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.

Change-Id: Iba32835035867175fa83f3c1e0639918b37432b5
---
M src/sua.c
1 file changed, 80 insertions(+), 5 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/libosmo-sigtran 
refs/changes/99/43399/1

diff --git a/src/sua.c b/src/sua.c
index fdd2275..58dc7aa 100644
--- a/src/sua.c
+++ b/src/sua.c
@@ -188,6 +188,12 @@
 #define SUA_MSG_PART_CLASS_DATA(mandatory) \
        XUA_MSG_PART_CLASS(SUA_IEI_DATA, (mandatory), 0, UINT16_MAX)

+#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))

@@ -200,6 +206,75 @@
 #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,
+       .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),
@@ -232,7 +307,7 @@
        { SUA_CL_CLDR,          "CLDR" },
        { 0, NULL }
 };
-static const struct xua_msg_class msg_class_cl = {
+static const struct xua_msg_class sua_msg_class_cl = {
        .name = "CL",
        .msgt_names = sua_cl_msgt_names,
        .iei_names = sua_iei_names,
@@ -357,7 +432,7 @@
        { SUA_CO_COIT,          "COIT" },
        { 0, NULL }
 };
-static const struct xua_msg_class msg_class_co = {
+static const struct xua_msg_class sua_msg_class_co = {
        .name = "CO",
        .msgt_names = sua_co_msgt_names,
        .iei_names = sua_iei_names,
@@ -383,11 +458,11 @@
        .log_subsys = DLSUA,
        .class = {
                [SUA_MSGC_MGMT] = &m3ua_msg_class_mgmt,
-               [SUA_MSGC_SNM] = &m3ua_msg_class_snm,
+               [SUA_MSGC_SNM] = &sua_msg_class_snm,
                [SUA_MSGC_ASPSM] = &m3ua_msg_class_aspsm,
                [SUA_MSGC_ASPTM] = &m3ua_msg_class_asptm,
-               [SUA_MSGC_CL] = &msg_class_cl,
-               [SUA_MSGC_CO] = &msg_class_co,
+               [SUA_MSGC_CL] = &sua_msg_class_cl,
+               [SUA_MSGC_CO] = &sua_msg_class_co,
                [SUA_MSGC_RKM] = &m3ua_msg_class_rkm,
        },
 };

--
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: newchange
Gerrit-Project: libosmo-sigtran
Gerrit-Branch: master
Gerrit-Change-Id: Iba32835035867175fa83f3c1e0639918b37432b5
Gerrit-Change-Number: 43399
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <[email protected]>

Reply via email to