aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/osmo_ss7_asp.c4
-rw-r--r--src/osmo_ss7_xua_srv.c2
-rw-r--r--src/ss7_internal.h2
3 files changed, 5 insertions, 3 deletions
diff --git a/src/osmo_ss7_asp.c b/src/osmo_ss7_asp.c
index f211872..5bab5ff 100644
--- a/src/osmo_ss7_asp.c
+++ b/src/osmo_ss7_asp.c
@@ -458,7 +458,7 @@ static void chop_v4_mapped_on_v6_prefix(char *buf)
* \param[in] fd socket descriptor of given socket
* \returns SS7 ASP in case a matching one is found; NULL otherwise */
struct osmo_ss7_asp *
-ss7_asp_find_by_socket_addr(int fd)
+ss7_asp_find_by_socket_addr(int fd, int trans_proto)
{
struct osmo_ss7_instance *inst;
struct sockaddr_storage sa_l, sa_r;
@@ -505,6 +505,8 @@ ss7_asp_find_by_socket_addr(int fd)
llist_for_each_entry(inst, &osmo_ss7_instances, list) {
struct osmo_ss7_asp *asp;
llist_for_each_entry(asp, &inst->asp_list, list) {
+ if (asp->cfg.trans_proto != trans_proto)
+ continue;
if (asp->cfg.local.port != local_port)
continue;
if (asp->cfg.remote.port && asp->cfg.remote.port != remote_port)
diff --git a/src/osmo_ss7_xua_srv.c b/src/osmo_ss7_xua_srv.c
index 0b83b19..6da7b7a 100644
--- a/src/osmo_ss7_xua_srv.c
+++ b/src/osmo_ss7_xua_srv.c
@@ -101,7 +101,7 @@ static int xua_accept_cb(struct osmo_stream_srv_link *link, int fd)
return -1;
}
- asp = ss7_asp_find_by_socket_addr(fd);
+ asp = ss7_asp_find_by_socket_addr(fd, oxs->cfg.trans_proto);
if (asp) {
LOGP(DLSS7, LOGL_INFO, "%s: matched connection to ASP %s\n",
sock_name, asp->cfg.name);
diff --git a/src/ss7_internal.h b/src/ss7_internal.h
index ed4fae7..758da90 100644
--- a/src/ss7_internal.h
+++ b/src/ss7_internal.h
@@ -20,7 +20,7 @@ struct osmo_ss7_asp *ss7_asp_alloc(struct osmo_ss7_instance *inst, const char *n
bool ss7_asp_set_default_peer_hosts(struct osmo_ss7_asp *asp);
bool ss7_asp_is_started(const struct osmo_ss7_asp *asp);
int ss7_asp_get_fd(const struct osmo_ss7_asp *asp);
-struct osmo_ss7_asp *ss7_asp_find_by_socket_addr(int fd);
+struct osmo_ss7_asp *ss7_asp_find_by_socket_addr(int fd, int trans_proto);
bool ss7_asp_protocol_check_trans_proto(enum osmo_ss7_asp_protocol proto, int trans_proto);
int ss7_default_trans_proto_for_asp_proto(enum osmo_ss7_asp_protocol proto);