AgeCommit message (Collapse)AuthorFilesLines
2021-12-21osmo_ss7_instance_destroy: use for_each_entry_safeHEADmasterOliver Smith1-6/+6
Fix segfault in each loop. Change-Id: Ieaec3584375b0e6b943638fe1e50b4d74a627216
2021-12-21src/sccp_scmg: fix typoOliver Smith1-1/+1
Change-Id: Ifd6264da2da2e7cc62485dcde9b6c462d4858626
2021-12-14treewide: remove FSF address2021q4Oliver Smith8-32/+0
Remove the paragraph about writing to the Free Software Foundation's mailing address. The FSF has changed addresses in the past, and may do so again. In 2021 this is not useful, let's rather have a bit less boilerplate at the start of source files. Change-Id: Ia450b630e0b60b38835f599c93985bbe97c50d2f
2021-11-23ss7: Use sctp value_string from libosmo-netifPau Espin Pedrol2-30/+4
Depends: libosmo-netif Change-Id Ica6f01851fb94e31f4ef097494bb1b8a95597ba6 Change-Id: I42323eb5d02d4f67daac7b0a4365f5f6f6057666
2021-11-16Bump version: → Espin Pedrol6-14/+69
Change-Id: I963499ba9f78924660127312f4469b0781fed805
2021-11-16osmo_ss7: properly unlink rate_counter on AS/ASP freeHarald Welte1-0/+2
When introducing rate_couters, I forgot to call rate_ctr_group_free(). I thought free'ing the parent object via talloc is sufficient, but that obviously misses the point that rate_counters have an internal linked list from which they must be unlinked. Change-Id: I8d27f025c22776d0153d867e36c073ef716eb974
2021-11-16rate_ctr: Use legal counter group prefixes / names (no '.' allowed)Harald Welte1-7/+7
This avoids log messages like DLGLOBAL <0016> rate_ctr.c:92 'sigtran.as' is not a valid counter group identifier Change-Id: I08666a1c3c1345cd3b0e55d544f6ac4a6df62fbf
2021-11-15spelling fixes in commentsHarald Welte6-20/+20
Change-Id: I4ecd9a1c5241cfd3a3e1daf05f7826876371369f
2021-11-15stp: Add basic RX/TX rate counters on AS and ASP levelHarald Welte8-0/+83
This adds some very basic rx/px rate counters to the SS7 AS and ASP OsmoSTP> show rate-counters SIGTRAN Application Server 0 (as-rkm-1): rx:msu:total: 86078 (1888/s 86078/m 0/h 0/d) tx:msu:total: 0 (0/s 0/m 0/h 0/d) SIGTRAN Application Server Process 0 (asp-dyn-0): rx:packets:total: 86081 (1888/s 86081/m 0/h 0/d) tx:packets:total: 5 (0/s 5/m 0/h 0/d) Change-Id: Idb811ca81adfe47152d484f6b981e661dc569e15
2021-11-14sccp_scmg: Add missing line eneding to log statementHarald Welte1-1/+1
Change-Id: I7ec5c86fbef429cd1e23be87b773823f2e736f2f
2021-10-26sccp: Add minimalistic support for XUDT / XUDTSHarald Welte2-2/+110
XUDT and XUDTS can be used in two situations: a) because the sender wants to use segmentation b) because the sender wants to include a hop counter In this patch, we implement support for case "b" only. Change-Id: Ic5b9486f1aeb4bb90cfe702a7ce996f5d82ded2c Related: OS#5281, SYS#5674
2021-10-07osmo_ss7.c: Fix typo in doc for osmo_ss7_asp_peer_add_host()Pau Espin Pedrol1-1/+1
Change-Id: Idba9ed3dc1d8968d304f88fdb1ebef422dd982e9
2021-10-07osmo_sccp_simple_client_on_ss7_id(): Allow set internally proper IPv4/v6 ↵Pau Espin Pedrol5-65/+104
default hosts Allow user apps to relay the decision of proper default local/remote hosts values to the library. Proper configuration of these addresses can be quite cumbersome to get correctly, or confusing at least. That's due to the multi-homing feature of SCTP where both IPv4 and IPv6 are involved. We were already doing this kind of automatic setup in osmo_ss7_vty_go_parent(), where we do validations and assign addresses based on IPv6 availability. On the other hand, apps using osmo_sccp_simple_client_on_ss7_id() API usually pass "localhost" as default address. In Linux, when IPv6 is enabled localhost is resolved as "::1", and "" when IPv6 is disabled. Let's instead allow apps to relay the setup to the lib, so same addresses can be applied both during VTY command as well as if there was no VTY setup at all. Related: OS#5186 Change-Id: I82e203612571b7651d758d8148661f706a1642ba
2021-10-05cosmetic: Fix typos in documentationPau Espin Pedrol1-8/+8
Change-Id: I1164490c140cc5ca82e5977d24f5971ba216014b
2021-10-05cosmetic: Fix extra empty linePau Espin Pedrol1-1/+0
Change-Id: Ibd499fc9376523e6dcfe8ba6792603c237db59f5
2021-07-23m3ua: fix m3ua_encode_dupuOliver Smith1-2/+2
Fix wrong header and swapped user / cause values (see RFC 4666). This makes TC_ssnm_distribution_dupu pass. Change-Id: I717b64d13d12a2781c90e4d2f83643331797bed4
2021-07-23m3ua: reject deregistration of static routing keysOliver Smith1-0/+6
Make STP_Tests_M3UA.TC_rkm_unreg_never_registered pass. Closes: OS#4239 Change-Id: Ie5d84d06e7d5d32c8a22f770f71a5449f4a78484
2021-07-11m3ua: fix leaky usage of m3ua_tx_xua_aspEric1-1/+5
m3ua_tx_xua_asp will at some point convert the xua msg to a msgb by copying and then send it, the xua msg still needs to be freed by the caller. Closes: OS#5185 Change-Id: Id8584b99f30f2db602d4d129e4114821697272ab
2021-06-17osmo_ss7_vty: allow users to inspect routes also in ASP rolePhilipp Maier2-1/+5
When libosmo-sigtran runs in ASP role, then the entire routing table introspection (show) and routing table configuration VTY commands are not present. Editing the routing table manually only makes sense in SG role, but it is still useful to be able to inspect the routing table in ASP and SG mode. Change-Id: Ieaef4f0344b5b77ff5047013e9da1e938004e97c Related: SYS#5392
2021-06-16osmo_ss7_vty: automatically create routes for routing keyPhilipp Maier1-0/+22
Operators may set up a routing key in each AS node. However, this does not mean that there is also a route added to the routing table. If the default route is not sufficient (e.g. if multiple AS are defined), then operators are epected to put matching routes into the routing table. However, when libosmo-sigtran runs in ASP role, the VTY commands that allow to routing table changes are not present. In an ASP role we are in an endpoint situation, so no complex routing is required, in most cases (single AS) even the default route is enough but to ensure that each AS will get a route, add routing tables automatically when running in ASP role. Change-Id: Ic60b36983232308250e591dbad576aaafdd6b586 Related: SYS#5392
2021-06-09ipa_asp_fsm: Support server starting handshake with ID_GET or ID_ACKPau Espin Pedrol1-2/+15
The behavior here since to have changed at least a couple times in history, always apparently breaking some compatibility: * libosmo-sccp.git a0dd986f5506ee8a625e827bc029d1aa962b6f65 (SCCPLite MSC sends IPA ID ACK at startup) [10th July 2018] * libosmo-sccp.git 9c0fae14d105b64ec9e8ff7322fa4aca782e54d1 (Reverts back to sending IPA ID GET at startup [29th April 2021] * osmo-ttcn3-hacks.git 3bf31d216a18c1d6a6e298a592f873beea322939 (Changes server emulation to send IPA ID ACK when BSC connects to it) [24th August 2018) So it seems the proper way is to start handshake: CLI <- SRV: IPA ID GET CLI -> SRV: IPA ID RESP CLI <- SRV: IPA ID ACK CLI -> SRV: IPA ID ACK However, it seems some SCCPLite MSCs (acting as IPA srv) skip the first ID GET + ID RESP handshake and go directly for ACKs: CLI <- SRV: IPA ID ACK CLI -> SRV: IPA ID ACK So, let's make everybody happy and support both cases in the client FSM. If server sends us IPA ID ACK first, simply send back an IPA ID ACK and be done with it, otherwise if it sends us an IPA ID GET, go for the full handshake. Change-Id: Ie9968ce8cd8582deb583024ff3e46736a07883fe
2021-06-09cosmetic: xua_asp_fsm.c: reorder functions in filePau Espin Pedrol1-36/+44
Reorder functions to follow usual order in FSM files: 1- structs and helper functions 2- for each state: first _oneneter, then the action func 3- generic state fsm functions (timers, all_state) 4- struct osmo_fsm_state 5- FSM allocator and public functions Change-Id: Ic143db3dda48750effddaa0cafadf960f5b5c38c
2021-05-21VTY: write_one_asp(): fix 1 << 31 cannot be represented by 'int'Vadim Yanitskiy1-2/+2
Change-Id: Ib144df42baed16aeffa5b56afd0c17960ee6004e Closes: OS#5158
2021-05-13sccp_scrc: Ensure we have not just SSN but at least OPC+SSN in CallingPartyHarald Welte1-0/+23
There are implementations out there which send us traffic, specifically in this case SCMG (SST) that has only SSN in both Called and Calling Party. This means the inbound SST message is routed correctly to the local SCCP user of libosmo-sigtran. But when that local SCCP user responds with inverting Called/Calling Party, the new destination again just contains a SSN. As a result, we don't know where to route the message (we always need a PC). Change-Id: Id66ae960ebe3cb3b09c6dd5454f9ac9c073f46d7 Closes: OS#5146
2021-05-13m3ua/sua: Add new snm_inactive quirkHarald Welte4-8/+23
This quirk allows the M3UA + SUA code to accept SSNM/SNM traffic despite being in AS-INACTIVE state. This is forbidden by the RFCs but there are some implementations that apparently just don't care what is specified. Change-Id: I193dd546b3e3c00e29f192d0d1bf7819b3e194be Closes: OS#5148
2021-05-13m3ua/sua: Add quirk for allowing inbound DAUD from SG in ASP role.Harald Welte4-9/+29
The M3UA RFC talks about this message being used in ASP->SG direction, not the other way around. Closes: OS#5147 Change-Id: I36ff172b47142a877b37bbd149073bef35b36a74
2021-05-13osmo_ss7: introduce notion of configurable 'quirks'Harald Welte3-2/+78
A quirk is an implementation work-around in order to establish interoperability with another implementation, either a buggy one or one that follows a different interpretation of a given spec. For now, we introduce a first quirk affecting when we (in ASP role) send an ASP-ACTIVE message to the SG. Closes: OS#5145 Change-Id: Idd947ea39d743eb1bc9342ad9d098036821da45b
2021-05-11ss7_asp_test.vty: Allow more asp node commands after shutdownHarald Welte1-0/+2
this will be required once we add new commands (quirk) in the next few patches. Change-Id: If1068cd94782df236948101166a76586e9845762
2021-05-10Constrain connection ID allocation to 24 bitsHarald Welte1-1/+4
We currently use the local connection ID on the SCU SAP also as local reference on the wire-line SCCP messages. However, the latter only has a 24 bit range, so we should make sure to wrap accordingly on allocation. Change-Id: I414d29271da48ac0b05a688ce9e949a66e4d0d92 Closes: OS#3921 Related: OS#3871
2021-05-03ss7_vty: Print actual connected port number in case of IPA serverHarald Welte1-1/+11
In IPA, unlike M3UA/SUA, we often have clients connecting from random/unknown ports. In such cases, the configured remote port is '0'. Let's use getsockname to determine the actual source ip/port of the connected client (if any) during "show ... asp" Change-Id: I1327a46d0b74c572d2ad828a958090af53b9fa37 Closes: SYS#5429
2021-04-30Revert "osmo_ss7: free the sock_name string once an ASP socket is closed"2021q1Harald Welte1-8/+0
This reverts commit 03e3b0423443cd48f901762e36e8aa5b75c27c37. It caused a regression, as apparently some code is using the sock_name string even after the close: DLSS7 osmo_ss7.c:1676 0: asp-asp-dyn-0: xua_srv_conn_cb(): sctp_recvmsg() returned 12 (flags=0x8080) DLSS7 osmo_ss7.c:1608 0: asp-asp-dyn-0: xUA SRV SCTP NOTIFICATION 32773 flags=0x0 DLSS7 osmo_ss7.c:1621 0: asp-asp-dyn-0: xUA SRV SHUTDOWN_EVENT DLSS7 osmo_ss7.c:1875 asp-dyn-0: connection closed DLSS7 osmo_ss7.c:1881 XUA_ASP(asp-dyn-0){ASP_INACTIVE}: Received Event SCTP-COMM_DOWN.ind DLSS7 xua_asp_fsm.c:669 XUA_ASP(asp-dyn-0){ASP_INACTIVE}: state_chg to ASP_DOWN DLSS7 xua_asp_fsm.c:113 0: asp-asp-dyn-0: No Layer Manager, dropping M-ASP_DOWN.indication DLSS7 xua_asp_fsm.c:113 0: asp-asp-dyn-0: No Layer Manager, dropping M-SCTP_RELEASE.indication DLSS7 osmo_ss7.c:1442 0: asp-asp-dyn-0: Destroying ASP DLSS7 osmo_ss7.c:1449 XUA_ASP(asp-dyn-0){ASP_DOWN}: Terminating (cause = OSMO_FSM_TERM_REQUEST) DLSS7 osmo_ss7.c:1449 XUA_ASP(asp-dyn-0){ASP_DOWN}: Freeing instance DLSS7 fsm.c:573 XUA_ASP(asp-dyn-0){ASP_DOWN}: Deallocated ================================================================= ==2928584==ERROR: AddressSanitizer: heap-use-after-free on address 0x618000004d28 at pc 0x7fd6cddeaff8 bp 0x7ffe978fbad0 sp 0x7ffe978fbac8 READ of size 8 at 0x618000004d28 thread T0 #0 0x7fd6cddeaff7 in xua_srv_conn_closed_cb (/space/home/laforge/projects/git/libosmo-sccp/src/.libs/libosmo-sigtran.so.5+0x17bff7) #1 0x7fd6cc443d0f in osmo_stream_srv_destroy (/usr/local/lib/libosmonetif.so.8+0x7ed0f) #2 0x7fd6cdde8ce8 in xua_srv_conn_cb (/space/home/laforge/projects/git/libosmo-sccp/src/.libs/libosmo-sigtran.so.5+0x179ce8) #3 0x7fd6cc44285e in osmo_stream_srv_read (/usr/local/lib/libosmonetif.so.8+0x7d85e) #4 0x7fd6cc44331d in osmo_stream_srv_cb (/usr/local/lib/libosmonetif.so.8+0x7e31d) #5 0x7fd6cd88a1c7 in poll_disp_fds (/usr/local/lib/libosmocore.so.17+0x10d1c7) #6 0x7fd6cd88a30d in _osmo_select_main (/usr/local/lib/libosmocore.so.17+0x10d30d) #7 0x7fd6cd88a32c in osmo_select_main (/usr/local/lib/libosmocore.so.17+0x10d32c) #8 0x557aab05c078 in main /space/home/laforge/projects/git/libosmo-sccp/stp/stp_main.c:267 #9 0x7fd6ccc50d09 in __libc_start_main ../csu/libc-start.c:308 #10 0x557aab05b389 in _start (/space/home/laforge/projects/git/libosmo-sccp/stp/.libs/osmo-stp+0x3389) Change-Id: I72f83114408e7a54d1f3072338fa6f189bf4064f
2021-04-30osmo_ss7: free the sock_name string once an ASP socket is closedHarald Welte1-0/+8
It's confusing to keep around a string representation of what peer the socket was previously connected to. Change-Id: I00d47fc355bfe24915653767ad75c1f491c060d5
2021-04-30don't do explicit NULL checks before calling talloc_free()Harald Welte1-4/+2
Change-Id: I97a072ca32820ad34785ac6a54b00ed51b519305
2021-04-29xua_asp_fsm: Fix IPA client roleHarald Welte1-2/+2
The IPA server worked as expected, but the IPA client has some clear logic bug that prevented it from working. It shows that we never really use any of that IPA/SCCPlite stuff after years in spec-compliant SIGTRAN land. A client now first waits for the IPA_REQ, sends its IPA_RESP, then waits for the ACK, ... Change-Id: Icfc32cad7d65c94dc21754b8f879afcf34d34a92
2021-04-29xua_as_fsm: Only delete a route for an IPA AS if we created one earlierHarald Welte1-1/+11
The current code would potentially delete a route that was statically present in the configuration in the following situation: * route exists in config * identical route is attempted to be added at AS-ACTIVE time, but fails * route is unconditionally deleted at AS-DOWN time * user now does 'write file' and has lost a route Let's make sure we only delete the route if we added it previously. Change-Id: I9ad5f7ebe0790e6c186b8ea1b12f204860a00cd2 Related: SYS#5422
2021-04-29osmo_ss7: Truncate route 'mask' to point code bit lengthHarald Welte2-0/+21
Otherwise we run into the problem that a route with mask 0xffffff differs from one with a mask of 0x3fff despite having only 14 bit point code length and them being logically equal. Change-Id: I5d5c828de45724d93a0461bb0dd7858fd8378acd Related: SYS#5422
2021-04-26ipa: Move automatic route add/del from ASP to AS levelHarald Welte2-55/+64
SS7 routes operate on AS level, not ASP level. However, the automatic SS7 route creation/destruction for IPA was implemented at the ASP level. This works for single-connection ASs, but obviously fails in load-share situations: We attempt to add the same route several times, and we delete it at the first ASP disconnect, even while other ASPs still exist. This patch moves the IPA route creation/deletion from the ASP level to the AS level. When the AS becomes active, the route is added; when it goes to DOWN state, it is removed. Change-Id: Idb602beae3e9bc19f7bd96355c02ec8dfd9c5d6c
2021-04-26Don't create duplicate routes in osmo_ss7_route_create()Harald Welte1-0/+9
Let's refuse to create exactly identical routes Change-Id: I520415d4499a4017dfdbdfc3cd67522e1bbd1627 Related: SYS#5422
2021-04-26ipa_asp_fsm: Fix AS lookup from IPA ASPHarald Welte1-4/+5
Contrary to proper SIGTRAN, IPA/SCCPlite cannot support multiple AS within one ASP. When looking up the AS from the ASP, we cannot blindly use routing context 0 to find the AS, as there may very well be multiple IPA AS, and all of those have routing context 0. As a result, the exiting look-up by osmo_ss7_as_find_by_rctx(inst, 0) will return the wrong AS, and we will try to add/delete routes for a completely different AS when ASPs are coming up or going down. Instead, we need to use xua_find_as_for_asp() in order do the look-up: It will resolve the single AS within the ASP. Change-Id: Id295daf84f6ba1cc56cbe1761f874bea329e17ea Cloess: SYS#5422
2021-04-25osmo_ss7: Log route destruction (like we log route creation)Harald Welte1-0/+6
Change-Id: I503cc97db5f907610074cb513299a3a8505e00e5
2021-04-25don't log "SCTP connection close" if an IPA/TCP connection closesHarald Welte1-2/+1
The xua_srv_conn_closed_cb() function is shared/generic. Let's simply write "connection closed" to avoid any confusion. As the ASP name is printed, it should be clear which L4 protocol was used. Change-Id: I506ccc2665a6b0af0fde3961e7e7937af7a81219
2021-04-25ipa_asp_fsm_del_route(): Log what happens if we bail out earlyHarald Welte1-6/+16
Let's inform the user about situations in which we'd want to delete the route for an IPA client, but we run into some problem and bail out early. Change-Id: Ie3f57d22901f169afb2c844476b5839cc36752aa Related: SYS#5422
2021-04-25ipa: Use VTY-configured default network indicatorHarald Welte1-0/+1
When we receive a message from an IPA/SCCPlite connection, we only have SCCP global titles and no underlying M3UA. We since have to introduce a fake M3UA header. While we correctly set the SI, OPC and DPC, we didn't set the NI to what is configured as default for the cs7 instance in the VTY. For international, this problem was hidden by the fact that international is '0' and hence our default memory initialization. Change-Id: I02c618fa0a0aa2a859fcd56397df9637043c8e6e Closes: SYS#5421
2021-03-21Add README.md describing what this repo is aboutHarald Welte1-0/+63
Change-Id: I965dadf1ef4a8340f6995ec745607c28e7bb1f89
2021-02-23Bump version: → Espin Pedrol6-13/+81
Change-Id: I017147905ffb69829d010f3e8416c8c5d80e7040
2021-02-23stp: generate coredump and exit upon SIGABRT receivedPau Espin Pedrol1-5/+14
Previous code relied on abort() switching sigaction to SIG_FDL + retriggering SIGABRT in case the signal handler returns, which would then generate the coredump + terminate the process. However, if a SIGABRT is received from somewhere else (kill -SIGABRT), then the process would print the talloc report and continue running, which is not desired. Change-Id: Idca8e360968cb6998591737348ce520954e251b2 Fixes: OS#4865
2021-02-23manuals: generate vty reference xml at build timeHarald Welte3-1939/+8
Rremove osmo-stp_vty_reference from the source tree. In manuals/Makefile.am use the new BUILT_REFERENCE_XML feature recently added to osmo-gsm-manuals, and add a build target to generate the XML using the new osmo-stp --vty-ref-xml cmdline switch. Change-Id: I5bcbbdf7b737d2ce36ea877bc78c8cf191a64e1b Depends: I613d692328050a036d05b49a436ab495fc2087ba Related: OS#5041
2021-02-23main: add --vty-ref-mode, use vty_dump_xml_ref_mode()Harald Welte1-5/+40
Change-Id: Ia5abf7457ee7e97ec3fcd5520e5ef82ef808667a Related: OS#5041 Depends: Ie2022a7f9e167e5ceacf15350c037dd43768ff40
2021-02-23Add osmo_ss7_pointcode_print_buf() to APIHarald Welte2-3/+4
Like osmo_ss7_pointcode_print(), but prints into an user-supplied buffer. Change-Id: I5fc7d7746eb90a9d404b6b50bf9ded6789a1c33c
2021-02-19tests: Replace deprecated API log_set_print_filenamePau Espin Pedrol2-2/+2
Change-Id: Id09f903fc5008d074763441a26d71c4fbaf394d8