aboutsummaryrefslogtreecommitdiffstats
path: root/src/ipa.c
AgeCommit message (Collapse)AuthorFilesLines
2023-12-07ipa: Fix client setting unit_id with ASP name instead of ASPau Espin Pedrol1-2/+2
This was broken since ever. The client was submitting the ASP name in the unit_id field during IPA handshake, and the server was expecting it to contain the AS, so it failed with message: "Cannot find any definition for IPA Unit Name '%s'" in ipa_asp_fsm_wait_id_resp(). Fixes: 5f0a8df34cae20455a520c3a85cf94124f486bf2 Change-Id: I249964e171f578726439c40e01ae85aa447afada
2023-09-01ipa: use LSBs of file descriptor as SLS in IPA->M3UA directionHarald Welte1-3/+5
when IPA/SCCPlite traffic traverses the osmo_ss7 stack, so far the SLS of the MTP3 label was always set to 0 (default initialization). However, in order to achieve a better distribution of signaling traffic in SS7 networks that actually utilize the SLS to select any links (or ASPs), it makes sense to use non-zero values. Instead of introducing some kind of new, configurable attribute for each ASP (IPA client connection), let's simply use the lower 4 bits of the file descriptor integer. Those file descriptors should have a roughly equal distribution, resulting in traffic (from multiple IPA clients) to be spread across the 4-bit SLS number space. Also, this mechanism ensures that traffic from one IPA client will always get the same SLS and hence routed the same way in any underlying CS7/SS7 network. Change-Id: Ice7bab997b84cfed00c7d6d780c70f4e9fac6002 Related: SYS#6543
2021-11-15spelling fixes in commentsHarald Welte1-2/+2
Change-Id: I4ecd9a1c5241cfd3a3e1daf05f7826876371369f
2021-11-15stp: Add basic RX/TX rate counters on AS and ASP levelHarald Welte1-0/+3
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-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
2019-10-19ipa: VTY config option to explicitly enable/disable SCCP patchingHarald Welte1-4/+6
When receiving SCCP messages from an IPA peer/ASP, osmo-stp so far unconditionally inserted origin/destination point codes int the SCCP called / calling party addresses. This behaviro is now made optional with the introduction of the following per-AS configuration: "point-code override patch-sccp (disabled|both)" The default behavior is switched from 'both' to 'disabled' at the same time. Change-Id: I535e2170adadfe755d2bcbf5bbf4556bebb77737 Closes: OS#4219
2019-10-19ipa: Fix crash when parsing of received IPA SCCP message failsHarald Welte1-0/+6
If an IPA ASP is sending us a SCCP message that cannot be parsed, we shouldn't crash but handle this gracefully. Change-Id: Ib7a8c2a36dd1b82ca8ed472760c1682ede50cb90 Fixes: OS#4236
2019-10-19ipa: Don't send non-SCCP data over IPA/SCCPliteHarald Welte1-0/+8
The IPA/SCCPlite stacking is - as the name implies - constrained to the transport of SCCP messages. We have to reject any non-SCCP payload. Change-Id: I5e5a2879013ee8cf08aa4199b4bee498dcb61446 Fixes: OS#4235
2018-07-12fix two memleaks in ipa_rx_msg_sccp()Neels Hofmeyr1-2/+5
1: Do not call xua_msg_alloc() which is later bluntly overwritten by m3ua_xfer_from_data(). 2: After dispatching to m3ua_hmdc_rx_from_l2(), call xua_msg_free(). Related: OS#3393 Change-Id: I0918f9bbc15b036619f1c25a133b69819b2a30fa
2018-07-11fix memleak in ipa_rx_msg_sccpNeels Hofmeyr1-0/+1
After m3ua_xfer_from_data() has copied the msgb data, we need to free the msgb. Change-Id: I2263751c0aa3ae32455847c7622af8be0a1e7802
2018-06-08Introduce osmo_ss7_register_rx_unknown_cb() for unknown PPID/StreamIDHarald Welte1-3/+1
Applications may be interested in handling data for those SCTP PPID or IPA StreamID which libosmo-sigtran doesn't implement natively/internally. Let's add osmo_ss7_register_rx_unknown_cb() using which applications can register a call-back to implement whatever behaviour they'd want for those PPID/StreamIDs. Change-Id: I8616f914192000df0ec6547ff4ada80e0f9042a2
2017-11-13Add SPDX-License-Identifier + missing copyright statementsHarald Welte1-0/+2
Change-Id: I113232bbeaa7a835871df7f9b883ba573d8a2534
2017-11-12ipa: Patch DPC/OPC information into SCCP Calling/Called Party AddressHarald Welte1-15/+92
When we receive a SCCPlite message from an IPA peer, it may simply contain a SSN number but no point codes. Similarly to creating a fake MTP routing label from override DPC and routing key OPC, we can also add that point code information to the SCCP header. This way the rest of the SS7 network can handle the message and route it accordingly. Change-Id: I4a2ff063e3c060641b3fd181a1cd600da3ec568b
2017-11-10ipa: Fix endianness of pseud-M3UA headerHarald Welte1-6/+7
Change-Id: I70b420fc2105bb6e486adecf9285fed2fb471f73
2017-11-09ipa: Fix setting of OPC/DPC based on routing-context + overrideHarald Welte1-0/+2
As IPA is a transport layer underneath SCCP, and we don't have MTP-level OPC and DPC fields in it, we are using the "point-code override dpc" feature for setting the pseudo-M3UA DPC on incoming Rx packets, and we use the PC from the routing context as pseudo-M3UA OPC. However, we were so far only storing this in the M3UA data header, and not in the xua->mtp.{opc,dpc} members, which are consulted during the routing decisions. Change-Id: I5e2244620cd48f848382eb595ce59c6212069788
2017-04-25Fix debian buildsMax1-0/+1
Add missing libosmogsm dependency. Change-Id: I6e5cf393ffe81c582966ca0e9479e6deeffa9280 Fixes: OS#2182
2017-04-18IPA: Override/Set point codesHarald Welte1-2/+34
As an IPA SCCPlite message arrives without any MTP routing label, we simply construct one artificially for all inbound IPA/SCCPlite packets: * we set the SPC to the point-code of the routing key of the AS (as this is the PC we route to this IPA/SCCPlite client anyway) * we set the DPC to a point-code from a new vty config command "point-code override dpc" Change-Id: Id556398e1ded3e613cfde7ea8b71aff7a414ff90
2017-04-18Add IPA/SCCPlite support as SIGTRAN alternativeHarald Welte1-0/+182
This tries as good as possible to fit the IPA/SCCPlite stacking into the existing SIGTRAN/SS7 code architecture/model. To the user, the IPA protocol looks like yet another protocol on the same level as the choice between SUA and M3AU. On the inside, things are obviously quite different. We need to handle TCP with IPA framing instead of SCTP for both server and client. We also implement an alternative "ASP FSM" for IPA, which takes care of the CCM handshake (ID_REQ/ID_RESP/ID_ACK/ID_ACK2) for both client and server mode. In server mode, we use the 'unit name' as identifier to look up the AS, similar to how we use a routing context to look up the AS in the xUA case. We also have to bypass activating the default layer manager in the simple client to make sure we don't run into even more complexity. What's missing right now is some way to manually override/set the point codes. As IPA/SCCPlite is missing any routing label, we currently simply generate one with SPC=0/DPC=0, which will obviously not work in most configurations. Change-Id: I9098574cddeba10fcf8f1b6c196a7069a6805c56