summaryrefslogtreecommitdiffstats
path: root/openbsc/src
Commit message (Collapse)AuthorAgeFilesLines
* [GPRS] NS: Start to use rate_ctr_group code from libosmocoreHarald Welte2010-05-132-243/+314
| | | | | | | | | 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.
* GPRS: We have to do the msgb_free() in NS not Gb ProxyHarald Welte2010-05-121-1/+5
| | | | | | | As only NS-UNITDATA messages are ever passed into the Gb Proxy, we need to do the msgb_free() at a much higher point in the calling stack, i.e. inside the NS protocol layer. This means it is now the same logic as in OpenBSC itself.
* NS: Make all timers configurable from VTYHarald Welte2010-05-121-12/+58
|
* use new install_element_ve()Harald Welte2010-05-121-2/+1
|
* Make sure all commands of SHOW_NODE to ENABLE_NODEHarald Welte2010-05-121-0/+1
|
* NS: Add support for persistent NS-VC configurationHarald Welte2010-05-121-9/+216
| | | | | | | | | 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.
* NS: Send UNBLOCK signal when we get UNBLOCK_ACK from peerHarald Welte2010-05-121-0/+1
|
* Display NSEI instead of NSVCI for all debug msgsHarald Welte2010-05-121-4/+4
|
* NS: Send STATUS or RESET when receiving NS_ALIVE on unknown NSVCHarald Welte2010-05-121-5/+15
|
* NS / GB Proxy: Add Signal in case Tns-Alive expires too oftenHarald Welte2010-05-121-0/+1
| | | | The Gb Proxy can then restart the RESET procedure.
* NS: Debug NS timer expiryHarald Welte2010-05-121-2/+16
|
* NS: Add more LOG_DEBGU messages and retransmit NS-ALIVEHarald Welte2010-05-121-4/+23
|
* NS: More INFO messages about what we actually transmitHarald Welte2010-05-121-0/+13
|
* NS: don't memcmp sockaddr_in but compare ip and port individuallyHarald Welte2010-05-121-4/+5
| | | | this seems to work more portably (ppc/32bit big endian)
* [gprs] NS: more state transitions, error reporting via Tx STATUS PDUHarald Welte2010-05-121-16/+64
|
* [gprs] NS: elevate events from LOGL_DEBUG to LOGL_INFOHarald Welte2010-05-121-13/+14
|
* [gprs] NS: update the remote peer IP addr/port on NS RESETHarald Welte2010-05-111-1/+2
|
* [gprs] NS: include port number in log statementHarald Welte2010-05-111-2/+3
|
* [gprs] gb-proxy: We might receive a NS-RESET for a NS-VC that we already knowHarald Welte2010-05-111-4/+21
| | | | | In this case, don't blindly allocate a new NS-VC but rather use the NSEI to lookup the 'struct gprs_nsvc' for it.
* [gprs] NS: Make sure we include "Rx" in the log statement for NS RESETHarald Welte2010-05-111-1/+5
|
* [gprs] NS: cleanup / fix compiler warningsHarald Welte2010-05-111-3/+5
|
* [gprs] BSSGP: cosmetic cleanupHarald Welte2010-05-111-9/+2
|
* [gprs] gb_proxy: Send proper BSSGP STATUS msg in error caseHarald Welte2010-05-112-82/+119
| | | | | | | | | | | 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-4/+73
| | | | | | 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] Add new 'NS' and 'BSSGP' logging categoriesHarald Welte2010-05-112-44/+44
|
* [gprs] Move all GPRS related code to src/gprs subdirectoryHarald Welte2010-05-042-0/+0
|
* [gprs] NS: If we are the BSS side, UNBLOCK the connection after it is ALIVEHarald Welte2010-05-041-0/+9
| | | | | After RESET / RESET-ACK and ALIVE / ALIVE-ACK, the connection needs to be unblocked from the BSS side to the SGSN.
* [gprs] NS: Start ALIVE Procedure after receiving RESET_ACKHarald Welte2010-05-041-4/+7
|
* [gprs] NS: improved timer handling for RESETHarald Welte2010-05-041-15/+78
|
* [gprs] NS: replace nsvc->timer_is_tns_alive with nsvc->timer_modeHarald Welte2010-05-041-11/+14
| | | | This will allow to use the timer in more than 2 modes
* [gprs] Unify log messages of the NS protocol implementationHarald Welte2010-05-041-22/+28
|
* [gprs] correctly calculate the length of the BSSGP PDUsHarald Welte2010-05-041-5/+5
|
* [gprs] pass BSSGP UL-UNITDATA Cell ID up into GMM layerHarald Welte2010-05-041-5/+6
| | | | | | | | | 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-35/+35
| | | | | 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-042-21/+43
| | | | | | | | | | | 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] Ensure msgb->l3h points to Layer3 (04.08)Harald Welte2010-05-042-7/+10
| | | | | | | | | | In the old code l3h = BSSGP, l4h = LLC, cb[gmmh] = 04.08 Now, this has been changed to cb[bssgph] = BSSGP, cb[llch] = LLC, l3h = 04.08 This way, GSM general 04.08 and GPRS 04.08 code can expect a GSM 04.08 header at msgb->l3h
* [gprs] convert ns_cause_str to value_stringHarald Welte2010-05-041-20/+15
|
* [gprs] BSSGP: convert cause strings to value_stringHarald Welte2010-05-041-28/+29
|
* [gprs] introduce BSSGP concept of BTS contextxHarald Welte2010-05-041-23/+110
| | | | | A BTS context represents the mapping betewen (RA-ID, Cell-ID) and (BVCI, NSEI) as well as the per-BVC local state.
* [gprs] Build the SGSN stand-alone and not as part of bsc_hackHarald Welte2010-05-041-5/+23
| | | | | | | | | | | | | | Instead of continuing to add more and more functionality to the bsc_hack binary, we should have the new SGSN code run as a separate executable. After this commit we now build a 'osmo_sgsn' executable, using its own osmo_sgsn.cfg config file. However, the SGSN is not yet functional, mainly due to the fact that the BSSGP and GMM code are written with the assumption that there is a msgb->trx->bts and the according 'sturct gsm_bts' data model around - which clearly is no longer the case outside of bsc_hack.
* [gprs] fully integrate VTY configuration into Gb proxyHarald Welte2010-05-041-25/+4
| | | | The Gb-proxy is now fully configured by config file / VTY
* GPRS: Introduce a GPRS Gb ProxyHarald Welte2010-05-042-31/+23
| | | | | | | | 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-042-32/+63
| | | | | | | | | | | 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: Use new msgb->cb[] for storing a pointer to the NS-VC through which it ↵Harald Welte2010-05-041-7/+11
| | | | was received
* GPRS: Modularize the NS implementationHarald Welte2010-05-041-22/+231
| | | | | | | | | | | | | * 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: Update gprs-sgsn branch to use new msgb->cb layoutHarald Welte2010-05-041-3/+3
| | | | | | The explicit 'tlli, gmmh' members of struct msgb are gone from current libosmocore and have been replaced by the more generic 'control buffer' mechanism.
* GPRS: remove hard-coded IP address for NSIP responses from SGSN->BTSHarald Welte2010-05-041-22/+32
|
* Create new 'gprs-sgsn' branch on top of 'gprs-conf'Harald Welte2010-05-042-0/+745
This branch contains the partial SGSN/GGSN implementation that was originally developed as part of the gprs branch.