pespin has submitted this change. ( https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/36303?usp=email )
Change subject: {aaa,epdg}_diameter_swm: Prepend tx/rx to identify direction ......................................................................
{aaa,epdg}_diameter_swm: Prepend tx/rx to identify direction
Otherwise it becomes difficult to identify the direction of the message, specially for messages like AAR and AAA which can go both directions.
Change-Id: Id47447d2f2be7389e4598443f3a38b07aaec79a0 --- M src/aaa_diameter_swm.erl M src/aaa_ue_fsm.erl M src/epdg_diameter_swm.erl M src/epdg_ue_fsm.erl 4 files changed, 63 insertions(+), 44 deletions(-)
Approvals: Jenkins Builder: Verified laforge: Looks good to me, approved
diff --git a/src/aaa_diameter_swm.erl b/src/aaa_diameter_swm.erl index db06e30..e424ba8 100644 --- a/src/aaa_diameter_swm.erl +++ b/src/aaa_diameter_swm.erl @@ -14,8 +14,11 @@ -export([init/1, handle_call/3, handle_cast/2, handle_info/2]). -export([code_change/3, terminate/2]).
--export([auth_request/4, auth_compl_request/2, session_termination_request/1, abort_session_answer/1]). --export([auth_response/2, auth_compl_response/2, session_termination_answer/2, tx_as_request/1]). +-export([rx_auth_request/4, + rx_auth_compl_request/2, + rx_session_termination_request/1, + rx_abort_session_answer/1]). +-export([tx_auth_response/2, tx_auth_compl_response/2, tx_session_termination_answer/2, tx_as_request/1]).
-define(SERVER, ?MODULE).
@@ -29,13 +32,13 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Tx over emulated SWm wire: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -auth_response(Imsi, Result) -> +tx_auth_response(Imsi, Result) -> _Result = gen_server:call(?SERVER, {epdg_auth_resp, Imsi, Result}).
-auth_compl_response(Imsi, Result) -> +tx_auth_compl_response(Imsi, Result) -> _Result = gen_server:call(?SERVER, {epdg_auth_compl_resp, Imsi, Result}).
-session_termination_answer(Imsi, Result) -> +tx_session_termination_answer(Imsi, Result) -> _Result = gen_server:call(?SERVER, {sta, Imsi, Result}).
tx_as_request(Imsi) -> @@ -44,16 +47,16 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Rx from emulated SWm wire: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -auth_request(Imsi, PdpTypeNr, Apn, EAP) -> +rx_auth_request(Imsi, PdpTypeNr, Apn, EAP) -> gen_server:cast(?SERVER, {epdg_auth_req, Imsi, PdpTypeNr, Apn, EAP}).
-auth_compl_request(Imsi, Apn) -> +rx_auth_compl_request(Imsi, Apn) -> gen_server:cast(?SERVER, {epdg_auth_compl_req, Imsi, Apn}).
-session_termination_request(Imsi) -> +rx_session_termination_request(Imsi) -> gen_server:cast(?SERVER, {str, Imsi}).
-abort_session_answer(Imsi) -> +rx_abort_session_answer(Imsi) -> gen_server:cast(?SERVER, {asa, Imsi}).
handle_cast({epdg_auth_req, Imsi, PdpTypeNr, Apn, EAP}, State) -> @@ -70,7 +73,7 @@ aaa_ue_fsm:ev_swm_auth_compl(Pid, Apn); undefined -> RC_USER_UNKNOWN=5030, - epdg_diameter_swm:auth_compl_response(Imsi, {error, RC_USER_UNKNOWN}) + epdg_diameter_swm:rx_auth_compl_response(Imsi, {error, RC_USER_UNKNOWN}) end, {noreply, State};
@@ -80,14 +83,14 @@ case aaa_ue_fsm:ev_rx_swm_str(Pid) of ok -> ok; % Answering delayed due to SAR+SAA towards HSS. {ok, DiaRC} when is_integer(DiaRC) -> - ok = epdg_diameter_swm:session_termination_answer(Imsi, DiaRC); + ok = epdg_diameter_swm:rx_session_termination_answer(Imsi, DiaRC); {error, Err} when is_integer(Err) -> - ok = epdg_diameter_swm:session_termination_answer(Imsi, Err); + ok = epdg_diameter_swm:rx_session_termination_answer(Imsi, Err); {error, _} -> - ok = epdg_diameter_swm:session_termination_answer(Imsi, ?'RULE-FAILURE-CODE_CM_AUTHORIZATION_REJECTED') + ok = epdg_diameter_swm:rx_session_termination_answer(Imsi, ?'RULE-FAILURE-CODE_CM_AUTHORIZATION_REJECTED') end; undefined -> - ok = epdg_diameter_swm:session_termination_answer(Imsi, ?'RULE-FAILURE-CODE_CM_AUTHORIZATION_REJECTED') + ok = epdg_diameter_swm:rx_session_termination_answer(Imsi, ?'RULE-FAILURE-CODE_CM_AUTHORIZATION_REJECTED') end, {noreply, State};
@@ -109,19 +112,19 @@ {noreply, S}.
handle_call({epdg_auth_resp, Imsi, Result}, _From, State) -> - epdg_diameter_swm:auth_response(Imsi, Result), + epdg_diameter_swm:rx_auth_response(Imsi, Result), {reply, ok, State};
handle_call({epdg_auth_compl_resp, Imsi, Result}, _From, State) -> - epdg_diameter_swm:auth_compl_response(Imsi, Result), + epdg_diameter_swm:rx_auth_compl_response(Imsi, Result), {reply, ok, State};
handle_call({sta, Imsi, DiaRC}, _From, State) -> - epdg_diameter_swm:session_termination_answer(Imsi, DiaRC), + epdg_diameter_swm:rx_session_termination_answer(Imsi, DiaRC), {reply, ok, State};
handle_call({asr, Imsi}, _From, State) -> - epdg_diameter_swm:abort_session_request(Imsi), + epdg_diameter_swm:rx_abort_session_request(Imsi), {reply, ok, State};
handle_call(Request, From, S) -> diff --git a/src/aaa_ue_fsm.erl b/src/aaa_ue_fsm.erl index e87579f..c61a4bf 100644 --- a/src/aaa_ue_fsm.erl +++ b/src/aaa_ue_fsm.erl @@ -230,7 +230,7 @@
state_wait_swx_maa({call, From}, {rx_swx_maa, Result}, Data) -> lager:info("ue_fsm state_wait_swx_maa event=rx_swx_maa, ~p~n", [Data]), - aaa_diameter_swm:auth_response(Data#ue_fsm_data.imsi, Result), + aaa_diameter_swm:tx_auth_response(Data#ue_fsm_data.imsi, Result), {next_state, state_new, Data, [{reply,From,ok}]}.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -244,10 +244,10 @@ lager:info("ue_fsm state_wait_swx_saa event=rx_swx_saa ~p, ~p~n", [Result, Data]), case Result of {error, _SAType, DiaRC} -> - aaa_diameter_swm:auth_compl_response(Data#ue_fsm_data.imsi, {error, DiaRC}), + aaa_diameter_swm:tx_auth_compl_response(Data#ue_fsm_data.imsi, {error, DiaRC}), {next_state, state_new, Data, [{reply,From,ok}]}; {ok, _SAType, ResInfo} -> - aaa_diameter_swm:auth_compl_response(Data#ue_fsm_data.imsi, {ok, ResInfo}), + aaa_diameter_swm:tx_auth_compl_response(Data#ue_fsm_data.imsi, {ok, ResInfo}), {next_state, state_authenticated, Data, [{reply,From,ok}]} end.
@@ -350,7 +350,7 @@ ?'DIAMETER_CX_SERVER-ASSIGNMENT-TYPE_USER_DEREGISTRATION' -> case Data#ue_fsm_data.s6b_resp_pid of undefined -> %% SWm initiated - aaa_diameter_swm:session_termination_answer(Data#ue_fsm_data.imsi, DiaRC), + aaa_diameter_swm:tx_session_termination_answer(Data#ue_fsm_data.imsi, DiaRC), Data1 = Data#ue_fsm_data{epdg_sess_active = false}, {next_state, state_new, Data1, [{reply,From,ok}]}; _ -> %% S6b initiated diff --git a/src/epdg_diameter_swm.erl b/src/epdg_diameter_swm.erl index ef70b9c..c060d17 100644 --- a/src/epdg_diameter_swm.erl +++ b/src/epdg_diameter_swm.erl @@ -19,10 +19,14 @@ -export([init/1, handle_call/3, handle_cast/2, handle_info/2]). -export([code_change/3, terminate/2]).
--export([auth_request/4, auth_compl_request/2, - session_termination_request/1, abort_session_answer/1]). --export([auth_response/2, auth_compl_response/2, - session_termination_answer/2, abort_session_request/1]). +-export([tx_auth_request/4, + tx_auth_compl_request/2, + tx_session_termination_request/1, + tx_abort_session_answer/1]). +-export([rx_auth_response/2, + rx_auth_compl_response/2, + rx_session_termination_answer/2, + rx_abort_session_request/1]).
-define(SERVER, ?MODULE).
@@ -36,7 +40,7 @@
%% Swm Diameter message Diameter-EAP-Request, 3GPP TS 29.273 Table 7.1.2.1.1 -auth_request(Imsi, PdpTypeNr, Apn, EAP) -> +tx_auth_request(Imsi, PdpTypeNr, Apn, EAP) -> % In Diameter we use Imsi as strings, as done by diameter module. ImsiStr = binary_to_list(Imsi), % PdpTypeNr: SWm Diameter AVP "UE-Local-IP-Address" @@ -51,7 +55,7 @@ end.
% Rx "GSUP CEAI LU Req" is our way of saying Rx "Swm Diameter-EAP REQ (DER) with EAP AVP containing successuful auth": -auth_compl_request(Imsi, Apn) -> +tx_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, {epdg_auth_compl_req, ImsiStr, Apn}), @@ -63,7 +67,7 @@ end.
% 3GPP TS 29.273 7.1.2.3 -session_termination_request(Imsi) -> +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, {str, ImsiStr}), @@ -75,7 +79,7 @@ end.
% 3GPP TS 29.273 7.1.2.4 -abort_session_answer(Imsi) -> +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, {asa, ImsiStr}), @@ -88,7 +92,7 @@ handle_call({epdg_auth_req, Imsi, PdpTypeNr, Apn, EAP}, {Pid, _Tag} = _From, State0) -> % we yet don't implement the Diameter SWm interface on the wire, we process the call internally: {_Sess, State1} = find_or_new_swm_session(Imsi, Pid, State0), - ok = aaa_diameter_swm:auth_request(Imsi, PdpTypeNr, Apn, EAP), + ok = aaa_diameter_swm:rx_auth_request(Imsi, PdpTypeNr, Apn, EAP), {reply, ok, State1};
handle_call({epdg_auth_compl_req, Imsi, Apn}, _From, State) -> @@ -96,7 +100,7 @@ Sess = find_swm_session_by_imsi(Imsi, State), case Sess of #swm_session{imsi = Imsi} -> - Reply = aaa_diameter_swm:auth_compl_request(Imsi, Apn); + Reply = aaa_diameter_swm:rx_auth_compl_request(Imsi, Apn); undefined -> Reply = {error,unknown_imsi} end, @@ -107,7 +111,7 @@ Sess = find_swm_session_by_imsi(Imsi, State), case Sess of #swm_session{imsi = Imsi} -> - Reply = aaa_diameter_swm:session_termination_request(Imsi); + Reply = aaa_diameter_swm:rx_session_termination_request(Imsi); undefined -> Reply = {error,unknown_imsi} end, @@ -118,7 +122,7 @@ Sess = find_swm_session_by_imsi(Imsi, State), case Sess of #swm_session{imsi = Imsi} -> - Reply = aaa_diameter_swm:abort_session_answer(Imsi); + Reply = aaa_diameter_swm:rx_abort_session_answer(Imsi); undefined -> Reply = {error,unknown_imsi} end, @@ -182,20 +186,20 @@ lager:info("terminating ~p with reason ~p~n", [?MODULE, Reason]).
%% Emulation from the wire (DIAMETER SWm), called from internal AAA Server: -auth_response(Imsi, Result) -> +rx_auth_response(Imsi, Result) -> ok = gen_server:cast(?SERVER, {epdg_auth_resp, Imsi, Result}).
%Rx Swm Diameter-EAP Answer (DEA) containing APN-Configuration, triggered by %earlier Tx DER EAP AVP containing successuful auth": -auth_compl_response(Imsi, Result) -> +rx_auth_compl_response(Imsi, Result) -> ok = gen_server:cast(?SERVER, {epdg_auth_compl_resp, Imsi, Result}).
% Rx SWm Diameter STA: -session_termination_answer(Imsi, Result) -> +rx_session_termination_answer(Imsi, Result) -> ok = gen_server:cast(?SERVER, {sta, Imsi, Result}).
% Rx SWm Diameter ASR: -abort_session_request(Imsi) -> +rx_abort_session_request(Imsi) -> ok = gen_server:cast(?SERVER, {asr, Imsi}).
%% ------------------------------------------------------------------ diff --git a/src/epdg_ue_fsm.erl b/src/epdg_ue_fsm.erl index e49f9ab..6b6f756 100644 --- a/src/epdg_ue_fsm.erl +++ b/src/epdg_ue_fsm.erl @@ -206,7 +206,7 @@ %% ------------------------------------------------------------------
ev_handle({call, From}, {auth_request, PdpTypeNr, Apn, EAP}, Data) -> - case epdg_diameter_swm:auth_request(Data#ue_fsm_data.imsi, PdpTypeNr, Apn, EAP) of + case epdg_diameter_swm:tx_auth_request(Data#ue_fsm_data.imsi, PdpTypeNr, Apn, EAP) of ok -> {next_state, state_wait_auth_resp, Data, [{reply,From,ok}]}; {error, Err} -> {stop_and_reply, Err, [{reply,From,{error,Err}}], Data} end. @@ -281,7 +281,7 @@ state_authenticating({call, From}, lu_request, Data) -> lager:info("ue_fsm state_authenticating event=lu_request, ~p~n", [Data]), % Rx "GSUP CEAI LU Req" is our way of saying Rx "Swm Diameter-EAP REQ (DER) with EAP AVP containing successuful auth": - case epdg_diameter_swm:auth_compl_request(Data#ue_fsm_data.imsi, Data#ue_fsm_data.apn) of + case epdg_diameter_swm:tx_auth_compl_request(Data#ue_fsm_data.imsi, Data#ue_fsm_data.apn) of ok -> {keep_state, Data, [{reply,From,ok}]}; {error, Err} -> {stop_and_reply, Err, [{reply,From,{error,Err}}], Data} end; @@ -484,7 +484,7 @@ % Send STR towards AAA-Server % % 3GPP TS 29.273 7.1.2.3 lager:info("ue_fsm state_wait_swm_session_termination_answer event=enter, ~p~n", [Data]), - case epdg_diameter_swm:session_termination_request(Data#ue_fsm_data.imsi) of + case epdg_diameter_swm:tx_session_termination_request(Data#ue_fsm_data.imsi) of ok -> {keep_state, Data}; {error, _Err} -> case Data#ue_fsm_data.tear_down_gsup_needed of @@ -548,7 +548,7 @@ ok -> {keep_state, Data, {state_timeout,?TIMEOUT_VAL_WAIT_GTP_ANSWER,s2b_delete_session_timeout}}; {error, Err} -> - epdg_diameter_swm:abort_session_answer(Data#ue_fsm_data.imsi), + epdg_diameter_swm:tx_abort_session_answer(Data#ue_fsm_data.imsi), {stop, {error,Err}} end;
@@ -557,7 +557,7 @@ #{{v2_cause,0} := CauseIE} = IEs, GtpCause = gtp_utils:enum_v2_cause(CauseIE#v2_cause.v2_cause), lager:debug("Cause: GTP_atom=~p -> GTP_int=~p~n", [CauseIE#v2_cause.v2_cause, GtpCause]), - epdg_diameter_swm:abort_session_answer(Data#ue_fsm_data.imsi), + epdg_diameter_swm:tx_abort_session_answer(Data#ue_fsm_data.imsi), {stop_and_reply, normal, [{reply,From,ok}], Data};
state_dereg_net_initiated_wait_s2b_delete_session_resp({call, From}, Event, Data) -> @@ -567,5 +567,5 @@
state_dereg_net_initiated_wait_s2b_delete_session_resp(state_timeout, s2b_delete_session_timeout, Data) -> lager:error("ue_fsm state_dereg_net_initiated_wait_s2b_delete_session_resp: Timeout ~p, ~p~n", [s2b_delete_session_timeout, Data]), - epdg_diameter_swm:abort_session_answer(Data#ue_fsm_data.imsi), + epdg_diameter_swm:tx_abort_session_answer(Data#ue_fsm_data.imsi), {stop, normal}.