summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2010-05-19 16:01:39 +0200
committerHarald Welte <laforge@gnumonks.org>2010-05-19 16:01:39 +0200
commit1100a9d1fa38fbd931c7acfacdf1f2fa1d26627e (patch)
treef831187562580d3c0198f6ebc934e518f4ddd35d
parent6c4136e347b2053bd2fe849dc2ca7c2e7e4ada45 (diff)
[GPRS] NS: Never respond to STATUS with STATUS to prevent loops!
-rw-r--r--openbsc/src/gprs/gprs_ns.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/openbsc/src/gprs/gprs_ns.c b/openbsc/src/gprs/gprs_ns.c
index 9d0766c6..04d17b8e 100644
--- a/openbsc/src/gprs/gprs_ns.c
+++ b/openbsc/src/gprs/gprs_ns.c
@@ -657,6 +657,12 @@ int gprs_ns_rcvmsg(struct gprs_ns_inst *nsi, struct msgb *msg,
if (!nsvc) {
struct tlv_parsed tp;
uint16_t nsei;
+ if (nsh->pdu_type == NS_PDUT_STATUS) {
+ LOGP(DNS, LOGL_INFO, "Ignoring NS STATUS from %s:%u "
+ "for non-existing NS-VC\n",
+ inet_ntoa(saddr->sin_addr), ntohs(saddr->sin_port));
+ return 0;
+ }
/* Only the RESET procedure creates a new NSVC */
if (nsh->pdu_type != NS_PDUT_RESET) {
/* Since we have no NSVC, we have to use a fake */