Skip to content

Loading builds...

Changes

#986 (Feb 16, 2026, 11:01:07 AM)

xua_asp_fsm: Validate remote ASP Id matching config in SG role

The node in SG role really doesn't have an ASP Id of its own (it is
never sent over the wire). Hence, use the "asp-identifier <N>" VTY
config in SG role to require the ASP to identify itself with a given
ASP identifier.

Related: OS#6953
Change-Id: I3e22439aa7e22f7a6113b093c44ace6745c808b9
Pau Espin Pedrol at

#985 (Feb 16, 2026, 10:56:11 AM)

m3ua: Fix missing break in m3a_rx_snm for IPSP

Related: Coverity CID#557519
Fixes: e597f08dde51361434a027dc4362a5698220afb6
Change-Id: I387794b0a736ee8419e7d12dc0f586aa30b9ac26
Pau Espin Pedrol at
Introduce struct osmo_ss7_as_asp_assoc

This new struct allows supporting unlimited number of ASPs per AS.
It can also potentially be used in the future to:
* Hold M3UA "ASP Identifier" per AS<->ASP association
* Speed up iterating over AS served by a given ASP.

NOTE: Having >16 ASPs per AS may not be desirable, for instance under
loadshare traffic mode ITU SLS is 4 bit, so despite having ext_sls
extending the table to 128 entries based on OPC, it may not provide
enough entropy to properly loadshare among all of them.

Related: OS#7519
Change-Id: I149ab467899633ac50cba3e482b2cae02124279d
Pau Espin Pedrol at
ss7_as: Optimize ASP Tx selection in Override traffic mode

Cache the last selected ASP, and expect it to still be the active ASP
most of the time until it changes.

Change-Id: I3d480d23591f4bd216293be60b22389b182fd8f3
Pau Espin Pedrol at
tests/vty: Introduce testTonsOfASP

Add test to validate tons of ASPs (1000) can be configured, all serving
one given AS.

Related: SYS#7519
Change-Id: I9bfcfcbea3c4cec0e6284ae59d30670fcf3ccac4
Pau Espin Pedrol at
tests/vty: Introduce testASPservesTonsOfAS

Change-Id: I39016a479fde7d61b7c0f39ca769cd8c958b55b6
Pau Espin Pedrol at
asp: Introduce asp->assoc_as_list

This way we can iterate easily/quickly the AS served by a given ASP.
This in turn allows simplifying some code since we cache the amount of
AS served by the ASP at any time, so we save some counting.

Related: SYS#6953
Change-Id: I1ca90748286374109dbb4277cbc7b2337ce2072a
Pau Espin Pedrol at
ss7_as: Optimize ss7_as_asp_assoc_find()

Look for counterpart on the object with the shortest list, ie. convert
from O(N) to O(min(N,M)).
This way eg. if we have 100 ASPs on 1 AS, lookup time becomes O(1).
Same if we have eg. 1 ASP serving 100 AS.

Change-Id: I139aede15af6b6a77d19e6fcf6b6abe8ed6599a6
Pau Espin Pedrol at
xua_default_lm_fsm: Submit RKM REG REQ for all AS in ASP

So far only the first rctx (AS) was being registered.
This fixes RKM for ASPs serving multiple AS in ASP/IPSP role.

Relted: OS#6943
Change-Id: I932c1b05dfd37fd7b89adea0d1ea59a5dc6138b4
Pau Espin Pedrol at
xua_as_fsm: Remove TODO no longer valid

Routing Context is filled in in fill_notify_route_ctx().

Take the chance to move the logging a bit up in the function, to have
all npar filling together.

Change-Id: I57af18dacc0470d36ddd4705a9530bd44b31f9c0
Pau Espin Pedrol at
Allow configuring local ASP Identifier

If configured, it will be transmitted during ASP UP and ASP UP ACK.
This may be needed if facing an SG/IPSP peer who requires ASP Identifier
to be set.

Related: OS#6953
Change-Id: Ib94d542f940e13d5c007bc3319e7dde65cf81f12
Pau Espin Pedrol at
xua_asp_fsm: Remove obvious comments

