lynxis lazus has uploaded this change for review.

View Change

GTP: CreatePDPContext: only use IMEISV IE when IMEISV is known

The IE is optional, but if it is present, it must be 11 byte long
containing a 8 byte IMEISV. If IMEI is unknown the SGSN
would add an empty IMEISV IE which is invalid.

Change-Id: I812af1e702e77214244f32ae65663c1a03b23962
---
M src/sgsn/sgsn_libgtp.c
1 file changed, 8 insertions(+), 5 deletions(-)

git pull ssh://gerrit.osmocom.org:29418/osmo-sgsn refs/changes/44/38444/1
diff --git a/src/sgsn/sgsn_libgtp.c b/src/sgsn/sgsn_libgtp.c
index faf0e7f..3481e82 100644
--- a/src/sgsn/sgsn_libgtp.c
+++ b/src/sgsn/sgsn_libgtp.c
@@ -299,11 +299,14 @@
break;
}

- /* include the IMEI(SV) */
- pdp->imeisv_given = 1;
- gsm48_encode_bcd_number(&pdp->imeisv.v[0], 8, 0, mmctx->imei);
- pdp->imeisv.l = pdp->imeisv.v[0];
- memmove(&pdp->imeisv.v[0], &pdp->imeisv.v[1], 8);
+ /* optional include the IMEI(SV) */
+ if (mmctx->imei[0] != 0x00) {
+ memset(&pdp->imeisv.v[0], 0, 8);
+ pdp->imeisv_given = 1;
+ gsm48_encode_bcd_number(&pdp->imeisv.v[0], 8, 0, mmctx->imei);
+ pdp->imeisv.l = 8;
+ memmove(&pdp->imeisv.v[0], &pdp->imeisv.v[1], 8);
+ }

/* change pdp state to 'requested' */
pctx->state = PDP_STATE_CR_REQ;

To view, visit change 38444. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: newchange
Gerrit-Project: osmo-sgsn
Gerrit-Branch: master
Gerrit-Change-Id: I812af1e702e77214244f32ae65663c1a03b23962
Gerrit-Change-Number: 38444
Gerrit-PatchSet: 1
Gerrit-Owner: lynxis lazus <lynxis@fe80.eu>