Add "show gsup-connections" VTY command

This can help with debugging and give operational insight.

Change-Id: I977b4b8cdb36dab42b3d736a28d8b5f17cff04cd
diff --git a/src/hlr_vty.c b/src/hlr_vty.c
index c10829d..ecc2f5c 100644
--- a/src/hlr_vty.c
+++ b/src/hlr_vty.c
@@ -1,9 +1,10 @@
 /* OsmoHLR VTY implementation */
 
 /* (C) 2016 sysmocom s.f.m.c. GmbH <info@sysmocom.de>
- * All Rights Reserved
- *
  * Author: Neels Hofmeyr <nhofmeyr@sysmocom.de>
+ * (C) 2018 Harald Welte <laforge@gnumonks.org>
+ *
+ * All Rights Reserved
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as published by
@@ -25,9 +26,11 @@
 #include <osmocom/vty/command.h>
 #include <osmocom/vty/logging.h>
 #include <osmocom/vty/misc.h>
+#include <osmocom/abis/ipa.h>
 
 #include "hlr_vty.h"
 #include "hlr_vty_subscr.h"
+#include "gsup_server.h"
 
 static struct hlr *g_hlr = NULL;
 
@@ -75,6 +78,33 @@
 	return CMD_SUCCESS;
 }
 
+static void show_one_conn(struct vty *vty, const struct osmo_gsup_conn *conn)
+{
+	const struct ipa_server_conn *isc = conn->conn;
+	char *name;
+	int rc;
+
+	rc = osmo_gsup_conn_ccm_get(conn, (uint8_t **) &name, IPAC_IDTAG_SERNR);
+	OSMO_ASSERT(rc);
+
+	vty_out(vty, " '%s' from %s:%5u, CS=%u, PS=%u, 3G_IND=%u%s",
+		name, isc->addr, isc->port, conn->supports_cs, conn->supports_ps, conn->auc_3g_ind,
+		VTY_NEWLINE);
+}
+
+DEFUN(show_gsup_conn, show_gsup_conn_cmd,
+	"show gsup-connections",
+	SHOW_STR "GSUP Connections from VLRs, SGSNs, EUSEs\n")
+{
+	struct osmo_gsup_server *gs = g_hlr->gs;
+	struct osmo_gsup_conn *conn;
+
+	llist_for_each_entry(conn, &gs->clients, list)
+		show_one_conn(vty, conn);
+
+	return CMD_SUCCESS;
+}
+
 DEFUN(cfg_hlr_gsup_bind_ip,
       cfg_hlr_gsup_bind_ip_cmd,
       "bind ip A.B.C.D",
@@ -129,6 +159,8 @@
 	logging_vty_add_cmds(cat);
 	osmo_talloc_vty_add_cmds();
 
+	install_element_ve(&show_gsup_conn_cmd);
+
 	install_element(CONFIG_NODE, &cfg_hlr_cmd);
 	install_node(&hlr_node, config_write_hlr);
 
diff --git a/tests/test_nodes.vty b/tests/test_nodes.vty
index 5afa144..21809c8 100644
--- a/tests/test_nodes.vty
+++ b/tests/test_nodes.vty
@@ -16,6 +16,7 @@
   show talloc-context (application|all) (full|brief|DEPTH)
   show talloc-context (application|all) (full|brief|DEPTH) tree ADDRESS
   show talloc-context (application|all) (full|brief|DEPTH) filter REGEXP
+  show gsup-connections
   subscriber (imsi|msisdn|id) IDENT show
 
 OsmoHLR> enable