Attention is currently required from: pespin.
fixeria has posted comments on this change by fixeria. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38745?usp=email )
Change subject: epdg: fix a DTE in as_GSUP_rx_CL_REQ ......................................................................
Patch Set 1:
(2 comments)
Commit Message:
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38745/comment/69aa0b58_736ed... : PS1, Line 11: does not properly handle the '*' template kind:
why not making handling the "*" case in this patch properly instead?
Because this again brings us to the topic of optional IEs in a `record of`. With the current limitations of TTCN-3, it's not possible to implement handling of `*` properly. See related discussion in https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38586.
File epdg/EPDG_Tests.ttcn:
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38745/comment/6b300970_7ad99... : PS1, Line 948: [] GSUP.receive(tr_GSUP_CL_REQ(g_pars.imsi, dom := omit, ctype := ctype)) -> value rx_gsup;
if it's possible that the domain is not transmitted, why not changing tr_GSUP_CL_REQ() to accept a " […]
Please take a chance to read the code yourself a bit...
`tr_GSUP_CL_REQ` already does accept a template without any restrictions, so the given parameter can be anything. Otherwise my code passing `omit` here would cause another DTE.
The problem is actually in `f_gen_tr_ies()`, which is called by `tr_GSUP_CL_REQ` to generate a `record of` IEs. This is where the violation of `template (present)` was happening:
``` 1300 if (not istemplatekind(cn_domain, "omit")) { 1301 ies[idx] := tr_GSUP_IE_CnDomain(cn_domain); 1302 idx := idx + 1; 1303 } ```
This logic works for `omit`, `?`, and for values, but not for `*`. Before my 51490419 ("library/gsup: improve GSUP_IE templates") this code was passing `*` to `tr_GSUP_IE_CnDomain`, which was wrong and basically eqiovalent to `tr_GSUP_IE_CnDomain(?)`.
NOTE: I am not the author of `f_gen_{tr,ts}_ies` and not planning to refactor it.