library/GSUP_Types.ttcn: SS Info IE is optional for GSUP_PROC_SS_*

The 'SS Info' IE is optional for GSUP_PROC_SS_{REQ|RSP} messages,
and is not carried in some cases, e.g. when a subscriber aborts
an active transaction by pressing the 'red button'.

Change-Id: I20d9028acbe0c457d2a2cf72eff372b749d8dc30
This commit is contained in:
Vadim Yanitskiy 2018-06-21 04:18:54 +07:00
parent 52f8b6ee1d
commit 911257ebb2
1 changed files with 51 additions and 28 deletions

View File

@ -581,62 +581,85 @@ template GSUP_IE tr_GSUP_IE_SSInfo(template octetstring ss) := {
}
}
private function f_gen_ts_ss_ies(
hexstring imsi,
OCT4 sid,
GSUP_SessionState state,
template (omit) octetstring ss
) return GSUP_IEs {
/* Mandatory IEs */
var GSUP_IEs ies := {
valueof(ts_GSUP_IE_IMSI(imsi)),
valueof(ts_GSUP_IE_SessionId(sid)),
valueof(ts_GSUP_IE_SessionState(state))
};
/* Optional SS payload */
if (isvalue(ss)) {
ies[3] := valueof(ts_GSUP_IE_SSInfo(valueof(ss)));
}
return ies;
}
private function f_gen_tr_ss_ies(
template hexstring imsi,
template OCT4 sid := ?,
template GSUP_SessionState state := ?,
template octetstring ss := ?
) return template GSUP_IEs {
/* Mandatory IEs */
var template GSUP_IEs ies := {
tr_GSUP_IE_IMSI(imsi),
tr_GSUP_IE_SessionId(sid),
tr_GSUP_IE_SessionState(state)
};
/* Optional SS payload */
if (istemplatekind(ss, "*")) {
ies[3] := *;
} else if (not istemplatekind(ss, "omit")) {
ies[3] := tr_GSUP_IE_SSInfo(ss);
}
return ies;
}
template (value) GSUP_PDU ts_GSUP_PROC_SS_REQ(
hexstring imsi,
OCT4 sid,
GSUP_SessionState state,
octetstring ss
template (omit) octetstring ss := omit
) := ts_GSUP(
OSMO_GSUP_MSGT_PROC_SS_REQUEST,
{
valueof(ts_GSUP_IE_IMSI(imsi)),
valueof(ts_GSUP_IE_SessionId(sid)),
valueof(ts_GSUP_IE_SessionState(state)),
valueof(ts_GSUP_IE_SSInfo(ss))
}
f_gen_ts_ss_ies(imsi, sid, state, ss)
);
template GSUP_PDU tr_GSUP_PROC_SS_REQ(
template hexstring imsi,
template OCT4 sid := ?,
template GSUP_SessionState state := ?,
template octetstring ss := ?
template octetstring ss := *
) := tr_GSUP(
OSMO_GSUP_MSGT_PROC_SS_REQUEST,
{
tr_GSUP_IE_IMSI(imsi),
tr_GSUP_IE_SessionId(sid),
tr_GSUP_IE_SessionState(state),
tr_GSUP_IE_SSInfo(ss)
}
f_gen_tr_ss_ies(imsi, sid, state, ss)
);
template (value) GSUP_PDU ts_GSUP_PROC_SS_RES(
hexstring imsi,
OCT4 sid,
GSUP_SessionState state,
octetstring ss
template (omit) octetstring ss := omit
) := ts_GSUP(
OSMO_GSUP_MSGT_PROC_SS_RESULT,
{
valueof(ts_GSUP_IE_IMSI(imsi)),
valueof(ts_GSUP_IE_SessionId(sid)),
valueof(ts_GSUP_IE_SessionState(state)),
valueof(ts_GSUP_IE_SSInfo(ss))
}
f_gen_ts_ss_ies(imsi, sid, state, ss)
);
template GSUP_PDU tr_GSUP_PROC_SS_RES(
template hexstring imsi,
template OCT4 sid := ?,
template GSUP_SessionState state := ?,
template octetstring ss := ?
template octetstring ss := *
) := tr_GSUP(
OSMO_GSUP_MSGT_PROC_SS_RESULT,
{
tr_GSUP_IE_IMSI(imsi),
tr_GSUP_IE_SessionId(sid),
tr_GSUP_IE_SessionState(state),
tr_GSUP_IE_SSInfo(ss)
}
f_gen_tr_ss_ies(imsi, sid, state, ss)
);
template (value) GSUP_PDU ts_GSUP_PROC_SS_ERR(