pespin has uploaded this change for review.
{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(-)
git pull ssh://gerrit.osmocom.org:29418/erlang/osmo-epdg refs/changes/03/36303/1
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}.
To view, visit change 36303. To unsubscribe, or for help writing mail filters, visit settings.