Those can already be interpretred directly by the ENSURE_* macros.
No need to clog the file with more lines describing stuff.

Change-Id: Idec06646c48fbce4cbe200e88f987dfb3e9d5a39
Pau Espin Pedrol at
xua_asp_fsm: Error on ASP UP (ACK) with non-unique ASP Identifier

Following RFC4666:
"""
   The "Invalid ASP Identifier" error is sent by an SGP in response to
   an ASP Up message with an invalid (i.e., non-unique) ASP Identifier
"""

Change-Id: I2d422acaa2f04c7d1eebd92c3185c4f5476a1789
Pau Espin Pedrol at
cosmetic: xua_as_fsm: Fix mixed brace/no-brace blocks in if/else

Change-Id: Ibfd818d354c09409b04b392853f544a220de3a72
Pau Espin Pedrol at

#975 (Feb 11, 2026, 3:01:07 PM)

xua_default_fsm: Support IPSP role

Change-Id: Id9ad8bbfce5cf15fedcba83034ae383e61d3b3a3
Pau Espin Pedrol at
xua_as_fsm: Trigger PC (un)availability to upper layers in IPSP

Same as done in ASP. This is specially important in IPSP in order to
trigger availability/unavailability of PCs defined in the SCCP
addressbook.

Change-Id: I0e6015f04ad0647cc151d3c772355a18cb55547a
Pau Espin Pedrol at
xua_aspm_fsm: Remove unneeded workaround submitting XUA_ASP_E_M_ASP_ACTIVE_REQ

