pespin has uploaded this change for review.

View Change

epdg_ue_fsm: Add new state 'active'

This state is reached after the pdp context is properly set up at the
tun device.

Change-Id: Idc651cc19ae8c22c73e40dfc04130854082e2de5
---
M src/epdg_ue_fsm.erl
1 file changed, 44 insertions(+), 6 deletions(-)

git pull ssh://gerrit.osmocom.org:29418/erlang/osmo-epdg refs/changes/55/35955/1
diff --git a/src/epdg_ue_fsm.erl b/src/epdg_ue_fsm.erl
index 63c0223..5594dff 100644
--- a/src/epdg_ue_fsm.erl
+++ b/src/epdg_ue_fsm.erl
@@ -45,7 +45,7 @@
-export([received_gtpc_create_session_response/2, received_gtpc_delete_session_response/2, received_gtpc_delete_bearer_request/1]).
-export([state_new/3, state_wait_auth_resp/3, state_authenticating/3, state_authenticated/3,
state_wait_create_session_resp/3, state_wait_delete_session_resp/3,
- state_wait_swm_session_termination_answer/3]).
+ state_wait_swm_session_termination_answer/3, state_active/3]).

-record(ue_fsm_data, {
imsi,
@@ -249,10 +249,8 @@

state_authenticated({call, From}, purge_ms_request, Data) ->
lager:info("ue_fsm state_authenticated event=purge_ms_request, ~p~n", [Data]),
- case epdg_gtpc_s2b:delete_session_req(Data#ue_fsm_data.imsi) of
- ok -> {next_state, state_wait_delete_session_resp, Data, [{reply,From,ok}]};
- {error, Err} -> {keep_state, Data, [{reply,From,{error, Err}}]}
- end;
+ Data1 = Data#ue_fsm_data{tear_down_gsup_needed = true},
+ {next_state, state_wait_swm_session_termination_answer, Data1, [{reply,From,ok}]};

state_authenticated({call, From}, received_gtpc_delete_bearer_request, Data) ->
lager:info("ue_fsm state_authenticated event=received_gtpc_delete_bearer_request, ~p~n", [Data]),
@@ -285,7 +283,7 @@
_ -> ok
end,
gsup_server:tunnel_response(Data#ue_fsm_data.imsi, Result),
- {next_state, state_authenticated, Data, [{reply,From,ok}]};
+ {next_state, state_active, Data, [{reply,From,ok}]};

state_wait_create_session_resp({call, From}, Event, Data) ->
lager:error("ue_fsm state_wait_delete_session_resp: Unexpected call event ~p, ~p~n", [Event, Data]),
@@ -296,6 +294,34 @@
gsup_server:tunnel_response(Data#ue_fsm_data.imsi, {error, create_session_timeout}),
{next_state, state_authenticated, Data}.

+state_active(enter, _OldState, Data) ->
+ {keep_state, Data};
+
+state_active({call, _From}, {auth_request, PdpTypeNr, Apn}, Data) ->
+ lager:info("ue_fsm state_active event=auth_request {~p, ~p}, ~p~n", [PdpTypeNr, Apn, Data]),
+ {next_state, state_new, Data, [postpone]};
+
+state_active({call, From}, purge_ms_request, Data) ->
+ lager:info("ue_fsm state_active event=purge_ms_request, ~p~n", [Data]),
+ case epdg_gtpc_s2b:delete_session_req(Data#ue_fsm_data.imsi) of
+ ok -> {next_state, state_wait_delete_session_resp, Data, [{reply,From,ok}]};
+ {error, Err} -> {keep_state, Data, [{reply,From,{error, Err}}]}
+ end;
+
+state_active({call, From}, received_gtpc_delete_bearer_request, Data) ->
+ lager:info("ue_fsm state_active event=received_gtpc_delete_bearer_request, ~p~n", [Data]),
+ gsup_server:cancel_location_request(Data#ue_fsm_data.imsi),
+ Data1 = Data#ue_fsm_data{tear_down_gsup_needed = false},
+ {next_state, state_wait_swm_session_termination_answer, Data1, [{reply,From,ok}]};
+
+state_active({call, From}, _Whatever, Data) ->
+ lager:error("ue_fsm state_active: Unexpected call event, ~p~n", [Data]),
+ {keep_state, Data, [{reply,From,ok}]};
+
+state_active(cast, _Whatever, Data) ->
+ lager:error("ue_fsm state_active: Unexpected cast event, ~p~n", [Data]),
+ {keep_state, Data}.
+
state_wait_delete_session_resp(enter, _OldState, Data) ->
{keep_state, Data};


To view, visit change 35955. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: erlang/osmo-epdg
Gerrit-Branch: master
Gerrit-Change-Id: Idc651cc19ae8c22c73e40dfc04130854082e2de5
Gerrit-Change-Number: 35955
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin@sysmocom.de>
Gerrit-MessageType: newchange