aboutsummaryrefslogtreecommitdiffstats
path: root/src/sctp_m2ua.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sctp_m2ua.c')
-rw-r--r--src/sctp_m2ua.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/sctp_m2ua.c b/src/sctp_m2ua.c
index cdcf8cf..862c701 100644
--- a/src/sctp_m2ua.c
+++ b/src/sctp_m2ua.c
@@ -151,6 +151,8 @@ static int m2ua_handle_asp_ack(struct sctp_m2ua_conn *conn,
struct m2ua_msg *m2ua,
struct sctp_sndrcvinfo *info)
{
+ struct sctp_m2ua_transport *trans = conn->trans;
+ struct sctp_m2ua_conn *tmp;
struct m2ua_msg_part *asp_ident;
struct m2ua_msg *ack;
@@ -181,6 +183,19 @@ static int m2ua_handle_asp_ack(struct sctp_m2ua_conn *conn,
memcpy(conn->asp_ident, asp_ident->dat, 4);
conn->asp_up = 1;
+ /* some verification about the ASPs */
+ llist_for_each_entry(tmp, &trans->conns, entry) {
+ if (tmp != conn)
+ continue;
+ if (memcmp(tmp->asp_ident, conn->asp_ident, 4) != 0)
+ continue;
+ LOGP(DINP, LOGL_ERROR,
+ "Two active SCTP conns with %d.%d.%d.%d on %p, %p\n",
+ conn->asp_ident[0], conn->asp_ident[1],
+ conn->asp_ident[2], conn->asp_ident[3],
+ tmp, conn);
+ }
+
m2ua_msg_free(ack);
return 0;
}