Commit 30621d83 authored by Sridhar Samudrala's avatar Sridhar Samudrala

[SCTP] Fix HEARTBEAT_ACKs being sent to wrong dest. ip address in a

multi-homing scenario after a failback.
Signed-off-by: default avatarJorge Hernandez-Herrero <jhh@lucent.com>
Signed-off-by: default avatarSridhar Samudrala <sri@us.ibm.com>
parent af141635
...@@ -706,10 +706,19 @@ int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout) ...@@ -706,10 +706,19 @@ int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout)
if (!new_transport) { if (!new_transport) {
new_transport = asoc->peer.active_path; new_transport = asoc->peer.active_path;
} else if (!new_transport->active) { } else if (!new_transport->active) {
/* If the chunk is Heartbeat, send it to /* If the chunk is Heartbeat or Heartbeat Ack,
* chunk->transport, even it's inactive. * send it to chunk->transport, even if it's
* inactive.
*
* 3.3.6 Heartbeat Acknowledgement:
* ...
* A HEARTBEAT ACK is always sent to the source IP
* address of the IP datagram containing the
* HEARTBEAT chunk to which this ack is responding.
* ...
*/ */
if (chunk->chunk_hdr->type != SCTP_CID_HEARTBEAT) if (chunk->chunk_hdr->type != SCTP_CID_HEARTBEAT &&
chunk->chunk_hdr->type != SCTP_CID_HEARTBEAT_ACK)
new_transport = asoc->peer.active_path; new_transport = asoc->peer.active_path;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment