lists.osmocom.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
August
July
June
May
April
March
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
List overview
Download
gerrit-log
March 2024
----- 2025 -----
August 2025
July 2025
June 2025
May 2025
April 2025
March 2025
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
gerrit-log@lists.osmocom.org
1 participants
2054 discussions
Start a n
N
ew thread
[S] Change in libosmo-netif[master]: Makefile.am: Fix dependency: rebuild doxygen on src/include changes
by laforge
laforge has submitted this change. (
https://gerrit.osmocom.org/c/libosmo-netif/+/36289?usp=email
) Change subject: Makefile.am: Fix dependency: rebuild doxygen on src/include changes ...................................................................... Makefile.am: Fix dependency: rebuild doxygen on src/include changes Change-Id: Id28f0927d01f82ceb969fb7c758cb391b86631c1 --- M Makefile.am 1 file changed, 10 insertions(+), 1 deletion(-) Approvals: Jenkins Builder: Verified pespin: Looks good to me, but someone else must approve fixeria: Looks good to me, but someone else must approve laforge: Looks good to me, approved diff --git a/Makefile.am b/Makefile.am index f1b8046..3e119b2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -30,7 +30,7 @@ $(html_DATA): $(top_builddir)/doc/html/index.html cd $(top_builddir)/doc && tar cf html.tar html -$(top_builddir)/doc/html/index.html: $(SOURCES) Doxyfile +$(top_builddir)/doc/html/index.html: $(SOURCES) $(top_srcdir)/src/*.c $(top_srcdir)/include/osmocom/netif/*.h Doxyfile @rm -rf doc mkdir -p doc $(DOXYGEN) Doxyfile -- To view, visit
https://gerrit.osmocom.org/c/libosmo-netif/+/36289?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Change-Id: Id28f0927d01f82ceb969fb7c758cb391b86631c1 Gerrit-Change-Number: 36289 Gerrit-PatchSet: 2 Gerrit-Owner: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 year, 5 months
1
0
0
0
[S] Change in libosmo-netif[master]: Makefile.am: Fix dependency: rebuild doxygen on src/include changes
by laforge
Attention is currently required from: fixeria, pespin. laforge has posted comments on this change. (
https://gerrit.osmocom.org/c/libosmo-netif/+/36289?usp=email
) Change subject: Makefile.am: Fix dependency: rebuild doxygen on src/include changes ...................................................................... Patch Set 2: Code-Review+2 (1 comment) File Makefile.am:
https://gerrit.osmocom.org/c/libosmo-netif/+/36289/comment/7aa3641f_38829c4d
PS2, Line 33: $(SOURCES) > Ack Implemented in
https://gerrit.osmocom.org/c/libosmo-netif/+/36313
-- To view, visit
https://gerrit.osmocom.org/c/libosmo-netif/+/36289?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Change-Id: Id28f0927d01f82ceb969fb7c758cb391b86631c1 Gerrit-Change-Number: 36289 Gerrit-PatchSet: 2 Gerrit-Owner: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: pespin <pespin(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Fri, 15 Mar 2024 20:13:12 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: Yes Comment-In-Reply-To: pespin <pespin(a)sysmocom.de> Comment-In-Reply-To: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-MessageType: comment
1 year, 5 months
1
0
0
0
[S] Change in libosmo-netif[master]: Makefile.am: Remove $(SOURCES) which is not defined anywhere
by laforge
laforge has uploaded this change for review. (
https://gerrit.osmocom.org/c/libosmo-netif/+/36313?usp=email
) Change subject: Makefile.am: Remove $(SOURCES) which is not defined anywhere ...................................................................... Makefile.am: Remove $(SOURCES) which is not defined anywhere Change-Id: I44ce77c937fa461445800bab393025f948077d55 --- M Makefile.am 1 file changed, 10 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/13/36313/1 diff --git a/Makefile.am b/Makefile.am index 3e119b2..f50cd0f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -30,7 +30,7 @@ $(html_DATA): $(top_builddir)/doc/html/index.html cd $(top_builddir)/doc && tar cf html.tar html -$(top_builddir)/doc/html/index.html: $(SOURCES) $(top_srcdir)/src/*.c $(top_srcdir)/include/osmocom/netif/*.h Doxyfile +$(top_builddir)/doc/html/index.html: $(top_srcdir)/src/*.c $(top_srcdir)/include/osmocom/netif/*.h Doxyfile @rm -rf doc mkdir -p doc $(DOXYGEN) Doxyfile -- To view, visit
https://gerrit.osmocom.org/c/libosmo-netif/+/36313?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Change-Id: I44ce77c937fa461445800bab393025f948077d55 Gerrit-Change-Number: 36313 Gerrit-PatchSet: 1 Gerrit-Owner: laforge <laforge(a)osmocom.org> Gerrit-MessageType: newchange
1 year, 5 months
1
0
0
0
[S] Change in ...osmo-epdg[master]: aaa_ue_fsm: Prepend rx_ prefix to SWm events missing it
by pespin
pespin has submitted this change. (
https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/36304?usp=email
) Change subject: aaa_ue_fsm: Prepend rx_ prefix to SWm events missing it ...................................................................... aaa_ue_fsm: Prepend rx_ prefix to SWm events missing it Change-Id: I38f755c23d8b998adbb591e1178fa31245ae0ab4 --- M src/aaa_diameter_swm.erl M src/aaa_ue_fsm.erl 2 files changed, 24 insertions(+), 15 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 e424ba8..9fa656e 100644 --- a/src/aaa_diameter_swm.erl +++ b/src/aaa_diameter_swm.erl @@ -64,13 +64,13 @@ undefined -> {ok, Pid} = aaa_ue_fsm:start(Imsi); Pid -> Pid end, - aaa_ue_fsm:ev_swm_auth_req(Pid, {PdpTypeNr, Apn, EAP}), + aaa_ue_fsm:ev_rx_swm_auth_req(Pid, {PdpTypeNr, Apn, EAP}), {noreply, State}; handle_cast({epdg_auth_compl_req, Imsi, Apn}, State) -> case aaa_ue_fsm:get_pid_by_imsi(Imsi) of Pid when is_pid(Pid) -> - aaa_ue_fsm:ev_swm_auth_compl(Pid, Apn); + aaa_ue_fsm:ev_rx_swm_auth_compl(Pid, Apn); undefined -> RC_USER_UNKNOWN=5030, epdg_diameter_swm:rx_auth_compl_response(Imsi, {error, RC_USER_UNKNOWN}) diff --git a/src/aaa_ue_fsm.erl b/src/aaa_ue_fsm.erl index c61a4bf..9ec6a00 100644 --- a/src/aaa_ue_fsm.erl +++ b/src/aaa_ue_fsm.erl @@ -42,7 +42,7 @@ -export([start/1, stop/1]). -export([init/1,callback_mode/0,terminate/3]). -export([get_server_name_by_imsi/1, get_pid_by_imsi/1]). --export([ev_swm_auth_req/2, ev_swm_auth_compl/2, ev_rx_swm_str/1, ev_rx_swm_asa/1, +-export([ev_rx_swm_auth_req/2, ev_rx_swm_auth_compl/2, ev_rx_swm_str/1, ev_rx_swm_asa/1, ev_rx_swx_maa/2, ev_rx_swx_saa/2, ev_rx_swx_rtr/1, ev_rx_s6b_aar/2, ev_rx_s6b_str/1, ev_rx_s6b_asa/2]). -export([state_new/3, @@ -86,19 +86,19 @@ {error, Err} end. -ev_swm_auth_req(Pid, {PdpTypeNr, Apn, EAP}) -> - lager:info("ue_fsm ev_swm_auth_req~n", []), +ev_rx_swm_auth_req(Pid, {PdpTypeNr, Apn, EAP}) -> + lager:info("ue_fsm ev_rx_swm_auth_req~n", []), try - gen_statem:call(Pid, {swm_auth_req, PdpTypeNr, Apn, EAP}) + gen_statem:call(Pid, {rx_swm_auth_req, PdpTypeNr, Apn, EAP}) catch exit:Err -> {error, Err} end. -ev_swm_auth_compl(Pid, Apn) -> - lager:info("ue_fsm ev_swm_auth_compl~n", []), +ev_rx_swm_auth_compl(Pid, Apn) -> + lager:info("ue_fsm ev_rx_swm_auth_compl~n", []), try - gen_statem:call(Pid, {swm_auth_compl, Apn}) + gen_statem:call(Pid, {rx_swm_auth_compl, Apn}) catch exit:Err -> {error, Err} @@ -203,8 +203,8 @@ state_new(enter, _OldState, Data) -> {keep_state, Data}; -state_new({call, From}, {swm_auth_req, PdpTypeNr, Apn, EAP}, Data) -> - lager:info("ue_fsm state_new event=swm_auth_req {~p, ~p, ~p}, ~p~n", [PdpTypeNr, Apn, EAP, Data]), +state_new({call, From}, {rx_swm_auth_req, PdpTypeNr, Apn, EAP}, Data) -> + lager:info("ue_fsm state_new event=rx_swm_auth_req {~p, ~p, ~p}, ~p~n", [PdpTypeNr, Apn, EAP, Data]), case maps:find(authorization, EAP) of {ok, Authorization} when is_binary(Authorization) -> Authorization; error -> Authorization = [] @@ -214,8 +214,8 @@ {error, Err} -> {keep_state, Data, [{reply,From,{error, Err}}]} end; -state_new({call, From}, {swm_auth_compl, Apn}, Data) -> - lager:info("ue_fsm state_new event=swm_auth_compl, ~p~n", [Data]), +state_new({call, From}, {rx_swm_auth_compl, Apn}, Data) -> + lager:info("ue_fsm state_new event=rx_swm_auth_compl, ~p~n", [Data]), case aaa_diameter_swx:server_assignment_request(Data#ue_fsm_data.imsi, 1, Apn, []) of ok -> {next_state, state_wait_swx_saa, Data, [{reply,From,ok}]}; {error, Err} -> {keep_state, Data, [{reply,From,{error, Err}}]} @@ -314,8 +314,8 @@ end end; -state_authenticated({call, _From}, {swm_auth_req, PdpTypeNr, Apn, EAP}, Data) -> - lager:info("ue_fsm state_authenticated event=swm_auth_req {~p, ~p, ~p}, ~p~n", [PdpTypeNr, Apn, EAP, Data]), +state_authenticated({call, _From}, {rx_swm_auth_req, PdpTypeNr, Apn, EAP}, Data) -> + lager:info("ue_fsm state_authenticated event=rx_swm_auth_req {~p, ~p, ~p}, ~p~n", [PdpTypeNr, Apn, EAP, Data]), {next_state, state_new, Data, [postpone]}; state_authenticated({call, From}, rx_swx_rtr, Data) -> -- To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/36304?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: I38f755c23d8b998adbb591e1178fa31245ae0ab4 Gerrit-Change-Number: 36304 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 year, 5 months
1
0
0
0
[M] Change in ...osmo-epdg[master]: Propagate SWx PPR as SWm Authorization Update towards ePDG
by pespin
pespin has submitted this change. (
https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/36305?usp=email
) Change subject: Propagate SWx PPR as SWm Authorization Update towards ePDG ...................................................................... Propagate SWx PPR as SWm Authorization Update towards ePDG With this commit ePDG is still not invoking the authorization procedure specified in 3GPP TS 29.273 7.1.2.2, but only ACKing the RAR message from 7.1.2.5. Related: OS#6404, OS#6400. Change-Id: I4fe309ac54c61f134dbd471486c7d1a70731c9bb --- M src/aaa_diameter_swm.erl M src/aaa_diameter_swx_cb.erl M src/aaa_ue_fsm.erl M src/epdg_diameter_swm.erl M src/epdg_ue_fsm.erl 5 files changed, 147 insertions(+), 12 deletions(-) Approvals: pespin: Looks good to me, approved Jenkins Builder: Verified laforge: Looks good to me, but someone else must approve diff --git a/src/aaa_diameter_swm.erl b/src/aaa_diameter_swm.erl index 9fa656e..c7c87a5 100644 --- a/src/aaa_diameter_swm.erl +++ b/src/aaa_diameter_swm.erl @@ -16,9 +16,14 @@ -export([rx_auth_request/4, rx_auth_compl_request/2, + rx_reauth_answer/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]). +-export([tx_auth_response/2, + tx_auth_compl_response/2, + tx_reauth_request/1, + tx_session_termination_answer/2, + tx_as_request/1]). -define(SERVER, ?MODULE). @@ -32,12 +37,16 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Tx over emulated SWm wire: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + tx_auth_response(Imsi, Result) -> _Result = gen_server:call(?SERVER, {epdg_auth_resp, Imsi, Result}). tx_auth_compl_response(Imsi, Result) -> _Result = gen_server:call(?SERVER, {epdg_auth_compl_resp, Imsi, Result}). +tx_reauth_request(Imsi) -> + _Result = gen_server:call(?SERVER, {rar, Imsi}). + tx_session_termination_answer(Imsi, Result) -> _Result = gen_server:call(?SERVER, {sta, Imsi, Result}). @@ -53,12 +62,17 @@ rx_auth_compl_request(Imsi, Apn) -> gen_server:cast(?SERVER, {epdg_auth_compl_req, Imsi, Apn}). +rx_reauth_answer(Imsi, Result) -> + gen_server:cast(?SERVER, {raa, Imsi, Result}). + rx_session_termination_request(Imsi) -> gen_server:cast(?SERVER, {str, Imsi}). rx_abort_session_answer(Imsi) -> gen_server:cast(?SERVER, {asa, Imsi}). +%% handle_cast: Rx side + handle_cast({epdg_auth_req, Imsi, PdpTypeNr, Apn, EAP}, State) -> case aaa_ue_fsm:get_pid_by_imsi(Imsi) of undefined -> {ok, Pid} = aaa_ue_fsm:start(Imsi); @@ -77,6 +91,13 @@ end, {noreply, State}; +handle_cast({raa, Imsi, Result}, State) -> + case aaa_ue_fsm:get_pid_by_imsi(Imsi) of + Pid when is_pid(Pid) -> aaa_ue_fsm:ev_rx_swm_reauth_answer(Pid, Result); + undefined -> ok + end, + {noreply, State}; + handle_cast({str, Imsi}, State) -> case aaa_ue_fsm:get_pid_by_imsi(Imsi) of Pid when is_pid(Pid) -> @@ -111,6 +132,7 @@ error_logger:error_report(["unknown handle_info", {module, ?MODULE}, {info, Info}, {state, S}]), {noreply, S}. +%% handle_call: Tx side handle_call({epdg_auth_resp, Imsi, Result}, _From, State) -> epdg_diameter_swm:rx_auth_response(Imsi, Result), {reply, ok, State}; @@ -119,6 +141,10 @@ epdg_diameter_swm:rx_auth_compl_response(Imsi, Result), {reply, ok, State}; +handle_call({rar, Imsi}, _From, State) -> + epdg_diameter_swm:rx_reauth_request(Imsi), + {reply, ok, State}; + handle_call({sta, Imsi, DiaRC}, _From, State) -> epdg_diameter_swm:rx_session_termination_answer(Imsi, DiaRC), {reply, ok, State}; diff --git a/src/aaa_diameter_swx_cb.erl b/src/aaa_diameter_swx_cb.erl index 93335a2..99d2ba3 100644 --- a/src/aaa_diameter_swx_cb.erl +++ b/src/aaa_diameter_swx_cb.erl @@ -81,14 +81,8 @@ 'Non-3GPP-User-Data' = N3UAopt} = Req, case aaa_ue_fsm:get_pid_by_imsi(Imsi) of Pid when is_pid(Pid) -> - _PGWAddresses = parse_pgw_addr_from_N3UA(N3UAopt), - %% TODO: in successful case, we want to validate how this prcoedure extends to other interfaces: - %% """ 3GPP TS 29.273 8.1.2.3.3: - %% After a successful user profile download, the 3GPP AAA Server shall - %% initiate re-authentication procedure as described - %% in clause 7.2.2.4 if the subscriber has previously been authenticated - %% and authorized to untrusted non-3GPP access. - %% """ + PGWAddresses = parse_pgw_addr_from_N3UA(N3UAopt), + aaa_ue_fsm:ev_rx_swx_ppr(Pid, {PGWAddresses}), Res = 2001, %% Success ERes = []; undefined -> diff --git a/src/aaa_ue_fsm.erl b/src/aaa_ue_fsm.erl index 9ec6a00..b32d6c0 100644 --- a/src/aaa_ue_fsm.erl +++ b/src/aaa_ue_fsm.erl @@ -42,8 +42,8 @@ -export([start/1, stop/1]). -export([init/1,callback_mode/0,terminate/3]). -export([get_server_name_by_imsi/1, get_pid_by_imsi/1]). --export([ev_rx_swm_auth_req/2, ev_rx_swm_auth_compl/2, ev_rx_swm_str/1, ev_rx_swm_asa/1, - ev_rx_swx_maa/2, ev_rx_swx_saa/2, ev_rx_swx_rtr/1, +-export([ev_rx_swm_auth_req/2, ev_rx_swm_reauth_answer/2, ev_rx_swm_auth_compl/2, ev_rx_swm_str/1, ev_rx_swm_asa/1, + ev_rx_swx_maa/2, ev_rx_swx_saa/2, ev_rx_swx_ppr/2, ev_rx_swx_rtr/1, ev_rx_s6b_aar/2, ev_rx_s6b_str/1, ev_rx_s6b_asa/2]). -export([state_new/3, state_wait_swx_maa/3, @@ -94,6 +94,14 @@ exit:Err -> {error, Err} end. +ev_rx_swm_reauth_answer(Pid, Result) -> + lager:info("ue_fsm ev_rx_swm_reauth_answer~n", []), + try + gen_statem:call(Pid, {rx_swm_reauth_answer, Result}) + catch + exit:Err -> + {error, Err} + end. ev_rx_swm_auth_compl(Pid, Apn) -> lager:info("ue_fsm ev_rx_swm_auth_compl~n", []), @@ -140,6 +148,15 @@ {error, Err} end. +ev_rx_swx_ppr(Pid, PGWAddresses) -> + lager:info("ue_fsm ev_rx_swx_ppr~n", []), + try + gen_statem:call(Pid, {rx_swx_ppr, PGWAddresses}) + catch + exit:Err -> + {error, Err} + end. + ev_rx_swx_rtr(Pid) -> lager:info("ue_fsm ev_rx_swx_rtr~n", []), try @@ -318,6 +335,21 @@ lager:info("ue_fsm state_authenticated event=rx_swm_auth_req {~p, ~p, ~p}, ~p~n", [PdpTypeNr, Apn, EAP, Data]), {next_state, state_new, Data, [postpone]}; +state_authenticated({call, From}, {rx_swx_ppr, _PGWAddresses}, Data) -> + %% 3GPP TS 29.273 8.1.2.3.3: + %% After a successful user profile download, the 3GPP AAA Server shall + %% initiate re-authentication procedure as described + %% in clause 7.2.2.4 + case aaa_diameter_swm:tx_reauth_request(Data#ue_fsm_data.imsi) of + ok -> {keep_state, Data, [{reply,From,ok}]}; + {error, Err} -> {keep_state, Data, [{reply,From,{error, Err}}]} + end; + +state_authenticated({call, From}, {rx_swm_reauth_answer, Result}, Data) -> + lager:info("ue_fsm state_authenticated event=rx_swm_reauth_answer ~p, ~p~n", [Result, Data]), + %% SWx PPA was already answered immediately when PPR was received, nothing to do here. + {keep_state, Data, [{reply,From,ok}]}; + state_authenticated({call, From}, rx_swx_rtr, Data) -> lager:info("ue_fsm state_authenticated event=rx_swx_rtr ~p~n", [Data]), case {Data#ue_fsm_data.pgw_sess_active, Data#ue_fsm_data.epdg_sess_active} of diff --git a/src/epdg_diameter_swm.erl b/src/epdg_diameter_swm.erl index c060d17..d78407c 100644 --- a/src/epdg_diameter_swm.erl +++ b/src/epdg_diameter_swm.erl @@ -5,6 +5,7 @@ -behaviour(gen_server). -include_lib("diameter_3gpp_ts29_273_swx.hrl"). +-include("conv.hrl"). -record(swm_state, { sessions = sets:new() @@ -20,11 +21,13 @@ -export([code_change/3, terminate/2]). -export([tx_auth_request/4, + tx_reauth_answer/2, 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_reauth_request/1, rx_session_termination_answer/2, rx_abort_session_request/1]). @@ -54,6 +57,11 @@ _ -> Result end. +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, {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_auth_compl_request(Imsi, Apn) -> % In Diameter we use Imsi as strings, as done by diameter module. @@ -95,6 +103,11 @@ ok = aaa_diameter_swm:rx_auth_request(Imsi, PdpTypeNr, Apn, EAP), {reply, ok, State1}; +handle_call({raa, Imsi, DiaRC}, _From, 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}; + handle_call({epdg_auth_compl_req, Imsi, Apn}, _From, State) -> % we yet don't implement the Diameter SWm interface on the wire, we process the call internally: Sess = find_swm_session_by_imsi(Imsi, State), @@ -148,6 +161,25 @@ end, {noreply, State}; +handle_cast({rar, Imsi}, State) -> + Sess = find_swm_session_by_imsi(Imsi, State), + case Sess of + #swm_session{imsi = Imsi} -> + case epdg_ue_fsm:received_swm_reauth_request(Sess#swm_session.pid) of + ok -> + DiaResultCode = 2001, %% SUCCESS + aaa_diameter_swm:rx_reauth_answer(Imsi, DiaResultCode); + _ -> + DiaResultCode = 5012, %% UNABLE_TO_COMPLY + aaa_diameter_swm:rx_reauth_answer(Imsi, DiaResultCode) + end; + undefined -> + lager:notice("SWm Rx AAR: unknown swm-session ~p", [Imsi]), + DiaResultCode = 5002, %% UNKNOWN_SESSION_ID + aaa_diameter_swm:rx_reauth_answer(Imsi, DiaResultCode) + end, + {noreply, State}; + handle_cast({sta, Imsi, Result}, State) -> Sess = find_swm_session_by_imsi(Imsi, State), case Sess of @@ -186,6 +218,10 @@ lager:info("terminating ~p with reason ~p~n", [?MODULE, Reason]). %% Emulation from the wire (DIAMETER SWm), called from internal AAA Server: +rx_reauth_request(Imsi) -> + ok = gen_server:cast(?SERVER, {rar, Imsi}). + +%% Emulation from the wire (DIAMETER SWm), called from internal AAA Server: rx_auth_response(Imsi, Result) -> ok = gen_server:cast(?SERVER, {epdg_auth_resp, Imsi, Result}). diff --git a/src/epdg_ue_fsm.erl b/src/epdg_ue_fsm.erl index 6b6f756..b75a865 100644 --- a/src/epdg_ue_fsm.erl +++ b/src/epdg_ue_fsm.erl @@ -44,7 +44,7 @@ -export([get_server_name_by_imsi/1, get_pid_by_imsi/1]). -export([auth_request/2, lu_request/1, tunnel_request/2, purge_ms_request/1, cancel_location_result/1]). --export([received_swm_auth_response/2, received_swm_auth_compl_response/2, +-export([received_swm_reauth_request/1, received_swm_auth_response/2, received_swm_auth_compl_response/2, received_swm_session_termination_answer/2, received_swm_abort_session_request/1]). -export([received_gtpc_create_session_response/2, received_gtpc_delete_session_response/2, received_gtpc_delete_bearer_request/1]). -export([state_new/3, @@ -137,6 +137,15 @@ {error, Err} end. +received_swm_reauth_request(Pid) -> + lager:info("ue_fsm received_swm_reauth_request~n", []), + try + gen_statem:call(Pid, received_swm_reauth_request) + catch + exit:Err -> + {error, Err} + end. + received_swm_auth_response(Pid, Result) -> lager:info("ue_fsm received_swm_auth_response ~p~n", [Result]), try @@ -327,6 +336,18 @@ Data#ue_fsm_data.pgw_rem_addr_list), {next_state, state_wait_create_session_resp, Data, [{reply,From,ok}]}; +state_authenticated({call, From}, received_swm_reauth_request, Data) -> + lager:info("ue_fsm state_authenticated event=received_swm_reauth_request, ~p~n", [Data]), + % TODO: 3GPP TS 29.273 7.1.2.5.1: + % Upon receiving the re-authorization request, the ePDG shall immediately invoke the authorization procedure + % specified in 7.1.2.2 for the session indicated in the request. This procedure is based on the Diameter + % commands AA-Request (AAR) and AA-Answer (AAA) specified in IETF RFC 4005 [4]. Information + % element contents for these messages are shown in tables 7.1.2.2.1/1 and 7.1.2.2.1/2. + % + % This is done synchronously for now when returning from call: + %%epdg_diameter_swm:tx_reauth_answer(Data#ue_fsm_data.imsi, #epdg_dia_rc{result_code = 2001}), + {keep_state, Data, [{reply,From,ok}]}; + state_authenticated({call, From}, purge_ms_request, Data) -> lager:info("ue_fsm state_authenticated event=purge_ms_request, ~p~n", [Data]), Data1 = Data#ue_fsm_data{tear_down_gsup_needed = true}, @@ -396,6 +417,18 @@ Data1 = Data#ue_fsm_data{tun_pdp_ctx = undefined}, {next_state, state_new, Data1, [postpone]}; +state_active({call, From}, received_swm_reauth_request, Data) -> + lager:info("ue_fsm state_active event=received_swm_reauth_request, ~p~n", [Data]), + % TODO: 3GPP TS 29.273 7.1.2.5.1: + % Upon receiving the re-authorization request, the ePDG shall immediately invoke the authorization procedure + % specified in 7.1.2.2 for the session indicated in the request. This procedure is based on the Diameter + % commands AA-Request (AAR) and AA-Answer (AAA) specified in IETF RFC 4005 [4]. Information + % element contents for these messages are shown in tables 7.1.2.2.1/1 and 7.1.2.2.1/2. + % + % This is done synchronously for now when returning from call: + %%epdg_diameter_swm:tx_reauth_answer(Data#ue_fsm_data.imsi, #epdg_dia_rc{result_code = 2001}), + {keep_state, Data, [{reply,From,ok}]}; + state_active({call, From}, purge_ms_request, Data) -> lager:info("ue_fsm state_active event=purge_ms_request, ~p~n", [Data]), gtp_u_tun:delete_pdp_context(Data#ue_fsm_data.tun_pdp_ctx), -- To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/36305?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: I4fe309ac54c61f134dbd471486c7d1a70731c9bb Gerrit-Change-Number: 36305 Gerrit-PatchSet: 4 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 year, 5 months
1
0
0
0
[S] Change in ...osmo-epdg[master]: dia/diameter_3gpp_ts29_273_s6b.dia: Fix missing whitespace
by pespin
pespin has submitted this change. (
https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/36306?usp=email
) Change subject: dia/diameter_3gpp_ts29_273_s6b.dia: Fix missing whitespace ...................................................................... dia/diameter_3gpp_ts29_273_s6b.dia: Fix missing whitespace Change-Id: I88a86a3c435d93e21b5ac88a55349ed65bdd2e98 --- M dia/diameter_3gpp_ts29_273_s6b.dia 1 file changed, 10 insertions(+), 1 deletion(-) Approvals: Jenkins Builder: Verified laforge: Looks good to me, approved diff --git a/dia/diameter_3gpp_ts29_273_s6b.dia b/dia/diameter_3gpp_ts29_273_s6b.dia index 5468458..6b46171 100644 --- a/dia/diameter_3gpp_ts29_273_s6b.dia +++ b/dia/diameter_3gpp_ts29_273_s6b.dia @@ -154,7 +154,7 @@ { Auth-Application-Id } { Re-Auth-Request-Type } [ User-Name ] - [RAR-Flags ] + [ RAR-Flags ] *[ AVP ] ;; 9.2.2.6.2 Re-Auth-Answer (RAA) -- To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/36306?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: I88a86a3c435d93e21b5ac88a55349ed65bdd2e98 Gerrit-Change-Number: 36306 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 year, 5 months
1
0
0
0
[S] Change in ...osmo-epdg[master]: aaa_ue_fsm: Separate states using comment blocks
by pespin
pespin has submitted this change. (
https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/36302?usp=email
) Change subject: aaa_ue_fsm: Separate states using comment blocks ...................................................................... aaa_ue_fsm: Separate states using comment blocks As we add more and more states, it becomes difficult to visualize each state, its logic and why is it use. Add a comment block at the start of each one to clearly see the functions forming it, and allow writing some state description in it. Change-Id: Iae7cb9f2047f8265f52337452af51f8f86fadd65 --- M src/aaa_ue_fsm.erl 1 file changed, 42 insertions(+), 0 deletions(-) Approvals: laforge: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/aaa_ue_fsm.erl b/src/aaa_ue_fsm.erl index 907d8df..e87579f 100644 --- a/src/aaa_ue_fsm.erl +++ b/src/aaa_ue_fsm.erl @@ -196,6 +196,10 @@ lager:info("terminating ~p with reason ~p state=~p, ~p~n", [?MODULE, Reason, State, Data]), ok. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% state_new: +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + state_new(enter, _OldState, Data) -> {keep_state, Data}; @@ -217,6 +221,10 @@ {error, Err} -> {keep_state, Data, [{reply,From,{error, Err}}]} end. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% state_wait_swx_maa: +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + state_wait_swx_maa(enter, _OldState, Data) -> {keep_state, Data}; @@ -225,6 +233,10 @@ aaa_diameter_swm:auth_response(Data#ue_fsm_data.imsi, Result), {next_state, state_new, Data, [{reply,From,ok}]}. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% state_wait_swx_saa: +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + state_wait_swx_saa(enter, _OldState, Data) -> {keep_state, Data}; @@ -239,6 +251,10 @@ {next_state, state_authenticated, Data, [{reply,From,ok}]} end. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% state_authenticated: +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + state_authenticated(enter, _OldState, Data) -> % Mark ePDG session as active: Data1 = Data#ue_fsm_data{epdg_sess_active = true}, @@ -313,6 +329,10 @@ lager:info("ue_fsm state_authenticated: Unexpected call event ~p, ~p~n", [Ev, Data]), {keep_state, Data, [{reply,From,ok}]}. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% state_authenticated_wait_swx_saa: +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + state_authenticated_wait_swx_saa(enter, _OldState, Data) -> {keep_state, Data}; @@ -340,8 +360,12 @@ end end. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% state_dereg_net_initiated_wait_s6b_asa: %% HSS asked us to do deregistration towards the user. %% Transmit S6b ASR towards PGW and wait for ASA back. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + state_dereg_net_initiated_wait_s6b_asa(enter, _OldState, Data) -> aaa_diameter_s6b:tx_as_request(Data#ue_fsm_data.nai), {keep_state, Data, {state_timeout,?TIMEOUT_VAL_WAIT_S6b_ANSWER,s6b_asa_timeout}}; @@ -356,8 +380,12 @@ state_dereg_net_initiated_wait_s6b_asa(state_timeout, s6b_asa_timeout, Data) -> {next_state, state_dereg_net_initiated_wait_swm_asa, Data}. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% state_dereg_net_initiated_wait_s6b_asa: %% HSS asked us to do deregistration towards the user. %% S6b (PGW) was already torn down. Now transmit SWm ASR towards ePDG and wait for ASA back. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + state_dereg_net_initiated_wait_swm_asa(enter, _OldState, Data) -> aaa_diameter_swm:tx_as_request(Data#ue_fsm_data.imsi), {keep_state, Data, {state_timeout,?TIMEOUT_VAL_WAIT_SWm_ANSWER,swm_asa_timeout}}; -- To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/36302?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: Iae7cb9f2047f8265f52337452af51f8f86fadd65 Gerrit-Change-Number: 36302 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 year, 5 months
1
0
0
0
[M] Change in ...osmo-epdg[master]: {aaa,epdg}_diameter_swm: Prepend tx/rx to identify direction
by pespin
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}. -- To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/36303?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: Id47447d2f2be7389e4598443f3a38b07aaec79a0 Gerrit-Change-Number: 36303 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 year, 5 months
1
0
0
0
[M] Change in ...osmo-epdg[master]: SWx: Answer PPR with PPA
by pespin
pespin has submitted this change. (
https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/36284?usp=email
) Change subject: SWx: Answer PPR with PPA ...................................................................... SWx: Answer PPR with PPA The whole propagation of the update procedure is left as TODO for the future, but let's at least answer to it instead of crashing. Related: OS#6042 Change-Id: I8070728099af7d650c40d17104d1af4883d83972 --- M src/aaa_diameter_swx_cb.erl 1 file changed, 50 insertions(+), 0 deletions(-) Approvals: laforge: Looks good to me, but someone else must approve pespin: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/aaa_diameter_swx_cb.erl b/src/aaa_diameter_swx_cb.erl index 5f5b72f..93335a2 100644 --- a/src/aaa_diameter_swx_cb.erl +++ b/src/aaa_diameter_swx_cb.erl @@ -70,6 +70,43 @@ %% handle_request/3 +%% 3GPP TS 29.273 8.2.2.2 HSS Initiated Update of User Profile Procedure +handle_request(#diameter_packet{msg = Req, errors = []}, _SvcName, {_, Caps}) when is_record(Req, 'PPR') -> + lager:info("SWx Rx PPR from ~p: ~p~n", [Caps, Req]), + #diameter_caps{origin_host = {OH,_}, origin_realm = {OR,_}} = Caps, + #'PPR'{'Session-Id' = SessionId, + 'Vendor-Specific-Application-Id' = VendorAppId, + 'Auth-Session-State' = AuthSessState, + 'User-Name' = Imsi, + 'Non-3GPP-User-Data' = N3UAopt} = Req, + case aaa_ue_fsm:get_pid_by_imsi(Imsi) of + Pid when is_pid(Pid) -> + _PGWAddresses = parse_pgw_addr_from_N3UA(N3UAopt), + %% TODO: in successful case, we want to validate how this prcoedure extends to other interfaces: + %% """ 3GPP TS 29.273 8.1.2.3.3: + %% After a successful user profile download, the 3GPP AAA Server shall + %% initiate re-authentication procedure as described + %% in clause 7.2.2.4 if the subscriber has previously been authenticated + %% and authorized to untrusted non-3GPP access. + %% """ + Res = 2001, %% Success + ERes = []; + undefined -> + Res = [], + %% TS 29.229 6.2.2.1 DIAMETER_ERROR_USER_UNKNOWN + ERes = #'Experimental-Result'{'Vendor-Id' = ?VENDOR_ID_3GPP, + 'Experimental-Result-Code' = 5001} + end, + Resp = #'PPA'{'Session-Id' = SessionId, + 'Vendor-Specific-Application-Id' = VendorAppId, + 'Result-Code' = Res, + 'Experimental-Result' = ERes, + 'Auth-Session-State' = AuthSessState, + 'Origin-Host' = OH, + 'Origin-Realm' = OR}, + lager:info("SWx Tx to ~p: ~p~n", [Caps, Resp]), + {reply, Resp}; + %% 3GPP TS 29.273 8.2.2.4 Network Initiated De-Registration by HSS Procedure handle_request(#diameter_packet{msg = Req, errors = []}, _SvcName, {_, Caps}) when is_record(Req, 'RTR') -> lager:info("SWx Rx RTR from ~p: ~p~n", [Caps, Req]), -- To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/36284?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: I8070728099af7d650c40d17104d1af4883d83972 Gerrit-Change-Number: 36284 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: lynxis lazus <lynxis(a)fe80.eu> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 year, 5 months
1
0
0
0
[M] Change in ...osmo-epdg[master]: Propagate SWx PPR as SWm Authorization Update towards ePDG
by pespin
pespin has posted comments on this change. (
https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/36305?usp=email
) Change subject: Propagate SWx PPR as SWm Authorization Update towards ePDG ...................................................................... Patch Set 4: Code-Review+2 -- To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/36305?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: I4fe309ac54c61f134dbd471486c7d1a70731c9bb Gerrit-Change-Number: 36305 Gerrit-PatchSet: 4 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Comment-Date: Fri, 15 Mar 2024 20:12:34 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 year, 5 months
1
0
0
0
← Newer
1
...
101
102
103
104
105
106
107
...
206
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
Results per page:
10
25
50
100
200