Hi,
I think the REJECT should be sent with the C/R bit set to 1?
holger
On 10/15/2011 12:26 AM, Holger Hans Peter Freyther wrote:
Hi,
I think the REJECT should be sent with the C/R bit set to 1?
as usual at the time of the day... this is wrong, 04.64 in 6.2.2 has a nice table/truth table.
anyway, I saw a trace with REJECT having C/R set to one, it does not fix my problem though.
On 10/15/2011 12:46 AM, Holger Hans Peter Freyther wrote:
On 10/15/2011 12:26 AM, Holger Hans Peter Freyther wrote:
Hi,
this is 'dangerous' but the below makes my E71 connect to the network. What will happen now is that N(U) will count upwards and after some failures my phone will do the GPRS ATTACH. Now this is dangerous as the TLLI we 'accept' is not part of our network... so I think we should assign a new TLLI and use the foreign one as old TLLI?
So how to move forward from here? when will we delete the TLLI? how to deal with TLLIs that are not local (random, foreign, ...)? We should still create a context but it should not clash with other parts? Shall we put RAC in this context too? When will we purge old contexts?
before (note RX not knowing it, TX still not knowing it): <0017> gprs_llc.c:700 LLC RX: unknown TLLI 0xb538c935, creating LLME on the fly <0002> gprs_gmm.c:920 -> GMM RA UPDATE REQUEST type="RA updating" REJECT <0002> gprs_gmm.c:859 <- ROUTING AREA UPDATE REJECT <0017> gprs_llc.c:118 TLLI 0xb538c935 is foreign, converting to local TLLI 0xf538c935 <0017> gprs_llc.c:343 LLC TX: unknown TLLI 0xb538c935, creating LLME on the fly
after: <0017> gprs_llc.c:431 LLC SAPI=1 C FCS=0x184703CMD=UI DATA <0017> gprs_llc.c:118 TLLI 0xb538c935 is foreign, converting to local TLLI 0xf538c935 <0017> gprs_llc.c:118 TLLI 0xb538c935 is foreign, converting to local TLLI 0xf538c935 <0017> gprs_llc.c:702 LLC RX: unknown TLLI 0xb538c935, creating LLME on the fly <0002> gprs_gmm.c:920 -> GMM RA UPDATE REQUEST type="RA updating" REJECT <0002> gprs_gmm.c:859 <- ROUTING AREA UPDATE REJECT <0017> gprs_llc.c:118 TLLI 0xb538c935 is foreign, converting to local TLLI 0xf538c935
diff:
diff --git a/openbsc/src/gprs/gprs_llc.c b/openbsc/src/gprs/gprs_llc.c index 3d4e986..a9c88c2 100644 --- a/openbsc/src/gprs/gprs_llc.c +++ b/openbsc/src/gprs/gprs_llc.c @@ -157,8 +157,10 @@ static struct gprs_llc_llme *llme_alloc(uint32_t tlli) if (!llme) return NULL;
- llme->tlli = tlli; - llme->old_tlli = 0xffffffff; + llme->tlli = tlli_foreign2local(tlli); + llme->old_tlli = tlli; + if (llme->old_tlli == llme->tlli) + llme->old_tlli = 0xffffffff; llme->state = GPRS_LLMS_UNASSIGNED;
for (i = 0; i < ARRAY_SIZE(llme->lle); i++)