diff --git a/openbsc/include/openbsc/gb_proxy.h b/openbsc/include/openbsc/gb_proxy.h
index 8194d2a..60dd5ca 100644
--- a/openbsc/include/openbsc/gb_proxy.h
+++ b/openbsc/include/openbsc/gb_proxy.h
@@ -22,6 +22,7 @@
 	struct gprs_ns_inst *nsi;
 };
 
+extern struct gbproxy_config gbcfg;
 
 /* gb_proxy_vty .c */
 
diff --git a/openbsc/src/gb_proxy.c b/openbsc/src/gb_proxy.c
index 4d8f27f..93b8f67 100644
--- a/openbsc/src/gb_proxy.c
+++ b/openbsc/src/gb_proxy.c
@@ -37,6 +37,7 @@
 #include <openbsc/debug.h>
 #include <openbsc/gprs_ns.h>
 #include <openbsc/gprs_bssgp.h>
+#include <openbsc/gb_proxy.h>
 
 struct gbprox_peer {
 	struct llist_head list;
@@ -54,10 +55,6 @@
 /* Linked list of all Gb peers (except SGSN) */
 static LLIST_HEAD(gbprox_bts_peers);
 
-/* Pointer to the SGSN peer */
-struct gbprox_peer *gbprox_peer_sgsn;
-
-/* The NS protocol stack instance we're using */
 extern struct gprs_ns_inst *gbprox_nsi;
 
 /* Find the gbprox_peer by its BVCI */
@@ -124,12 +121,28 @@
 }
 
 /* feed a message down the NS-VC associated with the specified peer */
+static int gbprox_tx2sgsn(struct msgb *msg, uint16_t ns_bvci)
+{
+	msgb_bvci(msg) = ns_bvci;
+	msgb_nsei(msg) = gbcfg.nsip_sgsn_nsei;
+
+	DEBUGP(DGPRS, "proxying message to SGSN (NS_BVCI=%u, NSEI=%u)\n",
+		ns_bvci, gbcfg.nsip_sgsn_nsei);
+
+	return gprs_ns_sendmsg(gbprox_nsi, msg);
+}
+
+
+/* feed a message down the NS-VC associated with the specified peer */
 static int gbprox_tx2peer(struct msgb *msg, struct gbprox_peer *peer,
 			  uint16_t ns_bvci)
 {
 	msgb_bvci(msg) = ns_bvci;
 	msgb_nsei(msg) = peer->nsvc->nsei;
 
+	DEBUGP(DGPRS, "proxying message to BSS (NS_BVCI=%u, NSEI=%u)\n",
+		ns_bvci, peer->nsvc->nsei);
+
 	return gprs_ns_sendmsg(gbprox_nsi, msg);
 }
 
@@ -197,7 +210,7 @@
 	}
 
 	/* Normally, we can simply pass on all signalling messages from BSS to SGSN */
-	return gbprox_tx2peer(msg, gbprox_peer_sgsn, ns_bvci);
+	return gbprox_tx2sgsn(msg, ns_bvci);
 err_no_peer:
 err_mand_ie:
 	/* FIXME: do something */
@@ -303,33 +316,30 @@
 /* Main input function for Gb proxy */
 int gbprox_rcvmsg(struct msgb *msg, struct gprs_nsvc *nsvc, uint16_t ns_bvci)
 {
-	struct gbprox_peer *peer;
+	int rc;
 
 	/* Only BVCI=0 messages need special treatment */
 	if (ns_bvci == 0 || ns_bvci == 1) {
 		if (nsvc->remote_end_is_sgsn)
-			return gbprox_rx_sig_from_sgsn(msg, nsvc, ns_bvci);
+			rc = gbprox_rx_sig_from_sgsn(msg, nsvc, ns_bvci);
 		else
-			return gbprox_rx_sig_from_bss(msg, nsvc, ns_bvci);
-	}
-
-	/* All other BVCI are PTP and thus can be simply forwarded */
-	peer = peer_by_bvci(ns_bvci);
-	if (!peer) {
-		if (!nsvc->remote_end_is_sgsn) {
-			LOGP(DGPRS, LOGL_NOTICE, "Allocationg new peer for "
-			     "BVCI=%u via NSVC=%u/NSEI=%u\n", ns_bvci,
-			     nsvc->nsvci, nsvc->nsei);
-			peer = peer_alloc(ns_bvci);
-			peer->nsvc = nsvc;
+			rc = gbprox_rx_sig_from_bss(msg, nsvc, ns_bvci);
+	} else {
+		/* All other BVCI are PTP and thus can be simply forwarded */
+		if (nsvc->remote_end_is_sgsn) {
+			rc = gbprox_tx2sgsn(msg, ns_bvci);
 		} else {
-			LOGP(DGPRS, LOGL_ERROR, "Couldn't find peer for "
-			     "BVCI %u\n", ns_bvci);
-			/* FIXME: do we really have to free the message here? */
-			msgb_free(msg);
-			return -EIO;
+			struct gbprox_peer *peer = peer_by_bvci(ns_bvci);
+			if (!peer) {
+				LOGP(DGPRS, LOGL_NOTICE, "Allocationg new peer for "
+				     "BVCI=%u via NSVC=%u/NSEI=%u\n", ns_bvci,
+				     nsvc->nsvci, nsvc->nsei);
+				peer = peer_alloc(ns_bvci);
+				peer->nsvc = nsvc;
+			}
+			rc = gbprox_tx2peer(msg, peer, ns_bvci);
 		}
 	}
 
-	return gbprox_tx2peer(msg, peer, ns_bvci);
+	return rc;
 }
diff --git a/openbsc/src/gb_proxy_main.c b/openbsc/src/gb_proxy_main.c
index fe72e02..549b6ce 100644
--- a/openbsc/src/gb_proxy_main.c
+++ b/openbsc/src/gb_proxy_main.c
@@ -65,7 +65,7 @@
 	"There is NO WARRANTY, to the extent permitted by law.\n";
 
 static char *config_file = "osmo_gbproxy.cfg";
-static struct gbproxy_config gbcfg;
+struct gbproxy_config gbcfg;
 
 /* Pointer to the SGSN peer */
 extern struct gbprox_peer *gbprox_peer_sgsn;
@@ -124,9 +124,8 @@
 	sin.sin_family = AF_INET;
 	sin.sin_port = htons(gbcfg.nsip_sgsn_port);
 	sin.sin_addr.s_addr = htonl(gbcfg.nsip_sgsn_ip);
-	gbprox_peer_sgsn = nsip_connect(gbprox_nsi, &sin,
-					gbcfg.nsip_sgsn_nsei,
-					gbcfg.nsip_sgsn_nsvci);
+	nsip_connect(gbprox_nsi, &sin, gbcfg.nsip_sgsn_nsei,
+			gbcfg.nsip_sgsn_nsvci);
 
 	while (1) {
 		rc = bsc_select_main(0);
