laforge has submitted this change. ( https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/40902?usp=email )
Change subject: pfcp_peer: add fetch_info/0 ......................................................................
pfcp_peer: add fetch_info/0
This is useful for introspection and the upcoming REST interface.
Change-Id: I3fdcf7f6daac09a8c523826995a610c04f5a327b --- M src/pfcp_peer.erl 1 file changed, 26 insertions(+), 1 deletion(-)
Approvals: laforge: Looks good to me, approved pespin: Looks good to me, but someone else must approve Jenkins Builder: Verified
diff --git a/src/pfcp_peer.erl b/src/pfcp_peer.erl index efcf0d0..f6e9c7d 100644 --- a/src/pfcp_peer.erl +++ b/src/pfcp_peer.erl @@ -48,6 +48,7 @@ session_establish_req/3, session_modify_req/3, session_delete_req/1, + fetch_info/0, shutdown/0]).
-include_lib("kernel/include/logger.hrl"). @@ -69,7 +70,14 @@ -type pfcp_msg() :: {pfcp_msg_type(), pfcp_ies()}. -type pfcp_pdu() :: #pfcp{}.
--export_type([pfcp_session_rsp/0, +-type peer_info() :: #{state := atom(), + laddr := inet:ip_address(), + raddr := inet:ip_address(), + lrts := pos_integer(), + rrts => pos_integer()}. + +-export_type([peer_info/0, + pfcp_session_rsp/0, pfcp_msg_type/0, pfcp_seq_nr/0, pfcp_seid/0, @@ -139,6 +147,11 @@ gen_statem:call(?MODULE, {?FUNCTION_NAME, SEID}).
+-spec fetch_info() -> peer_info(). +fetch_info() -> + gen_statem:call(?MODULE, ?FUNCTION_NAME). + + shutdown() -> gen_statem:stop(?MODULE).
@@ -338,6 +351,18 @@ S1 = registry_del({Pid, Ref}, S0), {keep_state, S1};
+handle_event(State, + {call, From}, fetch_info, + #peer_state{} = S) -> + Info = #{state => State, + laddr => S#peer_state.loc_addr, + raddr => S#peer_state.rem_addr, + lrts => S#peer_state.loc_rts, + rrts => S#peer_state.rem_rts}, + %% omit props with Value =:= undefined + Reply = maps:filter(fun(_K, V) -> V =/= undefined end, Info), + {keep_state_and_data, {reply, From, Reply}}; + handle_event(State, Event, EventData, S) -> ?LOG_ERROR("Unexpected event ~p in state ~p: ~p", [Event, State, EventData]), {keep_state, S}.