fixeria has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38278?usp=email )
Change subject: s1gw: separate f_ConnHdlr_session_{establish,modify}() ......................................................................
s1gw: separate f_ConnHdlr_session_{establish,modify}()
Change-Id: I95dc3be975a8f51f7535b96d1580ef70b85fa2e0 --- M s1gw/S1GW_ConnHdlr.ttcn 1 file changed, 38 insertions(+), 28 deletions(-)
Approvals: pespin: Looks good to me, but someone else must approve laforge: Looks good to me, but someone else must approve Jenkins Builder: Verified fixeria: Looks good to me, approved
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 {