fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/40906?usp=email )
Change subject: erab_fsm: make fetch_info/1 return a map ......................................................................
erab_fsm: make fetch_info/1 return a map
Change-Id: I83999fa9346d19260cb44e0bb6a36b7ee1c12ce1 --- M src/erab_fsm.erl M src/s1ap_proxy.erl M test/erab_fsm_test.erl 3 files changed, 26 insertions(+), 15 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/erlang/osmo-s1gw refs/changes/06/40906/1
diff --git a/src/erab_fsm.erl b/src/erab_fsm.erl index cd4fa27..f5d8efe 100644 --- a/src/erab_fsm.erl +++ b/src/erab_fsm.erl @@ -103,6 +103,17 @@ -type iface() :: 'Core' | 'Access'. -type pfcp_ie() :: map().
+-type erab_info() :: #{uid := term(), + state := atom(), + f_teid_u2c => teid_addr(), + f_teid_c2u => teid_addr(), + f_teid_a2u => teid_addr(), + f_teid_u2a => teid_addr(), + seid_loc := pfcp_peer:pfcp_seid(), + seid_rem => pfcp_peer:pfcp_seid()}. + +-export_type([erab_info/0]). +
%% ------------------------------------------------------------------ %% public API @@ -205,7 +216,7 @@ gen_statem:cast(Pid, ?FUNCTION_NAME).
--spec fetch_info(pid()) -> proplists:proplist(). +-spec fetch_info(pid()) -> erab_info(). fetch_info(Pid) -> gen_statem:call(Pid, ?FUNCTION_NAME).
@@ -542,16 +553,16 @@ %% Event handler for all states handle_event(State, {call, From}, fetch_info, #erab_state{} = S) -> - Info = [{state, State}, - {uid, S#erab_state.uid}, - {f_teid_u2c, S#erab_state.u2c}, - {f_teid_c2u, S#erab_state.c2u}, - {f_teid_a2u, S#erab_state.a2u}, - {f_teid_u2a, S#erab_state.u2a}, - {seid_loc, S#erab_state.seid_loc}, - {seid_rem, S#erab_state.seid_rem}], - %% omit props with Value =:= undefined - Reply = lists:filter(fun({_, V}) -> V =/= undefined end, Info), + Info = #{state => State, + uid => S#erab_state.uid, + f_teid_u2c => S#erab_state.u2c, + f_teid_c2u => S#erab_state.c2u, + f_teid_a2u => S#erab_state.a2u, + f_teid_u2a => S#erab_state.u2a, + seid_loc => S#erab_state.seid_loc, + seid_rem => S#erab_state.seid_rem}, + %% omit fields with Value =:= undefined + Reply = maps:filter(fun(_K, V) -> V =/= undefined end, Info), {keep_state_and_data, {reply, From, Reply}};
handle_event(State, {call, From}, EventData, _S) -> diff --git a/src/s1ap_proxy.erl b/src/s1ap_proxy.erl index 8111ad6..c36fad6 100644 --- a/src/s1ap_proxy.erl +++ b/src/s1ap_proxy.erl @@ -907,12 +907,12 @@ {ok, Pid} -> %% Ignore F-TEID in the original message, just replace it with C2U F-TEID Info = erab_fsm:fetch_info(Pid), - case proplists:get_value(f_teid_c2u, Info) of - {TEID, TLA} -> + case maps:find(f_teid_c2u, Info) of + {ok, {TEID, TLA}} -> C1 = C0#'E-RABNotToBeModifiedItemBearerModInd'{'transportLayerAddress' = TLA, 'dL-GTP-TEID' = << TEID:32/big >>}, {{ok, C1}, S}; - undefined -> + error -> ?LOG_ERROR("E-RAB-ID ~p :: missing C2U F-TEID", [erab_uid(ERABId, S)]), {{error, missing_f_teid}, S} end; diff --git a/test/erab_fsm_test.erl b/test/erab_fsm_test.erl index a3dfb4d..e49d5cc 100644 --- a/test/erab_fsm_test.erl +++ b/test/erab_fsm_test.erl @@ -35,7 +35,7 @@
erab_fsm_info(Pid, Key) -> Info = erab_fsm:fetch_info(Pid), - proplists:get_value(Key, Info). + maps:get(Key, Info).
%% ------------------------------------------------------------------