lynxis lazus has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-sgsn/+/38444?usp=email )
Change subject: GTP: CreatePDPContext: only use IMEISV IE when IMEISV is known ......................................................................
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;