diff --git a/openbsc/src/gprs/gb_proxy.c b/openbsc/src/gprs/gb_proxy.c
index 500a1b2..be361e1 100644
--- a/openbsc/src/gprs/gb_proxy.c
+++ b/openbsc/src/gprs/gb_proxy.c
@@ -615,8 +615,8 @@
 	if (signal == S_NS_ALIVE_EXP && nsvc->remote_end_is_sgsn) {
 		LOGP(DGPRS, LOGL_NOTICE, "Tns alive expired too often, "
 			"re-starting RESET procedure\n");
-		nsip_connect(nsvc->nsi, &nsvc->ip.bts_addr, nsvc->nsei,
-			     nsvc->nsvci);
+		gprs_ns_nsip_connect(nsvc->nsi, &nsvc->ip.bts_addr,
+				  nsvc->nsei, nsvc->nsvci);
 	}
 
 	if (!nsvc->remote_end_is_sgsn) {
diff --git a/openbsc/src/gprs/gb_proxy_main.c b/openbsc/src/gprs/gb_proxy_main.c
index e9f337f..921b53f 100644
--- a/openbsc/src/gprs/gb_proxy_main.c
+++ b/openbsc/src/gprs/gb_proxy_main.c
@@ -246,7 +246,7 @@
 		exit(2);
 	}
 
-	if (!nsvc_by_nsei(gbcfg.nsi, gbcfg.nsip_sgsn_nsei)) {
+	if (!gprs_nsvc_by_nsei(gbcfg.nsi, gbcfg.nsip_sgsn_nsei)) {
 		LOGP(DGPRS, LOGL_FATAL, "You cannot proxy to NSEI %u "
 			"without creating that NSEI before\n",
 			gbcfg.nsip_sgsn_nsei);
diff --git a/openbsc/src/libcommon/debug.c b/openbsc/src/libcommon/debug.c
index 68756d0..fad5e27 100644
--- a/openbsc/src/libcommon/debug.c
+++ b/openbsc/src/libcommon/debug.c
@@ -211,25 +211,3 @@
 		target->filter_data[FLT_IMSI] = NULL;
 	}
 }
-
-void log_set_nsvc_filter(struct log_target *target, struct gprs_nsvc *nsvc)
-{
-	if (nsvc) {
-		target->filter_map |= (1 << FLT_NSVC);
-		target->filter_data[FLT_NSVC] = nsvc;
-	} else if (target->filter_data[FLT_NSVC]) {
-		target->filter_map = ~(1 << FLT_NSVC);
-		target->filter_data[FLT_NSVC] = NULL;
-	}
-}
-
-void log_set_bvc_filter(struct log_target *target, struct bssgp_bvc_ctx *bctx)
-{
-	if (bctx) {
-		target->filter_map |= (1 << FLT_BVC);
-		target->filter_data[FLT_BVC] = bctx;
-	} else if (target->filter_data[FLT_NSVC]) {
-		target->filter_map = ~(1 << FLT_BVC);
-		target->filter_data[FLT_BVC] = NULL;
-	}
-}
diff --git a/openbsc/src/libgb/common_vty.c b/openbsc/src/libgb/common_vty.c
index a16e995..408dddf 100644
--- a/openbsc/src/libgb/common_vty.c
+++ b/openbsc/src/libgb/common_vty.c
@@ -28,6 +28,10 @@
 #include <osmocom/vty/buffer.h>
 #include <osmocom/vty/vty.h>
 
+#include <osmocom/gprs/gprs_msgb.h>
+
+#include "common_vty.h"
+
 /* Down vty node level. */
 gDEFUN(libgb_exit,
        libgb_exit_cmd, "exit", "Exit current mode and down to previous mode\n")
@@ -62,4 +66,24 @@
 	return CMD_SUCCESS;
 }
 
+int gprs_log_filter_fn(const struct log_context *ctx,
+			struct log_target *tar)
+{
+	const struct gprs_nsvc *nsvc = ctx->ctx[GPRS_CTX_NSVC];
+	const struct gprs_nsvc *bvc = ctx->ctx[GPRS_CTX_BVC];
+
+	/* Filter on the NS Virtual Connection */
+	if ((tar->filter_map & (1 << FLT_NSVC)) != 0
+	    && nsvc && (nsvc == tar->filter_data[FLT_NSVC]))
+		return 1;
+
+	/* Filter on the NS Virtual Connection */
+	if ((tar->filter_map & (1 << FLT_BVC)) != 0
+	    && bvc && (bvc == tar->filter_data[FLT_BVC]))
+		return 1;
+
+	return 0;
+}
+
+
 int DNS, DBSSGP;
