diff --git a/openbsc/include/openbsc/debug.h b/openbsc/include/openbsc/debug.h
index 43f0ff8..0023b8c 100644
--- a/openbsc/include/openbsc/debug.h
+++ b/openbsc/include/openbsc/debug.h
@@ -40,8 +40,6 @@
 #define BSC_CTX_SUBSCR	1
 #define BSC_CTX_BTS	2
 #define BSC_CTX_SCCP	3
-#define BSC_CTX_NSVC	4
-#define BSC_CTX_BVC	5
 
 /* target */
 
diff --git a/openbsc/include/osmocom/gprs/gprs_bssgp.h b/openbsc/include/osmocom/gprs/gprs_bssgp.h
index 9970a51..25c902c 100644
--- a/openbsc/include/osmocom/gprs/gprs_bssgp.h
+++ b/openbsc/include/osmocom/gprs/gprs_bssgp.h
@@ -249,5 +249,6 @@
 
 /* gprs_bssgp_vty.c */
 int gprs_bssgp_vty_init(void);
+void gprs_bssgp_set_log_ss(int ss);
 
 #endif /* _GPRS_BSSGP_H */
diff --git a/openbsc/include/osmocom/gprs/gprs_msgb.h b/openbsc/include/osmocom/gprs/gprs_msgb.h
index eddd888..3567bb7 100644
--- a/openbsc/include/osmocom/gprs/gprs_msgb.h
+++ b/openbsc/include/osmocom/gprs/gprs_msgb.h
@@ -27,4 +27,8 @@
 #define msgb_bcid(__x)		LIBGB_MSGB_CB(__x)->bssgp_cell_id
 #define msgb_llch(__x)		LIBGB_MSGB_CB(__x)->llch
 
+/* logging contexts */
+#define GPRS_CTX_NSVC	0
+#define GPRS_CTX_BVC	1
+
 #endif
diff --git a/openbsc/include/osmocom/gprs/gprs_ns.h b/openbsc/include/osmocom/gprs/gprs_ns.h
index ab4bd4e..a77515d 100644
--- a/openbsc/include/osmocom/gprs/gprs_ns.h
+++ b/openbsc/include/osmocom/gprs/gprs_ns.h
@@ -258,6 +258,8 @@
 	uint8_t cause;
 };
 
+void gprs_ns_set_log_ss(int ss);
+
 /*! }@ */
 
 #endif
diff --git a/openbsc/src/gprs/gb_proxy_main.c b/openbsc/src/gprs/gb_proxy_main.c
index 5f67a71..e9f337f 100644
--- a/openbsc/src/gprs/gb_proxy_main.c
+++ b/openbsc/src/gprs/gb_proxy_main.c
@@ -236,6 +236,8 @@
 	}
 	gbcfg.nsi = bssgp_nsi;
 	gprs_ns_vty_init(bssgp_nsi);
+	gprs_ns_set_log_ss(DNS);
+	gprs_bssgp_set_log_ss(DBSSGP);
 	osmo_signal_register_handler(SS_L_NS, &gbprox_signal, NULL);
 
 	rc = gbproxy_parse_config(config_file, &gbcfg);
diff --git a/openbsc/src/gprs/sgsn_main.c b/openbsc/src/gprs/sgsn_main.c
index 98cc600..a579e7e 100644
--- a/openbsc/src/gprs/sgsn_main.c
+++ b/openbsc/src/gprs/sgsn_main.c
@@ -226,6 +226,9 @@
 	if (rc < 0)
 		exit(1);
 
