aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libbsc
AgeCommit message (Collapse)AuthorFilesLines
2017-04-28Prepare for extended SI2quater supportMax3-55/+48
Supporting SI2quater as per 3GPP TS 44.018 will require chnages to the way System Information is stored because it uses 1:n instead of 1:1 mapping between SI type and generated SI content. This should not affect other SI types though. To facilitate this transition: * convert the code to always use GSM_BTS_SI helper instead of accessing buffer directly * make helper more robust by adding extra parenthesis * add similar helper for gsm_lchan * add function estimating number of SI2quater message to hold configured number of (U|E)ARFCNs * add SI2q index/count fields and pass them to rest_octets generator explicitly * internalize buffer access in generate_si* functions Change-Id: I74e4e3cb86364cec869a1472a41b4a95af0d50dd Related: RT#8792
2017-04-28Save PCU version reported by BTSMax1-13/+9
When BTS reports PCU disconnect - clear it. Change-Id: Idb32c73036413ee912f633604150ee17b611cfa7 Related: OS#1615
2017-04-26Fix MS TO measurement representationMax2-7/+16
* set proper flag when saving MS Timing Offset * use gsm_subscriber's IMSI or lchan's name if bsc_subscriber is unknown * add comments with spec reference * store/display MS Timing Offset instead of raw Timing Offset field from RSL * Compute MS Timing Offset [-63; 192] from Timing Offset field [0; 255], adjust structure gsm_meas_rep with proper type to store it Change-Id: I7e003d23a6edb714c5f17688fd6a8edac131161d Related: OS#1574
2017-04-10gsm_bts: add version and variant detailsMax5-9/+12
* add version string to gsm_bts * add PCU version string to gsm_bts * rename GSM_BTS_TYPE_OSMO_SYSMO -> GSM_BTS_OSMOBTS to avoid confusion between BTS model and variant * add variant enum to gsm_bts_model using enum with variants for each hw vendor of OsmoBTS * show connected PCU version (if available) in vty via 'show bts' This will come in handy when logging details regarding particular BTS reported via OML, see: Related: OS#1614 Change-Id: I6710d53115f34634a7b70969cc05fd5c72ff8ab2
2017-04-08abis: log known ACKs and unknown messagesMax1-1/+18
Log expected ACK messages and unhandled messages to aid in troubleshooting. Change-Id: Id3afaaa76e24f63076ae0e6fd2322e4a7fa29b45 Related: OS#1614
2017-04-03VTY: add the dyn_ts_allow_tch_f optionVadim Yanitskiy1-0/+2
This option allows to enable or disable TCH/F allocation on the TCH/F_TCH/H_PDCH timeslots. Until now, source code modification was required to enable this feature. Related: OS#1778 Change-Id: Id18cab25844dc854a66b4e2713e90c3f43afa712
2017-03-23Handle PCU version received via OML alertMax1-30/+90
Explicitly check for and log PCU version received from BTS via OML alert message. Change-Id: I3c88663d4e2887a4038b4c3f1387128295b8934e Related: OS#1614
2017-03-23libbsc: add rsl_ericsson_imm_assign_cmd() which reply with a confirmation ↵Alexander Couzens1-1/+24
message ericsson can handle a reference at the end of a imm assign command which is used in the confirm response. The confirm response is only sent if the trailer is present. Change-Id: I88560291b5a3a3d7a0bac4d3c089b45f1f6b297f
2017-03-23RBS2000 RSL: Support for sending RSL PAGING CMD for GPRSHarald Welte2-2/+7
Change-Id: I66541f9b20e7fd67fbec329283fc3c821c970a56
2017-03-23RBS2000: Add the P-GSL Timer IE to RSL CHAN ACT for PDCHHarald Welte1-0/+7
This seems to be mandatory when an Ericsson RBS2000 uses a SuperChannel as back-haul. Change-Id: I793e7d62df1ca9f9c38d39e22d3868064d446c8d
2017-03-23abis_om2k: protect MO FSMs by NULL checkAlexander Couzens1-1/+17
Also set MO FSMs to NULL after freeing them. Change-Id: I30df0b9ab8bc47ba9756c8388e977deed0e40200
2017-03-23OM2000: Send ALTCRQ for SuperChannel after receiving IS Enable Req AckHarald Welte2-0/+31
When the BTS is configured to use a SuperChannel and it is using a unix domain socket based transport towards the L2TP daemon, then we must instruct the L2TP daemon to instruct the SIU to change the Abis Lower Transport Mode using the ALTCRQ / ALTCRP L2TP signalling. Change-Id: I672bfaa09c42fbeb0c8459f24b2222b952de954b
2017-03-20bsc_/gprs_subscriber: fix: use osmo_strlcpy() to safely copy IMSINeels Hofmeyr1-1/+1
Fixes: coverity scan CID 163918 Change-Id: I4b2760b006a0707928530b4390c6997b79b02981
2017-03-16Don't drop OML links for Get Attributes NACKMax1-10/+10
Previously any OML NACK message will result in BSC dropping OML link to BTS which makes it impossible to use optional OML messages which might be unsupported by BTS. Fix this for 3GPP TS 52.021 §8.11.1 Get Attributes message. Also, log human-readable NACK name to see what exactly causing OML link drop. Change-Id: Ib8af2872c27abb793172ec59bdc145b8d54f83da Related: OS#1614
2017-03-15OM2000: Change the order of MO initializationHarald Welte1-22/+24
So far: CF-IS-CON-TF Now: CF-TF-CON-IS Change-Id: I8efd9bafdcf9504d2e5fc85c44c708fa53f4dff8
2017-03-15gprs: fix T3186 encoding in Sysinfo 13Philipp Maier1-1/+7
The timer T3186, which is described in 3GPP TS 44.060, is using 3 bits of the si13 mac block. This requires special encoding. In the case of T3186, the value is encoded by the formula: bits = t/500-1. Our implementation uses the formula bits=t/500, which is incorrect. Change-Id: Ifd340c536cff2d1c4b1b3677a358ea95438801eb
2017-03-15libbsc: add chreq type for CHREQ_T_PDCH_ONE_PHASE & CHREQ_T_PDCH_TWO_PHASEAlexander Couzens1-2/+14
When using a BSC located PCU the BSC must understand PDCH requests. Change-Id: Ie7f4ed000cf1b40d269873cf0ddf5ff9f5bbc18a
2017-03-13unixsocket: start sabm for UNIXSOCKETAlexander Couzens1-2/+4
openbsc only starts sabm messages for a subset of line drivers. Add unixsocket to those subset. Change-Id: If98c037119142cc33b46ab5c1bf02d4cda81c81e
2017-03-13OM2000: Add FIXME comments for missing resolving of RX/TX MO!Harald Welte1-0/+2
Change-Id: I45708df724c5fc3316eca6bd2ac2c0738b19a45b
2017-03-08add struct bsc_subscr, separating libbsc from gsm_subscriberNeels Hofmeyr6-54/+239
In a future commit, gsm_subscriber will be replaced by vlr_subscr, and it will not make sense to use vlr_subscr in libbsc. Thus we need a dedicated BSC subscriber: struct bsc_subscr. Add rf_policy arg to bsc_grace_paging_request() because the bsc_subscr will no longer have a backpointer to gsm_network (used to be via subscr->group). Create a separate logging filter for the new BSC subscriber. The implementation of adjusting the filter context is added in libbsc to not introduce bsc_subscr_get/_put() dependencies to libcommon. During Paging Response, fetch a bsc_subscr from the mobile identity, like we do for the gsm_subscriber. It looks like a duplication now, but will make sense for the VLR as well as for future MSC split patches. Naming: it was requested to not name the new struct bsc_sub, because 'sub' is too ambiguous. At the same time it would be fine to have 'bsc_sub_' as function prefix. Instead of struct bsc_subscriber and bsc_sub_ prefix, I decided to match both up as struct bsc_subscr and bsc_subscr_ function prefix. It's fast to type, relatively short, unambiguous, and the naming is consistent. Add bsc_subscr unit test. Related: OS#1592, OS#1594 Change-Id: Ia61cc00e8bb186b976939a4fc8f7cf9ce6aa3d8e
2017-03-02subscriber conn: add indicator for originating RANNeels Hofmeyr1-0/+1
Add via_ran to gsm_subscriber_connection to indicate whether a conn is coming in via 2G/GERAN/A-Interface or 3G/UTRAN/Iu-Interface. Prepares for Iu, but also for libvlr to decide between GSM or UMTS Auth. Until actual Iu support is merged to master, this indicator will aid VLR unit testing. At some point we may also add RAN_GERAN_IU; it's not on the agenda yet, but to clearly distinguish the names if we want to add it, explicitly name the ones we have RAN_GERAN_A and RAN_UTRAN_IU. Change-Id: I93b870522f725170e4265a5543f6b680383d7465
2017-02-24cosmetic: rename osmo_msc_data.h to bsc_msc_data.hNeels Hofmeyr4-4/+4
With the OsmoMSC program coming up, the name osmo_msc_data becomes even more confusing than it already is. Clearly indicate it as libbsc's data of a remote MSC by prefixing with bsc_. Also, the Osmocom community has in the meantime agreed to have the osmo_ prefix only in libosmocore, to avoid naming conflicts in case things are moved there. So while renaming anyway, also drop the osmo_ prefix. Change-Id: I13554563ce9289de126ba0d4cf329bafcda35607
2017-02-23logging fixup: shorter names for LOGGING_FILTER_* and LOGGING_CTX_*Neels Hofmeyr2-5/+5
In libosmocore, my patch was merged to master a bit too soon. To accomodate the request for naming that matches the general "LOG" prefix instead of "LOGGING", a fixup was committed to libosmocore. Adjust for that. Original patch: change-id I5c343630020f4b108099696fd96c2111614c8067 The fixup: change-id I424fe3f12ea620338902b2bb8230544bde3f1a93 Change-Id: Ib2ec5e4884aa90f48051ee2f832af557aa525991
2017-02-22logging: use central filter and ctx consts from libosmocoreNeels Hofmeyr3-7/+5
The LCHAN and BTS filter contexts are actually never used, so drop them until someone adds them properly. For now use only LOGGING_{FILTER,CTX}_VLR_SUBSCR. Some of these will change to _BSC_SUBSCR once struct bsc_subscriber is introduced, and later on, struct gsm_subscriber will be replaced by vlr_subscriber so that the names will match. Depends: libosmocore change-id I5c343630020f4b108099696fd96c2111614c8067 Change-Id: Ifa82f6a461ad4c0eeddb8a38fb3833460432d16b
2017-02-19Add support for extended SI2q parametersMax1-31/+71
* add vty command to set E-UTRAN_PRIORITY, THRESH_E-UTRAN_low and E-UTRAN_QRXLEVMIN according to 3GPP TS 44.018 Table 10.5.2.33b.1 * remove old command which does not support those parameters Change-Id: I36dcc79f7b7a02036e74720923d0df1a2a2db504 Fixes: RT#8792
2017-02-09Remove duplicating defineMax1-5/+5
Use GSM_MACBLOCK_LEN consistently throughout abis_rsl.c Change-Id: I96aec02748a0be0100dee2117f124ff32d5ee3f5
2017-02-09Expand chan allocation loggingMax3-7/+13
Log more data related to channel allocation: - channel type - number of paging attempts - timers fired Change-Id: Ib417a9c942c17b902dd80ff555cd9da5f91bff48
2017-02-08vty: remove ignored logging parametersMax1-2/+2
Since ce9fec3e896571835ac5bfd2980d6836f2b29f0d libosmocore ignores parameters to log_vty_command_* functions. Hence parameter of logging_vty_add_cmds() is ignored too. As we depend on much later libosmocore version anyway, we can simplify code somewhat by removing parameters which will be ignored anyway. Change-Id: I62f752fd88f1d8fefa563648f9864c7c31f87991
2017-02-03om2000: add VTY command to delete CON groupsPhilipp Maier1-0/+26
The currently unused function abis_om2000_vty.c:con_group_del() allows deleting OM 2000 connection groups. This commit adds a matching VTY command to make use of it. Change-Id: I39a90b06e19356c536cacd1c923e195dd305ab80
2017-02-02compiler warning: bsc_vty: remove two unused varsNeels Hofmeyr1-1/+0
Added in recent commit 42def7205ba91df4bbb7e3240be0df8c26c2d63e "Implement VTY configuration to control Early Classmark Sending" Change-Id: Iaf640fa6e1f234f594fb8dc06f716d3d3e95eb2a
2017-02-01OM2000: use assoc_so *only* for TS objectsHarald Welte1-4/+4
all other objects always use the MO instance. The existing code likely is due to copy+paste mistakes. Change-Id: Ie0a31cd93993da10f31eecf530a5a05773c11eb1
2017-01-26Implement VTY configuration to control Early Classmark SendingHarald Welte2-0/+26
The SI3 rest octests contain a flag that indicates if early classmark sending is allowed in this cell or not. So far we always set this to one, now it is configurable using the 'early-classmark-sending' command at the VTY node. Change-Id: Ia0b1cc5ab45673f3da70c59ae8917eba343f9862
2017-01-25CTRL: remove boilerplateMax1-71/+6
Use CTRL_CMD_DEFINE_RO(), CTRL_CMD_DEFINE_WO() and CTRL_CMD_DEFINE_WO_NOVRF() where appropriate to get rid of boilerplate code. Change-Id: I5bcea0b4f4b8f535bef2b423f2013b8b4a218b5b
2017-01-23SI2q: add support for multiple UARFCNsMax2-32/+75
Support multiple UARFCNs with the same Scrambler Code. Fixes: RT#7379 Change-Id: If1c32e8b547a28325180faaaddd21f80c37f7337
2017-01-23Prevent segfault in range encodingMax3-37/+54
* Explicitly check when ARFCN array split is impossible and return gracefully instead of using negative index. * Separate range encoding into generic function and use it for all SI-related things. * Propagate the error into that function and to its callers. * Add separate test-case for the segfault previously triggered by this bug. Change-Id: I3e049ab2d7c1c4d6c791b148f37e10636a8e43e0 Related: RT#7379
2017-01-23Improve OML failure reportMax1-6/+14
* clearly separate report parts * use textual representation for failure cause if possible Change-Id: I7a98a77011463021d0edd6ecfab1680e211f7e16 Related: OS#1615
2017-01-23cosmetic: use osmo_strlcpy() everywhereNeels Hofmeyr2-6/+4
Shorten some code and make obvious to the reader that the string copy is done in a safe way. Change-Id: I900726cf06d34128db22a3d3d911ee0d1423b1bd
2017-01-06Cosmetic fixes around SI generationMax3-7/+9
* add missing spaces after comma and minus * prevent useless recursion calls * mark static functions as such * name and explicitly use enum for ARFCN range Change-Id: If5b717445c8b24668bad0e78fd5bb51f66c4d18e
2016-12-22bsc_vty: Fix missing break statements in switch()Harald Welte1-0/+2
Change-Id: Ifd48e8d56c845603d320748144b4d7c3c24022a0 Fixes: Coverity CID 135188 Fixes: Coverity CID 135190
2016-12-20Fix some typos in stdout outputRuben Undheim2-3/+3
Change-Id: I0dbb438f3bfbaf9744717cbeec31ceefdd679ee9 Related: OS#1694
2016-12-09channel_mode_from_lchan(): Add missing break statementHarald Welte1-0/+1
GSM48_CMODE_DATA_6k0 was not properly terminated and thus resulted in a bug. Change-Id: I4000f06d0b49c4afb0446beddd150521c4ba3cf0 Fixes: Coverity CID 148207
2016-12-09cfg_bts_si2quater_neigh_add(): Don't call strerror() on negative valueHarald Welte1-1/+1
Change-Id: I1300eede3f22df812b7e83902327ce4cde21aa35 Fixes: Coverity CID 135185
2016-12-09Fix TCH/F_PDCH: no need to check ts subslots for PDCHNeels Hofmeyr1-0/+7
For TCH/F_PDCH in PDCH mode, directly return the lchan to use, in order to switch it to TCH/F. To check the pchan type in chan_alloc.c, make ts_pchan() public in gsm_data_shared.h. Commit c3f72f63afde926dfc46827d6880055597515fb6 broke TCH/F_PDCH, as a fallout of setting the GSM_PCHAN_PDCH subslots number to 0. This is sane and correct, but the chan_alloc code failed to see a ts as available if it has no subslots. Explanation: _lc_find_trx() checks each timeslot. For normal, static TCH timeslots we determine the number of logical subslots contained and check whether one of them is free. For dynamic TS, we can do the same when in TCH mode, but when in PDCH mode, we already know that it is available for immediate switchover for voice and hence can return it right away. TCH/F_TCH/H_PDCH already has a special check for that. TCH/F_PDCH doesn't, but this worked for TCH/F_PDCH as long as ts_subslots() returned 1 for PDCH: the for-loop at the bottom of _lc_find_trx() checked one subslot, which succeeded on an lchan in PDCH mode, since PDCH lchans are always marked type == NONE and state == NONE. Now we more accurately acknowledge that a PDCH timeslot has zero subslots and that a dynamic timeslot in PDCH mode can always be switched to voice immediately, without checking lchan type or state. So, above mentioned commit set PDCH to zero subslots, and the for-loop to check the (zero) subslots never ran and hence never returned the lchan. This fix adds a special condition for TCH/F_PDCH in PDCH mode, same as TCH/F_TCH/H_PDCH. (Todo: ts_pchan() can probably be used in other places as well to remove some code dup. Leaving that for another patch.) Fixes: OS#1868 Change-Id: I5d555d018a5bcb8d948e54059d32ec4c9b3070d0
2016-12-09cosmetic: chan_alloc: use switch instead of if-cascadeNeels Hofmeyr1-9/+12
Preparing cosmetically for a subsequent commit which will add another pchan kind to be checked, rather use a "switch (pchan) {}". Also reverse one if() branch to "early-exit" style. Change-Id: Ie5eb0fa859c4f225616095dc56d52ce0f2dc8bdc
2016-12-09Replace duplicated code with macro callMax1-10/+10
Use already defined GSM48_LEN2PLEN for computing SI length. Change-Id: I2020417119c844b886f89e34dbfd75e716743dc4
2016-12-09lchan release in error state: SACCH deact only for SACCH pchansNeels Hofmeyr1-1/+15
This is useful particularly in case where we deactivate PDCHs which don't have a SACCH associated. The existin code would always attempt to deactivate a SACCH even in those cases, leading to the BTS responsding with related error messages. Change-Id: Iaf46782329b38ba8f3d438e6c75c2d467b852734
2016-12-02abis_om2k: fix typo that declared non-existent struct gsm_bts_trx_sNeels Hofmeyr1-1/+1
The typo was recently committed in 80ccb952676cb4a068410991c5d53d19f228f695, "OM2000: Fix missing dynamic TCH initialization" Change-Id: I8e3eec8cf63494962fa31d85a0ec9db9a9e5df46
2016-12-02split subscr_con_allocate()/_free() in bsc_ and msc_Neels Hofmeyr1-6/+5
Rename current subscr_con_allocate() and subscr_con_free to bsc_*, and add two separate msc_subscr_con_allocate() and _free(). The msc_subscr_con_free() ignores all lchan members. In libbsc use bsc_*, in libmsc use msc_*. Change-Id: I3cf7c7cafdf4672ec7b26058bba8a77159855257 Future: there will be distinct subscr conns for libbsc and libmsc.
2016-12-02move to libcommon-cs: net timezone VTY configNeels Hofmeyr1-64/+0
Leave the timezone VTY output in libbsc's config_write_net(), until the BSC/MSC separation of struct gsm_network is completed. Change-Id: I9712b2e07b4f1ab8d2e4ad40a8d771e98ed25b20
2016-12-02Move timezone settings up to network levelNeels Hofmeyr1-32/+33
Time zone used to be configurable per-BTS. In the upcoming MSC-split, no BTS structures will be available on the MSC level. To simplify, drop the ability to manage several time zones in a core network and place the time zone config on the network VTY level, i.e. in gsm_network. If we are going to re-add fine grained time zone settings, it should probably be tied to the LAC. Adjust time zone VTY config code (to be moved to libcommon-cs in subsequent commit). Adjust time zone Ctrl Interface code. Change-Id: I69848887d92990f3d6f969be80f6ef91f6bdbbe8