aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/include
AgeCommit message (Collapse)AuthorFilesLines
2010-01-27[msc] Fix compilation by adding blocked_gsm to the structHolger Hans Peter Freyther1-0/+1
2010-01-27[msc] Attempt to fix MT SMS with ciphering enabled.Holger Hans Peter Freyther1-0/+1
The MSC is asking us to enable ciphering and then immediately sends a DTAP msg for SAPI=3. We handle this correctly by attempting to establish SAPI=3 but we never get an establishment confirm for this SAPI. Attempt to fix it by not sending any DTAP message when we receive the Cipher Mode Request and unblock the queue when the ciphering is confirmed. The unblocking currently works by taking all messages out of the queue and then submitting them again. This will attempt to establish the SAPI=3 and such automaticaly. And the MSC stopped sending me SMS so this needs to be verified at a later time.
2010-01-21[nat] Add a bsc_filter.c which will carry out the analysis and filteringHolger Hans Peter Freyther2-1/+34
The first part is to analyze the IP Access Header and only forward SCCP messages for now. In the future we might want to do MGCP signalling through this protocol and connection as well and need to update this then.
2010-01-13[sccp] Add a utility for the nat..Holger Hans Peter Freyther1-0/+6
Add a small helper to determine the type of a message
2010-01-13[ipaccess] Create a method to send the ID ACK messagesHolger Hans Peter Freyther1-0/+1
2010-01-12[bsc_msc] Move the connect to the MSC routine into a new fileHolger Hans Peter Freyther2-1/+31
2010-01-07[bssap] More brown paper... Make variables really signedHolger Hans Peter Freyther1-2/+2
-1 is assigned in case the variables are not set. This means it must be a signed type (as the comment says), now really use a signed type.
2010-01-07[bssap] Allow to use a different country code tooHolger Hans Peter Freyther1-0/+1
* Be able to have a country code in the air but use a different country code when talking to the core network. * Now both country and network code can be different on air and on the MSC communication.
2010-01-05[bsc_msc_ip] Turn the MNC hack into a config optionHolger Hans Peter Freyther1-0/+3
* Make it possible to have a different MNC in the RSL traffic than in the core network. * Introduce the "core network code NUMBER" variable. If it is set this network code will be used in traffic with the MSC. * Use the core_network_code number when sending a packet to the MSC * Regenerate the LAI (this is where I could have a bug) when sending packets to the BTS. * Add size checks. This is not tested, I might got something wrong.
2009-12-22Merge commit 'origin/master' into on-waves/bsc-masterHolger Hans Peter Freyther18-107/+536
Conflicts: openbsc/include/openbsc/Makefile.am openbsc/include/openbsc/gsm_data.h openbsc/src/Makefile.am openbsc/src/abis_rsl.c openbsc/src/chan_alloc.c openbsc/src/gsm_04_08.c openbsc/src/gsm_data.c openbsc/src/vty_interface.c The biggest problem is the moving of the RTP code into the RSL layer. This may break quite some things...
2009-12-22keep some internal statistics inside OpenBSCHarald Welte1-0/+45
the statistics will give us some idea about the network load and performance.
2009-12-21remove duplicate flag for cell barringHarald Welte1-1/+0
it's sufficient if we keep the state of cell barring in one place
2009-12-21[handover] Real handover algorithmHarald Welte1-0/+30
This implements the handover algorithm (and associated parameters) as described in Chapter 8 of the book "Performance Enhancements in a Frequency |Hopping GSM Network" by Thomas Toftegard Nielsen and Jeroen Wigard. The parameters such as averaging windows are configured in struct gsm_network. We keep some state to trakc up to 10 neighbors as they are being reported from the MS. This has so far only been tested in a network with two BTS that have each other as neighbor. Networks with morge neighbors might encounter bugs.
2009-12-21RSL: keep track if a channel is active or notHarald Welte1-0/+9
This allows us to block packets that we have received after the channel is no longer being used. This is visible during handover, where we still receive a measurement report after the MS has switched to the new channel. This leftover measurement report then attempts to trigger another handover, which si bogus and will fail - and thus only consumes resources. With the new LCHAN_S_ACTIVE state, we can check for this when processing the measurement report.
2009-12-21meas_rep: utility function for processing of measurement reportsHarald Welte1-0/+27
This provides two functions: get_meas_rep_avg() to obtain the sliding window average of one particular field, and meas_rep_n_out_of_m_be() to check if at least N out of M measurments are >= BE.
2009-12-20rename ipacc_connect_proxy_bind() to rsl_ipacc_mdcx_to_rtpsock()Harald Welte1-0/+1
Our RTP sockets are no longer just for the proxy mode, so having "proxy" in the function name is really misleading.
2009-12-20remove hand full of 'extern ipacc_rtp_direct' definitionsHarald Welte1-0/+1
and instead declare it in gsm_data.h
2009-12-20RTP Proxy: Fix RTP sequence number and timestamp in case of dropped framesHarald Welte1-0/+1
During handover, we will not send RTP frames for quite some time. However, the way the rtp_send code is structured, it will increment the timestamp with a fixed amount every time we send a frame, independent how much wallclock time has actually passed. This code is a hack to update the sequence number and timestamp in case it seems to be wrong. It makes handover much more reliable.
2009-12-19Add RTP support for EFRHarald Welte1-0/+1
This is just the minimal support to receive and send EFR codec RTP frames. We are missing the code to convert TRAU frames in EFR format!
2009-12-19RTP-enable MNCC API for LCR + ip.accessHarald Welte4-4/+21
Instead of passing TRAU frames down the MNCC API to the call control application like MNCC, we now decode the TRAU frame into the actual codec frame. We do the same with the RTP packets in case of ip.access and thus have a unified format of passing codec data from the BTS to an application, independent of the BTS type. This is only implemented for V1 full-rate at the moment, and needs to be fixed.
2009-12-19[handover] add VTY parameter to enable/disable handoverHarald Welte1-0/+3
2009-12-19ip.access: Keep a full copy of local and remote IP/PORT in lchanHarald Welte4-3/+7
Keeping all parameters for each RTP connection in the abis_ip member of lchan will help us with actual TCH handover later on.
2009-12-18remove call_handling.h, a reminescent of old daysHarald Welte1-64/+0
2009-12-17add handover.h file to Makefile.am to make distcheck happyHarald Welte1-1/+1
2009-12-17logging: introduce log levels at caller siteHarald Welte1-0/+11
This introduces a new LOGP() macro together with LOGL_* definition to support multiple log levels (severities) throughout the codebase. Please note that the actual logging system does not use them yet, in this patch we simply introduce the new macros at the caller site.
2009-12-17introduce trans_lchan_change() to update transaction about lchan changeHarald Welte1-0/+5
2009-12-17[handover] first functional handover implementationHarald Welte3-1/+11
With this commit, we can successfully hand over a channel from one cell to another cell. We implement asynchronous intra-BSC (but inter-BTS) handover. Changes: * introduce new DHO log category * extend rsl_chan_activate_lchan() with argument for HO reference * introduce actual minimal handover decision making in handover_decision.c * various fixes to bsc_handover_start() in handover_logic.c
2009-12-17make handover reference a function call argumentHarald Welte1-2/+2
2009-12-16ip.access: Keep OML/RSL up/down state per-bts for multi-BTS setupsHarald Welte1-0/+1
2009-12-15mroe comments on meas_rep data structuresHarald Welte1-0/+5
2009-12-15introduce cache of 6 last recently received measurement reports for each lchanHarald Welte1-0/+6
2009-12-15add BSIC parameter to gsm_bts_neighbor()Harald Welte1-1/+2
When looking for the gsm_bts of a neighbor cell, use BSIC and ARFCN tuple rather than just ARFCN for better identification purpose.
2009-12-14Implement gsm_bts_neighbor() function to determine neighbor BTSHarald Welte1-0/+4
We will need this for the actual handover algorithm implementation, as we will only know the current BTS and the BCCH ARFCN of the strongest cell in the measurement reports. Using this new function, we can resolve the matching gsm_bts.
2009-12-1404.08 MEAS REP: Convert relative cell number to ARFCNHarald Welte1-1/+1
Since we are keeping a bitvec of the neighbor cells, we can now use bitvec_get_nth_set_bit() to determine the ARFCN for each reported cell in the 04.08 MEASUREMENT REPORT.
2009-12-14bitvec: Introduce bitvec_get_nth_set_bit() functionHarald Welte1-0/+3
This is particularly important for determining the ARFCN for cells reported in 04.08 MEAS REP.
2009-12-14system_information: use bitvec to generate frequency listsHarald Welte1-0/+8
We use a 1024-bit-sized bitvec to generate the BA and neighbor frequency list. This bitvec is still generated from the list of all BTS's inside the BSC, but this patch is the first step to generalize this, i.e. generate arbitrary neighbor lists.
2009-12-14bitvec updates and code simplificationHarald Welte1-0/+3
* introduce a new bitvec_get_bit_pos() function to determine the bit value at a given position inside a bit vector * make sure bitvec_{get,set}_bit_pos() share code as possible
2009-12-14Add VTY setting for whether or not to sending MM INFOHarald Welte1-0/+1
2009-12-13introduce new signal every time we get a mobile identityHarald Welte1-0/+1
2009-12-13[RRLP] make RRLP mode configurable from config fileHarald Welte1-0/+15
We now support different RRLP modes (including "none" to disable RRLP), you can configure it via "rrlp mode" in the "network" section of openbsc.cfg.
2009-12-12Gracefully reject non-speech callsHarald Welte1-0/+8
As we currently really only deal with voice/speech calls and don't support FAX and DATA (CSD) calls, we now gracefully reject them.
2009-12-12utility functions to convert RXLEV into dBm and vice versaHarald Welte1-0/+4
2009-12-09mark lchan2chan_nr() using a 'const' parameterHarald Welte1-1/+1
which fixes some compile warnings at some callers.
2009-12-06location updating reject cause now specified on VTY rather than command line ↵Harald Welte2-1/+1
argument
2009-12-06Fix make distcheck by adding the new headers...Holger Hans Peter Freyther1-1/+2
2009-12-06move RTP socket information from timeslot to lchanHarald Welte1-7/+8
With ip.access, in case of TCH/H, we have one RTP stream for each half-slot (lchan), not just one per on-air timeslot. This is quite different from a classic BTS where the TRAU frames of the two TCH/H channels would be part of the same 16k sub-slot in a E1 timeslot.
2009-12-06Assign default values for T3101 and T3113Harald Welte1-0/+3
Without those default values, old config files will no longer work after commit 23975e718fd456ff8be7effbb915903f1bc173be
2009-12-02move RTP socket information from timeslot to lchanHarald Welte1-7/+8
With ip.access, in case of TCH/H, we have one RTP stream for each half-slot (lchan), not just one per on-air timeslot. This is quite different from a classic BTS where the TRAU frames of the two TCH/H channels would be part of the same 16k sub-slot in a E1 timeslot.
2009-12-01Replace template-based SYSTEM INFORMATION with real implementationHarald Welte5-7/+214
Before this commit, OpenBSC used templates for the SYSTEM INFO 1, 2, 3, 4, 5 and 6 messages. Those templates were patched in various places to reflect the network config like ARFCN. Now, we actually generate those SI messages ourselves, using values from the configuration file, and even calculating neighbor cell lists. All bts'es that you have configured in OpenBSC will end up in the neighbor cell list - which should be more than sufficient for the current small-single-site networks.
2009-12-01Introduce new S_GLOBAL_SHUTDOWN signalHarald Welte1-0/+5
This is used to notify various parts of OpenBSC that we're shutting down.