path: root/openbsc/src
AgeCommit message (Collapse)AuthorFilesLines
2016-05-22subscr_name(): Handle case for subscr == NULLHarald Welte3-6/+6
subscr_name() was called from several places: * either without a check for subscr being NULL, which for example was causing a segfault if we hand-over a channel before identifying the subscriber * or with an explicit NULL check and the ternary operator (?). We now simplify the code by checking for the NULL Subscriber in subscr_name() itself. Change-Id: Ide09f4a515222eb2ec6c25e7a6a8c5f6cc2ffd4b Reviewed-on: Tested-by: Jenkins Builder Reviewed-by: Holger Freyther <>
2016-05-21drop unneccessary duplicate linking: osmo-nitbNeels Hofmeyr1-1/+0
Change-Id: I430adbb1e0c6382317da282bcf5ef73cf9496f80 Reviewed-on: Tested-by: Jenkins Builder Reviewed-by: Holger Freyther <>
2016-05-21drop unneccessary duplicate/unused linking: ipaccessNeels Hofmeyr1-5/+0
Drop unused linking of libmsc, and drop duplicate linking of libbsc. Change-Id: If2d63adb832c72ff1a22c25a78e06b0c244628d2 Reviewed-on: Tested-by: Jenkins Builder Reviewed-by: Holger Freyther <>
2016-05-21drop unneccessary duplicate linking: osmo-bscNeels Hofmeyr1-1/+0
Change-Id: Ia227abcaa7b1f808646aadb9f53ee2a669699c51 Reviewed-on: Tested-by: Jenkins Builder Reviewed-by: Holger Freyther <>
2016-05-20Make extending subscriber creation easierMax3-11/+17
* rename variable controlling subscriber creation * use enum for subscriber creation policy * move check for subscriber creation policy into separate static function Related: OS#1658, OS#1647 Change-Id: I3b10a9a764fd3a7bb96717a990e52caae16266da Reviewed-on: Tested-by: Jenkins Builder Reviewed-by: Holger Freyther <>
2016-05-20Use proper measurement for handoverMax1-5/+12
Previously *FULL measurements were always used for handover decisions. Those are incorrect in case of DTX - check if it was enabled and use *SUB instead. Note: *SUB values have higher variance so there might be more "bad" values compared to *FULL although real quality remains the same. Change-Id: I95e8e544047a83a256e057a47458678f40a19a15 Related: OS#1701 Reviewed-on: Tested-by: Jenkins Builder Reviewed-by: Harald Welte <>
2016-05-17Move DTX settings to BTSMax5-22/+91
* Add per-BTS DTX settings * Configure Uplink and Downlink DTX separately * Deprecate global DTX option (it was never tested/used anyway) * Use libosmocore function for DTX indicator in System Information (previously it was incorrectly assigned for half-rate channels) Related: OS#22 Change-Id: I3d55168475ad47044b6238b55846ea22bdd518a4 Reviewed-on: Tested-by: Jenkins Builder Reviewed-by: Holger Freyther <>
2016-05-15db.c: implemented incremental migrationVadim Yanitskiy1-18/+35
In the past, normal migration was possible only if the actual schema version differed from the version used in DB by 1. For example, if DB uses an old version 3 and you need to use it with the code written for version 5, the check_db_revision() will convert it to 4 and DB will still use incompatible schema version during Osmo-NITB running time. After next run it will be converted to version 5. This patch replaces a set of 'else-if' checks by a 'switch' without 'break' statements between 'case' labels (waterfall). It makes you able to migrate from current version to the latest despite any difference between them. Change-Id: Ia9c2aa86f96b88ad8a710d0a23879ce219bc82dc Reviewed-on: Tested-by: Jenkins Builder Reviewed-by: Holger Freyther <>
2016-05-05Add human-readable name of SGSN_AUTH_AUTHENTICATEHarald Welte1-0/+1
In commit 4adb136da63a1d3ed523ad85e12fd99fc62f5701 we introduced a new authentication state SGSN_AUTH_AUTHENTICATE, but we didn't add that to auth_state_names[] resulting in log messages printing it abut 'unknown 0x1' rather than something more useful.
2016-05-05sgsn/GSUP: Support MAP-style nested LU/ISDHarald Welte1-0/+22
The existing GSUP code expected the subscriber data to be piggy-backed onto the location update response, rather than a separate (and nested) insert subscriber data request/response phase. With this patch we should now support both the nested as well as the piggy-backed version.
2016-04-29osmo_oap_decode(): Use common argument orderingHarald Welte2-3/+3
In general, if a function generates output data like a msgb (or in this case filling an osmo_oap_message structure), the output argument precedes the source. This is what we use all over libosmo*, and it is modelled after memcpy(), where dst is the first argument, before src. Let's align osmo_oap_decode(). Intestingly, osmo_oap_encode was already correct, so the encode/decode functions used different conventions before.
2016-04-29OAP: Various coding style fixesHarald Welte1-13/+14
* we always declare stack variables at the top of the function / block * 'switch' is not a function, so there's space ahead of the opening (
2016-04-29OAP: use osmo_oap_ prefix for OAP, rather than plain oap_Harald Welte2-10/+10
this is in preparation of moving related code to libosmocore.
2016-04-29oap_message.h: Remove dependency to openbsc includeHarald Welte2-1/+2
This is a first step to moving oap_messages.h to libosmocore
2016-04-29Move osmo_gsup_messages.[ch] to libosmocoreHarald Welte3-474/+2
This requires the corresponding commit in libosmocore.
2016-04-29move utils.h functions to libosmocoreHarald Welte5-67/+9
This needs the corresponding commit in libosmocore which imports the related functions
2016-04-29osmo_gsup_messge.[ch] documentation update (doxygen)Harald Welte1-0/+10
2016-04-29gsup_messages: Add UMTS AKA related encoding/decoding supportHarald Welte1-0/+46
2016-04-29move osmo_shift_* / osmo_match_shift_* to libosmogsmHarald Welte2-174/+0
2016-04-29rename gprs_shift_*() to osmo_shift_*()Harald Welte4-47/+86
This rename is the first step of moving the associated functions into libosmocore. Also, rename gprs_match_* to osmo_match_shift_* to indicate that it is not just matching the TLV, but also shifting the data portion.
2016-04-29Rename gprs_gsup_* to osmo_gsup_*Harald Welte3-108/+108
This is a preparation to move the related code to libosmocore, whilst at the same time generalizing it from GPRS Subscriber Update Protocol to the Osmocom Generic Subscriber Update Protoco.
2016-04-29use new libosmocore gsm_23_003.h for IMEI/IMSI lengthHarald Welte7-9/+12
... rather than our private definitions everwhere. As an added benefit, gprs_gsup_messages.h is now free of any header dependencies within openbsc.
2016-04-29move gsm_04_08_gprs.h to libosmocoreHarald Welte13-152/+10
This requres the corresponding commit in libosmocore.
2016-04-29Start to use struct osmo_auth_vector from gsm_auth_tupleHarald Welte8-61/+61
Rather than having a 'private' structure for kc, sres and rand, we now finally (with 4 years delay) use osmo_auth_vector from libosmogsm, which encapsulates authentication vectors that can be either GSM triplets or UMTS quintuples or a combination of both. gsm_auth_tuple becomes a wrapper around osmo_auth_vector, adding use_count and key_seq to it. key_seq is no longer initialized inside gprs_gsup_messages.c, as there is no CKSN / key_seq inside the message anyway. If a usre of the code needs key_seq, they need to manage it themselves.
2016-04-29Disconnect calls with incompatible channel types / modesMax1-1/+45
In case both TCH/H and TCH/F or different codecs are configured and internal MNCC handler is used we might end up in a situation where call legs with incompatible channel types or codecs would be connected resulting in a broken audio. Disconnect such calls with appropriate error message. Fixes: OS#1663
2016-04-29Adjust si2quater rangesMax1-5/+6
Change ranges of arguments for si2quater neighbor lists to proper values according to 3GPP spec.
2016-04-29Fix comment typoMax1-1/+1
2016-04-23Add missing includeMax1-0/+1
2016-04-22Add extra debug output with channel mode and typeMax4-9/+27
This provides helpful information for debugging internal MNCC handler.
2016-04-22Add vty check for max si2quater sizeMax2-9/+35
Explicitly check if added (U|E)ARFCN will fit into available si2quater message.
2016-04-22Add basic UARFCN supportMax3-21/+262
* add data structures, generation functions * vty interface for neightbor UARFCNs specific to SI2quater * vty test * unit test Fixes: OS#1666
2016-04-22Fix earfcn deletionMax1-2/+2
* fix typo in arg index * fix sign in error reporting * add vty test
2016-04-22Fix documentation for command parametersMax1-1/+2
2016-04-16nat/vty: Do not print token update statementHolger Hans Peter Freyther1-4/+1
On start this would print one line per BSC and this doesn't add a lot of value. Let's just remove this logging message.
2016-04-16Add basic SI2quater supportMax5-3/+302
* support for sending arbitrary static SI2quater. * vty interface for neightbor EARFCNs specific to SI2quater. * dynamic generation of SI2quater messages. * unit test for SI2quater messages. Fixes: OS#1630
2016-04-16Refactor SI-related codeMax2-20/+19
Move define to header file. Use inline functions where appropriate. Change int variables which are used as boolean into actual bool to make code easier to follow.
2016-04-16Add SI2quater support to SI3Max3-1/+17
Advertise SI2 quater presence and location (if available) using SI3 according to 3GPP TS 44.018 §
2016-04-16bsc_nat: forward_sccp_to_msc(): assert con presence (CID #57872)Neels Hofmeyr1-0/+1
2016-04-16gtphub_unmap_header_tei(): don't dereference unmapped_tei arg if not present ↵Neels Hofmeyr1-4/+6
(CID #57687)
2016-04-14NAT: reload BSCs config dynamicallyMax1-0/+29
Add vty tests for BSC configuration reloading. Load BSCs configuration on bscs-config-file command: * remove all runtime configured BSC not in the config file * close connections to all BSC with updated token value Fixes: OS#1670 Sponsored-by: On-Waves ehf
2016-04-14NAT: move BSC config into separate fileMax2-4/+50
Introduce new configuration option bscs-config-file which includes BSC configuration from the given file. Both absolute and relative (to the main config file) paths are supported. Add 'show bscs-config' command to display current BSC configuration. Note: it is still possible to have BSC configuration in the main file (provided proper index number is used) and in runtime but BSC configuration is no longer saved automatically. The management of included configuration file is left to external tools. Update configuration examples. Fixes: OS#1669 Sponsored-by: On-Waves ehf
2016-04-12NAT: allow allocating BSC in arbitrary orderMax2-12/+9
Check for existing BSC before allocating new one. Track number of remaining BSCs on deallocation. Explicitly use BSC number in allocation function.
2016-04-12Remove trivial wrapper functionMax1-13/+2
Rename gsm48_tx_chan_mode_modify() to gsm48_lchan_modify() and remove corresponding wrapper code.
2016-04-12NAT: extend debug output for ipaccess errorsMax1-2/+2
2016-04-12NAT: vty command to display number of BSCsMax1-0/+9
Add command 'show nat num-bscs-configured' to display number of configured BSCs. Sponsored-by: On-Waves ehf
2016-04-11Fix segfault with broken configMax1-0/+3
Fixes OS#1691
2016-04-07ctrl: Extend ctrl command to optionally handle alg+kiHolger Hans Peter Freyther1-2/+58
Extend the existing ctrl command to be able to specify the algorithm and Ki. In contrast to the VTY no size check is done. Together with the VTY this code only supports a small part of what is supported by libosmocore. The algorithm and ki are considered optional but if a valid algorithm other than "none" is passed, a KI must be passed as well. Extend the test coverage by passing the potential values. It is not verified that the KI/algorithm is stored.
2016-04-06db: If creating a subscriber in the db fails, return NULLHolger Hans Peter Freyther1-1/+4
We should not return a subscriber in case it was not written to the database. Instead free the memory allocated and return NULL. Callers in gsm_04_08.c are prepared to have the creation fail. Related: OS Issue #1657
2016-04-06subscr: Make db_create_subscriber fail on duplicatesHolger Hans Peter Freyther2-13/+13
The issue of db_create_subscriber updating an already existing subscr is that the same subscriber will then have two entries in the active subscribers list. In general this will break assumptions that a subscr can be compared by comparing the pointer. In the case of the VTY this was not an issue as the created subscr was immediately destroyed again but it is better to avoid this problem. Change the VTY command to find the subscriber and then call sync to have the updated time set. The side-effect is we will now have two queries for the subscriber. Once through subscr_get_by_imsi and once through db_create_subscriber. Change the db_create_subscriber to fail if a subscriber already exists, and add a testcase for this behavior and do not updated the 'updated' timestamp of an already existing subscriber. Add a testcase for this behavior. Related: OS Issue #1657
2016-04-01bsc: Add parameter to restart a btsHolger Hans Peter Freyther1-1/+11
The ip.access nanoBTS seems to have severe issues with BSSGP when changing the country code and/or network code. It is unlikely that the proprietary code is getting fixed so we extend the parameter for the apply-configuration command to carry the 'restart' param.