diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2010-12-29 13:45:49 +0100 |
---|---|---|
committer | Holger Hans Peter Freyther <zecke@selfish.org> | 2011-01-06 14:52:52 +0100 |
commit | 451eb29e37b3d901ac89b684b0eb259f838df6d4 (patch) | |
tree | ca0b990080862591070711b424232b7f2a78ca14 /openbsc | |
parent | 763b42a92a7c60f931a9c7a3130f85c7080bee07 (diff) |
subscr: Add a vty option to kick the queue.
Diffstat (limited to 'openbsc')
-rw-r--r-- | openbsc/include/openbsc/gsm_subscriber.h | 1 | ||||
-rw-r--r-- | openbsc/src/gsm_subscriber.c | 6 | ||||
-rw-r--r-- | openbsc/src/vty_interface_layer3.c | 22 |
3 files changed, 29 insertions, 0 deletions
diff --git a/openbsc/include/openbsc/gsm_subscriber.h b/openbsc/include/openbsc/gsm_subscriber.h index 6971bbf1f..c365bc7d7 100644 --- a/openbsc/include/openbsc/gsm_subscriber.h +++ b/openbsc/include/openbsc/gsm_subscriber.h @@ -93,6 +93,7 @@ struct gsm_subscriber *subscr_active_by_imsi(struct gsm_network *net, int subscr_pending_requests(struct gsm_subscriber *subscr); int subscr_pending_clear(struct gsm_subscriber *subscr); int subscr_pending_dump(struct gsm_subscriber *subscr, struct vty *vty); +int subscr_pending_kick(struct gsm_subscriber *subscr); char *subscr_name(struct gsm_subscriber *subscr); diff --git a/openbsc/src/gsm_subscriber.c b/openbsc/src/gsm_subscriber.c index 2f6cc3ca9..db61f25aa 100644 --- a/openbsc/src/gsm_subscriber.c +++ b/openbsc/src/gsm_subscriber.c @@ -402,3 +402,9 @@ int subscr_pending_dump(struct gsm_subscriber *sub, struct vty *vty) return 0; } + +int subscr_pending_kick(struct gsm_subscriber *sub) +{ + subscr_put_channel(sub); + return 0; +} diff --git a/openbsc/src/vty_interface_layer3.c b/openbsc/src/vty_interface_layer3.c index ccca79807..3c888dbc5 100644 --- a/openbsc/src/vty_interface_layer3.c +++ b/openbsc/src/vty_interface_layer3.c @@ -523,6 +523,27 @@ DEFUN(ena_subscr_pend, return CMD_SUCCESS; } +DEFUN(ena_subscr_kick, + ena_subscr_kick_cmd, + "subscriber " SUBSCR_TYPES " ID kick-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_kick(subscr); + subscr_put(subscr); + + return CMD_SUCCESS; +} + #define A3A8_ALG_TYPES "(none|xor|comp128v1)" #define A3A8_ALG_HELP \ "Use No A3A8 algorithm\n" \ @@ -764,6 +785,7 @@ int bsc_vty_init_extra(void) 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, &ena_subscr_kick_cmd); install_element(ENABLE_NODE, &subscriber_purge_cmd); install_element(ENABLE_NODE, &smsqueue_trigger_cmd); install_element(ENABLE_NODE, &smsqueue_max_cmd); |