diff options
-rw-r--r-- | openbsc/src/gprs/gb_proxy.c | 12 | ||||
-rw-r--r-- | openbsc/tests/gbproxy/gbproxy_test.ok | 11 |
2 files changed, 13 insertions, 10 deletions
diff --git a/openbsc/src/gprs/gb_proxy.c b/openbsc/src/gprs/gb_proxy.c index a25a9f57b..dea6e3f87 100644 --- a/openbsc/src/gprs/gb_proxy.c +++ b/openbsc/src/gprs/gb_proxy.c @@ -693,11 +693,13 @@ int gbprox_rcvmsg(struct msgb *msg, uint16_t nsei, uint16_t ns_bvci, uint16_t ns /* 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 " diff --git a/openbsc/tests/gbproxy/gbproxy_test.ok b/openbsc/tests/gbproxy/gbproxy_test.ok index fcde39f20..35d97e78b 100644 --- a/openbsc/tests/gbproxy/gbproxy_test.ok +++ b/openbsc/tests/gbproxy/gbproxy_test.ok @@ -804,14 +804,15 @@ PROCESSING UNITDATA from 0x05060708:32000 CALLBACK, event 0, msg length 0, bvci 0x10ff -NS UNITDATA MESSAGE to SGSN, BVCI 0x10ff, msg length 0 +NS UNITDATA MESSAGE to SGSN, BVCI 0x0000, msg length 10 +41 07 81 05 04 82 10 ff 15 80 +MESSAGE to SGSN at 0x05060708:32000, msg length 14 +00 00 00 00 41 07 81 05 04 82 10 ff 15 80 -MESSAGE to SGSN at 0x05060708:32000, msg length 4 -00 00 10 ff - -result (UNITDATA) = 4 +result (UNITDATA) = 14 Gbproxy global: + Invalid BVC Identifier : 1 ===== NS protocol test END |