summaryrefslogtreecommitdiffstats
path: root/openbsc/include
Commit message (Collapse)AuthorAgeFilesLines
* GPRS: Increase the NS msg size to 2048Holger Hans Peter Freyther2010-06-141-1/+1
| | | | | | | According to the GPRS NS spec the maximum framesize is 1600 octets for FrameRelay, it can be bigger if configured to be so. Make it 2048 octets to have some space available...
* [GPRS] BSSGP/SGSN: Implement Gb-Interface PagingHarald Welte2010-06-101-0/+27
| | | | | | | | | | | | | | | | We now have a function that generates BSSGP PS and CS paging request. It is called from the libgtp code when we receive a GTP packet from the GGSN for a MM context that is in SUSPEND state. We then issue a PS paging request to the Cell with the BVCI where the last RA update was being performed. TODO: We still don't enqueue the GTP packet (and transmit it on paging complete), and we don't rate-limit the paging requests, i.e. every GTP packet will trigger another paging request. We probably also need some kind of logic that marks the phone as UNREGISTERED if it doesn't respond to paging requests for some time.
* [GPRS] Include IMSI and DRX params in BSSGP DL-UDHarald Welte2010-05-311-1/+2
| | | | | | | | | 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 :(
* gprs_ns_frgre.h: Create the header and include itHolger Hans Peter Freyther2010-05-231-0/+6
|
* gprs: Fix warnings on funny casts for the return statementHolger Hans Peter Freyther2010-05-231-1/+1
| | | | | | | | Change gprs_nsvc_reset to return void instead of a int as the gb_proxy.c currently ignores the reutnr value anyway. Change the caller inside gprs_ns to return the newly allocated nsvc instead of the return of gprs_nsvc_reset.
* [GPRS] NS: Make sure we allocate NS packet with headroom for FR/GREHarald Welte2010-05-191-1/+5
|
* [GPRS] NS: VTY: Move all local ip/port bind values into 'ns' nodeHarald Welte2010-05-191-2/+6
| | | | | This removes the requirement for gb_proxy and sgsn to have duplicate vty parsing code
* [GPRS] Add Frame Relay in GRE encapsulation for NSHarald Welte2010-05-191-17/+22
|
* [GPRS] BSSGP: Use correct values for SIGNALLING and PTM BVCIHarald Welte2010-05-181-0/+4
|
* [GPRS] SGSN: Activate BSSGP VTY functionsHarald Welte2010-05-181-0/+3
|
* [GPRS] BSSGP: expose more internal structures / APIHarald Welte2010-05-171-0/+29
|
* [GPRS] NS: Always start NS-ALIVE procedure after RESETHarald Welte2010-05-151-0/+1
| | | | | | | | | So far, we only started the ALIVE procedure on RESET-ACK if the remote end was the SGSN. This resulted in the BSS->Proxy connections only being tested for alive-status from the BSS side, but not from our side. Also: export nsvc_by_nsvci() function as a public API function.
* [GPRS] gb_proxy: Initiate RESET procedure on persistent NS-VC at startupHarald Welte2010-05-141-0/+3
| | | | | | Some BSS that connect to the proxy do not continue to perform the RESET procedure after a timeout. In order to resurrect them, we simply start a RESET procedure.
* [GPRS] BSSGP: add function declarationHarald Welte2010-05-131-1/+6
|
* [GPRS] NS: Fix segfault when receiving message from unknown NS-VCHarald Welte2010-05-131-0/+3
| | | | | | | | | | | | In the previous code we used a static fake_nsvc structure in case we needed to send a message to an unknown NSVC for which we don't have a real 'struct nsvc'. However, since we now have a rate_ctr_group hanging off the nsvc, the fake structure didn't have that. So now we keep a nsi->unknown_nsvc around to be used whenever we need a nsvc but don't have a real one. The gprs_ns_vty.c code explicitly does not list that NSVC in 'show ns'
* [GPRS] NS: Start to use rate_ctr_group code from libosmocoreHarald Welte2010-05-131-0/+6
| | | | | | | | | Every NS-VC now has a set of counters for incoming and outgoing number of packets and bytes. We also split the VTY part of the gprs_ns.c implementation into gprs_ns_vty.c to make sure the protocol can actually be used without the VTY code being present.
* NS: Make all timers configurable from VTYHarald Welte2010-05-121-1/+21
|
* NS: Add support for persistent NS-VC configurationHarald Welte2010-05-121-1/+6
| | | | | | | | | With persistent NS-VC configuration (configured through VTY), we can respond properly to BSS with a somewhat strange NS implementation Such as the BSplus. It enables us to respond with a proper NS-RESET (including NSVCI/NSEI) when receiving a NS-ALIVE or other PDU for a BLOCKED/DEAD NS-VC after our end of the connection is rebooted.
* [gprs] gb_proxy: Send proper BSSGP STATUS msg in error caseHarald Welte2010-05-111-0/+12
| | | | | | | | | | | In order to reuse the existing bssgp_tx_* functions without pulling in the dependencies of gprs_bssgp.c, we have to move those functions to gprs_bssgp_util.c Furthermore, we can remove gbprox_nsi and replace it with bssgp_nsi, and we can do proper processing of BVC-RESET messages coming from the SGSN on the signalling BVC. In that case we need to send RESET messages to all the BSS.
* [gprs] NS: Add signals in the event of BLOCK/UNBLOCK/RESETHarald Welte2010-05-111-0/+3
| | | | | | The signals will be sent upon reception of NS-BLOCK/UNBLOCK/RESET PDUs We also export functions to generate/send BLOCK/UNBLOCK and RESET.
* [gprs] NS: improved timer handling for RESETHarald Welte2010-05-041-2/+2
|
* [gprs] NS: replace nsvc->timer_is_tns_alive with nsvc->timer_modeHarald Welte2010-05-041-2/+10
| | | | This will allow to use the timer in more than 2 modes
* [gprs] pass BSSGP UL-UNITDATA Cell ID up into GMM layerHarald Welte2010-05-041-0/+1
| | | | | | | | | BSSGP stores a pointer to the Cell Identifier IE in msgb->cb, which is later used by the GMM layer to identify the cell that has sent a given message. This now also means that the gsm_04_08_gprs.c code is free of any legacy references to msg->trx or struct gsm_bts.
* [gprs] Use stdint.h types (uintXX_t instead of u_intXX_t)Harald Welte2010-05-042-14/+18
| | | | | libosmocore already uses them, it's time (at least for new code) in openbsc to do the same.
* [gprs] SGSN: Expect all Identifiers to be stored at highest levelHarald Welte2010-05-041-1/+1
| | | | | | | | | | | We now expect the highest level (actual SGSN GMM code) to know all identifiers for every element in the protocol stack, i.e. TLLI, SAPI, BVCI and NSEI. The layer-inetrnal state is looked up based on those identifiers. The reason for this is to ensure only the highest level state needs to be persistent, while everything else can be regenerated dynamically (e.g. in a SGSN restart)
* [gprs] fully integrate VTY configuration into Gb proxyHarald Welte2010-05-041-11/+38
| | | | The Gb-proxy is now fully configured by config file / VTY
* GPRS: Introduce a GPRS Gb ProxyHarald Welte2010-05-042-1/+48
| | | | | | | | The ida of the Gb proxy is to aggregate Gb links with a number of BSS and then present all the BSSGP-VC's together inside one NS-VC to the actual SGSN. The code is not yet expected to be complete.
* gprs: remove msgb->nsvc pointer and replace it with NSEI and BVCIHarald Welte2010-05-041-2/+1
| | | | | | | | | | | According to TS 08.16, the BSSGP layer needs to specify NSEI and BVCI when executing the NS UNITDATA REQUEST primitive of the underlying NS layer. Rather than passing around a pointer to the 'struct gprs_nsvc', we now have NSEI and BVCI as members of 'struct obsc_msgb_cb' and set them when BSSGP hands a message down to NS. NS then does a lookup of the 'gprs_nsvc' based on the NSEI parameter.
* GPRS: Modularize the NS implementationHarald Welte2010-05-041-9/+53
| | | | | | | | | | | | | * move UDP listener code for NSIP from input/ipaccess.c and into gprs_ns.c * add PDU type, IE and CAUSE values for later IP based 3GPP TS 48.016 * support multiple NS-VCs and their lookup based on NSVC and sockaddr_in * maintain the remote_state (blocked/alive) for each NSVC * introduce the concept of GPRS_NS instances, move all global vars to instance * remove hardcoded calls to gprs_bssgp_rcvmsg() and replace it by callback WARNING: This is not finished code. While it will compile, it will not work yet, as BSSGP needs to be converted to properly indicate the NSVC to which it needs to send data.
* GPRS: remove hard-coded IP address for NSIP responses from SGSN->BTSHarald Welte2010-05-041-1/+1
|
* Create new 'gprs-sgsn' branch on top of 'gprs-conf'Harald Welte2010-05-042-0/+199
This branch contains the partial SGSN/GGSN implementation that was originally developed as part of the gprs branch.