AgeCommit message (Collapse)AuthorFilesLines
2018-04-15osmo-bsc.vty WIPneels/miscNeels Hofmeyr1-0/+585
Change-Id: I0812d1acedd8b0331f3a31b3cfd71df1038d686a
2018-04-15NOT FOR MERGE tempoarily disable ctrl testsNeels Hofmeyr1-209/+3
Change-Id: I72ed07220ff3cd05e9d2c6972e0718e6c20a1d1a
2018-04-15associate conn with bsc subscriber where possible (TODO)Neels Hofmeyr6-11/+30
Various logging in the code (e.g. handover) attempts to log the subscriber information from conn->bsub, but so far, the only time we set conn->bsub is during paging. We do though get IMSI and/or TMSI information from Layer 3 Complete messaging, not only from the Paging Request, which is already used for IMSI filtering. Also extract TMSI and create a conn->bsub subscriber. <-- TODO Make sure conn->bsub also gets cleaned up by bsc_subscr_put() when the conn is freed. During gscon_cleanup, keep the conn->bsub as long as possible, to still allow logging the subscriber as context during teardown of other components. Change-Id: Icc20c141ec339385181949b93548a73121bb7615
2018-04-15try to record subsrc on l3-complNeels Hofmeyr1-1/+12
Change-Id: I3b696a0c0932e3abcb682ba231db65755d8c27a6
2018-04-15bsc_subscr: explicitly log ref count on allocNeels Hofmeyr1-1/+1
Change-Id: I07e8d0907551ada31bdc64643c929f9143fc0584
2018-04-14inform A-RESET FSM about MSC CR timeoutsPhilipp Maier1-2/+9
The SUBSCR_CONN (GSCON) fsm starts a timer (993210, 20sec.) when the CR to the MSC is made. When the timer reaches its timeout, then the SUBSC_CONN FSM terminates. Such a timeout event is also an indicator for a bad SCCP connection so we should call a_reset_conn_fail() to inform the A-RESET FSM about the event in order to cause a BSSMAP reset when too many timeouts occurr consecutively - Call a_reset_conn_fail() when 993210 expires Change-Id: I836a552f2ad37c160081246579f842d104d0dd35 Related: OS#3102
2018-04-13fix handling of state changes in acc rampingStefan Sperling3-36/+112
Take both the operative and administrative states into account when deciding whether to start ACC ramping, and examine old/new state values to avoid triggering ramping for a no-op state change. This requires a fix to gsm_trx_lock_rf(): This function overwrote the old administrative state of a trx before enqueuing a state change request towards the BTS. The BTS will confirm this request with an ACK, at which time a signal is generated which the ACC ramp code listens to. We must not overwrite the old state value until the signal has been handled, otherwise the signal handler cannot tell what the old state was. Tested with a virtphy setup, nanobts, and osmo-bts. Change-Id: Ib3291439655598fb5ddc891a3e4cc35b0bad250f Related: OS#2591
2018-04-12only trigger acc ramping if trx 0 is usable and unlockedStefan Sperling1-4/+9
Starting an ACC ramping process while TRX 0 is unusable or locked is pointless. For instance, after loading a config with 'rf_locked 1' for trx 0, the ramping process was started as soon as the BTS established RSL, even though the air interface was still down. ACC ramping should instead be triggered once TRX 0 is unlocked. Change-Id: I054829a936f0aa1e3fa34fad6466a1cd6150e307 Related: OS#2591
2018-04-12trigger acc ramping on state-changed-event reportsStefan Sperling1-2/+10
Trigger ACC ramping not only when an Administrative State Change ACK is received from a BTS, but also when an administrative state change is reported for TRX 0 in a State Changed Event Report. This should allow ACC ramping to work with any BTS which reports an administrative state change to 'unlock' using either of these OML messages. Tested with a sysmobts and a nanobts. The sysmobts only reports TRX locked/unlock changes in Administrative State Change ACKs, not via State Changed Event Reports. The nanobts is known to send both of these OML messages in quick succession, so do not re-trigger ramping if it's already in progress. Change-Id: I097a113a3a63de02bcb8277020beb59cf485b176 Related: OS#2591
2018-04-11rename helper functions in the acc ramp code to avoid confusionStefan Sperling1-13/+13
The word 'enabled' was used in two contexts: Whether ACC ramp is enabled as a feature, and whether a particular access control class is permantly allowed/disallowed via VTY configuration. Rename some helper functions to avoid the use of the word 'enabled' in the latter context. Change-Id: Ia67e84270cd50f4c55b8cf616ca38b00482f765c Related: OS#2591
2018-04-11trigger acc ramping based on trx rf-locked stateStefan Sperling2-1/+49
Make ACC ramping listen to network management signals and trigger or abort ACC ramping based on the RF locked state of TRX 0. This works as expected with a virtphy setup when RF lock state is changed via VTY. However, this change still needs to be tested with a nanobts. It's also not quite clear yet whether operational state changes, as opposed to administrative ones, should be taken into account as well. Change-Id: I4124f1da3dadec003de45c1da8435506ee8f0a34 Depends: Ia25bff85d9e5c277da76bffa11d31972e9fdc323
2018-04-11ensure that acc_ramp_init() is only called onceStefan Sperling4-29/+43
There are plans to register signal handlers in acc_ramp_init(). Once we do that, the acc_ramp_init() function should only be called once to avoid duplicate signal handlers on the handler list. However, the acc_ramp_init() function currently serves a dual-purpose: 1) Initialize the acc_ramp structure for a bts 2) Enable or disable ACC ramping Add new functions to support use case 2, and call acc_ramp_init() just once while reading the configuration file. The VTY commands which enable/disable ACC ramping use the new APIs instead. Also, rename acc_ramp_start() to acc_ramp_trigger() and tweak its semantics so that it can always be called regardless of what the current configuration settings are. This prepares us for triggering ACC ramping upon events other than "RSL link-up". Change-Id: Ia25bff85d9e5c277da76bffa11d31972e9fdc323 Related: OS2591
2018-04-11bsc_nat: Drop redundant ccon ptr in bsc_cmd_listPau Espin Pedrol3-9/+5
It can be obtained from cmd field, so no need to store it in pending. This way we simplify the ad-hoc struct bsc_cmd_list. Change-Id: I6de64fc128ad623ca30b9e6cebebaff8de18f95d
2018-04-11bsc_nat: forward_to_bsc: Fix memleak on send failurePau Espin Pedrol1-1/+2
Change-Id: I56235eb05e4beed1bf9151319b64d67de4718e36
2018-04-11bsc_nat: forward_to_bsc: remove one level of indentationPau Espin Pedrol1-45/+46
Change-Id: I12d86a45a6b2cdc3af7a7b6c28f8f337fa95c903
2018-04-11bsc_nat: ctrl: fix memleak on reply receivalPau Espin Pedrol1-4/+3
Change-Id: I163d4d12d8656628dc88ff3e59a4c3e53b760a0c
2018-04-11libbsc: set_net_mcc_mnc_apply: Fix memleak on parsing incorrect mcc mncPau Espin Pedrol1-0/+2
Change-Id: I43513e108dfba24efb091d56b3fdfdb0cd0af727
2018-04-10only log actual access control class ramping changesStefan Sperling1-2/+4
Silence log messages about no-op changes to access granted to access control classes. For example, these always occur while configuration files are being loaded. Change-Id: I37580f4058f6e3a21d338234b1e22ea46f9538c6 Related: OS#2591
2018-04-09fix initialization of acc rampingStefan Sperling1-10/+4
Remove a redundant call to acc_ramp_init() during bootstrap_bts(). ACC ramping state is already initialized during VTY config parsing, and bootstrap_bts() accidentally disabled ACC ramping again even if it was enabled in the configuration. This bug was introduced in last-minute refactoring during review of https://gerrit.osmocom.org/#/c/6324/ when the acc_ramping_enabled flag was moved from struct gsm_bts to the acc_ramp structure itself. Also remove an acc_ramp_init() call in bootstrap_rsl(). It is no longer needed as it serves no purpose other than initializing the bitmasks of barred ACCs. To ensure that ACC ramping configuration provided to the BTS via system information stays correct, we move the call to acc_ramp_start(), which has the same effect on barred ACCs, further up. Change-Id: Ib7d99c9d3d5d424e21bb7710f719c42f9aef3e95 Fixes: 6442e4327b1100ecfed7a242e397ac37b7529bea Related: OS#2591
2018-04-09fix a format string error in bts_update_t3122_chan_load()Stefan Sperling1-1/+2
In a debug log message, an unsigned 64-bit value was printed with %lu but it should be printed with PRIu64 from inttypes.h instead. Change-Id: I09bb519e68886e650647b1369fd49d1964e76c7e
2018-04-07"show timeslot": Show dynamic PDCH state also for Osmocom-style dyn PDCHHarald Welte1-1/+4
So far we only used to show the current mode of the timeslot for IPA style dynamic PDCH, but not for osmocom-style. Old output for osmocom-style dyn PDCH: BTS 0, TRX 0, Timeslot 6, phys cfg TCH/F_TCH/H_PDCH, TSC 7 NM State: Oper 'Enabled', Admin 'Unlocked', Avail 'OK' new output with this patch: BTS 0, TRX 0, Timeslot 6, phys cfg TCH/F_TCH/H_PDCH, TSC 7 (PDCH mode) NM State: Oper 'Enabled', Admin 'Unlocked', Avail 'OK' where "PDCH mode" changes from "NONE mode" to "TCH/F mode" to "TCH/H mode" depending on the current state. Change-Id: If5044d6bec76b869bd6a7c0260a4c77e229dcd0d Related: OS#3099
2018-04-07Start Dynamic PDCH Initialization after RSL is upHarald Welte3-13/+3
We used to start the dynamic PDCH initialization right after the respective OML initialization of the related timeslot. However, this is problematic as the RSL link may very well not even be up yet at that point. So let's do this at RSL link esetablishment time, not from OML. Change-Id: I8ac30ca075a1db4b624dc38a423d844d705fda7e Closes: OS#1841
2018-04-07Generate the S_L_INP_TEI_UP signal earlier.Stefan Sperling1-13/+12
The S_L_INP_TEI_UP signal was generated when the first message from a BTS arrives on the OML/RSL link, rather than when the OML/RSL link comes up. Instead, generate this signal when the link is brought up, so we intitialize state regardless of how a particular BTS behaves. Tested with osmo-bts-virtual and virtphy/mobile programs, and with a sysmobts. This was already committed in faf0982ae20001519cf20c5d6345dad490a135f2 but subsequently reverted in 383a059a123b1e0e5aab76423db47846e329f095 because it introduced a regression. The underlying problem causing this regression has now been addressed by https://gerrit.osmocom.org/#/c/7462/ (libosmo-abis commit 49917c129b1456585258b0ebe89a513ecef823a8). Change-Id: I78a152671a00b95c997830f7161fca92bb898fa3 Depends: I52f7c903212b38e9c87e4d45e52b231b6f1ae9f5 Related: OS#2719
2018-04-05vty: re-add 'timeout-ping' and 'timeout-pong' as dummy commandsNeels Hofmeyr1-0/+21
Legacy VTY commands were removed in commit c74a5616bf1c77ac40ddd92f4927dca7a1b45bc8 == I5cf3fec31cc774c902f3cfe6d16fb85ef301694a Removing the dead VTY commands currently breaks our ttcn3-bts-test and is likely to create problems with users of osmo-bsc, when their config osmo-bsc stops working with a mere upgrade. Instead, add deprecated dummy commands that don't do anything, to not break existing configs. Catch all of these legacy commands: timeout-ping <number> timeout-pong <number> timeout-ping advanced no timeout-ping no timeout-ping advanced by defining timeout-ping ARG timeout-pong ARG no timeout-ping [ARG] I verified manually that starting osmo-bsc with all the abovementioned VTY commands in the config file works (and produces the deprecation messages). Change-Id: I95a5bad1ade66ded849cfc20bebb7fc522aecc38
2018-04-02doc/examples: use NECI = 1 by defaultVadim Yanitskiy2-2/+2
Every setup should run with NECI = 1. NECI = 0 is an ancient legacy setting. Change-Id: I564cac73e610d71df5ab244e04d08dd2c5ff2324
2018-04-02cosmetic: Add fixme note for OS#3112Philipp Maier1-0/+5
Change-Id: I0c3ffb567aff08014f8fb96928077afb8c2f229c
2018-04-02cosmetic: remove dead codePhilipp Maier6-634/+0
There is a lot of dead code in osmo_bsc_msc.c that used to handle the IPA multiplexed SSCP lite A interface. - remove portions of the dead code - remove IPA Ping related VTY commands Change-Id: I5cf3fec31cc774c902f3cfe6d16fb85ef301694a
2018-03-28ctx cleanup: use non-NULL talloc ctx for osmo_init_logging2()Neels Hofmeyr11-19/+41
Fix various sanitizer complaints about memory leaks using a sanitizer build with gcc (Debian 7.3.0-12) 7.3.0. Also fix deprecation warnings on osmo_init_logging(). Depends: I216837780e9405fdaec8059c63d10699c695b360 (libosmocore) Change-Id: I970c6f8a0e36a8b63e42349dbc92baff649e5cef
2018-03-28cosmetic: gsm0408_test: drop unused arg from bts_init()Neels Hofmeyr1-7/+8
Change-Id: I0c59d7b3240cf7a8ae1677d237dca9dd364188cb
2018-03-28move init from gsm_bts_alloc_register() to gsm_bts_alloc(); fix gsm0408_testNeels Hofmeyr2-36/+36
gsm_bts_alloc() ought to do all static initialization, so that e.g. unit tests can use an initialized bts struct that is fully usable, just not registered at the gsm_network. For example, two INIT_LLIST_HEAD() and various system information data pointers (pointing to proper places within the same bts struct) should definitely never be omitted. This fixes the remaining errors of gsm0408_test's SI tests, as revealed by a sanitizer build using gcc (Debian 7.3.0-12) 7.3.0. Fixes: ../../../../src/osmo-bsc/src/libbsc/system_information.c:613:3: runtime error: null pointer passed as argument 1, which is declared to never be null Initializing the bts->si_common.rach_control results in different expected bytes for SI2. The initialized values are bts->si_common.rach_control.re = 1; /* no re-establishment */ bts->si_common.rach_control.tx_integer = 9; /* 12 slots spread - 217/115 slots delay */ bts->si_common.rach_control.max_trans = 3; /* 7 retransmissions */ bts->si_common.rach_control.t2 = 4; /* no emergency calls */ Causing a change to e5 04. 04 is t2 = 4, and the remaining values are verified by: uint8_t re :1, cell_bar :1, tx_integer :4, max_trans :2; >>> hex(1 + (9 << 2) + (3 << 6)) '0xe5' Change-Id: I13ef24bbe0f1fbe49465e67a0b67d6fd69fff3b1
2018-03-28fix gsm0408_test: properly free bts struct after each testNeels Hofmeyr2-10/+23
Add missing deletion of osmo_stat_item_group_free(bts->bts_statg). Add missing bts free after test_si_ba_ind(). Log deallocation, update expected test output. This fixes some of the errors of gsm0408_test's SI tests, as revealed by a sanitizer build using gcc (Debian 7.3.0-12) 7.3.0. Fixes: ================================================================= ==19273==ERROR: AddressSanitizer: heap-use-after-free on address 0x60d0000004b8 at pc 0x7f1561a94621 bp 0x7ffe7a7a64a0 sp 0x7ffe7a7a6498 WRITE of size 8 at 0x60d0000004b8 thread T0 #0 0x7f1561a94620 in __llist_add ../../../src/libosmocore/include/osmocom/core/linuxlist.h:75 #1 0x7f1561a94620 in llist_add ../../../src/libosmocore/include/osmocom/core/linuxlist.h:90 #2 0x7f1561a94620 in osmo_stat_item_group_alloc ../../../src/libosmocore/src/stat_item.c:141 #3 0x5574f6a19935 in gsm_bts_alloc ../../../../src/osmo-bsc/src/libbsc/gsm_data.c:728 #4 0x5574f6a12920 in bts_init ../../../../src/osmo-bsc/tests/gsm0408/gsm0408_test.c:123 #5 0x5574f6a0ddb3 in test_si2q_e ../../../../src/osmo-bsc/tests/gsm0408/gsm0408_test.c:192 #6 0x5574f6a0ddb3 in main ../../../../src/osmo-bsc/tests/gsm0408/gsm0408_test.c:824 #7 0x7f156061aa86 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21a86) #8 0x5574f6a10339 in _start (/n/s/dev/make/osmo-bsc/tests/gsm0408/gsm0408_test+0xfc339) Change-Id: I1ebbd8cc0622ce1a061e933813829b1f770072dc
2018-03-28range_enc_arfcns: avoid runtime error on zero sizeNeels Hofmeyr1-18/+24
If size <= 1, avoid allocating arfcns_left[size / 2], which results in a zero size and causes, with gcc 7.3.0 sanitizer, runtime errors: ../../../../src/osmo-bsc/src/libbsc/arfcn_range_encode.c:95:6: runtime error: variable length array bound evaluates to non-positive value 0 ../../../../src/osmo-bsc/src/libbsc/arfcn_range_encode.c:96:6: runtime error: variable length array bound evaluates to non-positive value 0 This fixes some of the errors of gsm0408_test, as revealed by a sanitizer build using gcc (Debian 7.3.0-12) 7.3.0. Change-Id: Idab2a194fb9d7c41ed3367f935080eaae4ce367f
2018-03-27change return type of page_subscriber() to voidStefan Sperling2-21/+12
We deliberately ignore errors from page_subscriber() so there is no point in having a non-void return value. Provide more context in the error message logged if paging failed. Add a comment in an implementation override of base_grace_paging_request() in the test suite to make return value semantics more clear. Change-Id: Ie18c2ba53d2055d3eaff8c9ed939eb844af6dd2e Related: I48f5efbcddd98e15256edfca06ba0ae6acb5bab1
2018-03-27gscon: fix illegal state transitionsPhilipp Maier1-2/+1
The GSCON fsm has two illegal state transions. The transions themselves are logically legal but theur respective entries in out_state_mask are missing. - remove unnecessary transition from ST_ACTIVE to ST_ACTIVE - Add ST_CLEARING to the out_state_mask of ST_WAIT_HO_COMPL Change-Id: I165c3e8b4b268b50e5f4a482b0fe890e940637b3 Closes: OS#3109
2018-03-26bssap: Log non handled paging requestsPau Espin Pedrol2-1/+3
Return code in bssap_test is changed to ack it was sent and prevent the log from being printed. Change-Id: Ie8075d076cc34570fefce3beb577567707a29d4e
2018-03-26paging: paging_request_bts: Fix wrong return valuePau Espin Pedrol1-1/+1
Change-Id: I48f5efbcddd98e15256edfca06ba0ae6acb5bab1
2018-03-26bsc_vty: Fix uninitialized var false positive on gcc 7.3.1Pau Espin Pedrol1-3/+3
Change-Id: If2b315d76081f7ef5f2faf07c502f20196ba6a09
2018-03-26libbsc: nokia_site: Fix uninitialized return valPau Espin Pedrol1-1/+2
Fixes following compilation warning: bts_nokia_site.c:1248:9: error: ‘ret’ may be used uninitialized in this function [-Werror=maybe-uninitialized] return ret; This could happen if parameter len is passed with value 0. If we reach the end of the function, it means everything went fine, so we can return 0 instead of using ret, which is only used to store error code before returning. Change-Id: Ic60c8c632a6ddadb8f197d56cc68c2dbfc121d05
2018-03-23contrib: osmo-bsc.service: Fix osmo-mgw.service dependencyPau Espin Pedrol1-1/+1
Since a while ago, osmo-bsc works only with osmo-mgw. Change-Id: If95d20db4d379b9632342f7e552237066124ac40
2018-03-23contrib: osmo-bsc.service: Update descriptionPau Espin Pedrol1-1/+1
Change-Id: I99d02bd8bd5842580518b34865dd0cbd0433bf27
2018-03-23cosmetic: remove dead code: osmo_bsc_reset.cPhilipp Maier1-190/+0
Change-Id: I22f92541982489a0948bd1dedc008439981fb33e Related: OS#3102
2018-03-22bs11: make bs11_config build againPhilipp Maier2-0/+17
The BS-11 related tool bs11_config is currently not built due to dependancy issues added by GSCON FSM. - Re-Add bs11_config to makefile.am - Add dependencies and stubs Change-Id: I77ee8d2d36813ad98542317d003a9057c4f84e75 Related: OS#2823
2018-03-22ipaccess: make ipaccess-config build againPhilipp Maier2-0/+16
The nanobts related tool ipaccess-config is currently not built due to dependancy issues added by GSCON FSM. - Re-Add ipacces-config to makefile.am - Add dependencies and stubs Change-Id: I1d0a45bed61b45352ed305b6b1fd8d9b3d3cecae Related: OS#2823
2018-03-22gsm0408_test: drop LAI encoding testNeels Hofmeyr2-28/+0
The LAI encoding test in gsm0408_test.c uses deprecated API, and a more thorough test for LAI encoding has been added in libosmocore/test/gsm0408/. Change-Id: I8a55d717ab15ba23943a2639accaadc33a4f731a
2018-03-22vty: drop unused vty definitions (*_NODE, msc_*)Neels Hofmeyr1-14/+0
Change-Id: I2a6516756bada8cc9375422e4f93891ab8d65ca5
2018-03-22bssmap: State correct speech codec in ASSIGNMENT COMPLETEHarald Welte5-110/+91
Correctly compute the TS 48.008 "speech mode" (codec) for AMR on TCH/F. There are way too many different ways how to express a given voice codec. There are two different schemes in TS 48.008 alone, plus one on TS 48.058 and one in 04.08 / 44.018. Let's avoid unneeded conversion (that we might get wrong) and avoid storing information in a sub-struct of the lchan if we can simply derive it from the lchan at the time we need it. Also, move BSSAP related encoding/conversion functions closer to the user (osmo_bsc_bssap), rather than in libbsc. Without this patch, TCH/F with AMR was erroneously reported as TCH/H with AMR in the BSSMAP ASSIGNMENT COMPLETE. After this patch, it's reported correctly. Change-Id: I6feebfae77fdc93a7ce333a25dd9b9267c5a4a2e Related: OS#3094 Related: OS#3095 Related: OS#3096
2018-03-22GSCON FSM: Fix argument order when calling gsm0808_assign_req()Harald Welte1-2/+3
The first argument is the channel mode (codec), the second one is a flag whether or not it's a full-rate channel. Before this patch the two arguments are reversed, resulting in * all assignments being TCH/F in general * all assignments have FR1 as codec, as the full_Rate=1 is interpreted as FR1 Change-Id: I80f2a016a7646252bce8d86ed0bab236f3adbfca Related: OS#3094
2018-03-22BSSAP: document match_codec_pref() more thoroughlyHarald Welte1-2/+8
Change-Id: If08c2c2db674d6ddc43339744a78b1632d075d4a
2018-03-22BSSAP: Fix test_codec_pref() implementation for AMRHarald Welte1-1/+1
In AMR-type cahnels, the gsm0808_speech_codec doesn't only include the codec (like EFR/FR/AMR) but also the specific codec configuration, i.e. the sub-set of AMR modes. Hence, we cannot convert from a channel type (just the codec) to the full gsm0808_speech_codec and then memcmp() that with the codec config received from the MSC. Rather, we must only compare the *type*. Change-Id: I0a3f362667a689135d5b62d151d491490dfd2976 Related: OS#3094
2018-03-22cosmetic: remove old, already commented-out codePhilipp Maier1-2/+0
Change-Id: Ief994b840e3fe694b37330c46c3899746d810a39 Related: OS#2823