diff --git a/openbsc/src/libgb/common_vty.h b/openbsc/src/libgb/common_vty.h
index 8c6b9ab..d8d0040 100644
--- a/openbsc/src/libgb/common_vty.h
+++ b/openbsc/src/libgb/common_vty.h
@@ -3,6 +3,12 @@
 
 extern int DNS, DBSSGP;
 
+enum log_filter {
+	_FLT_ALL = LOG_FILTER_ALL,	/* libosmocore */
+	FLT_NSVC = 1,
+	FLT_BVC  = 2,
+};
+
 extern struct cmd_element libgb_exit_cmd;
 extern struct cmd_element libgb_end_cmd;
 
diff --git a/openbsc/src/libgb/gprs_bssgp_vty.c b/openbsc/src/libgb/gprs_bssgp_vty.c
index ff1b8f5..49a90c3 100644
--- a/openbsc/src/libgb/gprs_bssgp_vty.c
+++ b/openbsc/src/libgb/gprs_bssgp_vty.c
@@ -48,6 +48,18 @@
 	{ 0, NULL }
 };
 
+static void log_set_bvc_filter(struct log_target *target,
+				struct bssgp_bvc_ctx *bctx)
+{
+	if (bctx) {
+		target->filter_map |= (1 << FLT_BVC);
+		target->filter_data[FLT_BVC] = bctx;
+	} else if (target->filter_data[FLT_NSVC]) {
+		target->filter_map = ~(1 << FLT_BVC);
+		target->filter_data[FLT_BVC] = NULL;
+	}
+}
+
 static struct cmd_node bssgp_node = {
 	L_BSSGP_NODE,
 	"%s(bssgp)#",
diff --git a/openbsc/src/libgb/gprs_ns.c b/openbsc/src/libgb/gprs_ns.c
index 04a7f10..cdee833 100644
--- a/openbsc/src/libgb/gprs_ns.c
+++ b/openbsc/src/libgb/gprs_ns.c
@@ -121,7 +121,7 @@
  *  \param[in] nsvci NSVCI to be searched
  *  \returns gprs_nsvc of respective NSVCI
  */
-struct gprs_nsvc *nsvc_by_nsvci(struct gprs_ns_inst *nsi, uint16_t nsvci)
+struct gprs_nsvc *gprs_nsvc_by_nsvci(struct gprs_ns_inst *nsi, uint16_t nsvci)
 {
 	struct gprs_nsvc *nsvc;
 	llist_for_each_entry(nsvc, &nsi->gprs_nsvcs, list) {
@@ -136,7 +136,7 @@
  *  \param[in] nsei NSEI to be searched
  *  \returns gprs_nsvc of respective NSEI
  */
-struct gprs_nsvc *nsvc_by_nsei(struct gprs_ns_inst *nsi, uint16_t nsei)
+struct gprs_nsvc *gprs_nsvc_by_nsei(struct gprs_ns_inst *nsi, uint16_t nsei)
 {
 	struct gprs_nsvc *nsvc;
 	llist_for_each_entry(nsvc, &nsi->gprs_nsvcs, list) {
@@ -162,7 +162,7 @@
 
 static void gprs_ns_timer_cb(void *data);
 
-struct gprs_nsvc *nsvc_create(struct gprs_ns_inst *nsi, uint16_t nsvci)
+struct gprs_nsvc *gprs_nsvc_create(struct gprs_ns_inst *nsi, uint16_t nsvci)
 {
 	struct gprs_nsvc *nsvc;
 
@@ -185,7 +185,7 @@
 /*! \brief Delete given NS-VC
  *  \param[in] nsvc gprs_nsvc to be deleted
  */
-void nsvc_delete(struct gprs_nsvc *nsvc)
+void gprs_nsvc_delete(struct gprs_nsvc *nsvc)
 {
 	if (osmo_timer_pending(&nsvc->timer))
 		osmo_timer_del(&nsvc->timer);
@@ -557,7 +557,7 @@
 	struct gprs_ns_hdr *nsh;
 	uint16_t bvci = msgb_bvci(msg);
 
-	nsvc = nsvc_by_nsei(nsi, msgb_nsei(msg));
+	nsvc = gprs_nsvc_by_nsei(nsi, msgb_nsei(msg));
 	if (!nsvc) {
 		LOGP(DNS, LOGL_ERROR, "Unable to resolve NSEI %u "
 			"to NS-VC!\n", msgb_nsei(msg));
@@ -795,9 +795,9 @@
 		nsei = ntohs(*(uint16_t *)TLVP_VAL(&tp, NS_IE_NSEI));
 		/* Check if we already know this NSEI, the remote end might
 		 * simply have changed addresses, or it is a SGSN */
-		nsvc = nsvc_by_nsei(nsi, nsei);
+		nsvc = gprs_nsvc_by_nsei(nsi, nsei);
 		if (!nsvc) {
-			nsvc = nsvc_create(nsi, 0xffff);
+			nsvc = gprs_nsvc_create(nsi, 0xffff);
 			nsvc->ll = ll;
 			log_set_context(GPRS_CTX_NSVC, nsvc);
 			LOGP(DNS, LOGL_INFO, "Creating NS-VC for BSS at %s:%u\n",
@@ -909,7 +909,7 @@
 
 	/* Create the dummy NSVC that we use for sending
 	 * messages to non-existant/unknown NS-VC's */
-	nsi->unknown_nsvc = nsvc_create(nsi, 0xfffe);
+	nsi->unknown_nsvc = gprs_nsvc_create(nsi, 0xfffe);
 	llist_del(&nsi->unknown_nsvc->list);
 
 	return nsi;
@@ -1077,7 +1077,7 @@
  * This function will establish a single NS/UDP/IP connection in uplink
  * (BSS to SGSN) direction.
  */
-struct gprs_nsvc *nsip_connect(struct gprs_ns_inst *nsi,
+struct gprs_nsvc *gprs_ns_nsip_connect(struct gprs_ns_inst *nsi,
 				struct sockaddr_in *dest, uint16_t nsei,
 				uint16_t nsvci)
 {
@@ -1085,7 +1085,7 @@
 
 	nsvc = nsvc_by_rem_addr(nsi, dest);
 	if (!nsvc)
-		nsvc = nsvc_create(nsi, nsvci);
+		nsvc = gprs_nsvc_create(nsi, nsvci);
 	nsvc->ip.bts_addr = *dest;
 	nsvc->nsei = nsei;
 	nsvc->nsvci = nsvci;
diff --git a/openbsc/src/libgb/gprs_ns_vty.c b/openbsc/src/libgb/gprs_ns_vty.c
index 2f0b70a..fac431c 100644
--- a/openbsc/src/libgb/gprs_ns_vty.c
+++ b/openbsc/src/libgb/gprs_ns_vty.c
@@ -57,6 +57,18 @@
 	{ 0, NULL }
 };
 
+static void log_set_nsvc_filter(struct log_target *target,
+				struct gprs_nsvc *nsvc)
+{
+	if (nsvc) {
+		target->filter_map |= (1 << FLT_NSVC);
+		target->filter_data[FLT_NSVC] = nsvc;
+	} else if (target->filter_data[FLT_NSVC]) {
+		target->filter_map = ~(1 << FLT_NSVC);
+		target->filter_data[FLT_NSVC] = NULL;
+	}
+}
+
 static struct cmd_node ns_node = {
 	L_NS_NODE,
 	"%s(ns)#",
@@ -207,9 +219,9 @@
 	int show_stats = 0;
 
 	if (!strcmp(argv[0], "nsei"))
-		nsvc = nsvc_by_nsei(nsi, id);
+		nsvc = gprs_nsvc_by_nsei(nsi, id);
 	else
-		nsvc = nsvc_by_nsvci(nsi, id);
+		nsvc = gprs_nsvc_by_nsvci(nsi, id);
 
 	if (!nsvc) {
 		vty_out(vty, "No such NS Entity%s", VTY_NEWLINE);
@@ -236,9 +248,9 @@
 	uint16_t nsvci = atoi(argv[1]);
 	struct gprs_nsvc *nsvc;
 
-	nsvc = nsvc_by_nsei(vty_nsi, nsei);
+	nsvc = gprs_nsvc_by_nsei(vty_nsi, nsei);
 	if (!nsvc) {
-		nsvc = nsvc_create(vty_nsi, nsvci);
+		nsvc = gprs_nsvc_create(vty_nsi, nsvci);
 		nsvc->nsei = nsei;
 	}
 	nsvc->nsvci = nsvci;
@@ -259,7 +271,7 @@
 	uint16_t nsei = atoi(argv[0]);
 	struct gprs_nsvc *nsvc;
 
-	nsvc = nsvc_by_nsei(vty_nsi, nsei);
+	nsvc = gprs_nsvc_by_nsei(vty_nsi, nsei);
 	if (!nsvc) {
 		vty_out(vty, "No such NSE (%u)%s", nsei, VTY_NEWLINE);
 		return CMD_WARNING;
@@ -280,7 +292,7 @@
 	uint16_t port = atoi(argv[1]);
 	struct gprs_nsvc *nsvc;
 
-	nsvc = nsvc_by_nsei(vty_nsi, nsei);
+	nsvc = gprs_nsvc_by_nsei(vty_nsi, nsei);
 	if (!nsvc) {
 		vty_out(vty, "No such NSE (%u)%s", nsei, VTY_NEWLINE);
 		return CMD_WARNING;
@@ -307,7 +319,7 @@
 	uint16_t dlci = atoi(argv[1]);
 	struct gprs_nsvc *nsvc;
 
-	nsvc = nsvc_by_nsei(vty_nsi, nsei);
+	nsvc = gprs_nsvc_by_nsei(vty_nsi, nsei);
 	if (!nsvc) {
 		vty_out(vty, "No such NSE (%u)%s", nsei, VTY_NEWLINE);
 		return CMD_WARNING;
@@ -333,7 +345,7 @@
 	uint16_t nsei = atoi(argv[0]);
 	struct gprs_nsvc *nsvc;
 
-	nsvc = nsvc_by_nsei(vty_nsi, nsei);
+	nsvc = gprs_nsvc_by_nsei(vty_nsi, nsei);
 	if (!nsvc) {
 		vty_out(vty, "No such NSE (%u)%s", nsei, VTY_NEWLINE);
 		return CMD_WARNING;
@@ -358,7 +370,7 @@
 	uint16_t nsei = atoi(argv[0]);
 	struct gprs_nsvc *nsvc;
 
-	nsvc = nsvc_by_nsei(vty_nsi, nsei);
+	nsvc = gprs_nsvc_by_nsei(vty_nsi, nsei);
 	if (!nsvc) {
 		vty_out(vty, "No such NSE (%u)%s", nsei, VTY_NEWLINE);
 		return CMD_WARNING;
@@ -380,7 +392,7 @@
 	uint16_t nsei = atoi(argv[0]);
 	struct gprs_nsvc *nsvc;
 
-	nsvc = nsvc_by_nsei(vty_nsi, nsei);
+	nsvc = gprs_nsvc_by_nsei(vty_nsi, nsei);
 	if (!nsvc) {
 		vty_out(vty, "No such NSE (%u)%s", nsei, VTY_NEWLINE);
 		return CMD_WARNING;
@@ -486,7 +498,7 @@
 	const char *operation = argv[1];
 	struct gprs_nsvc *nsvc;
 
-	nsvc = nsvc_by_nsei(vty_nsi, nsvci);
+	nsvc = gprs_nsvc_by_nsei(vty_nsi, nsvci);
 	if (!nsvc) {
 		vty_out(vty, "No such NSVCI (%u)%s", nsvci, VTY_NEWLINE);
 		return CMD_WARNING;
@@ -521,9 +533,9 @@
 		return CMD_WARNING;
 
 	if (!strcmp(argv[0], "nsei"))
-		nsvc = nsvc_by_nsei(vty_nsi, id);
+		nsvc = gprs_nsvc_by_nsei(vty_nsi, id);
 	else
-		nsvc = nsvc_by_nsvci(vty_nsi, id);
+		nsvc = gprs_nsvc_by_nsvci(vty_nsi, id);
 
 	if (!nsvc) {
 		vty_out(vty, "No NS-VC by that identifier%s", VTY_NEWLINE);
diff --git a/openbsc/src/libgb/libosmo-gb.map b/openbsc/src/libgb/libosmo-gb.map
index ab3c4ea..60f85b2 100644
--- a/openbsc/src/libgb/libosmo-gb.map
+++ b/openbsc/src/libgb/libosmo-gb.map
@@ -37,6 +37,7 @@
 gprs_ns_frgre_sendmsg;
 gprs_ns_instantiate;
 gprs_ns_nsip_listen;
+gprs_ns_nsip_connect;
 gprs_ns_rcvmsg;
 gprs_ns_sendmsg;
 gprs_ns_set_log_ss;
@@ -48,9 +49,12 @@
 gprs_ns_tx_unblock;
 gprs_ns_vty_init;
 
+gprs_nsvc_create;
+gprs_nsvc_delete;
 gprs_nsvc_reset;
+gprs_nsvc_by_nsvci;
+gprs_nsvc_by_nsei;
 
-nsip_connect;
 
 local: *;
 };
