pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-sigtran/+/39660?usp=email )
Change subject: ipa: Fix asp_id/SLS unset in tcp-server mode ......................................................................
ipa: Fix asp_id/SLS unset in tcp-server mode
Commit changing the value set to asp_id (used to derive SLS) for IPA conns only updated the asp_id value on the stream_cli code path, but not on the stream_srv one. As a result, on IPA conns with an underlaying TCP server conn, asp_id and SLS was always 0.
Fixes: 2c9ba16 "ipa: Use pseudo-random number for SLS in IPA->M3UA direction Change-Id: I6e166aa67da6103d541084a45e8dc5595241fe60 --- M src/osmo_ss7_asp.c M src/osmo_ss7_xua_srv.c 2 files changed, 10 insertions(+), 4 deletions(-)
Approvals: pespin: Looks good to me, approved Jenkins Builder: Verified fixeria: Looks good to me, but someone else must approve
diff --git a/src/osmo_ss7_asp.c b/src/osmo_ss7_asp.c index faf4a0a..503b31c 100644 --- a/src/osmo_ss7_asp.c +++ b/src/osmo_ss7_asp.c @@ -981,8 +981,8 @@ rc = ss7_asp_apply_primary_address(asp); } else { if (asp->cfg.proto == OSMO_SS7_ASP_PROT_IPA) { - /* we use the lower 4 bits of the asp_id feld as SLS; let's initialize it here from a - * pseudo-random value */ + /* we use the lower 4 bits of the asp_id field as SLS; + * let's initialize it here from a pseudo-random value */ asp->asp_id = rand() & 0xf; } } diff --git a/src/osmo_ss7_xua_srv.c b/src/osmo_ss7_xua_srv.c index 4962bfd..35e360f 100644 --- a/src/osmo_ss7_xua_srv.c +++ b/src/osmo_ss7_xua_srv.c @@ -61,7 +61,7 @@ * SS7 xUA Server ***********************************************************************/
-/* server has accept()ed a new SCTP association, let's find the ASP for +/* Server has accept()ed a new SCTP association / TCP connection, let's find the ASP for * it (if any) */ static int xua_accept_cb(struct osmo_stream_srv_link *link, int fd) { @@ -177,9 +177,15 @@ * data */ osmo_stream_srv_set_data(srv, asp);
- if (oxs->cfg.trans_proto == IPPROTO_SCTP) { + if (asp->cfg.trans_proto == IPPROTO_SCTP) { rc = ss7_asp_apply_peer_primary_address(asp); rc = ss7_asp_apply_primary_address(asp); + } else { + if (asp->cfg.proto == OSMO_SS7_ASP_PROT_IPA) { + /* we use the lower 4 bits of the asp_id field as SLS; + * let's initialize it here from a pseudo-random value */ + asp->asp_id = rand() & 0xf; + } }
/* send M-SCTP_ESTABLISH.ind to Layer Manager */