Sending that kind of event is up to the layer manager.
Right now, all ASPs (except ipa_aspm_fsm, which doesn't need that event
because there's no ACTIVATE in IPA) have an associated layer manager
FSM, so that workaround is not needed.

Change-Id: If6c2c5b6ffc4080320aadc550d823abc5d613d6f
Pau Espin Pedrol at
sua: Support rx SCON in role=ASP

Change-Id: I1e4146c2cb8fab460d5e810b602c20293272c2e4
Pau Espin Pedrol at
sua: Support rx SCON in role=SG

Change-Id: Ide2b4f876ddbdb1bb0bfed11fad6fc13aaf1afda
Pau Espin Pedrol at
sua: Support rx SCON in role=IPSP

Change-Id: I3f46b634084c1d71643812828d4f114ab45dffde
Pau Espin Pedrol at
xua: Allow rx DAUD in IPSP with quirk daud_in_asp

That quirk was added back in time most probably when interacting with
some peer who claimed to be in SG mode but actually was in IPSP mode.
Hence, to be on the safe side, be relaxed and allow accepting DAUD also
if the quirk is added, otherwise it may be impossible to continue
communication with that faulty peer.
In theory according to spec DAUD should only be sent ASP->SG.

Change-Id: I8ad0889f4584446f8b01f1255498f57e0cd34012
Pau Espin Pedrol at
xua: Improve logging around unexpected snm messages

Log rx of unexpected message type according to configured role.
Decrease verbosity of DAUD logging to match the new logging.

For SUA we can use M3UA's m3ua_snm_msgt_names because the value/strings
are the same and they are actually used through m3ua_msg_class_snm in
xua_dialect_sua.

Change-Id: I697e52dfd733cb9ee260bba133204a7462c4e8ee
Pau Espin Pedrol at
xua_snm: assert for unexpected condition

The rx DUNA/DAVA/DUPU paths are already guarded at m3ua.c and sua.c to
only call xua_snm_rx_{duna,dava,dupu}() in ASP role. Hence, calling
those functions is expected to always happen in ASP role.

Change-Id: I24bb335a2a856bf1a5ca255f7afbfe103ebcd86f
Pau Espin Pedrol at
cosmetic: ss7_asp.h: Drop comment no longer valid

Since a while ago, only the remote asp ID is stored in
asp->remote_asp_id. The SLS has its own field (ipa.sls).

Fixes: b8fe5e4a1adfb54f265efc81432eab6252e9b04f
Change-Id: I2253b1cb9e24270b9d6b3400d3fa20827c66ad23
Pau Espin Pedrol at

#974 (Feb 11, 2026, 2:31:09 PM)

m3ua: Allow rx SCON in IPSP role

Change-Id: I49838219aab912243a761ab9b5167095e363c72b
Pau Espin Pedrol at
vty: Prohibit configuring an IPA ASP as IPSP

We could eventually define how the IPA CCM is expected to behave when in
IPSP role (eg. implementing/allowing both sides of IPA CCM, or assigning
an IPA CCM role based on TCP client/server), but that has not yet been
defined.

IPSP is actually a good candidate for IPA ASPs, since in IPA proto we
don't have SNM messaging either, and it's meant to be used
point-to-point (or through STP by assigning hardocded routes).

Change-Id: I18ad3e9ad4aac7a3d8e84483ba1bf09016520b54
Pau Espin Pedrol at
xua_rkm: Adapt RKM code to support IPSP

Related: OS#6474
Change-Id: I9c59d6fb43d4e7ceda552f156dd7761173545b11
Pau Espin Pedrol at
xua_asp_fsm: Improvements to support IPSP

Change-Id: Ia268848ee9bb2f97a47ba9be60ecd16fbeb4fb40
Pau Espin Pedrol at

#969 (Feb 9, 2026, 2:31:09 PM)

vty: Allow configuring xua timers in ASP mode

non-STP users of the API may also want to configure per-ASP timers, like
the Heartbeat timer.

Change-Id: I3801d10175f42c13e6f7994e1e4da8e7c99e8e16
Pau Espin Pedrol at
vty: Allow configuring xua server in ASP mode

The xua server has nothing to do with a node being an ASP or an SG,
it used to allow transport server features (SCTP/TCP server).
One may want to configure an ASP role with a SCTCP server.

Change-Id: I9b07d2c96404b7b86c51fd9c7bab5e52a2343ade
Pau Espin Pedrol at
Move osmo_xua_layer_manager definition to ss7_asp.h

The struct osmo_xua_layer_manager has no relation to a xua_server, hence
move it to ss7_asp.h, where it is used.

Change-Id: If7efb8996de0c407f5a466ff959095c8872ddc76
Pau Espin Pedrol at
Document osmo_xua_layer_manager prim_cb

Change-Id: I1347c3538435985836ee5fe1d9dd42996e32ff94
Pau Espin Pedrol at
ss7_asp: remove lm during ASP destroy

Otherwise the xua_default_lm_fsm instance is freed with talloc_free()
instead of osmo_fsm_inst_free().

Change-Id: Iee339b49d4b73a9afde60c4b8f6f5a03ad8a822d
Pau Espin Pedrol at
Move osmo_xlm_sap_down to ss7_asp.c

That's a generic function to interact with the ASP from the LM.
Only some of the primitives are related to RKM.

Change-Id: I9a8d0e0fc1fd193db8dd3901911848ed8564616f
Pau Espin Pedrol at
Refactor xua_layer_manager object

Several changes to improve separation of the LM object and its
lifecycle:
* Store in ss7_asp a pointer to a xua_layer_manager, which contains all
  implementation dependent information inside its priv pointer.
* Add a new free_func field to the xua_layer_manager struct in order to
  be able to free it without knowing how it was allocated.
* Get rid og the loglevel param, LOGL_DEBUG was always passed and that
  was actually an implementation specific detail of the default xua
  layer manager.
* Pass pointer to function to be called by LM to submit primitives to
  M3UA.

Change-Id: Ia96ebf40444f46ad718d61befbecb523f267fd6c
Pau Espin Pedrol at
xua_default_lm_fsm: Move timer_cb further below

As usually done in osmo_fsm implemnetations.

Change-Id: Ibdc04d9ece0b3955da44849755a87ec28c17f140
Pau Espin Pedrol at
lm: Use layer manager also on transport-role=server

The upper layers (M3UA) should behave similarly eg. on role ASP
independently of transport role being client or server.

Change-Id: I5f0109463323f214e15610b2c4fe253b828fce3b
Pau Espin Pedrol at
lm: Initialize layer manager also on role=SG

Right now the LM will stay in IDLE for role=SG, but it already provides
with an easier logic where all xUA ASPs (no matter their role) have an
associated FSM object, which can be extnded later on.
This way we already valdiate the FSM instance lifecycle wroks as
expected.
It also allows in the future more easily integrating the LM in role
IPSP, where it will need to be extended.

Change-Id: I1f25cf8371ba72d710796e01a9a967d3fafffb99
Pau Espin Pedrol at
IPSP: don't route any incoming M3UA messages in IPSP case

An IPSP is a point-to-point association, and we must not route any
such messages.

Change-Id: Iad7280619ec5814cda7a179418079048a5955976
Pau Espin Pedrol at
IPSP: Add a comment that it's intentional to drop all M3UA SNM for IPSP

An IPSP doesn't have MTP3 network management.

Change-Id: I7b87bf03964e7e9aac683ad860e511f83a685821
Pau Espin Pedrol at
IPSP: Allow vty-configuration of IPSP role "ASPs"

We should now have everything in place to support IPSP-SE, let's
accept enabling IPSP role via the VTY.

Change-Id: I0f0fa881471b87a4bb82a0211c6fb6e4c50b48ec
Pau Espin Pedrol at
vty: Prohibit configuring an ASP as IPSP in an SG node

The spec explicitly prohibits it.

Change-Id: I38bbd9226bad478f8068d02f7a4d7b3711596208
Pau Espin Pedrol at

#962 (Feb 6, 2026, 2:46:09 PM)

tcap_as_loadshare: Fix asp selection if no tcap-range was found

Keep doing loadshare round-robin style, but select only active asps that
have tcap enabled in the config.

Related: SYS#5423
Change-Id: I07e77548ecb75df9227487901b75018261bd1232
dwillmann at

#957 (Feb 4, 2026, 2:46:07 PM)

tcap: Log vty msg in CS7_ROLE_SG

This code was placed in the wrong section, since tcap features can only
be enabled in SG mode (STP).

Change-Id: I77cf19bdc8fa29dd4a28773ac0f954850cd76e1b
Pau Espin Pedrol at
cosmetic: xua_rkm: Improve description of adding ASP to AS

Change-Id: I57c6a810e081b0968cf2dc24357214a4cebe533b
Pau Espin Pedrol at

#956 (Feb 4, 2026, 2:21:07 PM)

sccp_scrc: Improve logging unable to find SCCP user

Change-Id: I9277624a260ee2f94f8cd059211aff53cfb50574
Pau Espin Pedrol at
xua_asp_fsm: Remove duplicated role field

The role is actually taken from the asp object, and it's not expected to
change during its lifetime, so there's no really a need to keep a copy
of it. Simplify the code by using the asp role everywhere.

Change-Id: Ia6de131ce50f07261736645fe5b2ed1ad39eb01b
Pau Espin Pedrol at
xua_rkm: Add checks for ASP role in rx msg path

Change-Id: I672060c24571586b37102c7f7f60e4b0e20e07a9
Pau Espin Pedrol at
cosmetic: Fix typo in comment

Change-Id: If5adb80baaae78cae7164e1f85c53195eafa6e3e
Pau Espin Pedrol at

#955 (Feb 4, 2026, 2:11:07 PM)

cosmetic: xua_as_fsm.c: Improve spec documentation

The specific spec paragraph talks about "Alternate ASP_Active"
scenario in quotes, which I could find right away by grepping
in the code. Improve the documentation so it can be easily matched in
code.

Change-Id: I79f5123d87dab79620657c2a2ebfd9fe22f178c3
Pau Espin Pedrol at

#936 (Jan 26, 2026, 9:16:05 PM)

xua: Implement User Part Unavailable HMDT -> HMRT

Related: OS#6891
Change-Id: Iab2ffc3a86243d5eeedcc4fd3d558796ede9afc3
Pau Espin Pedrol at
xua_snm: Fix typo in comment

Change-Id: I533809a0d319e75f2f18c706ddc4318503b9915a
Pau Espin Pedrol at