For unconnected BTS, the channel load would report a "bogus channel load
sample" every second (on RLL debug). Instead, skip unusable BTS.
This follows up on commit 6cee893a0f2c4e53155a2631aff12a5f615b973d /
I57e38f6d6ba3b23cc6e1f9520b90261dbb1f1cec
'Make "waiting indicator" of IMMEDIATE ASSIGN REJECT dynamic.'
Port of omo-bsc commit f802f7fd7aec1d91084231a80bbce6f2ed7bd299
Change-Id: Icd50d101244641a6ffdde17e60d7a89719225c65
The IMMEDIATE ASSIGN REJECT message contains a wait indicator which
tells an MS requesting a channel to wait for a specified amount of
time before trying to request a channel again, i.e. the wait indicator
controls the T3122 timeout value in the MS.
Previously, the wait indicator was fixed to 10 seconds.
This is not sufficient if there are a lot of MS requesting channels
because the MS will retry too soon. Instead of using a fixed value,
maintain a dynamic wait indicator value based on average channel load.
The load (used vs. available channels on a BTS) is sampled once per
second, and once 8 samples have been collected we update a BTS-specific
T3122 wait indicator based on the measured load.
While the wait indicator could go up to 255 seconds, this initial
implementation keeps it in the range from 10 to 128 seconds.
Further experimentation and testing will show whether higher wait
indicator values are desirable, if the sampling rate needs to change,
or if the function mapping the load measurement to a wait indicator
value should change (currently we map the load average linearly into
the range [10, 128] inclusive).
Port of osmo-bsc commit 6cee893a0f2c4e53155a2631aff12a5f615b973d
Change-Id: Id9df0e790ece8108212b2ddf718cf2953f5b9bd4
Related: OS#2592
Fixes a regression in the code generating SI5* and SI6 on SACCH,
where the L2 pseudo-length is not part of the 'struct' definition
we have in gsm_04_08.h and hence has to be encoded manually into
the first byte of the SI buffer.
We were doing this correctly until April 2017, when the following
patch was merged:
> commit 6f0e50c833
> Author: Max <msuraev@sysmocom.de>
> Date: Wed Apr 12 15:30:54 2017 +0200
>
> Prepare for extended SI2quater support
This patch cacidentially overwrote the l2_plen that was just enoded,
as the 'struct' was no longer pointing to 'output' (si_buf+1), but
now directly to the start of the si_buf.
NOTE: The Wireshark RSL dissector (and more recently also LAPDm)
contain a similar bug, so the SACCH will not be decoded correctly
after applying this patch. Nevertheless, it's correct.
back-port of OsmoBSC Change-Id: Ie8c907b1317566670aeb68f933ceefd552c17565
Closes: #3059
Related: #2963
Change-Id: Iaf5feefc1bb3194dd491955fee418795c61787f7
After recent libosmocore commit "implement support for 3-digit MNC with leading
zeros" c4fce1425e19d604c199c895e227dc2519110456
Id2240f7f518494c9df6c8bda52c0d5092f90f221, struct gprs_ra_id has a new member,
namely mnc_3_digits. In gprs_ra_id_by_bts(), this new member is now not
initialized and may end up having an arbitrary value, which then may amount to
mnc_3_digits == true. Hence the resulting BCD representation of the MCC-MNC may
inadvertently and randomly indicate a leading zero on the MNC.
Use a struct assignment so that all members are guaranteed to be set, and so
that mnc_3_digits will be zero in all cases.
Since above libosmocore commit, nanobts_omlattr_test fails "randomly", fixed by
this patch.
Change-Id: I5ae899f3c236b3b4feb5c8cf762e2f2d964dbc65
There is no any significant reason to define static function
'send_own_number' after the code that calls it.
Change-Id: I8d804398cfa460eaa5a5f84f0ed90909488d0bdd
Currently, we see the following failure:
make[3]: Entering directory '/build/openbsc/tests/mgcp'
CC mgcp_transcoding_test.o
CC mgcp_test.o
In file included from ../../include/openbsc/gsm_data.h:176:0,
from mgcp_transcoding_test.c:14:
../../include/openbsc/gsm_data_shared.h:21:35: fatal error: osmocom/abis/e1_input.h: No such file or directory
#include <osmocom/abis/e1_input.h>
^
compilation terminated.
as gsm_data.h includes gsm_data_shared.h, which includes the e1_input.h
from libosmo-abis, we need to list libosmo-abis in the CFLAGS.
Change-Id: I27c25adfc6ee2c6f07315f3bc76fa7a70202ac4d
This change adds support for both comp128v2 and comp128v3 GSM
A3/A8 algorithms. Since they already implemented in libosmocore,
the corresponding it's API is used.
Change-Id: Ic761be0220397d100c9e6345d4d01af4889dc7c1
Recent change lin libosmocore disallow registering rate_ctr with the
same name and indexing multiple times. To accommodate to this:
* allocate network struct once and use it for all tests
* free bts struct after each test
This is a backport of 4ab7268a902af24fcd4870148b709fed4fbf900c from
OsmoBSC.
Change-Id: Ic5fab86bca617cabcd59484066975e17ab2320b6
Related: OS#2757
In state prior to this patch, "3G Early Classmark Sending Restriction"
bit in SI3 rest octets was always set to H, which is a sane default as
the policy to send the information is then controlled by "Early
Classmark Sending Control" bit in the same octet.
However, it seems Quortus SoftCore can have some issues decoding the
option, so let's add a vty cmd to be able to disable it for those
having any issues.
Related: SYS#4021
Change-Id: Ic1afe071038a3bb5871d7ff40f665c8644f801ec
In osmo-bsc-sccplite we so far didn't implement the inbound RESET
procedure. We instead ignored any RESET message from the MSC. This
commit adds support for RESET: We will destrpy any SCCP connections
and acknowledge the RESET to the MSC.
As osmo-msc is requiring the BSC to handle an inbound RESET procedure,
this commit allows osmo-msc to properly initialize the A interface
towards osmo-bsc-sccplite via a translating/routing osmo-stp. While
we don't anticipate any new deployments of osmo-bsc-sccplite, making
it interoperate with osmo-msc enables us to do more testing of
osmo-bsc-sccplite.
Change-Id: Iceb8278deb36d6103662a704f489ba0d685e04d3
When we receive unimplemented/unhandled message types, we shouldn't
simply silently discard them, but print a log message for the
benefit of the user.
Change-Id: I8ecb1d2134f9c6a96f29e145fa0430880e971168
vty_install_default() and install_default() will soon be deprecated.
Depends: I5021c64a787b63314e0f2f1cba0b8fc7bff4f09b
Change-Id: I4951982fc78ae167d8e16a672d7af44d703721a9
vty_install_default() and install_default() will soon be deprecated.
Depends: I5021c64a787b63314e0f2f1cba0b8fc7bff4f09b
Change-Id: I4951982fc78ae167d8e16a672d7af44d703721a9
This marks the first tagged source code revision after the repository
split and subsequent removal of GPRS related code.
Change-Id: I5d19269983c9281bf36a7279151891902eff0013
See osmo-ci change I2409b2928b4d7ebbd6c005097d4ad7337307dd93 for rationale.
Depends: I2409b2928b4d7ebbd6c005097d4ad7337307dd93
Change-Id: Ibafac7c8a48f46237835e91c80e72543c6841d08
This is to avoid naming conflicts with the new osmo-bsc, which resides
in its own git repository (osmo-bsc.git) and which uses libosmo-sigtran
and implements (primarily) 3GPP AoIP.
Change-Id: If10d1599b62d010726336134091a4e855c380d93
The GPRS related programs osmo-sgsn, osmo-gtphub and osmo-gbproxy
have been split off into the separate osmo-sgsn repository, which
can be found at
git://git.osmocom.org/osmo-sgsn.git
http://git.osmocom.org/osmo-sgsn/
This is technically unrelated but conceptually part of the larger
NITB-split activities.
I did a brief log of all changes in src/gprs and couldn't find any
commits that we might have applied here but which are missing from
osmo-sgsn.git.
Change-Id: If60e28b23f5cfb2c4eb354951363a2bb63f3e0de
The library code for rate counter initialization, which is called
from the descendants of bsc_network_alloc() might already want to
log something (particularly after Change-Id
Ifc6ac824f5dae9a848bb4a5d067c64a69eb40b56 in libosmocore), so the
logging framework must be initialized before.
Change-Id: I1e893c97e023e63489fe8c46539b5e507d3cec8f
... the library code we call could want to log something, after all.
Port of osmo-bsc Change-Id Ic01e9bfb63d7b6def9432103e744c23c90f0f6b9
Change-Id: Ib4be9541771e95ca4e051b778fc3958202aab9ab
The test clearly fails unless bts->network is set correctly. Not sure
why this hasn't shown up before?
Port of osmo-bsc Change-Id I47786ed06ff610213d7a0b56d0ebf1c537cd7568
Change-Id: Id1cd4ce8f1e03b9715e1223414918bc69499e13d
* log administrative state transitions
* log what's caused it
* while at it, mark boolean variable as such
Cherry-picked from osmo-bsc be356ed32fbd28dc8d1460371d9e47511b20ac63
Change-Id: I3e25a19fac4d0b4886d825c9876771b1f66efe58
Related: SYS#3864
unsigned long can be 32 bits on some arch/OS, while "current" field is
always 64 bit because it's a uint64_t.
Change-Id: I9719c69ef661bb46d8bb43cf8d6537c3e8d47826
Related: OW#3893
Program terminated with signal SIGSEGV, Segmentation fault.
0 gsm_lchan_name (lchan=lchan@entry=0x0) at gsm_data_shared.c:342
(gdb) bt
0 gsm_lchan_name (lchan=lchan@entry=0x0) at gsm_data_shared.c:342
1 0x0805ab80 in lchan_release (lchan=0x0, sacch_deact=sacch_deact@entry=0, mode=mode@entry=RSL_REL_LOCAL_END)
at chan_alloc.c:410
2 0x0805c1dd in handle_ass_fail (msg=0x94142b8, conn=0x9251048) at bsc_api.c:459
3 dispatch_dtap (msg=0x94142b8, link_id=0 '\000', conn=0x9251048) at bsc_api.c:598
4 gsm0408_rcvmsg (msg=msg@entry=0x94142b8, link_id=0 '\000') at bsc_api.c:658
5 0x08058ca2 in abis_rsl_rx_rll (msg=0x94142b8) at abis_rsl.c:1686
6 abis_rsl_rcvmsg (msg=0x94142b8) at abis_rsl.c:2097
7 0xb7e8cf9a in handle_ts1_read (bfd=0x94e8e08) at input/ipaccess.c:271
8 ipaccess_fd_cb (bfd=0x94e8e08, what=1) at input/ipaccess.c:386
9 0xb7ee8434 in osmo_select_main (polling=polling@entry=0) at select.c:158
10 0x0804bd7c in main (argc=6, argv=0xbfc27144) at osmo_bsc_main.c:272
(gdb) print lchan
$2 = (const struct gsm_lchan *) 0x0
Possible scenario in which this crash can appear:
1- gsm0808_assign_req() calls handle_new_assignment() which sends an CHAN
ACTIVATE msg and arms T10 timer.
2- ACTIVATE ACK is received (handle_chan_ack), which calls
gsm48_send_rr_ass_cmd() which sends an ASSIGNMENT CMD, and doesn't
disable/modify T10 timer.
3- T10 timeout is triggered (assignment_t10_timeout()), which sets
conn->secondary_lchan = NULL
4- Immediately after, the ASSIGNMENT FAILURE message (which might have been
already queued) is processed in handle_ass_fail, and then the crash occurs.
This race condition is not an issue for handle_ass_compl() path because there's
this check there which would trigger most probably if secondary_lchan is NULL:
"if (conn->secondary_lchan != msg->lchan)"
Change-Id: Ied5bd90b9c06f27135a2e3c46e40d49d27d9a387
This adds a test case to explicitly verify the BA-IND is as expected
by the behaviour introduced in Change-Id I1cd0dc51026dcd0e508e63eea4e333e6b184787a
Related: OS#2525
Change-Id: I3e5b260af97ce96a221e4d51f6c1b41d58817a59
In masurement reports sent by the MS, this can then be used to correlate
if a given measurement report was in response to a BCCH/neighbor list
received on BCCH (SI2xxx) or on dowlink SACCH (SI5xxx).
Closes: OS#2525
Change-Id: I1cd0dc51026dcd0e508e63eea4e333e6b184787a
Save the time when OML link to BTS was established and show it in
vty. That's useful when troubleshooting issues like periodic/sporadic
BTS restart.
Related: SYS#3889
Change-Id: I9e4e8504afe8ca467b68d41826f61654e24d9600
This patch just makes the log match chronologically what
is happening. We receive the deliver_sm_resp before we send
the RP ACK to the MS.
Change-Id: I29270652957f58093be8bf7f2e898b0b4933bd93
If smpp_first is set off and there is a local receiver for this sms,
then return 0. Without this patch, we return 'rc' which is uninitialized
in the scenario that I'm describing above.
Change-Id: I0c0bcd919cc3275d491995d17c6a32bb61c6afe1
Fix four instances of VTY tests working because it used to include implicit
'exit' commands to the parent node.
Since libosmocore change-id Id73cba2dd34676bad8a130e9c45e67a272f19588 = commit
d64b6aed235f6e4d84a2cb8e84b32c3179260254, we no longer do this implicit-exit in
interactive VTY shells.
*) the nitb node lacked the default command set (including 'end' and 'exit'),
so it was impossible to leave the nitb node. This hit in
testSubscriberCreateDelete. Add vty_install_default(NITB_NODE).
*) in testPingPongConfiguration, the intention is to enter the /msc 0 node.
Drop prior entry of the 'network' node, which looks like an oversight. So
far the 'msc 0' caused an implicit 'exit' and thus worked, now fails.
*) Two instances following comments "# Check searching for outer node's
commands", which look like they are intended to check for this implicit-exit
behavior. This is obsolete, drop those parts of the tests.
Change-Id: I77931d6a09c42c443c6936000592f22a7fd06cab
Annotate this esme route, so we can use it to return -EINPROGRESS to
skip sending premature RP-ACK to the mobile station, in case we're
handling sms routes through SMPP.
Now that we have this information in place, we use it wherever possible
to avoid kludgy checks on sms->receiver.
sms_free() already releases references to this object, so we should be
fine with this.
Fixes: 4e5b90a594 ("libmsc: remove 'deferred' parameter in sms_route_mt_sms()")
Change-Id: Ib8a8fd9bbb0d3b6aff7931e4bacbea99d000e484
Handover attempt for power budget case should be performed every N SACCH frames,
where N = Power Budget Interval.
First measurement report with mr->nr = 0 was used for the first handover attempt
in this case, which is not correct, because first usable report should have
mr->nr = net->handover.pwr_interval-1.
Moreover using the first measurement report with mr->nr = 0 for handover attempt
could lead to unnecessary handover, because usually av_rxlev for first measurement report
from MS is worse than for following reports.
Change-Id: If7f54a4cb179eaa9e5eb147b9477633ac618e69e
According to 3GPP TS 44.018 §1.8 the "network shall never enable PBCCH
and PCCCH".
Change-Id: I319e71a4b0c682361529e9c21377398a826b934b
Related: OS#2400
verify_value_string_arrays_are_terminated has recently been moved
from libosmocore.git to osmo-ci.git and the person doing this seems
to have forgotten to update openbsc.git
Change-Id: Ibe4a7f71d2557dfee94803e909dabb00d2ce10af
This reverts commit ac1f1436e9.
common_cs.h added to gsm_data_shared.h was a mistake, i.e. I added the
dependency by accident. Including common_cs.h in the debian installation may
have seemed like the logical consequence but was not intended. AFAICT for
osmo-msc, the need for struct gsm_encr is obsoleted by libvlr, gsm_encr will
only be used in osmo-bsc and can just stay an inline struct.
Related: OS#2272
Change-Id: I15d60441c6c6f053486c0482258a8759bdd92df1
When somebody kills the process, it's best to handle the signal
and to use the opportunity for some cleanup. We always did this
in the NITB on SIGINT, but never on SIGTERM. Let's change it.
Change-Id: Iea6804325a6575ceab5edfd28dd20249462f143b
This option was present in very early versions of the NITB, but
at least since 2011 it is no longer supported. It's still listed
in --help output, which is wrong.
Change-Id: I1d2cceb588ec5fb34ec5e2c05a7d8c93310bee88
Set the time on the status report to the time the message was delivered, as
this may not be the same as the time when we are delivering the report to the
originating MS.
Change-Id: I9056429d40bf02731f004b7833f1de45a0d1add8