gbproxy: Reject SGSN UNITDATA messages with an invalid BVCI

Currently such messages lead to a creation of a new peer with the
SGSN's NSEI, which results in echoing the message back to the SGSN.

This patch modifies this by sending a STATUS response (invalid BVCI)
instead back to the SGSN.

Sponsored-by: On-Waves ehf
diff --git a/openbsc/src/gprs/gb_proxy.c b/openbsc/src/gprs/gb_proxy.c
index a25a9f5..dea6e3f 100644
--- a/openbsc/src/gprs/gb_proxy.c
+++ b/openbsc/src/gprs/gb_proxy.c
@@ -693,11 +693,13 @@
 
 		/* else: SGSN -> BSS direction */
 		if (!peer) {
-			LOGP(DGPRS, LOGL_INFO, "Allocationg new peer for "
-			     "BVCI=%u via NSVC=%u/NSEI=%u\n", ns_bvci,
-			     nsvci, nsei);
-			peer = peer_alloc(ns_bvci);
-			peer->nsei = nsei;
+			LOGP(DGPRS, LOGL_INFO, "Didn't find peer for "
+			     "BVCI=%u for message from NSVC=%u/NSEI=%u (SGSN)\n",
+			     ns_bvci, nsvci, nsei);
+			rate_ctr_inc(&get_global_ctrg()->
+				     ctr[GBPROX_GLOB_CTR_INV_BVCI]);
+			return bssgp_tx_status(BSSGP_CAUSE_UNKNOWN_BVCI,
+					       &ns_bvci, msg);
 		}
 		if (peer->blocked) {
 			LOGP(DGPRS, LOGL_NOTICE, "Dropping PDU for "