aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/gprs/gprs_gmm.c
AgeCommit message (Collapse)AuthorFilesLines
2011-01-01[SGSN] Fix processing of RA Update Request regarding TLLIHarald Welte1-1/+6
In case we get a RA UPD REQ on a new cell (both served by the same SGSN), the LLC stack should not allocate a ne LLE/LLME, as the latter would reset the V(u)sent / V(u)recv to zero and make the MS discard our responses. Instead, whenever the LLC stack sees a foreign TLLI, it should always convert it to the local TLLI before doing any lookup for a LLE/LLME.
2011-01-01License change: We are now AGPLv3+ instead of GPLv2+Harald Welte1-6/+5
The reason for this is quite simple: We want to make sure anyone running a customized version of OpenBSC to operate a network will have to release all custom modifiations to the source code.
2010-12-26SGSN: Avoid duplicate MM contexts in case MS and SGSN disagree on P-TMSIHarald Welte1-0/+15
2010-12-26SGSN: Implement network-initiated PDP CTX DEACT when GGSN restartsHarald Welte1-0/+99
If the GGSN restarts, its restart counter will increase. We can detect that and accordingly release/delete all PDP contexts for that GGSN.
2010-12-24SGSN / GMM: Only allow non-roaming IMSIsHarald Welte1-1/+10
As we do not yet use the HLR from the SGSN, we allow all MS to attach to our GPRS network. However, if this is running in a public environment, it could cause service interruption to users of commercial GPRS networks. Thus, we now check if the first 5 digits of the IMSI match the MCC/MNC of the cell that they want to register to. Thus, any subscribers with SIM cards from real operators will no longer be accepted.
2010-12-23GPRS/GMM: Correctly look up MM Context in RA UpdateHarald Welte1-0/+1
If a MS changes RA, the RA will arrive in the new cell using the old TLLI (masked as foreign TLLI). So we need to look-up the TLLI in a special way, using the old RA as indicated in the 04.08 GMM message. There is still another bug remaining: As we somehow create a new LLC, the sequence numbers of our responses start from 0 again, which is not what the MS expects. This needs to be fixed in a follow-up patch.
2010-07-03[SGSN] Some IEs in ATTACH REQUEST can be longer in 24.008Harald Welte1-1/+3
The original length checks were based on 04.08, but 24.008 allows longer IEs.
2010-07-03[SGSN] Initial work on GMM authentication and cipheringHarald Welte1-9/+103
2010-07-02[SGSN] use GPRS_ALGO_GEA0 instead of '0'Harald Welte1-6/+11
2010-07-02[SGSN] SM: Properly parse APN and PCO Optional IE in PDP CTX ACT REQHarald Welte1-2/+8
2010-07-02[SGSN] Send poper SM and GMM STATUS in case we have no MM CTXHarald Welte1-1/+2
2010-07-02[SGSN] Remove old dead codeHarald Welte1-17/+14
2010-07-02[SGSN] Only increment PDP CTX ACT count after check for retransmissionHarald Welte1-2/+4
2010-07-02[SGSN] Account for re-transmitted PDP CTX ACT REQHarald Welte1-2/+11
In case our PDP CTX ACT ACK gets lost on the Gb or Um link, the MS re-transmits the PDP CTX ACT REQ. We have to ACK it again instead of REJecting it..
2010-07-01[SGSN] GMM: Complete value_string for GMM cause valuesHarald Welte1-4/+21
2010-07-01[SGSN] Fix TLLI (re)assignmentsHarald Welte1-3/+3
Once The TLLI (or P-TMSI of which it is derived) change has been confirmed by the MS, we need to unassign the old TLLI but keep the new TLLI _without_ re-setting the LLC entity structure such as VUsend /VUrecv counters.
2010-06-28[SGSN] MM: Properly communicate TLLI changes / unassignment to LLCHarald Welte1-3/+9
2010-06-28[SGSN] Deactivate all PDP contexts on GPRS DETACHHarald Welte1-0/+10
2010-06-09[GPRS] SGSN: Pass BSSGP SUSPEND/RESUME up to GMM and alter MMCTX stateHarald Welte1-0/+48
2010-06-09[GPRS] GMM/SM: Improve error handling by sending STATUS messagesHarald Welte1-9/+60
2010-06-09[GPRS] Drop all PDP contexts not present in PDP CTX STATUS IE at RA UPDHarald Welte1-0/+66
2010-06-09[GPRS] SM: Acknowledge PDP CTX DEACT for non-existing PDP CTXHarald Welte1-5/+9
Some phones (notably a Ericsson Mobile Platform based E-TEN M800) insist on sending PDP CTX DEACT messages for contexts that have already been deactivated. The spec doesn't really say what we should do in this case. But since there is no "reject", we simply acknowledge it.
2010-06-01[GPRS] Major LLC / TLLI handling fixesHarald Welte1-19/+51
* separate the LLME and LLE state in the LLC layer * introduce gprs_llgmm_assign() function for LLGMM-ASSIGN.req primitive * change QoS profile to match 'real' SGSN * Update the new TLLI when assigning a P-TMSI The result now is that the LLC layer is notified of TLLI changes, which in turn means it doesn't allocate a new LLE structure every TLLI change, which again in turn means that the UI frame sequence number does not reset to zero. As a result, MS should no longer ignore frames based on wrong UI sequence number.
2010-05-31[GPRS] GMM: Set LLC 'C/R' bit when sending IDENTITY REQUESTHarald Welte1-2/+2
Commands initiatied by the SGSN have to set C/R = 1
2010-05-31[GPRS] Include IMSI and DRX params in BSSGP DL-UDHarald Welte1-9/+18
When we send a downlink unit-data request via BSSGP, there is a lot of information that needs to be copied from the mm context, such as the IMSI, DRX parametes, MS radio access parameters, ... This is a quite strange layering violation, since we now need to pass a pointer to the MM ctx from GMM through LLC into BSSGP :(
2010-05-31[GPRS] Implement TMSI reallocation and timers 3350 + 3370Harald Welte1-34/+159
Our state transitions and timers now reflect 04.08 for GMM much better than before. Also, we allocate a new P-TMSI on every ATTACH and RA UPDATE, as some phones seem to get confused if they don't get a P-TMSI.
2010-05-30[GPRS] GMM: Add some FIXME's to the codeHarald Welte1-0/+3
2010-05-18[GPRS] SGSN: use GGSN IP address from config file, disable TMSI allocationHarald Welte1-10/+21
2010-05-18[GPRS] fix numerous compiler warningsHarald Welte1-8/+3
2010-05-18[GPRS] SGSN: TMSI allocationHarald Welte1-31/+60
2010-05-18[GPRS] SGSN: Correctly set upper 4 bits of PDP address to 0Harald Welte1-0/+9
It's really strange. In GTP those 4 bits are 1, in 04.08 they are zero. Otherwise the IE is exactly the same :/
2010-05-18[GPRS] SGSN: Make sure the PCO from GGSN are passed to the MSHarald Welte1-1/+1
2010-05-18[GPRS] SGSN: properly delete a PDP context after receiving PDP CTX DEACT REQHarald Welte1-18/+28
2010-05-18[GPRS] SGSN: Don't use GGSN-provided QoS as the MS doesn't like itHarald Welte1-4/+3
2010-05-18[GPRS] fix null pointer dereference in GMMHarald Welte1-2/+2
2010-05-18[GPRS] SGSN: Include rate counters in MM ContextHarald Welte1-12/+24
2010-05-18[GPRS] Properly connect GPRS SM with LIBGTP for PDP context activationHarald Welte1-13/+88
* store LLC SAPI as part of PDP ctx * store NSEI + BVCI as part of MM ctx * export gsm48_tx_gsm_act_pdp_acc() and call it from sgsn_libgtp.c * create and use gsm48_tx_gsm_act_pdp_rej for error cases * print SAPI as part of VTY show pdp
2010-05-17[GPRS] More work on a real SGSNHarald Welte1-39/+55
2010-05-17[GPRS] Initial untested support for libgtpHarald Welte1-38/+102
libgtp of the OpenGGSN project will allow us to speak the GTPv0/v1 protocol of the interface between SGSN and GGSN. This commit includes code for the main libgtp integration (file descriptor, select loop, timer) as well as code to encode/send a CREATE PDP CONTEXT request.
2010-05-13[GPRS] Rename gsm_04_08_gprs.c to gprs_gmm.cHarald Welte1-0/+762
GMM refers to GPRS Mobility Management.