[M] Change in ...osmo-epdg[master]: epdg_diameter_swm: Convert Tx calls to casts

2024-03-18 Thread pespin
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

2024-03-18 Thread pespin
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

2024-03-18 Thread pespin
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