aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2022-07-30cosmetic: use proper name for SMPP handlersmsuraev/smppMax3-8/+8
Change-Id: I0d714e927e287a0ea9362008ed050a492510e22b Signed-off-by: Max <msuraev@sysmocom.de>
2022-07-30libosmonetify SMPPMax9-85/+57
Use libosmo-netif instead of socket interface. Note: osmo_stream_srv_recv() is not used for now to keep as much of existing code as possible and make troubleshooting easier. Related: OS#5568 Change-Id: Idc2e60af1010783e555e61b114ae61f55a89d890 Signed-off-by: Max <msuraev@sysmocom.de>
2022-07-30SMPP: move read/write callbacks to libsmpputilMax4-168/+138
Related: OS#5568 Change-Id: I875eb5249004d3a960aee46c5099592d18fcaa76
2022-07-30SMPP: move common functions to libsmpputilMax7-75/+70
Related: OS#5568 Change-Id: Icb046570803acb3eff89e2a4eb979c4899d485f7 Signed-off-by: Max <msuraev@sysmocom.de>
2022-07-30SMPP: move init funcs to smpp_smsc.hMax3-4/+7
This allows to get rid of monstrous gsm_data.h include which in turn makes sharing code via smpp.h much easier. Related: OS#5568 Change-Id: I2140ed57e64f17fb79130014eaf88f58b62d7a00
2022-07-30Make esme struct sharedMax6-91/+86
This helps to merge similar code from smpp_mirror and smpp_* in follow-up patches. Related: OS#5568 Change-Id: I8f7ac2c00d16660925dd0b03aa1a0973edf9eb70
2022-07-30Add ESME-specific loggingMax4-71/+47
Related: OS#5568 Change-Id: Ie5ddde762350385f8d18ee1d441584a41b0290ec
2022-07-30Introduce libsmpputilMax8-55/+54
As part of preparation for libosmo-netif migration let's move common SMPP code into separate build-time library and use it for both smpp_mirror and OsmoMSC. While at it we also fix id/password legth limits in smpp_mirror and drop unused fields from ESME struct. Related: OS#5568 Change-Id: I61910651bc7c188dc2fb67d96189a66a47e7e8fb
2022-07-30tests: use common stubs for SMS queue testMax3-21/+4
Related: OS#5568 Change-Id: Ic854eb919e6fcc82bd0245f62c72985b938c6b7a
2022-07-30ESME: use osmo_sock_get_name() for loggingMax3-13/+2
This allows us to drop single-use parameters from osmo_esme to facilitate further code changes. Related: OS#5568 Change-Id: I34bd4c145b0f6287a323e2350808feb59f1d3187
2022-07-30Ignore .deb build byproductsMax1-0/+8
Change-Id: I0ff10ef5766edf5f2aacf62acc98f25f01706ab4
2022-07-30SMPP: clarify (re)start logicMax1-2/+2
Having smpp_smsc_stop() called from within smpp_smsc_start() instead of explicitly inside smpp_smsc_restart() is confusing and could lead to hard-to-trace bugs. Let's get this fixed first before going further. Related: OS#5568 Change-Id: I353f5b82c9f5308d93e926538d4ef7e24d0b0339
2022-07-25in sdp logging: add payload type number like 'AMR#111'Neels Hofmeyr2-12/+15
Related: SYS#5066 Change-Id: Icbb4e89ce2947bf787c3ee14e3e115d406e43de2
2022-07-25sdp_msg: s/_name_/_to_str_/gNeels Hofmeyr4-83/+83
foo_name is intended for a short id, foo_to_str is more accurate naming here. Related: SYS#5066 Change-Id: I21d73b2e2633dd4841ff69a0c5fdf9b1a4c0615f
2022-07-25cosmetic: log actual MNCC msg in tch_rtp_connect()Neels Hofmeyr1-1/+1
Related: SYS#5066 Change-Id: I99161eeb64fd0faa7be6fc1e4986e2ba1bdcc75c
2022-07-22err log: fix reverse statement in msc_a call handlingNeels Hofmeyr1-1/+1
Change-Id: I937abe25ba87d0fcddc3351ac391cf6e7e776de6
2022-07-22missing whitespace in gsm_04_08_cc.cNeels Hofmeyr1-1/+2
Change-Id: If9e2f543d1924421c1a1f1e1e100c7d9fb63c139
2022-07-22fix typo in msgb name for CC SETUPNeels Hofmeyr1-1/+1
Change-Id: Id2c44966152805ea52bd7e7534529832fc2312ab
2022-07-08Turn off secure_delete in sqliteKeith Whyte1-0/+7
libsqlite3 that ships with some distributions may have secure_delete activated by default. This means all database records are overwritten with zeros on DELETE. We don't needs this extra overhead. Change-Id: I9da6499a38096c8df2025bb9d35ec789864b7c5e
2022-06-30Don't let this osmo-msc operate on a libdbi databaseKeith Whyte1-7/+7
The Binary format changed when libdbi was removed. If we let osmo-msc run on an unconverted database, the results are unpredictable, certainly undesirable. Change-Id: I887b6a4374b1c83684f4007e9791ae58bba4e8c1
2022-06-29Bump version: 1.8.0.43-2eaaf-dirty → 1.9.01.9.0Pau Espin Pedrol5-32/+90
Change-Id: Iacb839715290b27f1f3d302e13f219f5f0e1d161
2022-06-21fix RPM build failures due to README -> README.md renameHarald Welte1-1/+1
This fixes a bug I introduced in I98e09e8900c359382e2a90b187f0c6f22a1cf81d Change-Id: I9d7bc0aea404499315e212a2ebb92d54df85d812
2022-06-18Convert + Expand README fileHarald Welte2-35/+85
README.md in-line with that of other osmocom CNI projects: * markdown syntax * link to manuals, issue tracker, gerrit contributions, etc. Change-Id: I98e09e8900c359382e2a90b187f0c6f22a1cf81d
2022-06-18update git URLs (git -> https; gitea)Harald Welte4-5/+5
Change-Id: I0d7a9140ccbe5adecddde1901703e49243ee0b92
2022-05-19sms: Introduce VTY-configurable minimum SMS validity periodHarald Welte6-3/+24
This is meant as a safeguard against users or user equipment which doesn't set a reasonable validity period. Using this setting, the SMSC administrator can set a minimum SMS validity period. Any SMS submitted with lower validity period will be extended to that minimum. Change-Id: I192528a6f9059d158fa12876a247d61bd7edaec8 Related: OS#5567
2022-05-19sms: Make default SMS validity period configurable via VTYHarald Welte5-1/+18
Change-Id: Ie2c81c1d5795dd9aaf07b9766013f20b01abc762
2022-05-19smpp: Parse and use SMPP-provided validity periodHarald Welte6-2/+165
Before this patch, we always ignored any SMPP-provided validity period and used '0' which is now, and means it expires immediately. As SMPP allows for validity_period of NULL, use 7 days as SMSC default in such situations. Change-Id: Iad9f2697f045ed3bc0eb74c3a9730861f82e6c48 Closes: OS#5567
2022-05-19sms_queue: Make deletion of messages from DB VTY-configurableHarald Welte4-2/+39
This introduces some VTY settings that determine if delivered or expired messages should be removed from he SQL database or not. Change-Id: Id6174875d5c01c40d987077651b27ae1acbcaa93
2022-05-19sms_queue: Use local variable rather than 9x pointer de-ref in functionHarald Welte1-9/+10
Change-Id: Idf6eb9ec6603a0643033396ed9227e4319724145
2022-05-19sms: Give smsc its own VTY config nodeHarald Welte8-73/+178
The pre-historic sms_queue code used to have very strange aspects, such as having some parameters (max-failure, max-pending) which could only be sent from the 'enable' node, but not from a config file. Before adding more configuration parameters, let's clean this up by introducing a proper VTY config node for the 'smsc'; move the existing config commands there and add new ones for max-failure and max-pending. As the sms_queue data structure is only allocated after the config file parsing happens, we are introducing a new 'sms_queue_config' data structure. This encapsulates the public readable/writable config parameters. Change-Id: Ie8e0ab1a9f979337ff06544b9ab3820954d9804a
2022-05-18tests/msc_vlr/Makefile.am: drop -ldbiOliver Smith1-1/+0
Fix for: /usr/bin/ld: cannot find -ldbi Fixes: d43c22 ("switch from libdbi to lbsqlite3") Change-Id: I8dcce119a8121881d56cb18328b5f702763b43ea
2022-05-17sms: Encapsulate SMS queue related config parametersHarald Welte6-38/+53
Introduce a 'struct sms_queue_config' that holds all config parameters related to the SMS queue. Change-Id: I559ab7a6e0502a1a12a662ebd5591875d47ec7b2
2022-05-17db: Switch from 'synchronous = FULL' to 'synchronous = NORMAL'Harald Welte1-10/+1
As we're using WAL mode, it is not neccessary to use synchronous=FULL but rely on synchronous=NORMAL mode while still guaranteeing database consistency. To do this, we can fix the typo in one of our two PRAGMA statements, and remove the other. See https://www.sqlite.org/pragma.html#pragma_synchronous for the sqlite3 documentation on that topic. Change-Id: Ie782f0fe90e7204c4d55cdb3948b728c348367d1 Closes: OS#5566 RelateD: OS#5564, OS#5563
2022-05-17switch from libdbi to lbsqlite3Harald Welte11-660/+603
The choice of libdbi was one of the biggest early mistakes in (back then) OpenBSC development. A database abstraction library that prevents you from using proper prepared statements. Let's finally abandon it and use sqlite3 directly, just like we do in osmo-hlr. I decided to remove the database migration code as it would be relatively cumbersome to port all of it to direct sqlite3 with prepared statements, and it is prone to introduction of all kinds of errors. Since we don't have a body of older database files and comprehensive migration tests, it is safer to not offer migration code of uncertain quality. The last schema revision (5) was introduced 5 years ago in 2017 (osmo-msc v1.1.0), so it is considered an exceptionally rare case. People can install osmo-msc 1.1.0 through 1.8.0 to upgrade to v5 before using this new 'direct sqlite3' version of osmo-msc. Change-Id: Ia334904289f92d014e7bd16b02b3b5817c12c790 Related: OS#5559, OS#5563, OS#5564
2022-05-16tests: Remove sms.db{-wal,-shm} files, not just sms.dbHarald Welte1-4/+4
ERROR: files left in build directory after distclean: ./sms.db-shm ./tests/sms.db-shm ./tests/sms.db-wal ./sms.db-wal Change-Id: Iecd380f598edbd1635361e4c340d54d092739919
2022-05-16sms_queue: merge sms_pending_add into sms_pending_fromHarald Welte1-8/+3
Both callers would immediately execute sms_pending_add() after a successful sms_pending_from(); we can merge those two functions. Change-Id: Iaf37234b3caafd568dd4fe17739be9ec842c2a8d
2022-05-16sms_queue: refactor sms_pending add/remove codeHarald Welte1-22/+18
This avoids every caller from manually having to remember to increment the count, the stat_item and llist_{add,del}. Change-Id: Ice4c73727ef2d7e4118f0ef5fe24cae943c7528f
2022-05-16smpp: don't enqueue write messages if ESME is disconnectedHarald Welte1-1/+8
If the ESME has been disconnected (dead socket) but still is in memory (other users hold a use count), we shouldn't enqueue messages to the write queue. This prevents messages like DSMPP write_queue.c:112 wqueue(0x7f8bc392f6e0) is full. Rejecting msgb Change-Id: I10a270f1d555782be272f4d78da43190618a9950 Closes: OS#3278
2022-05-16smpp: Fix use-after-free bug when ESME disconnects but has write pendingHarald Welte1-1/+1
When the SMPP code free's an ESME it also free's the related write_queue and the osmo_fd contained therein. So if this happens while we are in esme_link_read_cb(), we must return -EBADF to make osmo_wqueue_bfd_cb() of libosmocore avoid further accessing related memory. Change-Id: I441d3b05c2f2556c530783a7f66c73adf6d845a1 Closes: OS#5565
2022-05-16sms_queue: Introduce rate_ctr / stat_itemHarald Welte1-7/+106
This allows us to monitor the load of the SMS queue. Change-Id: I8c00b5b0d33695fbb5f89fd2a4c8e35c9f7df6ac
2022-05-15vlr: Add rate counters and stat itemsHarald Welte2-5/+193
This should give us some more insight into what is happening inside the MSC's VLR in terms of number of subcribers, rate of successful / unsuccessful GSUP procedures, etc. Related: OS#1974 Change-Id: I681bcfc1875363478190151f2931cad197323ee8
2022-05-15vlr: Split vlr_subscr_rx_imsi_detach()Harald Welte1-4/+11
The function vlr_subscr_rx_imsi_detach() implies that an explicit IMSI DETACH was received. However, that same function was called in other situations such as timer expiration or GSUP CANCEL. Let's clean this up by splitting the function into two parts. No logical change is introduced to the VLR in this patch. Change-Id: Iffc02f3062ad591ca372a3c6d866066cf63a8830
2022-05-15sms_queue: Annotate each function with some commentHarald Welte1-29/+47
It makes the code much more readable if there's at least a one-liner documenting each function (and struct member). Change-Id: I6d239369cabdf1703eba7f3606b46b95cbbb1ea7
2022-05-15switch sqlite3 to single-threaded modeHarald Welte8-0/+14
Looking at 'perf top' of osmo-msc under load shows that there's a significant amount of time spent in terms of locking (mutex,...) which is useless as osmo-msc is a single-threaded application. Unfortunately libdbi doesn't provide a mechanism to perform sqlite3_config(), so we have to do it directly here, introducing an explicit build-time dependency (and linkage) to libsqlite3. Related: OS#5559 Change-Id: I5bbea90d28b6d73b64b9e5124ff59304b90a8a75
2022-05-13call rate_ctr_init() to make rate counters work properlyHarald Welte1-0/+1
The existing rate counters per-minute/hour/day values were never computed as the related timer was never started... Change-Id: I27282051a6da5d1e1a25981712fbe4c4a6378dea
2022-05-04fix crash on CM Serv Rej: fix use count mismatchNeels Hofmeyr3-7/+24
With comments, clarify the code paths where a CM Service use count has not yet been placed on the conn (just send CM Service Reject) and where the use count is placed (decrement count on CM Service Reject). Place the CM Service use count slightly earlier: - it is then correctly present when checking the mobile identity in cm_serv_reuse_conn(), avoiding the crash reported in OS#5532. - there is only one place incrementing the use count instead of two. Related: OS#5532 Change-Id: I6c735b79b67108bcaadada3f01c7046e262f939b
2022-04-13tests: use 'check_PROGRAMS' instead of 'noinst_PROGRAMS'Vadim Yanitskiy6-6/+6
When using 'check_PROGRAMS', autoconf/automake generates smarter Makefiles, so that the test programs are not being compiled during the normal 'make all', but only during 'make check'. Change-Id: I13b519e61ca0d9ce038e8c989ddac012de4a6c61
2022-01-13call_leg: local_bridge: Avoid null pointer access if CN-side not readyPau Espin Pedrol1-0/+3
This happens if for instance an HNBGW drops the RAB-AssignmentRequest and does nothing with it. call_leg.c:348:15: runtime error: member access within null pointer of type 'struct rtp_stream' Related: OS#5401 Change-Id: I67d2d5b2dd3b367c34f929d63c056306ec001431
2022-01-11Drop unneeded ax_check_compile_flag.m4Pau Espin Pedrol1-74/+0
The macro is no longer used since efa6c5b7d688ceea902d3b02ba78b813185d3c40. Change-Id: I58130ad70b5109a5720fc1b5702863cc503e6345
2022-01-07ran_msg_iu.c: Set proper codec in Assignment CompletePau Espin Pedrol1-1/+2
We need to set the codec as present in order for msc_a_up_call_assignment_complete() to configure properly the CN-side of he leg with the IUFP codec, which should be the desired default in order to avoid transcoding. Change-Id: Ib8086462239e2df748cf47ea7b37a07f1f3b85a8