aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libbsc
AgeCommit message (Collapse)AuthorFilesLines
2014-06-03rsl: Check if the channel is active and then start the channel releaseHolger Hans Peter Freyther1-16/+12
In case we receive ERROR INDICATION and CONNECTION FAILURE we only want to RF Channel Release the lchan once. This code is more simple and should work as reliable as the previous commit.
2014-06-03rsl: Avoid double channel release procedure in error conditionsHolger Hans Peter Freyther1-5/+20
When we receive an ERROR INDICATION and CONNECTION FAILURE we might call rsl_rf_chan_release multiple times. The channel release handling is still a bit messy and there too many paths that lead to the call. 1.) In case we receive an ERROR INDICATION for SAPI=3. A RLL error signal will be emitted that leads to the release of the channel through the SMS code in case of the NITB. The call to rsl_rf_chan_release might be a double release. 2.) In case a CONNECTION FAILURE is received when the release process has already been started we would unconditionally call rsl_rf_chan_release as well. Because the lchan state is changed by the callers of the rsl_rf_chan_release we can not move the state checking into this code but need to do it in the caller. The issue was seen in a trace from Rhizomatica and I created the DoubleRelease.st to re-produce the issue and verified that we have no duplicate RF Channel Releses. The other option would be to introduce a new state to track the release process and see if we have already released SAPIs deactivated the SACCH or such. We can not simply look at these as for a channel that fails to activate they will be null already.
2014-06-03lchan: Speculative "fix" for error and late replyHolger Hans Peter Freyther1-8/+9
Looking at the code it seemed possible that a channel would transition from BROKEN to NONE. Or worse from NONE to BROKEN. Start the timer _after_ the channel has been released.
2014-05-26rsl: Remove obsolete FIXME comment.Holger Hans Peter Freyther1-1/+0
The lchan state is set to none either on RF Channel Release ACK or in case of an error after the error timer has expired.
2014-05-19chan_alloc: Fall-back to TCH/H, if we cannot find a TCH/FHarald Welte1-0/+5
I'm not entirely sure if this is the best approach. However, there are phones that send a RACH request for TCH/F on MO calls, even though they actually do support TCH/H channels.
2014-05-15ctrl: Remove the param parameter as it was never used/implementedHolger Hans Peter Freyther1-1/+0
2014-05-15ctrl: Fix handling of missing repliesJacob Erlbeck1-3/+11
Currently, if a CTRL method does not set the reply, an error is logged ("cmd->reply has not been set"). It even complains when the function implementing the command returns CTRL_CMD_HANDLED, where a reply text is not needed. This patch changes the logging level from ERROR to NOTICE. The logging is now only done, when the retry has not been set and the implementation returns either CTRL_CMD_ERROR or CTRL_CMD_REPLY. So in these cases the reply field must be set. This fixes the generation of log messages when doing NAT ctrl command forwarding. Ticket: OW#1177 Sponsored-by: On-Waves ehf
2014-04-30sms: Add code to migrate the database to the new schemaHolger Hans Peter Freyther1-0/+6
This is mostly based on Alexander's migration code. The code adds transaction handling and some sanity checks and cleanups to the code. We made the decision to fork the sms_from_result method and freeze it to that version. This way sms_from_result can move forward without having to deal with legacy.
2014-04-11bsc: Timers are in seconds, clarify that in the online helpHolger Hans Peter Freyther1-1/+1
2014-04-04oml: Fix compiler warning about aliasingHolger Hans Peter Freyther1-3/+5
Make the fill_fom_hdr return the header and use it throughout. CC abis_nm.o In file included from ../../include/openbsc/debug.h:8:0, from abis_nm.c:38: abis_nm.c: In function ‘abis_nm_opstart’: abis_nm.c:1763:34: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] abis_nm_debugp_foh(DNM, (struct abis_om_fom_hdr *) oh->data); ^ /home/ich/install/openbsc/include/osmocom/core/logging.h:23:74: note: in definition of macro ‘DEBUGP’ #define DEBUGP(ss, fmt, args...) logp(ss, __FILE__, __LINE__, 0, fmt, ## args) ^ abis_nm.c:1763:2: note: in expansion of macro ‘abis_nm_debugp_foh’ abis_nm_debugp_foh(DNM, (struct abis_om_fom_hdr *) oh->data); ^ abis_nm.c:1763:34: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] abis_nm_debugp_foh(DNM, (struct abis_om_fom_hdr *) oh->data); ^ /home/ich/install/openbsc/include/osmocom/core/logging.h:23:74: note: in definition of macro ‘DEBUGP’ #define DEBUGP(ss, fmt, args...) logp(ss, __FILE__, __LINE__, 0, fmt, ## args) ^ abis_nm.c:1763:2: note: in expansion of macro ‘abis_nm_debugp_foh’ abis_nm_debugp_foh(DNM, (struct abis_om_fom_hdr *) oh->data); ^ abis_nm.c:1763:34: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] abis_nm_debugp_foh(DNM, (struct abis_om_fom_hdr *) oh->data); ^ /home/ich/install/openbsc/include/osmocom/core/logging.h:23:74: note: in definition of macro ‘DEBUGP’ #define DEBUGP(ss, fmt, args...) logp(ss, __FILE__, __LINE__, 0, fmt, ## args) ^ abis_nm.c:1763:2: note: in expansion of macro ‘abis_nm_debugp_foh’ abis_nm_debugp_foh(DNM, (struct abis_om_fom_hdr *) oh->data); ^ abis_nm.c:1763:34: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] abis_nm_debugp_foh(DNM, (struct abis_om_fom_hdr *) oh->data); ^ /home/ich/install/openbsc/include/osmocom/core/logging.h:23:74: note: in definition of macro ‘DEBUGP’ #define DEBUGP(ss, fmt, args...) logp(ss, __FILE__, __LINE__, 0, fmt, ## args) ^ abis_nm.c:1763:2: note: in expansion of macro ‘abis_nm_debugp_foh’ abis_nm_debugp_foh(DNM, (struct abis_om_fom_hdr *) oh->data); ^ abis_nm.c:1763:34: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] abis_nm_debugp_foh(DNM, (struct abis_om_fom_hdr *) oh->data); ^ /home/ich/install/openbsc/include/osmocom/core/logging.h:23:74: note: in definition of macro ‘DEBUGP’ #define DEBUGP(ss, fmt, args...) logp(ss, __FILE__, __LINE__, 0, fmt, ## args) ^ abis_nm.c:1763:2: note: in expansion of macro ‘abis_nm_debugp_foh’ abis_nm_debugp_foh(DNM, (struct abis_om_fom_hdr *) oh->data);
2014-04-04rsl: Add missing breaks in the codeHolger Hans Peter Freyther1-0/+6
Given that the method is only called for a traffic channels the missing breaks didn't hurt. Fixes: Coverity CID 1040731, CID 1040732, CID 1040733, CID 1040734
2014-04-04bsc/msc: Extension can never be NULL use strlen insteadHolger Hans Peter Freyther1-1/+1
Fixes: Coverity CID 1040717
2014-04-04abis: Check for failure of ftellHolger Hans Peter Freyther1-0/+5
In case ftell -1 will be returned. Coverity complained that the pos we pass to fseek might be negative. In case the ftell fails we are at the last line for sure. Fixes: Coverity CID 1040721
2014-04-01ipa: Use enhanced ipa_msg_recv_buffered() to cope with partioned IPA messagesJacob Erlbeck1-0/+10
The old ipa_msg_recv() implementation didn't support partial receive, so IPA connections got disconnected when this happened. This patch adds the handling of the temporary message buffers and uses ipa_msg_recv_buffered(). It has been successfully tested by jerlbeck with osmo-nitb and osmo-bsc. Ticket: OW#768 Sponsored-by: On-Waves ehf
2014-03-26ctrl/abis: When the max_power_reduction changes, send it to the BTSHolger Hans Peter Freyther2-1/+28
In case the max_power_reduction changes, issue a new Set Radio Carrier Attributes command. OML 12.21 allows to not include the ARFCN list and the semantic I picked/understand is that a partial update is possible. Fixes: SYS#267
2014-03-23ctrl: Move the lookup into a separate file in preparation for GPRSHolger Hans Peter Freyther2-1/+181
For GPRS the look-up via bts/trx does not make any sense and would introduce bad depdencies for the SGSN. Move the look-up code to a new file and introduce new setup methods.
2014-03-23nitb/ctrl: Add ctrl command to set the TRX max_power_reductionHolger Hans Peter Freyther1-0/+22
In case the BTS is connected the new attribute should be set through OML. This is left as a todo item. Addresses: SYS#267
2014-03-04libbsc: Add command to set MNC/MCC and apply it if something changedHolger Hans Peter Freyther1-0/+59
Change the splitting of the ctrl_test_runner.py. Make sure that we get one element and all the rest.
2014-03-04libbsc: Add ctrl command to apply the configurationHolger Hans Peter Freyther1-0/+31
Right now this only works for IP based BTS like the sysmoBTS and by dropping the OML link.
2014-03-04libbsc: Add ctrl command for MNC, MCC, short-name and long-nameHolger Hans Peter Freyther2-1/+76
Add the framework for adding more setting commands.
2014-02-08bsc: rf_ctrl will always be created, remove the NULL checksHolger Hans Peter Freyther2-4/+4
2014-02-08libbsc: Create the RF interface all the timeHolger Hans Peter Freyther1-15/+23
The interface can be accessed through CTRL and a socket. But currently it is only available when the socket interface has been configured. Create the interface all the time but only listen on the socket when a path has been specified.
2014-01-27Add function to update TRAU muxer after assignment or handoverAndreas Eversberg2-2/+10
E1 based BTS use TRAU muxer to decode TRAU frames. After changing channel from one timeslot to another (due to handover or assignment), the TRAU muxer must be updated. The call reference of the call is disconnected from the old channel and connected to the new channel.
2014-01-19Fix more hidden TSC bugs for Ericsson BTSHarald Welte1-3/+3
It seems that also the Ericsson RBS2000 code was assuming that we always use the bts-global TSC, rather than the possibly different TS-specific TSC.
2014-01-19TSC: Add new gsm_ts_tsc() function to resolve TSC of TSHarald Welte3-14/+4
We don't want every caller to check for ts->tsc == -1 and then using ts->trx->bts->tsc instead. Rather, introduce a new inline function to retrieve the correct value.
2014-01-19Do not expect all BTSs support TSC != BCCHarald Welte6-1/+27
We introduce a new feature indicating if the given BTS model supports a TSC that is different from the BCC (lower 3 bits of BSIC).
2014-01-19Make gsm48_lchan2chan_desc() reflect a ts-specific TSCHarald Welte1-2/+8
If the TS has a specific, different TSC than the BTS (beacon), we should use that with preference over the TSC of the BTS.
2014-01-16si: Implement range 128, 256, 1024 encodingJacob Erlbeck1-6/+6
This commit adds the implementation of these range formats to the encoder. In addition, the work-around that tried range 512 first is removed, so that the selection is primarily based on the max distance between frequencies. Ticket: OW#1061 Sponsored-by: On-Waves ehf
2014-01-16si: Add generic range w(k) encoderJacob Erlbeck1-58/+83
Currently the encoding of the chan_list is done by a hard-coded sequence of macros that closely resembles figure 10.5.16 in 3GPP TS 04.08. This patch replaces this by an algorithmic solution that can be used for all range encodings and is based on the property W(2^i) to W(2^(i+1)-1) are on w1_len-i bits when present (see section 10.5.2.13 in TS 04.08). Ticket: OW#1061 Sponsored-by: On-Waves ehf
2014-01-16si: Fix range1024 encodingJacob Erlbeck2-26/+20
f0 is currently set to arfcns[0] in range_enc_determine_range(), while GSM 04.08 requires f0 to be ARFCN 0 in range1024 encoding. This patch modifies range_enc_determine_range() to force f0 to be 0 if this encoding is used. This way the case distinction in range_enc_filter_arfcns() is not longer necessary. Sponsored-by: On-Waves ehf
2014-01-16si: Fix range512 encodingJacob Erlbeck1-1/+1
This patch fixes a bug in the range encoder that leads to wrong encoding when 17 or more ARFCNs are encoded. Sponsored-by: On-Waves ehf
2014-01-16si: Add a config option to disable SI2ter/SI2bis/SI5ter/SI5bis messagesJacob Erlbeck2-0/+30
The iPhone5 (US) appears to have some issues with the SIs generated, or the nanoBTS is not sending them correctly. Add a configurable hack to put all bands into the SI2/SI5 message. It is enabled by the bts VTY command 'force-combined-si'. This is a quick change without much reflection and watching for side effects. I have verfied that a network with ARFCN 134 and neighbors ARFCN 130 and 512 do not get generate the SI2ter and announce everything inside the SI2. This patch is conceptually based on 'si: Add a hack to disable SI2ter/SI2bis/SI5ter/SI5bis messages' (692daaf2d2). Ticket: OW#1062 Sponsored-by: On-Waves ehf
2014-01-14Each BTS can be configured for speech support (other than GSM full rate)Andreas Eversberg1-0/+81
Speech codings which are not supported by BTS will be removed from the bearer capability information element after parsing. This way it is not required for the MNCC application to consider support of each BTS. Only GSM full rate is supported by default.
2014-01-09Add VTY option for Nokia BTS that does not send RELease CONFirm messageAndreas Eversberg2-2/+55
This option is a workarround for a bug found in Nokia InSite BTS firmware version 3.0.0. There is no RELease CONFirm message for local end release. Nokia MetroSite with firmware version 4.178.16 is not affected. TS 04.06 Chapter 5.4.4.4 "Local end release procedure" states that a confirm must be sent by layer 2 when receiving a local end release request. In order to correctly switch a channel (handover or assignment), local end release is required.
2013-12-27bsc: Reduce the RLL timeout to be smaller than TC1/max_retr+1Holger Hans Peter Freyther1-1/+1
Sylvain pointed out that the RLL and the SMC timeout is the same. This can lead to have a SMC re-transmission before the first RLL Establish Request has timed out. Reduce the RLL timeout. GSM 08.58 does not specify a timeout so right now I just reduce it to seven seconds.
2013-12-18Fix: Nokia requires VTY's "oml e1" parameters alsoAndreas Eversberg1-1/+1
When writing config file, OML configuration must be written for all E1 based BTS, which includes Nokia *Site BTS.
2013-12-12si: Make sure to not overwrite orig_arfcn_hi in the range encodingHolger Hans Peter Freyther1-1/+1
Andreas highlighted that the doubel assignment is not needed and wrong. Change the code to assign chan_list[0] before writing the base frequency to the header. Update the testcase to make the highest bit set and update the test result.
2013-12-12vty: Address coverity issue with subscr->name never being NULLHolger Hans Peter Freyther1-1/+1
Coverity points out that subscr->name is an array and never NULL. Use strlen instead in this check. Fixes: Coverity CID 1040717
2013-12-12subscriber: Address coverity warning and truncate the IMSIHolger Hans Peter Freyther1-1/+2
The IMSI can only be 15 characters in length, our define gives us a length of 17. This means we have place for two NULs. Use strncpy and make sure it is null-terminated. Fixes: Coverity CID 1040707
2013-11-22bsc: Add a VTY command to show the paging group for a BSC/IMSIHolger Hans Peter Freyther1-0/+35
2013-11-01bsc: Move gsm48_tx_mm_serv_ack/rej to gsm_04_08_utils.cJacob Erlbeck1-0/+34
These functions are currently located in libmsc/gsm_04_08.c together with other symbols that (transitively) depend on many external symbols (and thus libraries) that aren't otherwise needed by e.g. osmo-bsc. Since gsm48_tx_mm_serv_ack() will be needed by osmo-bsc, these functions are moved to avoid the dependency on gsm_04_08.o. Sponsored-by: On-Waves ehf
2013-10-30vty: Use vty_install_default() instead of bsc_install_default()Jacob Erlbeck3-6/+6
Remove ournode_exit_cmd, ournode_end_cmd, and bsc_install_default() since this functionality is provided by the current libosmocore. Replace calls to bsc_install_default() by call to vty_install_default() with the following semantic patch: @rule1@ expression N; @@ - bsc_install_default(N); + vty_install_default(N); Ticket: OW#952 Sponsored-by: On-Waves ehf
2013-10-08abis: Consistent usage of LOGP/DEBUGP for "RSL CONNECT NACK"Alexander Chemeris1-2/+2
2013-09-19bsc/mminfo: Patch timezone and DST in MM Info messagesJacob Erlbeck1-2/+35
This adds in-place patching of the time information in the MM INFORMATION message. The timezone in the 'Local time zone' and the 'Universal time and local time zone' information elements and the offset in the 'Network Daylight Saving Time' information element are optionally set. The new values are determined by the 'timezone' vty command in the config_net_bts node. That command is extended by an optional DST offset parameter. Tests are provided for the vty part and for the plain bsc_scan_msc_msg() function. Sponsored-by: On-Waves ehf Ticket: OW#978
2013-09-18bsc: Add vty command for setting Access control classes.Ivan Kluchnikov1-0/+54
2013-09-16vty: Cosmetic change to the writing of the bts->modelHolger Hans Peter Freyther1-8/+16
Based on the feedback of Peter from the mailinglist, move the writing code to a new method and return early if there is no bts->model.
2013-09-11ctrl: Remember last 'rf_locked' control commandJacob Erlbeck2-0/+5
This stores the last SET rf_locked control command along with a timestamp. The 'show network' vty command is extended to show this information. Ticket: OW#659
2013-09-11vty: Hide unconfigured BTS on 'write'Jacob Erlbeck1-4/+6
This prevents the application from crashing when there is a half configured BTS (e.g. by using the command 'bts 1' when there isn't a BTS 1) and the 'write' command is used.
2013-09-04bsc_msc: Fix possible null pointer dereferenceHolger Hans Peter Freyther1-3/+1
In case the allocation of con is failing, do not attempt to print con->name as this will be a null pointer dereference. Fixes: Coverity CID 1076318
2013-09-03bsc_msc: Stop the re-connect timer in case the msc is lostHolger Hans Peter Freyther1-0/+1
It was possible to cause a crash by enabling and disabling the MSC connection. The enabling lead to scheduling a connection and the second call was not stopping the timer.