Make f_gen_tr_ss_ies() work for both 'latest' and 'master'
This fixes the partial revert of c43c8cd275b4f71b0bc6a50fc81564c812d5b406
to work for both situtions: Messages that have the OSMO_GSUP_MESSAGE_CLASS_USSD
and messages that don't.
The particular implementation is rather ugly, but we're waiting for
a response to https://www.eclipse.org/forums/index.php/t/1098847/
on how to solve this kind of problem in a more elegant way. Meanwile,
we make it work first.
Change-Id: Ibf137de6a41aaa43894cc0b6da8341ceb88b0756
diff --git a/library/GSUP_Types.ttcn b/library/GSUP_Types.ttcn
index 7e26e19..44b9f26 100644
--- a/library/GSUP_Types.ttcn
+++ b/library/GSUP_Types.ttcn
@@ -1091,15 +1091,23 @@
tr_GSUP_IE_SessionId(sid),
tr_GSUP_IE_SessionState(state)
};
+ var integer last_idx := 3;
/* Optional SS payload */
if (istemplatekind(ss, "*")) {
ies[3] := *;
+ last_idx := last_idx + 1;
} else if (not istemplatekind(ss, "omit")) {
ies[3] := tr_GSUP_IE_SSInfo(ss);
+ last_idx := last_idx + 1;
}
- return ies;
+ /* the GSUP Message Class IE is optional, as old implementations don't have it yet */
+ var template GSUP_IEs ies2 := ies;
+ ies2[last_idx] := tr_GSUP_IE_Message_Class(OSMO_GSUP_MESSAGE_CLASS_USSD);
+ last_idx := last_idx + 1;
+
+ return (ies, ies2);
}
template (value) GSUP_PDU ts_GSUP_PROC_SS_REQ(