+	gprs_ns_set_log_ss(DNS);
+	gprs_bssgp_set_log_ss(DBSSGP);
+
 	sgsn_nsi = gprs_ns_instantiate(&sgsn_ns_cb, tall_bsc_ctx);
 	if (!sgsn_nsi) {
 		LOGP(DGPRS, LOGL_ERROR, "Unable to instantiate NS\n");
diff --git a/openbsc/src/libcommon/debug.c b/openbsc/src/libcommon/debug.c
index e15342b..68756d0 100644
--- a/openbsc/src/libcommon/debug.c
+++ b/openbsc/src/libcommon/debug.c
@@ -30,6 +30,7 @@
 #include <osmocom/core/talloc.h>
 #include <osmocom/core/utils.h>
 #include <osmocom/core/logging.h>
+#include <osmocom/gprs/gprs_msgb.h>
 #include <openbsc/gsm_data.h>
 #include <openbsc/gsm_subscriber.h>
 #include <openbsc/debug.h>
@@ -173,8 +174,8 @@
 		     struct log_target *tar)
 {
 	struct gsm_subscriber *subscr = ctx->ctx[BSC_CTX_SUBSCR];
-	const struct gprs_nsvc *nsvc = ctx->ctx[BSC_CTX_NSVC];
-	const struct gprs_nsvc *bvc = ctx->ctx[BSC_CTX_BVC];
+	const struct gprs_nsvc *nsvc = ctx->ctx[GPRS_CTX_NSVC];
+	const struct gprs_nsvc *bvc = ctx->ctx[GPRS_CTX_BVC];
 
 	if ((tar->filter_map & (1 << FLT_IMSI)) != 0
 	    && subscr && strcmp(subscr->imsi, tar->filter_data[FLT_IMSI]) == 0)
diff --git a/openbsc/src/libgb/common_vty.c b/openbsc/src/libgb/common_vty.c
index 269df8c..a16e995 100644
--- a/openbsc/src/libgb/common_vty.c
+++ b/openbsc/src/libgb/common_vty.c
@@ -61,3 +61,5 @@
 	}
 	return CMD_SUCCESS;
 }
+
+int DNS, DBSSGP;
diff --git a/openbsc/src/libgb/common_vty.h b/openbsc/src/libgb/common_vty.h
index a278266..8c6b9ab 100644
--- a/openbsc/src/libgb/common_vty.h
+++ b/openbsc/src/libgb/common_vty.h
@@ -1,4 +1,7 @@
 #include <osmocom/vty/command.h>
+#include <osmocom/core/logging.h>
+
+extern int DNS, DBSSGP;
 
 extern struct cmd_element libgb_exit_cmd;
 extern struct cmd_element libgb_end_cmd;
diff --git a/openbsc/src/libgb/gprs_bssgp.c b/openbsc/src/libgb/gprs_bssgp.c
index 33cca3d..a649736 100644
--- a/openbsc/src/libgb/gprs_bssgp.c
+++ b/openbsc/src/libgb/gprs_bssgp.c
@@ -32,13 +32,13 @@
 #include <osmocom/core/talloc.h>
 #include <osmocom/core/rate_ctr.h>
 
-#include <openbsc/debug.h>
-
 #include <osmocom/gprs/gprs_bssgp.h>
 #include <osmocom/gprs/gprs_ns.h>
 
 #include <openbsc/gprs_gmm.h>
 
+#include "common_vty.h"
+
 void *bssgp_tall_ctx = NULL;
 
 static const struct rate_ctr_desc bssgp_ctr_description[] = {
@@ -683,7 +683,7 @@
 	}
 
 	if (bctx) {
-		log_set_context(BSC_CTX_BVC, bctx);
+		log_set_context(GPRS_CTX_BVC, bctx);
 		rate_ctr_inc(&bctx->ctrg->ctr[BSSGP_CTR_PKTS_IN]);
 		rate_ctr_add(&bctx->ctrg->ctr[BSSGP_CTR_BYTES_IN],
 			     msgb_bssgp_len(msg));
@@ -853,3 +853,8 @@
 
 	return gprs_ns_sendmsg(bssgp_nsi, msg);
 }
+
+void gprs_bssgp_set_log_ss(int ss)
+{
+	DBSSGP = ss;
+}
diff --git a/openbsc/src/libgb/gprs_bssgp_bss.c b/openbsc/src/libgb/gprs_bssgp_bss.c
index a681b9d..4ca11ff 100644
--- a/openbsc/src/libgb/gprs_bssgp_bss.c
+++ b/openbsc/src/libgb/gprs_bssgp_bss.c
@@ -31,7 +31,7 @@
 #include <osmocom/gprs/gprs_bssgp.h>
 #include <osmocom/gprs/gprs_ns.h>
 
