Commit
54800f69143a751f2d276a449fe8a39c3d02dc53
by Vadim Yanitskiy
s1ap_proxy: rework handle_ie/2 into handle_ie/3
This patch prepares for a follow-up change adding E-RAB MODIFY REQ/RSP.
Instead of passing the whole record #'ProtocolIE-Field' to handle_ie(), pass the IEI ('id' field) and IE content ('value' field) as separate arguments. This split-up allows to pass the full IEI path to handle_ie() in a follow-up change, and also allows to expand some fields of the IE content right in the function header.
Commit
172c9e919ce2ac4304cc3ca59ea715d277f04268
by Vadim Yanitskiy
s1ap_proxy: handle_ies(): reorder arguments
This patch prepares for a follow-up change adding E-RAB MODIFY REQ/RSP.
It's common for many Erlang's built-in functions to have the Key argument first (e.g. dict:store/3, dict:take/2, proplists:lookup/2, proplists:delete/2), and also makes handle_ies() consistent with handle_ie().
Commit
00f51fe208845a87d30eefeb361ac45395a83853
by Vadim Yanitskiy
s1ap_proxy: handle_ies(): pass IEI path to handle_ie()
This patch prepares for a follow-up change adding E-RAB MODIFY REQ/RSP.
We need to be able to match the IEs unambiguously, because the same IEI may be used in different contexts and thus have different meaning, sometimes within the same PDU. The E-RABItem IE is such an example:
So far we handled this duality by passing the release kind via the #proxy_state record ('rel_kind' field) and it worked. But soon in follow-up changes we'll have to deal with other PDUs:
* 9.1.3.4 E-RAB MODIFY RESPONSE ** contains an E-RABModifyListBearerModRes IE ** may contain an E-RABFailedToModifyList IE *** contains E-RABItem IEs
* 9.1.3.9 E-RAB MODIFICATION CONFIRM ** may contain an E-RABFailedToModifyList IE *** contains E-RABItem IEs ** may contain an E-RABToBeReleased IE *** contains E-RABItem IEs
A universal approach allowing to match and handle IEs properly depending on the context is to maintain the full IEI path in handle_ies() and pass it to handle_ie().
This patch prepares for a follow-up change adding the MME-initiated E-RAB modification logic. Handle the successful modification scenario in a separate function, which will be extended further soon.