libgb: Remove dependency to openbsc/debug.h
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/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: *;
+};