diff --git a/include/openbsc/Makefile.am b/include/openbsc/Makefile.am
index 109f3c8..062df34 100644
--- a/include/openbsc/Makefile.am
+++ b/include/openbsc/Makefile.am
@@ -1,4 +1,4 @@
 noinst_HEADERS = abis_nm.h abis_rsl.h debug.h db.h gsm_04_08.h gsm_data.h \
 		 gsm_subscriber.h linuxlist.h msgb.h select.h tlv.h gsm_04_11.h \
 		 timer.h misdn.h chan_alloc.h telnet_interface.h paging.h \
-		 subchan_demux.h trau_frame.h e1_input.h trau_mux.h
+		 subchan_demux.h trau_frame.h e1_input.h trau_mux.h signal.h
diff --git a/include/openbsc/signal.h b/include/openbsc/signal.h
new file mode 100644
index 0000000..6a0d6fb
--- /dev/null
+++ b/include/openbsc/signal.h
@@ -0,0 +1,57 @@
+/* Generic signalling/notification infrastructure */
+/* (C) 2009 by Holger Hans Peter Freyther <zecke@selfish.org>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ */
+
+#ifndef OPENBSC_SIGNAL_H
+#define OPENBSC_SIGNAL_H
+
+#include <openbsc/gsm_data.h>
+#include <openbsc/gsm_subscriber.h>
+
+
+/*
+ * Signalling areas
+ */
+#define S_PAGING 0x0001
+
+
+struct signal_data {
+};
+
+
+struct paging_signal_data {
+	struct signal_data data;
+
+	struct gsm_subscriber *subscr;
+	struct gsm_bts *bts;
+
+	/* NULL in case the paging didn't work */
+	struct gsm_lchan *lchan;
+};
+
+
+/* Management */
+void register_signal_handler(int areas, int (*sig)(struct signal_data *, void *data), void *data);
+void remove_signal_handler(int (*sig)(struct signal_data *, void *data), void *data);
+
+/* Dispatch */
+void dispatch_signal(int area, struct signal_data *data);
+
+
+#endif
diff --git a/src/Makefile.am b/src/Makefile.am
index 2a70b8b..714fff5 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -7,7 +7,7 @@
 		gsm_subscriber.c msgb.c select.c chan_alloc.c timer.c debug.c db.c \
 		gsm_04_11.c telnet_interface.c telnet_parser.l subchan_demux.c \
 		trau_frame.c trau_mux.c paging.c e1_config.c e1_input.c tlv_parser.c \
-		input/misdn.c input/ipaccess.c
+		input/misdn.c input/ipaccess.c signal.c
 bsc_hack_LDADD = -ldl -ldbi
 
 bs11_config_SOURCES = bs11_config.c abis_nm.c gsm_data.c msgb.c debug.c select.c timer.c rs232.c
diff --git a/src/signal.c b/src/signal.c
new file mode 100644
index 0000000..d4a4a7c
--- /dev/null
+++ b/src/signal.c
@@ -0,0 +1,74 @@
+/* Generic signalling/notification infrastructure */
+/* (C) 2009 by Holger Hans Peter Freyther <zecke@selfish.org>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ */
+
+#include <openbsc/signal.h>
+#include <malloc.h>
+#include <string.h>
+
+
+static LLIST_HEAD(signal_handler_list);
+
+struct signal_handler {
+	struct llist_head entry;
+	int areas;
+
+	int (*sig_handler)(struct signal_data *, void*);
+	void *data;
+};
+
+
+void register_signal_handler(int areas,
+	int (*handler)(struct signal_data *, void *), void *data)
+{
+	struct signal_handler *sig_data =
+		(struct signal_handler *)malloc(sizeof(*sig_data));
+	memset(sig_data, 0, sizeof(*sig_data));
+
+
+	sig_data->areas = areas;
+	sig_data->data = data;
+	sig_data->sig_handler = handler;
+	llist_add_tail(&signal_handler_list, &sig_data->entry);
+}
+
+void remove_signal_handler(int (*sig_handler)(struct signal_data *, void *), void *data)
+{
+	struct signal_handler *handler;
+
+	llist_for_each_entry(handler, &signal_handler_list, entry) {
+		if (handler->sig_handler == sig_handler && handler->data == data) {
+			llist_del(&handler->entry);
+			free(handler);
+			break;
+		}
+	}
+}
+
+
+void dispatch_signal(int area, struct signal_data *data)
+{
+	struct signal_handler *handler;
+
+	llist_for_each_entry(handler, &signal_handler_list, entry) {
+		if (handler->areas & area) {
+		    (*handler->sig_handler)(data, handler->data);
+		}
+	}
+}
