[PATCH] openbsc[master]: SGSN: Use dummy all-zero MSISDN value in PDP Context Act on GTP

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Wed Nov 9 13:56:26 UTC 2016


Review at  https://gerrit.osmocom.org/1217

SGSN: Use dummy all-zero MSISDN value in PDP Context Act on GTP

The GTP protocol specification requires us to include the MSISDN IE in
all non-secondary PDP context activations. However, when no real HLR is
used (e.g. via GSUP), we do not have the MSISDN information available
and so far simply sent a zero-length MSISDN IE in GTP.  The latter is a
violation of the spec.

So to resolve this, we now send a 15-digit all-zero dummy MSISDN IE, as
described in TS 23.003.

Change-Id: I8d0a5d52d6cd2a00b5dda060bd41d45056dfa84d
---
M openbsc/src/gprs/sgsn_libgtp.c
1 file changed, 14 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/17/1217/1

diff --git a/openbsc/src/gprs/sgsn_libgtp.c b/openbsc/src/gprs/sgsn_libgtp.c
index 29c9f06..072b9ba 100644
--- a/openbsc/src/gprs/sgsn_libgtp.c
+++ b/openbsc/src/gprs/sgsn_libgtp.c
@@ -59,6 +59,15 @@
 #include <gtp.h>
 #include <pdp.h>
 
+/* TS 23.003: The MSISDN shall take the dummy MSISDN value composed of
+ * 15 digits set to 0 (encoded as an E.164 international number) when
+ * the MSISDN is not available in messages in which the presence of the
+ * MSISDN parameter */
+static const uint8_t dummy_msisdn[] =
+	{ 0x91, /* No extension, international, E.164 */
+	  0, 0, 0, 0, 0, 0, 0, /* 14 digits of zeroes */
+	  0xF0 /* 15th digit of zero + padding */ };
+
 const struct value_string gtp_cause_strs[] = {
 	{ GTPCAUSE_REQ_IMSI, "Request IMSI" },
 	{ GTPCAUSE_REQ_IMEI, "Request IMEI" },
@@ -167,12 +176,16 @@
 	/* IMSI, TEID/TEIC, FLLU/FLLC, TID, NSAPI set in pdp_newpdp */
 
 	/* Put the MSISDN in case we have it */
-	if (mmctx->subscr) {
+	if (mmctx->subscr && mmctx->subscr->sgsn_data->msisdn_len) {
 		pdp->msisdn.l = mmctx->subscr->sgsn_data->msisdn_len;
 		if (pdp->msisdn.l > sizeof(pdp->msisdn.v))
 			pdp->msisdn.l = sizeof(pdp->msisdn.v);
 		memcpy(pdp->msisdn.v, mmctx->subscr->sgsn_data->msisdn,
 			pdp->msisdn.l);
+	} else {
+		/* use the dummy 15-digits-zero MSISDN value */
+		pdp->msisdn.l = sizeof(dummy_msisdn);
+		memcpy(pdp->msisdn.v, dummy_msisdn, pdp->msisdn.l);
 	}
 
 	/* End User Address from GMM requested PDP address */

-- 
To view, visit https://gerrit.osmocom.org/1217
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8d0a5d52d6cd2a00b5dda060bd41d45056dfa84d
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>



More information about the gerrit-log mailing list