add 'show subscriber cache' vty command to debug subscriber refcount leaks
diff --git a/openbsc/src/vty_interface.c b/openbsc/src/vty_interface.c
index 0dcf057..8fc26e2 100644
--- a/openbsc/src/vty_interface.c
+++ b/openbsc/src/vty_interface.c
@@ -431,6 +431,7 @@
 		vty_out(vty, "    IMSI: %s%s", subscr->imsi, VTY_NEWLINE);
 	if (subscr->tmsi)
 		vty_out(vty, "    TMSI: %s%s", subscr->tmsi, VTY_NEWLINE);
+	vty_out(vty, "    Use count: %u%s", subscr->use_count, VTY_NEWLINE);
 }
 
 static void lchan_dump_vty(struct vty *vty, struct gsm_lchan *lchan)
@@ -1170,6 +1171,21 @@
 	return CMD_SUCCESS;
 }
 
+DEFUN(show_subscr_cache,
+      show_subscr_cache_cmd,
+      "show subscriber cache",
+	SHOW_STR "Display contents of subscriber cache\n")
+{
+	struct gsm_subscriber *subscr;
+
+	llist_for_each_entry(subscr, &active_subscribers, entry) {
+		vty_out(vty, "  Subscriber:%s", VTY_NEWLINE);
+		subscr_dump_vty(vty, subscr);
+	}
+
+	return CMD_SUCCESS;
+}
+
 DEFUN(sms_send_pend,
       sms_send_pend_cmd,
       "sms send pending MIN_ID",
@@ -1361,6 +1377,7 @@
 	install_element(VIEW_NODE, &show_paging_cmd);
 
 	install_element(VIEW_NODE, &show_subscr_cmd);
+	install_element(VIEW_NODE, &show_subscr_cache_cmd);
 
 	install_element(VIEW_NODE, &sms_send_pend_cmd);
 	install_element(VIEW_NODE, &sms_send_ext_cmd);