-#include <openbsc/debug.h>
+#include "common_vty.h"
 
 uint8_t *bssgp_msgb_tlli_put(struct msgb *msg, uint32_t tlli)
 {
diff --git a/openbsc/src/libgb/gprs_bssgp_util.c b/openbsc/src/libgb/gprs_bssgp_util.c
index 6ab97a7..ae4647e 100644
--- a/openbsc/src/libgb/gprs_bssgp_util.c
+++ b/openbsc/src/libgb/gprs_bssgp_util.c
@@ -30,7 +30,7 @@
 #include <osmocom/gprs/gprs_bssgp.h>
 #include <osmocom/gprs/gprs_ns.h>
 
-#include <openbsc/debug.h>
+#include "common_vty.h"
 
 struct gprs_ns_inst *bssgp_nsi;
 
diff --git a/openbsc/src/libgb/gprs_bssgp_vty.c b/openbsc/src/libgb/gprs_bssgp_vty.c
index 37919e6..ff1b8f5 100644
--- a/openbsc/src/libgb/gprs_bssgp_vty.c
+++ b/openbsc/src/libgb/gprs_bssgp_vty.c
@@ -40,8 +40,6 @@
 #include <osmocom/vty/telnet_interface.h>
 #include <osmocom/vty/misc.h>
 
-#include <openbsc/debug.h>
-
 #include "common_vty.h"
 
 /* FIXME: this should go to some common file as it is copied
diff --git a/openbsc/src/libgb/gprs_ns.c b/openbsc/src/libgb/gprs_ns.c
index 617c50d..04a7f10 100644
--- a/openbsc/src/libgb/gprs_ns.c
+++ b/openbsc/src/libgb/gprs_ns.c
@@ -79,7 +79,7 @@
 #include <osmocom/gprs/gprs_bssgp.h>
 #include <osmocom/gprs/gprs_ns_frgre.h>
 
-#include <openbsc/debug.h>
+#include "common_vty.h"
 
 static const struct tlv_definition ns_att_tlvdef = {
 	.def = {
@@ -233,7 +233,7 @@
 {
 	int ret;
 
-	log_set_context(BSC_CTX_NSVC, nsvc);
+	log_set_context(GPRS_CTX_NSVC, nsvc);
 
 	/* Increment number of Uplink bytes */
 	rate_ctr_inc(&nsvc->ctrg->ctr[NS_CTR_PKTS_OUT]);
@@ -260,7 +260,7 @@
 	struct msgb *msg = gprs_ns_msgb_alloc();
 	struct gprs_ns_hdr *nsh;
 
-	log_set_context(BSC_CTX_NSVC, nsvc);
+	log_set_context(GPRS_CTX_NSVC, nsvc);
 
 	if (!msg)
 		return -ENOMEM;
@@ -284,7 +284,7 @@
 	uint16_t nsvci = htons(nsvc->nsvci);
 	uint16_t nsei = htons(nsvc->nsei);
 
-	log_set_context(BSC_CTX_NSVC, nsvc);
+	log_set_context(GPRS_CTX_NSVC, nsvc);
 
 	if (!msg)
 		return -ENOMEM;
@@ -316,7 +316,7 @@
 	struct gprs_ns_hdr *nsh;
 	uint16_t nsvci = htons(nsvc->nsvci);
 
-	log_set_context(BSC_CTX_NSVC, nsvc);
+	log_set_context(GPRS_CTX_NSVC, nsvc);
 
 	bvci = htons(bvci);
 
@@ -369,7 +369,7 @@
 	struct gprs_ns_hdr *nsh;
 	uint16_t nsvci = htons(nsvc->nsvci);
 
-	log_set_context(BSC_CTX_NSVC, nsvc);
+	log_set_context(GPRS_CTX_NSVC, nsvc);
 
 	if (!msg)
 		return -ENOMEM;
@@ -397,7 +397,7 @@
  */
 int gprs_ns_tx_unblock(struct gprs_nsvc *nsvc)
 {
-	log_set_context(BSC_CTX_NSVC, nsvc);
+	log_set_context(GPRS_CTX_NSVC, nsvc);
 	LOGP(DNS, LOGL_INFO, "NSEI=%u Tx NS UNBLOCK (NSVCI=%u)\n",
 		nsvc->nsei, nsvc->nsvci);
 
@@ -410,7 +410,7 @@
  */
 int gprs_ns_tx_alive(struct gprs_nsvc *nsvc)
 {
-	log_set_context(BSC_CTX_NSVC, nsvc);
+	log_set_context(GPRS_CTX_NSVC, nsvc);
 	LOGP(DNS, LOGL_DEBUG, "NSEI=%u Tx NS ALIVE (NSVCI=%u)\n",
 		nsvc->nsei, nsvc->nsvci);
 
@@ -423,7 +423,7 @@
  */
 int gprs_ns_tx_alive_ack(struct gprs_nsvc *nsvc)
 {
-	log_set_context(BSC_CTX_NSVC, nsvc);
+	log_set_context(GPRS_CTX_NSVC, nsvc);
 	LOGP(DNS, LOGL_DEBUG, "NSEI=%u Tx NS ALIVE_ACK (NSVCI=%u)\n",
 		nsvc->nsei, nsvc->nsvci);
 
@@ -448,7 +448,7 @@
 	enum ns_timeout tout = timer_mode_tout[mode];
 	unsigned int seconds = nsvc->nsi->timeout[tout];
 
-	log_set_context(BSC_CTX_NSVC, nsvc);
+	log_set_context(GPRS_CTX_NSVC, nsvc);
 	DEBUGP(DNS, "NSEI=%u Starting timer in mode %s (%u seconds)\n",
 		nsvc->nsei, get_value_string(timer_mode_strs, mode),
 		seconds);
@@ -466,7 +466,7 @@
 	enum ns_timeout tout = timer_mode_tout[nsvc->timer_mode];
 	unsigned int seconds = nsvc->nsi->timeout[tout];
 
-	log_set_context(BSC_CTX_NSVC, nsvc);
+	log_set_context(GPRS_CTX_NSVC, nsvc);
 	DEBUGP(DNS, "NSEI=%u Timer expired in mode %s (%u seconds)\n",
 		nsvc->nsei, get_value_string(timer_mode_strs, nsvc->timer_mode),
 		seconds);
@@ -520,7 +520,7 @@
 	struct gprs_ns_hdr *nsh;
 	uint16_t nsvci, nsei;
 
-	log_set_context(BSC_CTX_NSVC, nsvc);
+	log_set_context(GPRS_CTX_NSVC, nsvc);
 	if (!msg)
 		return -ENOMEM;
 
@@ -564,7 +564,7 @@
 		msgb_free(msg);
 		return -EINVAL;
 	}
-	log_set_context(BSC_CTX_NSVC, nsvc);
+	log_set_context(GPRS_CTX_NSVC, nsvc);
 
 	if (!(nsvc->state & NSE_S_ALIVE)) {
 		LOGP(DNS, LOGL_ERROR, "NSEI=%u is not alive, cannot send\n",
@@ -760,7 +760,7 @@
 		if (nsh->pdu_type != NS_PDUT_RESET) {
 			/* Since we have no NSVC, we have to use a fake */
 			nsvc = nsi->unknown_nsvc;
-			log_set_context(BSC_CTX_NSVC, nsvc);
+			log_set_context(GPRS_CTX_NSVC, nsvc);
 			LOGP(DNS, LOGL_INFO, "Rejecting NS PDU type 0x%0x "
 				"from %s:%u for non-existing NS-VC\n",
 				nsh->pdu_type, inet_ntoa(saddr->sin_addr),
@@ -799,7 +799,7 @@
 		if (!nsvc) {
 			nsvc = nsvc_create(nsi, 0xffff);
 			nsvc->ll = ll;
-			log_set_context(BSC_CTX_NSVC, nsvc);
+			log_set_context(GPRS_CTX_NSVC, nsvc);
 			LOGP(DNS, LOGL_INFO, "Creating NS-VC for BSS at %s:%u\n",
 				inet_ntoa(saddr->sin_addr), ntohs(saddr->sin_port));
 		}
@@ -808,7 +808,7 @@
 	} else
 		msgb_nsei(msg) = nsvc->nsei;
 
-	log_set_context(BSC_CTX_NSVC, nsvc);
+	log_set_context(GPRS_CTX_NSVC, nsvc);
 
 	/* Increment number of Incoming bytes */
 	rate_ctr_inc(&nsvc->ctrg->ctr[NS_CTR_PKTS_IN]);
@@ -1095,4 +1095,9 @@
 	return nsvc;
 }
 
+void gprs_ns_set_log_ss(int ss)
+{
+	DNS = ss;
+}
+
 /*! }@ */
diff --git a/openbsc/src/libgb/gprs_ns_frgre.c b/openbsc/src/libgb/gprs_ns_frgre.c
index 9be9f2a..be5f0f6 100644
--- a/openbsc/src/libgb/gprs_ns_frgre.c
+++ b/openbsc/src/libgb/gprs_ns_frgre.c
@@ -37,7 +37,7 @@
 #include <osmocom/core/socket.h>
 #include <osmocom/gprs/gprs_ns.h>
 
-#include <openbsc/debug.h>
+#include "common_vty.h"
 
 #define GRE_PTYPE_FR	0x6559
 #define GRE_PTYPE_IPv4	0x0800
diff --git a/openbsc/src/libgb/gprs_ns_vty.c b/openbsc/src/libgb/gprs_ns_vty.c
index 0ae3141..2f0b70a 100644
--- a/openbsc/src/libgb/gprs_ns_vty.c
+++ b/openbsc/src/libgb/gprs_ns_vty.c
@@ -40,8 +40,6 @@
 #include <osmocom/vty/telnet_interface.h>
 #include <osmocom/vty/misc.h>
 
-#include <openbsc/debug.h>
-
 #include "common_vty.h"
 
 static struct gprs_ns_inst *vty_nsi = NULL;
diff --git a/openbsc/src/libgb/libosmo-gb.map b/openbsc/src/libgb/libosmo-gb.map
new file mode 100644
index 0000000..ab3c4ea
--- /dev/null
+++ b/openbsc/src/libgb/libosmo-gb.map
@@ -0,0 +1,56 @@
+LIBOSMOGB_1.0 {
+global:
+bssgp_cause_str;
+bssgp_create_cell_id;
+bssgp_msgb_alloc;
+bssgp_msgb_tlli_put;
+bssgp_parse_cell_id;
+bssgp_tx_bvc_block;
+bssgp_tx_bvc_reset;
+bssgp_tx_bvc_unblock;
+bssgp_tx_flush_ll_ack;
+bssgp_tx_llc_discarded;
+bssgp_tx_ra_capa_upd;
+bssgp_tx_radio_status_imsi;
+bssgp_tx_radio_status_tlli;
+bssgp_tx_radio_status_tmsi;
+bssgp_tx_resume;
+bssgp_tx_resume_ack;
+bssgp_tx_resume_nack;
+bssgp_tx_simple_bvci;
+bssgp_tx_status;
+bssgp_tx_suspend;
+bssgp_tx_suspend_ack;
+bssgp_tx_suspend_nack;
+bssgp_tx_ul_ud;
+
+gprs_bssgp_rcvmsg
+gprs_bssgp_rx_paging
+gprs_bssgp_set_log_ss
+gprs_bssgp_tx_dl_ud
+gprs_bssgp_tx_paging
+gprs_bssgp_vty_init
+
+gprs_ns_cause_str;
+gprs_ns_destroy;
+gprs_ns_frgre_listen;
+gprs_ns_frgre_sendmsg;
+gprs_ns_instantiate;
+gprs_ns_nsip_listen;
+gprs_ns_rcvmsg;
+gprs_ns_sendmsg;
+gprs_ns_set_log_ss;
+gprs_ns_tx_alive;
+gprs_ns_tx_alive_ack;
+gprs_ns_tx_block;
+gprs_ns_tx_reset;
+gprs_ns_tx_status;
+gprs_ns_tx_unblock;
+gprs_ns_vty_init;
+
+gprs_nsvc_reset;
+
+nsip_connect;
+
+local: *;
+};
