aboutsummaryrefslogtreecommitdiffstats
path: root/src/telnet_interface.c
diff options
context:
space:
mode:
authorHolger Freyther <zecke@selfish.org>2009-01-04 20:18:23 +0000
committerHolger Freyther <zecke@selfish.org>2009-01-04 20:18:23 +0000
commit7448a53ddbf429423910b32198b82007185b0020 (patch)
tree6ae20f9153b68d1aec9a717b05d8fadf76d892d2 /src/telnet_interface.c
parent4c8f114976cecc0cbb6dd75ecaaa77a5326ae4d4 (diff)
Be able to initiate paging from the telnet interface
The actual paging by subscriber needs to be implemented
Diffstat (limited to 'src/telnet_interface.c')
-rw-r--r--src/telnet_interface.c26
1 files changed, 22 insertions, 4 deletions
diff --git a/src/telnet_interface.c b/src/telnet_interface.c
index 49a34c614..7da53fda5 100644
--- a/src/telnet_interface.c
+++ b/src/telnet_interface.c
@@ -30,6 +30,7 @@
#include <openbsc/chan_alloc.h>
#include <openbsc/gsm_04_08.h>
#include <openbsc/msgb.h>
+#include <openbsc/abis_rsl.h>
extern void telnet_parse(struct telnet_connection *connection, char *line);
@@ -135,10 +136,6 @@ void telnet_error_client(int fd) {
ret = write(fd, msg, strlen(msg));
}
-void telnet_page(struct telnet_connection *connection, const char *imsi, int page) {
- printf("going to page: '%s' %d\n", imsi, page);
-}
-
static struct gsm_lchan* find_channel(struct gsm_bts *bts, const char *imsi,
const char **error, int fd) {
int ret;
@@ -159,6 +156,27 @@ static struct gsm_lchan* find_channel(struct gsm_bts *bts, const char *imsi,
return lchan;
}
+void telnet_page(struct telnet_connection *connection, const char *imsi, int type) {
+ int ret;
+ static const char* error[] = {
+ "paging: IMSI not found\n",
+ "paging: No channel allocated for IMSI -> will allocate\n" };
+ struct gsm_bts *bts = &connection->network->bts[connection->bts];
+ struct gsm_lchan *lchan = find_channel(bts, imsi, error, connection->fd.fd);
+
+ if (lchan) {
+ static const char *msg = "paging: A Channel is already allocated.\n";
+ ret = write(connection->fd.fd, msg, strlen(msg));
+ return;
+ }
+
+ struct gsm_subscriber *subscr = subscr_get_by_imsi(imsi);
+ if (!subscr)
+ return;
+
+ rsl_paging_cmd_subscr(bts, type, subscr);
+}
+
void telnet_put_channel(struct telnet_connection *connection, const char *imsi) {
static const char* error[] = {
"put_channel: IMSI not found\n",