[M] Change in ...osmo-epdg[master]: epdg_diameter_swm: Convert Tx calls to casts
pespin has submitted this change. ( https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/36337?usp=email ) Change subject: epdg_diameter_swm: Convert Tx calls to casts .. epdg_diameter_swm: Convert Tx calls to casts This allows calling Tx function from within Rx paths in epdg_ue_fsm. Change-Id: Id42ba265ffde735c0a68a4d11ef2dad56cfd --- M src/epdg_diameter_swm.erl M src/epdg_ue_fsm.erl 2 files changed, 63 insertions(+), 68 deletions(-) Approvals: Jenkins Builder: Verified pespin: Looks good to me, approved diff --git a/src/epdg_diameter_swm.erl b/src/epdg_diameter_swm.erl index 0badb28..bf7c0b1 100644 --- a/src/epdg_diameter_swm.erl +++ b/src/epdg_diameter_swm.erl @@ -43,53 +43,30 @@ % PdpTypeNr: SWm Diameter AVP "UE-Local-IP-Address" % Apn: SWm Diameter AVP "Service-Selection" % EAP: SWm Diameter AVP EAP-Payload - Result = gen_server:call(?SERVER, {tx_dia, {der_auth_req, ImsiStr, PdpTypeNr, Apn, EAP}}), - case Result of - {ok, _AuthTuples} -> - epdg_ue_fsm:received_swm_dea_auth_response(self(), Result), - ok; - _ -> Result - end. + ok = gen_server:cast(?SERVER, {tx_dia, {der_auth_req, ImsiStr, PdpTypeNr, Apn, EAP}}). tx_reauth_answer(Imsi, DiaRC) -> % In Diameter we use Imsi as strings, as done by diameter module. ImsiStr = binary_to_list(Imsi), - _Result = gen_server:call(?SERVER, {tx_dia, {raa, ImsiStr, DiaRC}}). + ok = gen_server:cast(?SERVER, {tx_dia, {raa, ImsiStr, DiaRC}}). % Rx "GSUP CEAI LU Req" is our way of saying Rx "Swm Diameter-EAP REQ (DER) with EAP AVP containing successuful auth": tx_der_auth_compl_request(Imsi, Apn) -> % In Diameter we use Imsi as strings, as done by diameter module. ImsiStr = binary_to_list(Imsi), - Result = gen_server:call(?SERVER, {tx_dia, {der_auth_compl_req, ImsiStr, Apn}}), - case Result of - {ok, _Mar} -> - epdg_ue_fsm:received_swm_dea_auth_compl_response(self(), Result), - ok; - _ -> Result - end. + ok = gen_server:cast(?SERVER, {tx_dia, {der_auth_compl_req, ImsiStr, Apn}}). % 3GPP TS 29.273 7.1.2.3 tx_session_termination_request(Imsi) -> % In Diameter we use Imsi as strings, as done by diameter module. ImsiStr = binary_to_list(Imsi), - Result = gen_server:call(?SERVER, {tx_dia, {str, ImsiStr}}), - case Result of - {ok, _Mar} -> - epdg_ue_fsm:received_swm_session_terminate_answer(self(), Result), - ok; - _ -> Result - end. + ok = gen_server:cast(?SERVER, {tx_dia, {str, ImsiStr}}). % 3GPP TS 29.273 7.1.2.4 tx_abort_session_answer(Imsi) -> % In Diameter we use Imsi as strings, as done by diameter module. ImsiStr = binary_to_list(Imsi), - Result = gen_server:call(?SERVER, {tx_dia, {asa, ImsiStr}}), - case Result of - {ok, _Mar} -> - ok; - _ -> Result - end. + ok = gen_server:cast(?SERVER, {tx_dia, {asa, ImsiStr}}). %% Emulation from the wire (DIAMETER SWm), called from internal AAA Server: rx_reauth_request(Imsi) -> @@ -112,31 +89,39 @@ rx_abort_session_request(Imsi) -> ok = gen_server:cast(?SERVER, {rx_dia, {asr, Imsi}}). -handle_call({tx_dia, {der_auth_req, Imsi, PdpTypeNr, Apn, EAP}}, _From, State) -> - % we yet don't implement the Diameter SWm interface on the wire, we process the call internally: - ok = aaa_diameter_swm:rx_der_auth_request(Imsi, PdpTypeNr, Apn, EAP), - {reply, ok, State}; -handle_call({tx_dia, {raa, Imsi, DiaRC}}, _From, State) -> +%% -- +%% Internal Function Definitions +%% -- + +handle_call(Request, From, State) -> + error_logger:error_report(["unknown handle_call", {module, ?MODULE}, {request, Request}, {from, From}, {state, State}]), + {reply, ok, State}. + +handle_cast({tx_dia, {der_auth_req, Imsi, PdpTypeNr, Apn, EAP}}, State) -> + % we yet don't implement the Diameter SWm interface on the wire, we process the call internally: + aaa_diameter_swm:rx_der_auth_request(Imsi, PdpTypeNr, Apn, EAP), + {noreply, State}; + +handle_cast({tx_dia, {raa, Imsi, DiaRC}}, State) -> % we yet don't implement the Diameter SWm interface on the wire, we process the call internally: aaa_diameter_swm:rx_reauth_answer(Imsi, DiaRC#epdg_dia_rc.result_code), - {reply, ok, State}; + {noreply, State}; -handle_call({tx_dia, {der_auth_compl_req, Imsi, Apn}}, _From, State) -> +handle_cast({tx_dia, {der_auth_compl_req, Imsi, Apn}}, State) -> % we yet don't implement the Diameter SWm interface
[M] Change in ...osmo-epdg[master]: epdg_diameter_swm: Convert Tx calls to casts
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/36337?usp=email ) Change subject: epdg_diameter_swm: Convert Tx calls to casts .. Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/36337?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: erlang/osmo-epdg Gerrit-Branch: master Gerrit-Change-Id: Id42ba265ffde735c0a68a4d11ef2dad56cfd Gerrit-Change-Number: 36337 Gerrit-PatchSet: 1 Gerrit-Owner: pespin Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: pespin Gerrit-Comment-Date: Mon, 18 Mar 2024 17:28:38 + Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
[M] Change in ...osmo-epdg[master]: epdg_diameter_swm: Convert Tx calls to casts
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/36337?usp=email ) Change subject: epdg_diameter_swm: Convert Tx calls to casts .. epdg_diameter_swm: Convert Tx calls to casts This allows calling Tx function from within Rx paths in epdg_ue_fsm. Change-Id: Id42ba265ffde735c0a68a4d11ef2dad56cfd --- M src/epdg_diameter_swm.erl M src/epdg_ue_fsm.erl 2 files changed, 63 insertions(+), 68 deletions(-) git pull ssh://gerrit.osmocom.org:29418/erlang/osmo-epdg refs/changes/37/36337/1 diff --git a/src/epdg_diameter_swm.erl b/src/epdg_diameter_swm.erl index 0badb28..bf7c0b1 100644 --- a/src/epdg_diameter_swm.erl +++ b/src/epdg_diameter_swm.erl @@ -43,53 +43,30 @@ % PdpTypeNr: SWm Diameter AVP "UE-Local-IP-Address" % Apn: SWm Diameter AVP "Service-Selection" % EAP: SWm Diameter AVP EAP-Payload - Result = gen_server:call(?SERVER, {tx_dia, {der_auth_req, ImsiStr, PdpTypeNr, Apn, EAP}}), - case Result of - {ok, _AuthTuples} -> - epdg_ue_fsm:received_swm_dea_auth_response(self(), Result), - ok; - _ -> Result - end. + ok = gen_server:cast(?SERVER, {tx_dia, {der_auth_req, ImsiStr, PdpTypeNr, Apn, EAP}}). tx_reauth_answer(Imsi, DiaRC) -> % In Diameter we use Imsi as strings, as done by diameter module. ImsiStr = binary_to_list(Imsi), - _Result = gen_server:call(?SERVER, {tx_dia, {raa, ImsiStr, DiaRC}}). + ok = gen_server:cast(?SERVER, {tx_dia, {raa, ImsiStr, DiaRC}}). % Rx "GSUP CEAI LU Req" is our way of saying Rx "Swm Diameter-EAP REQ (DER) with EAP AVP containing successuful auth": tx_der_auth_compl_request(Imsi, Apn) -> % In Diameter we use Imsi as strings, as done by diameter module. ImsiStr = binary_to_list(Imsi), - Result = gen_server:call(?SERVER, {tx_dia, {der_auth_compl_req, ImsiStr, Apn}}), - case Result of - {ok, _Mar} -> - epdg_ue_fsm:received_swm_dea_auth_compl_response(self(), Result), - ok; - _ -> Result - end. + ok = gen_server:cast(?SERVER, {tx_dia, {der_auth_compl_req, ImsiStr, Apn}}). % 3GPP TS 29.273 7.1.2.3 tx_session_termination_request(Imsi) -> % In Diameter we use Imsi as strings, as done by diameter module. ImsiStr = binary_to_list(Imsi), - Result = gen_server:call(?SERVER, {tx_dia, {str, ImsiStr}}), - case Result of - {ok, _Mar} -> - epdg_ue_fsm:received_swm_session_terminate_answer(self(), Result), - ok; - _ -> Result - end. + ok = gen_server:cast(?SERVER, {tx_dia, {str, ImsiStr}}). % 3GPP TS 29.273 7.1.2.4 tx_abort_session_answer(Imsi) -> % In Diameter we use Imsi as strings, as done by diameter module. ImsiStr = binary_to_list(Imsi), - Result = gen_server:call(?SERVER, {tx_dia, {asa, ImsiStr}}), - case Result of - {ok, _Mar} -> - ok; - _ -> Result - end. + ok = gen_server:cast(?SERVER, {tx_dia, {asa, ImsiStr}}). %% Emulation from the wire (DIAMETER SWm), called from internal AAA Server: rx_reauth_request(Imsi) -> @@ -112,31 +89,39 @@ rx_abort_session_request(Imsi) -> ok = gen_server:cast(?SERVER, {rx_dia, {asr, Imsi}}). -handle_call({tx_dia, {der_auth_req, Imsi, PdpTypeNr, Apn, EAP}}, _From, State) -> - % we yet don't implement the Diameter SWm interface on the wire, we process the call internally: - ok = aaa_diameter_swm:rx_der_auth_request(Imsi, PdpTypeNr, Apn, EAP), - {reply, ok, State}; -handle_call({tx_dia, {raa, Imsi, DiaRC}}, _From, State) -> +%% -- +%% Internal Function Definitions +%% -- + +handle_call(Request, From, State) -> + error_logger:error_report(["unknown handle_call", {module, ?MODULE}, {request, Request}, {from, From}, {state, State}]), + {reply, ok, State}. + +handle_cast({tx_dia, {der_auth_req, Imsi, PdpTypeNr, Apn, EAP}}, State) -> + % we yet don't implement the Diameter SWm interface on the wire, we process the call internally: + aaa_diameter_swm:rx_der_auth_request(Imsi, PdpTypeNr, Apn, EAP), + {noreply, State}; + +handle_cast({tx_dia, {raa, Imsi, DiaRC}}, State) -> % we yet don't implement the Diameter SWm interface on the wire, we process the call internally: aaa_diameter_swm:rx_reauth_answer(Imsi, DiaRC#epdg_dia_rc.result_code), - {reply, ok, State}; + {noreply, State}; -handle_call({tx_dia, {der_auth_compl_req, Imsi, Apn}}, _From, State) -> +handle_cast({tx_dia, {der_auth_compl_req, Imsi, Apn}}, State) -> % we yet don't implement the