fixeria has submitted this change. (
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/38791?usp=email )
Change subject: sctp_server: add fetch_conn_list/0 for state introspection
......................................................................
sctp_server: add fetch_conn_list/0 for state introspection
This API will be used by the upcoming interactive VTY interface.
Change-Id: Ia673d6d57bbc3decf2c8038c1ee9573937702520
---
M src/sctp_server.erl
1 file changed, 28 insertions(+), 0 deletions(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, but someone else must approve
fixeria: Looks good to me, approved
pespin: Looks good to me, but someone else must approve
diff --git a/src/sctp_server.erl b/src/sctp_server.erl
index 68d1799..9b10bbe 100644
--- a/src/sctp_server.erl
+++ b/src/sctp_server.erl
@@ -42,6 +42,7 @@
terminate/2]).
-export([start_link/4,
send_data/2,
+ fetch_conn_list/0,
shutdown/0]).
-include_lib("kernel/include/logger.hrl").
@@ -54,6 +55,13 @@
-type addr_port() :: {inet:ip_address(),
inet:port_number()}.
+-type conn_info() :: #{pid => pid(),
+ aid => gen_sctp:assoc_id(),
+ addr => inet:ip_address(),
+ port => inet:port_number()
+ }.
+
+
-record(server_state, {sock :: gen_sctp:sctp_socket(),
clients :: dict:dict(),
handler :: module(),
@@ -80,6 +88,11 @@
gen_server:cast(?MODULE, {?FUNCTION_NAME, Aid, Data}).
+-spec fetch_conn_list() -> [conn_info()].
+fetch_conn_list() ->
+ gen_server:call(?MODULE, ?FUNCTION_NAME).
+
+
shutdown() ->
gen_server:stop(?MODULE).
@@ -107,6 +120,12 @@
priv = Priv}}.
+handle_call(fetch_conn_list, _From,
+ #server_state{clients = Clients} = S) ->
+ Reply = lists:map(fun gen_conn_info/1,
+ dict:to_list(Clients)),
+ {reply, Reply, S};
+
handle_call(Info, From, S) ->
?LOG_ERROR("unknown ~p() from ~p: ~p", [?FUNCTION_NAME, From, Info]),
{reply, {error, not_implemented}, S}.
@@ -268,4 +287,13 @@
close_conns(_Sock, _Handler, []) ->
ok.
+
+-spec gen_conn_info(tuple()) -> conn_info().
+gen_conn_info({Aid, #client_state{pid = Pid,
+ addr_port = {Addr, Port}}}) ->
+ #{pid => Pid,
+ aid => Aid,
+ addr => Addr,
+ port => Port}.
+
%% vim:set ts=4 sw=4 et:
--
To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/38791?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: erlang/osmo-s1gw
Gerrit-Branch: master
Gerrit-Change-Id: Ia673d6d57bbc3decf2c8038c1ee9573937702520
Gerrit-Change-Number: 38791
Gerrit-PatchSet: 2
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>
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>