aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2024-09-05send lcls conn-ctrl according to SDP media addressesrhizomatica/testingKeith Whyte1-2/+41
Detect if a SIP UE (probably a pbx) is re-INVITING itself out of the audio loop by checking the media endpoint ip/port. If thr PBX is going out of the Loop, send LCLS CONNECT, otherwise, RELEASE Change-Id: I83e1ff7c1523b6c6e53ee37a1b3967cd0dc194e1
2024-09-05Don't clear trans->cc.msg when local rtp port knownKeith Whyte1-2/+0
I used this info in looging later on while debugging this, I guess we can still clear it, not sure why. Change-Id: I2df8d1f53bff47b32938496998c4eb0e64db3524
2024-09-05Store GCR when we get the SETUP, don't wait till paging cbKeith Whyte1-12/+18
I originally placed this code in the paging callback, probably only because trans_lcls_compose() wants to check the msc_a for OSMO_RAT_GERAN_A and get LAC/CI etc for GCR generation. but we don't need any of that here. Change-Id: I32ac4e3da8bb6d44c4aa69fe8a67eedbe20a1c25
2024-09-05LCLS: Add function trans_find_by_same_gcr()Keith Whyte2-0/+25
Change-Id: I6a4df44099a23530839180047f2436b3d74887b5
2024-09-05Don't set lcls control to CONNECT by defaultKeith Whyte1-1/+1
Change-Id: I69fab402b7e02fa5de39ca288c42df0f9e50f483
2024-09-05Add support for MSC initiated LCLS-CONNECT-CTRLKeith Whyte3-0/+26
Change-Id: Ib30ee53ded8f09e819eae770489a92cc60b2c9a3
2024-09-05Avoid rare NULL pointer in sms_submit_pending()Keith Whyte1-0/+3
Change-Id: I2ea164bf540c96503ea543864ad2755e563a9d17
2024-09-05Add VTY command for SMS queue trigger holdoffKeith Whyte4-3/+28
There are various places in the code that retrigger the SMS -> In Memory pending queue mechanism. The default was to trigger the queue in one second, which could result in running the queue every second. This parameter can ease the queue run interval in case one second is causing too much load. Sms _SHOULD_ be delivered anyway without these queue runs, due to for example, MS becoming available or due to being notified by the call back of a new SMS. Change-Id: I43d88342436d654afd6d955e304e7f85fbc4840f
2024-09-05Reduce the amount of sms queue runsKeith Whyte1-13/+4
Don't resumbit to the queue on MEM_EXCEEDED or on SMS_SMMA Also, don't try to submit more pending SMS in sms_send_next() There should be enough other places that are checking the database. Also, increase the 'sanity' check in smsq_take_next_sms() Change-Id: I085d75472cf63709391b12f2fcf15ba9f67f64d0
2024-09-05SMS optimisationsKeith Whyte5-4/+46
After RX of an SMPP Submit, send the SMS we just received. Previously, after we have stored the new SMS in the db, we then signalled the queue to run, but this is not good enough. The queue may not pick up this new SMS on the next run, if there are sufficient older messages in the queue. So let's specifically send the message that was just submitted. when fetching from the DB, Prioritise SMS with least number of delivery attempts Try to send ALL pending SMS for subscriber in sub_ready_for_sms() callback Change-Id: I9af51ef0d9c2e6c5acc5128efd6195df881b680c
2024-09-05Avoid UPDATE immediately followed by DELETEKeith Whyte5-23/+54
There is no need to mark an SMS as sent before deleting it. Avoid the extra database overhead involved in doing this. Change-Id: I777155c0f818b979c636bb59953719e472771603
2024-09-05Use unix timestamps in the SMS dbKeith Whyte1-6/+6
There's really no need to convert to/from human readable dateformat (YYYY-MM-DD HH:MM:SS) everytime we access a record in the SMS database. sqlite3 has pseudo column types. In fact this means the column type in the database schema is meaningless and anything will be accepted and stored. See (Flexible Typing) [1] It appears that more processing than might be expected is happening internally on such things as date conversions, as the database engine has to actually do verifications on the data. (Is this INT really an INT etc...) [1] https://www.sqlite.org/quirks.html Change-Id: I599a57666da22adf806b01ff095c8672d523a737
2024-09-05SMS optimise: Move VLR check to db.cKeith4-35/+32
Avoid calling sms_from_result() if the subscriber is not attached. In this case just search for SMS for the next msisdn. Change-Id: Ibd07b9d200b48108d705ed4c461cc4ddfa421fd2
2024-07-24Bump version: 1.11.1.65-22d4f3-dirty → 1.12.01.12.0Oliver Smith4-25/+113
Change-Id: Ic6f6d893025acff60df33cbfda980100e492e1c6
2024-06-21do not invoke two Assignments (fixup for re-assignment)Neels Hofmeyr4-1/+49
Make sure we wait for Assignment responses before dispatching an Assignment Request towards RAN. In particular, when the remote call leg sends its codecs, we may trigger Re-Assignment to match that codec. Make sure this is done only once: when receiving another SDP message, wait for the first Assignment. Implement as an osmo_timer, since there still is no osmo_fsm implementation for Assignment nor for CC trans FSM. Also it doesn't belong in the msc_a FSM (it should remain in state COMMUNICATING). Without this patch, new ttcn3 test TC_lu_and_mo_call_reass_for_mt_codec sporadically fails, if MNCC with SDP falls in-between Assignment Request and Assignment Complete. Related: osmo-msc d767c73a1f93253a54d6a8650a4cf2143353bba0 == I8760feaa8598047369ef8c3ab2673013bac8ac8a Related: osmo-ttcn3-hacks I402ed0523a2a87b83f29c5577b2c828102005d53 Change-Id: I0f1e1a551aed545b555b9f236fc5967b1e4cc940
2024-06-18debian/copyright: remove include/openbsc/slhc.h (no such file)Vadim Yanitskiy1-25/+0
Change-Id: Ib1f2395798010381d67d79c46778bb0caef17046
2024-06-17utils/smpp_mirror: use OSMO_STRLCPY_ARRAY, fix -Wstringop-overflowVadim Yanitskiy1-5/+5
This patch fixes a warning printed by gcc 14.1.1: CC smpp_mirror-smpp_mirror.o CCLD smpp_mirror In function 'snprintf', inlined from 'bind_transceiver' at smpp_mirror.c:121:2, inlined from 'smpp_esme_init' at smpp_mirror.c:258:9, inlined from 'main' at smpp_mirror.c:299:7: /usr/include/bits/stdio2.h:54:10: warning: '__builtin___snprintf_chk' specified bound 16 exceeds destination size 9 [-Wstringop-overflow=] 54 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, | ^ Take a chance to replace all snprintf() calls with OSMO_STRLCPY_ARRAY. Change-Id: If1df370fbfbca0953abf83ea1840d8bf8a0118be
2024-06-17smpp: fix password[] length in struct esmeVadim Yanitskiy1-1/+1
Change-Id: I07e7193460580a3c972a24700e75c925d1e50411
2024-06-17smpp: fix typo in comment for SMPP_{SYS_ID,PASSWD}_LENVadim Yanitskiy1-1/+1
Change-Id: I3f8d9a8e3739679995ddb037a8f3d58a627d36bc
2024-06-05README.md: cosmetic: fix a typoVadim Yanitskiy1-1/+1
Change-Id: I07bea7a7eedb70edb8dd124a3a6167eb35344b81
2024-06-04gsm411_send_rp_data(): add FIXME for MSC_CTR_SMS_DELIVEREDVadim Yanitskiy1-0/+1
Change-Id: I5380035294d2fca481620638b59eae779670e9f8
2024-05-28libmsc: reset the LU delay timer (X36) on MO/MT SMSVadim Yanitskiy1-0/+7
We don't want to delay the BSSAP/RANAP connection release any longer than it takes to submit or deliver an SMS. Thus, whenever a new SMS transaction is being allocated, drop the LU token. Change-Id: Iad4ace6038be4b6037e341e7d9d187bef2917d80 Related: osmo-ttcn3-hacks.git I74fa174ea649adb2112c8e471c0e339a2197a08d Related: SYS#6913
2024-05-28libmsc: add timer X36 for delaying LU connectionsVadim Yanitskiy3-1/+48
The idea is to allow re-using the radio channel that was used for Location Updating to deliver MT SMS over GSUP. This is achieved by delaying release of a BSSAP/RANAP connection and thus delaying the release of the radio channel. The delay can be configured using new timer X36 (default 0 ms), separately for GERAN and UTRAN. Change-Id: Ic519cab55d65e47b2636124427dab1a1d80fab78 Related: osmo-ttcn3-hacks.git I74fa174ea649adb2112c8e471c0e339a2197a08d Related: SYS#6913
2024-05-17SMS-over-GSUP: set log context in gsm411_gsup_rx()Vadim Yanitskiy1-6/+3
Change-Id: I3414953d2aa7b075fcee1cf6e5e76c527ae7b507
2024-05-14debian/postinst: add checks, be verboseOliver Smith1-6/+14
Do not attempt to change permissions/ownership if the package gets upgraded from a version higher than the next release. Do not fail if the user deleted the config file. Be verbose when changing permissions. Related: OS#4107 Change-Id: I2b01a7625cf66fbb7d203f939ddcc1cbab43cf33
2024-05-08contrib: remove rpm spec fileOliver Smith3-135/+0
Related: https://osmocom.org/news/255 Related: OS#6446 Change-Id: I703e115a426ac1012c80d2e1576ee6dcfbe191a5
2024-04-26.deb/.rpm: various fixes related to non-rootOliver Smith3-32/+25
* Explicitly chown /var/lib/osmocom to osmocom:osmocom, instead of relying on systemd to do it when the service starts up. This does not work with the systemd versions in debian 10 and almalinux 8. * deb: Use "useradd" instead of the interactive "adduser" perl script from Debian. This makes it consistent with how we do it in rpm, and avoids the dependency on "adduser". * deb: Consistently use tabs through the file, instead of mixing tabs and spaces. * deb: Remove support for the "dpkg-statoverride --list" logic. This seems to be a rather obscure feature to override permissions for certain files or directories, for which it does not seem to be a good idea to make the postinst script less maintainable. Something similar can be achieved by using your own Osmocom config file in a different path with different permissions. Related: OS#4107 Change-Id: I406ff0d625b02991d580c8382aa4be04dba45a00
2024-04-24.deb/.rpm: add osmocom user during package installMax4-2/+56
Created osmocom user & group during package installation. Fix the configuration dir/files permission to match. Related: OS#4107 Tweaked-By: Oliver Smith <osmith@sysmocom.de> Change-Id: I41d47c0884d09d4674ec806d77e43bc8f08d9b64
2024-04-03fixup for re-est: do not succeed on acceptance failNeels Hofmeyr1-1/+1
Fix a bug introduced in commit implement CM Re-Establish for voice calls ae98b97382285420ba81549bc874b9fea5e7daa9 Neels Hofmeyr <neels@hofmeyr.de> Thu Jul 29 22:40:59 2021 +0200 I6fa37d6ca9fcb1637742b40e37b68d67664c9b60 We should only succeed when conn_accepted == true! Related: SYS#5130 Change-Id: I3679162143e8d7d8c0878de2102faa11eadfccfc
2024-03-28never page for TMSI with 'no assign-tmsi'Neels Hofmeyr2-11/+15
With 'no assign-tmsi', regard any TMSI as invalidated at the end of a Location Updating procedure. Hence, avoid paging by TMSI. When 'no assign-tmsi' is set, osmo-msc does not actively assign a new TMSI at the end of the Location Updating. However, it stores any TMSI identity that the MS sends in a Location Updating Request. So far, this caused osmo-msc to use the TMSI that the MS had sent in subsequent Paging, which goes unanswered by the MS. (After the long standing evil twin problem regarding TMSI MI has been fixed in recent Ifdabe0b65bffafbf7b8e5cc10e2d225d1ed1cecd, there is no longer an evil twin risked by clearing out a TMSI.) Related: SYS#6860 OS#4721 Change-Id: I583682d1a35a70b008d7bb2d89ba7c3109a60b21
2024-03-28fix VLR evil twin on LU with unknown TMSINeels Hofmeyr6-2/+105
When a subscriber first attaches by TMSI only, and later tells the IMSI via ID Response, it may turn out that this IMSI already exists in the VLR database. If this happens, the TMSI that the subscriber issued was not known in the existing VLR entry, indicating that the subscriber has in the meantime camped on a different core. Which means we can assume that there cannot be any active connections, and the old subscriber can be discarded, for the benefit of the new one. (We could also discard the new one, but it is more complex to reparent the ongoing FSMs for Compl L3 than to copy some dormant VLR state.) In vlr_subscr_set_imsi(), check for an existing IMSI entry in the VLR. If such exists, copy any pending Paging and auth tuple state to the new subscriber, and discard the old one from the VLR. In order to safely discard a vlr subscriber by force, add a new vlr_ops function: subscr_inval(), to tell the MSC that a vlr_subscr is no longer valid. Upcoming patch I583682d1a35a70b008d7bb2d89ba7c3109a60b21 better clears TMSI state from the VLR, making it more likely to hit the evil twin situation this patch fixes; hence this is, sort of, preparation. Related: SYS#6860 OS#4721 Change-Id: Ifdabe0b65bffafbf7b8e5cc10e2d225d1ed1cecd
2024-03-26invalidate vsub->msc_conn_ref when msc_a is discardedNeels Hofmeyr1-0/+5
We have an msc_conn_ref pointer from vlr_subscr to an active msc_a instance. So far, we just keep it pointing at discarded memory. Instead, make sure it goes back to NULL when the msc_a instance deallocates. This way the VLR can reliably tell whether a given VLR entry still has an active connection or is just inactively caching the subscriber. Related: SYS#6860 OS#4721 Change-Id: Ic63d01d220b63453976fe06a7c6b606f97172c99
2024-03-23README.md: Add links to forum + issue trackerHarald Welte1-0/+16
Change-Id: I1cad803af112241cef1c83a5ab7c19ae36c439df
2024-03-23README.md: More hyperlinks and add more interfaces / featuresHarald Welte1-13/+22
Change-Id: Ic7e64d157969d466b3e1d423e20be5513a7c17fd
2024-03-23Add funding link to github mirrorHarald Welte1-0/+1
see https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository Change-Id: Id0aeb6d5c9a6bf0019eb96f25eb119fa0b5e583e
2024-03-01msc_a_up_call_assignment_complete(): handle all CSD modesVadim Yanitskiy1-2/+8
Change-Id: I92f7ab11ebc2e53700b27c38e91679c2c6f72050
2024-03-01libsmpputil: fix -Wtautological-constant-out-of-range-compareVadim Yanitskiy1-1/+1
* 'sizeof(sms->user_data)' evaluates to 256 * 'ud_len' is of type 'uint8_t' and cannot be greater than 256 Change-Id: Ia71a0b6b9421911dc5113782d2f555a640fd90ed
2024-03-01libmsc: fix -Wenum-conversion in subscr_conn_toss()Vadim Yanitskiy1-1/+1
This commit simply fixes a -Wenum-conversion thrown by clang. No idea why are we using the SM (GPRS Session Management) cause values. msc_a_release_mo() does not even use the given SM cause value. Change-Id: Iade6bf97466ab2b3b39e9ea123fc90d06c0f6a9b
2024-03-01libvlr: fix auth_fsm_term(): use proper value-string for causeVadim Yanitskiy4-13/+13
Change-Id: Ia0868dce2da5cb78c30cf518870c3d91144499b9
2024-03-01libvlr: fix wrong cause value passed to auth_fsm_term()Vadim Yanitskiy1-1/+2
This was found thanks to clang (-Wenum-conversion): warning: implicit conversion from enumeration type 'enum gsm48_gmm_cause' to different enumeration type 'enum gsm48_reject_value' [-Wenum-conversion] Change-Id: I0b820bb2a8e561682a8158fc51bd9565f5912d56
2024-03-01libvlr: auth_fsm_wait_ai(): cosmetic: drop redundant breakVadim Yanitskiy1-1/+0
Change-Id: Iaa2962bfe67902f6b4aa944b73fa97db46bc9c54
2024-02-19Fix license headers: Should have been AGPLv3+, not GPLv2+Harald Welte8-31/+31
I'm not sure why so many files (particularly written by Neels) did contain a GPLv2+ header, instead of the AGPLv3+ which is the actual overall project license. I consider it a mistake. In any case, any copyrightable contribution to those files was done by sysmocom employees, so I as managing directory can legally make a license change, whther or not it was a mistake early on or not. The only GPLv2-or-later file remaining is mncc_internal.c, as it has more contributors and a longer history. Change-Id: I8650697592b3160c4d0a7c61ae9c46d4aacb3bef
2024-02-13pick up all *.vty in EXTRA_DISTNeels Hofmeyr1-1/+1
(Same as osmo-bsc I47c9011b5e0e2886d221e34e6aa281d1dd0495c7) *.vty tests are picked up by the Makefile.am by means of a wildcard -- they are run when they are there. So when you forget to add it to EXTRA_DIST, it will be run in your local build tree, but it will be silently omitted from a distribution tar, and nothing will complain about it gone missing. Instead, also use a *.vty wildcard in EXTRA_DIST. So any *.vty test added to the git source will both be run *and* included in distribution tars implicitly. So far, test_neighbor_ident.vty was missing from the distribution. Change-Id: Id28e020fc59b83d1b4cd0e5b72314a46bea62259
2024-02-08cosmetic: rename to sdp_audio_codecs_foreach()Neels Hofmeyr5-15/+15
Better match the pattern of sdp_audio_codecs_* instead of having foreach_ in the front. Prepare for prepending osmo_ some day, because I plan to move the SDP API to a separate library. Change-Id: Ia96190e0bdb513886663be1c8c12be3b403b71c9
2024-02-08report caller's file,line in trans_cc_filter_run()Neels Hofmeyr2-8/+10
When we get the codec filter result logged, it is most interesting to know the caller. So wrap a file-line macro around trans_cc_filter_run(). Change-Id: I243404487c1871e921b08098086ef2fc78a5561d
2024-02-08msc_vlr_test_call.c: fix misleading commentsNeels Hofmeyr1-2/+2
The comments indicating which two "members" are identical are inaccurate. (One of them is a macro pointing at the other.) Change-Id: Ifaa2f361db77cd0ed3ad39d6ca197195b9354ea1
2024-02-08tweak apidoc for sdp_audio_codecs_remove()Neels Hofmeyr1-2/+2
Change-Id: I1d281f61497336783126aef39165426523b22112
2024-02-08cosmetic: tweak sdp_audio_codecs_by_payload_type()Neels Hofmeyr1-5/+3
No functional change, only more readable code. Change-Id: I3c4e29cb240e2a9a00bc9dd065ec85a5e8d8fe38
2024-02-08cosmetic: move check for CSD further aboveNeels Hofmeyr1-9/+9
Currently the CSD check is in the middle of figuring out the voice codec for normal voice calls. Rather do the CSD check first, and then do voice in one coherent section. (prep for upcoming change in this code, to support AMR rate selection.) Change-Id: Ibd21f0bb46c66a406904105564ce961a8760cbe7
2024-02-08fix misnomer in msc_a.c: codec_cn -> codec_assignedNeels Hofmeyr1-5/+6
Before the codec filter, it would have been the CN side codec, but now it is only the codec that the RAN reports as assigned, fed into the codecs filter. (prep for upcoming change in this code, to support AMR rate selection.) Change-Id: Ie7966099c5565013018734b0c2028484c24341a7