aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2010-12-29 11:07:22 +0100
committerHarald Welte <laforge@gnumonks.org>2010-12-29 13:40:56 +0100
commit6cff1d2931a9e0f7e602ab55cfaf0ca050f4aabd (patch)
treebd2dba9ffd850beec2ef5dcbe1a5d0b4f3bf2a5f /openbsc/src
parent81d43bbad419e3d38c5451692870dfa5bfa9651a (diff)
subscr: Dump the pending requests to help with debugging state.
Diffstat (limited to 'openbsc/src')
-rw-r--r--openbsc/src/gsm_subscriber.c15
-rw-r--r--openbsc/src/vty_interface_layer3.c22
2 files changed, 37 insertions, 0 deletions
diff --git a/openbsc/src/gsm_subscriber.c b/openbsc/src/gsm_subscriber.c
index 41b173998..005334f7b 100644
--- a/openbsc/src/gsm_subscriber.c
+++ b/openbsc/src/gsm_subscriber.c
@@ -29,6 +29,8 @@
#include <osmocore/talloc.h>
+#include <osmocom/vty/vty.h>
+
#include <openbsc/gsm_subscriber.h>
#include <openbsc/gsm_04_08.h>
#include <openbsc/debug.h>
@@ -388,3 +390,16 @@ int subscr_pending_clear(struct gsm_subscriber *sub)
return deleted;
}
+
+int subscr_pending_dump(struct gsm_subscriber *sub, struct vty *vty)
+{
+ struct subscr_request *req;
+
+ vty_out(vty, "Pending Requests for Subscriber %llu.%s", sub->id, VTY_NEWLINE);
+ llist_for_each_entry(req, &sub->requests, entry) {
+ vty_out(vty, "Channel type: %d State: %d Sub: %llu.%s",
+ req->channel_type, req->state, req->subscr->id, VTY_NEWLINE);
+ }
+
+ return 0;
+}
diff --git a/openbsc/src/vty_interface_layer3.c b/openbsc/src/vty_interface_layer3.c
index 5b6300ea0..e22a876eb 100644
--- a/openbsc/src/vty_interface_layer3.c
+++ b/openbsc/src/vty_interface_layer3.c
@@ -503,6 +503,27 @@ DEFUN(ena_subscr_clear,
return CMD_SUCCESS;
}
+DEFUN(ena_subscr_pend,
+ ena_subscr_pend_cmd,
+ "subscriber " SUBSCR_TYPES " ID show-pending",
+ SUBSCR_HELP "Clear the paging requests for this subscriber\n")
+{
+ struct gsm_network *gsmnet = gsmnet_from_vty(vty);
+ struct gsm_subscriber *subscr =
+ get_subscr_by_argv(gsmnet, argv[0], argv[1]);
+
+ if (!subscr) {
+ vty_out(vty, "%% No subscriber found for %s %s%s",
+ argv[0], argv[1], VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+
+ subscr_pending_dump(subscr, vty);
+ subscr_put(subscr);
+
+ return CMD_SUCCESS;
+}
+
#define A3A8_ALG_TYPES "(none|xor|comp128v1)"
#define A3A8_ALG_HELP \
"Use No A3A8 algorithm\n" \
@@ -743,6 +764,7 @@ int bsc_vty_init_extra(void)
install_element(ENABLE_NODE, &ena_subscr_authorized_cmd);
install_element(ENABLE_NODE, &ena_subscr_a3a8_cmd);
install_element(ENABLE_NODE, &ena_subscr_clear_cmd);
+ install_element(ENABLE_NODE, &ena_subscr_pend_cmd);
install_element(ENABLE_NODE, &subscriber_purge_cmd);
install_element(ENABLE_NODE, &smsqueue_trigger_cmd);
install_element(ENABLE_NODE, &smsqueue_max_cmd);