[signal] Add consumer of the signal api, inform about paging
Use the new signaling API in the telnet interface to broadcast
a succeeded or failed paging request.
diff --git a/src/telnet_interface.c b/src/telnet_interface.c
index 6462c5f..e3f56c2 100644
--- a/src/telnet_interface.c
+++ b/src/telnet_interface.c
@@ -32,6 +32,7 @@
#include <openbsc/msgb.h>
#include <openbsc/abis_rsl.h>
#include <openbsc/paging.h>
+#include <openbsc/signal.h>
extern void telnet_parse(struct telnet_connection *connection, char *line);
@@ -47,6 +48,8 @@
/* per network data */
static int telnet_new_connection(struct bsc_fd *fd, unsigned int what);
+static int telnet_paging_callback(struct signal_data *signal, void *data);
+
static struct bsc_fd server_socket = {
.when = BSC_FD_READ,
.cb = telnet_new_connection,
@@ -84,6 +87,9 @@
server_socket.data = network;
server_socket.fd = fd;
bsc_register_fd(&server_socket);
+
+ /* register paging callbacks */
+ register_signal_handler(S_PAGING, telnet_paging_callback, network);
}
void telnet_write_help(int fd) {
@@ -354,3 +360,24 @@
return 0;
}
+
+static int telnet_paging_callback(struct signal_data *signal, void *data)
+{
+ struct paging_signal_data *paging =
+ (struct paging_signal_data *) signal;
+ struct telnet_connection *con;
+
+ llist_for_each_entry(con, &active_connections, entry) {
+ if (paging->lchan) {
+ WRITE_CONNECTION(con->fd.fd, "Paging succeeded\n");
+ show_lchan(con->fd.fd, paging->lchan);
+ } else {
+ WRITE_CONNECTION(con->fd.fd, "Paging failed for subscriber: %s/%s/%s\n",
+ paging->subscr->imsi,
+ paging->subscr->tmsi,
+ paging->subscr->name);
+ }
+ }
+
+ return 0;
+}