laforge submitted this change.

View Change

Approvals: Jenkins Builder: Verified fixeria: Looks good to me, approved laforge: Looks good to me, but someone else must approve
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(-)

diff --git a/src/sgsn/sgsn_libgtp.c b/src/sgsn/sgsn_libgtp.c
index 8eb77b0..3c35c78 100644
--- a/src/sgsn/sgsn_libgtp.c
+++ b/src/sgsn/sgsn_libgtp.c
@@ -300,11 +300,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] != '\0') {
+ 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: merged
Gerrit-Project: osmo-sgsn
Gerrit-Branch: master
Gerrit-Change-Id: I812af1e702e77214244f32ae65663c1a03b23962
Gerrit-Change-Number: 38444
Gerrit-PatchSet: 3
Gerrit-Owner: lynxis lazus <lynxis@fe80.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: laforge <laforge@osmocom.org>
Gerrit-CC: pespin <pespin@sysmocom.de>