the pointer "tall_bsc_ctx" belongs to the gsm_data.c file not to include file.
diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h
index 9b4cf9d..af2e22c 100644
--- a/openbsc/include/openbsc/gsm_data.h
+++ b/openbsc/include/openbsc/gsm_data.h
@@ -415,7 +415,7 @@
 char *gsm_band_name(enum gsm_band band);
 enum gsm_band gsm_band_parse(int mhz);
 
-void *tall_bsc_ctx;
+extern void *tall_bsc_ctx;
 
 static inline int is_ipaccess_bts(struct gsm_bts *bts)
 {
diff --git a/openbsc/src/bsc_hack.c b/openbsc/src/bsc_hack.c
index e3e3a40..13438b9 100644
--- a/openbsc/src/bsc_hack.c
+++ b/openbsc/src/bsc_hack.c
@@ -49,8 +49,6 @@
 #include <openbsc/signal.h>
 #include <openbsc/talloc.h>
 
-void *tall_bsc_ctx;
-
 /* global pointer to the gsm network data structure */
 static struct gsm_network *gsmnet;
 
diff --git a/openbsc/src/gsm_data.c b/openbsc/src/gsm_data.c
index 81facdf..c21c6b4 100644
--- a/openbsc/src/gsm_data.c
+++ b/openbsc/src/gsm_data.c
@@ -27,6 +27,8 @@
 #include <openbsc/gsm_data.h>
 #include <openbsc/talloc.h>
 
+void *tall_bsc_ctx;
+
 void set_ts_e1link(struct gsm_bts_trx_ts *ts, u_int8_t e1_nr,
 		   u_int8_t e1_ts, u_int8_t e1_ts_ss)
 {