diff options
author | Frank Filz <ffilzlnx@us.ibm.com> | 2005-06-20 16:14:57 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2005-06-20 16:14:57 -0400 |
commit | 3f7a87d2fa9b42f7aade43914f060df68cc89cc7 (patch) | |
tree | 15162d2dd770428f98a0d39f8dc6063aba0ad1e6 /net/sctp/outqueue.c | |
parent | 8b22c249e7de453961e4d253b19fc2a0bdd65d53 (diff) |
[SCTP] sctp_connectx() API support
Implements sctp_connectx() as defined in the SCTP sockets API draft by
tunneling the request through a setsockopt().
Signed-off-by: Frank Filz <ffilzlnx@us.ibm.com>
Signed-off-by: Sridhar Samudrala <sri@us.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp/outqueue.c')
-rw-r--r-- | net/sctp/outqueue.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c index 1b2d4adc4ddb..4eb81a1407b7 100644 --- a/net/sctp/outqueue.c +++ b/net/sctp/outqueue.c | |||
@@ -682,9 +682,9 @@ int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout) | |||
682 | 682 | ||
683 | if (!new_transport) { | 683 | if (!new_transport) { |
684 | new_transport = asoc->peer.active_path; | 684 | new_transport = asoc->peer.active_path; |
685 | } else if (!new_transport->active) { | 685 | } else if (new_transport->state == SCTP_INACTIVE) { |
686 | /* If the chunk is Heartbeat or Heartbeat Ack, | 686 | /* If the chunk is Heartbeat or Heartbeat Ack, |
687 | * send it to chunk->transport, even if it's | 687 | * send it to chunk->transport, even if it's |
688 | * inactive. | 688 | * inactive. |
689 | * | 689 | * |
690 | * 3.3.6 Heartbeat Acknowledgement: | 690 | * 3.3.6 Heartbeat Acknowledgement: |
@@ -840,7 +840,8 @@ int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout) | |||
840 | * Otherwise, we want to use the active path. | 840 | * Otherwise, we want to use the active path. |
841 | */ | 841 | */ |
842 | new_transport = chunk->transport; | 842 | new_transport = chunk->transport; |
843 | if (!new_transport || !new_transport->active) | 843 | if (!new_transport || |
844 | new_transport->state == SCTP_INACTIVE) | ||
844 | new_transport = asoc->peer.active_path; | 845 | new_transport = asoc->peer.active_path; |
845 | 846 | ||
846 | /* Change packets if necessary. */ | 847 | /* Change packets if necessary. */ |
@@ -1454,7 +1455,7 @@ static void sctp_check_transmitted(struct sctp_outq *q, | |||
1454 | /* Mark the destination transport address as | 1455 | /* Mark the destination transport address as |
1455 | * active if it is not so marked. | 1456 | * active if it is not so marked. |
1456 | */ | 1457 | */ |
1457 | if (!transport->active) { | 1458 | if (transport->state == SCTP_INACTIVE) { |
1458 | sctp_assoc_control_transport( | 1459 | sctp_assoc_control_transport( |
1459 | transport->asoc, | 1460 | transport->asoc, |
1460 | transport, | 1461 | transport, |