fixeria has uploaded this change for review.

View Change

s1gw: separate f_ConnHdlr_session_{establish,modify}()

Change-Id: I95dc3be975a8f51f7535b96d1580ef70b85fa2e0
---
M s1gw/S1GW_ConnHdlr.ttcn
1 file changed, 38 insertions(+), 28 deletions(-)

git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/78/38278/1
diff --git a/s1gw/S1GW_ConnHdlr.ttcn b/s1gw/S1GW_ConnHdlr.ttcn
index 4c88252..97df4c0 100644
--- a/s1gw/S1GW_ConnHdlr.ttcn
+++ b/s1gw/S1GW_ConnHdlr.ttcn
@@ -624,6 +624,42 @@
PFCP.send(resp);
}

+function f_ConnHdlr_session_establish(inout ERabList erabs)
+runs on ConnHdlr {
+ for (var integer i := 0; i < lengthof(erabs); i := i + 1) {
+ log("UPF <- S1GW: PFCP Session Establishment Request for E-RAB ID ", erabs[i].erab_id);
+ var PDU_PFCP pdu := f_ConnHdlr_rx_session_establish_req(erabs[i]);
+ /* store peer's SEID, so that it can be used in outgoing PDUs later */
+ erabs[i].pfcp_rem_seid := pdu.message_body.pfcp_session_establishment_request.CP_F_SEID.seid;
+ /* ask PFCPEM to route PDUs with the local SEID to us */
+ f_PFCPEM_subscribe_seid(erabs[i].pfcp_loc_seid);
+ log("UPF -> S1GW: PFCP Session Establishment Response for E-RAB ID ", erabs[i].erab_id);
+ f_ConnHdlr_tx_session_establish_resp(erabs[i], pdu);
+ }
+}
+
+function f_ConnHdlr_session_modify(in ERabList erabs)
+runs on ConnHdlr {
+ for (var integer i := 0; i < lengthof(erabs); i := i + 1) {
+ log("UPF <- S1GW: PFCP Session Modification Request for E-RAB ID ", erabs[i].erab_id);
+ var PDU_PFCP pdu := f_ConnHdlr_rx_session_modify_req(erabs[i]);
+ log("UPF -> S1GW: PFCP Session Modification Response for E-RAB ID ", erabs[i].erab_id);
+ f_ConnHdlr_tx_session_modify_resp(erabs[i], pdu);
+ }
+}
+
+function f_ConnHdlr_session_delete(in ERabList erabs)
+runs on ConnHdlr {
+ for (var integer i := 0; i < lengthof(erabs); i := i + 1) {
+ log("UPF <- S1GW: PFCP Session Deletion Request for E-RAB ID ", erabs[i].erab_id);
+ var PDU_PFCP pdu := f_ConnHdlr_rx_session_delete_req(erabs[i]);
+ log("UPF -> S1GW: PFCP Session Deletion Response for E-RAB ID ", erabs[i].erab_id);
+ f_ConnHdlr_tx_session_delete_resp(erabs[i], pdu);
+ /* ask PFCPEM to *not* route PDUs with this SEID to us */
+ f_PFCPEM_unsubscribe_seid(erabs[i].pfcp_loc_seid);
+ }
+}
+
function f_ConnHdlr_erab_setup_req(inout ERabList erabs)
runs on ConnHdlr {
const OCT8 c_SEID0 := '0000000000000000'O;
@@ -640,16 +676,7 @@

log("eNB <- [S1GW <- MME]: E-RAB SETUP REQUEST");
f_ConnHdlr_tx_erab_setup_req(erabs);
- for (var integer i := 0; i < lengthof(erabs); i := i + 1) {
- log("UPF <- S1GW: PFCP Session Establishment Request for E-RAB ID ", erabs[i].erab_id);
- var PDU_PFCP pdu := f_ConnHdlr_rx_session_establish_req(erabs[i]);
- /* store peer's SEID, so that it can be used in outgoing PDUs later */
- erabs[i].pfcp_rem_seid := pdu.message_body.pfcp_session_establishment_request.CP_F_SEID.seid;
- /* ask PFCPEM to route PDUs with the local SEID to us */
- f_PFCPEM_subscribe_seid(erabs[i].pfcp_loc_seid);
- log("UPF -> S1GW: PFCP Session Establishment Response for E-RAB ID ", erabs[i].erab_id);
- f_ConnHdlr_tx_session_establish_resp(erabs[i], pdu);
- }
+ f_ConnHdlr_session_establish(erabs);

/* We're done establishing PFCP sessions, so at this point we no longer expect to
* receive Session Establishment Request PDUs with SEID=0. Unregister and unlock
@@ -665,28 +692,11 @@
runs on ConnHdlr {
log("[eNB -> S1GW] -> MME: E-RAB SETUP RESPONSE");
f_ConnHdlr_tx_erab_setup_rsp(erabs);
- for (var integer i := 0; i < lengthof(erabs); i := i + 1) {
- log("UPF <- S1GW: PFCP Session Modification Request for E-RAB ID ", erabs[i].erab_id);
- var PDU_PFCP pdu := f_ConnHdlr_rx_session_modify_req(erabs[i]);
- log("UPF -> S1GW: PFCP Session Modification Response for E-RAB ID ", erabs[i].erab_id);
- f_ConnHdlr_tx_session_modify_resp(erabs[i], pdu);
- }
+ f_ConnHdlr_session_modify(erabs);
log("eNB -> [S1GW -> MME]: E-RAB SETUP RESPONSE");
f_ConnHdlr_rx_erab_setup_rsp(erabs);
}

-private function f_ConnHdlr_session_delete(inout ERabList erabs)
-runs on ConnHdlr {
- for (var integer i := 0; i < lengthof(erabs); i := i + 1) {
- log("UPF <- S1GW: PFCP Session Deletion Request for E-RAB ID ", erabs[i].erab_id);
- var PDU_PFCP pdu := f_ConnHdlr_rx_session_delete_req(erabs[i]);
- log("UPF -> S1GW: PFCP Session Deletion Response for E-RAB ID ", erabs[i].erab_id);
- f_ConnHdlr_tx_session_delete_resp(erabs[i], pdu);
- /* ask PFCPEM to *not* route PDUs with this SEID to us */
- f_PFCPEM_unsubscribe_seid(erabs[i].pfcp_loc_seid);
- }
-}
-
function f_ConnHdlr_erab_release_cmd(inout ERabList erabs,
S1AP_IEs.Cause cause := c_REL_CMD_CAUSE)
runs on ConnHdlr {

To view, visit change 38278. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: newchange
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I95dc3be975a8f51f7535b96d1580ef70b85fa2e0
Gerrit-Change-Number: 38278
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de>