Re: [PATCH 1/6][SCTP]: Limit association max_retrans setting in setsockopt

2006-06-17 Thread David Miller
From: Sridhar Samudrala <[EMAIL PROTECTED]>
Date: Thu, 15 Jun 2006 15:46:12 -0700

> Please apply the following 6 SCTP patches to 2.6 tree.

Sridhar, I missed the 2.6.17 release but I will be sure
to queue these up for the first 2.6.17.x stable release.

Sorry about that.
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/6][SCTP]: Limit association max_retrans setting in setsockopt

2006-06-16 Thread David Miller
From: Sridhar Samudrala <[EMAIL PROTECTED]>
Date: Thu, 15 Jun 2006 15:46:12 -0700

> Please apply the following 6 SCTP patches to 2.6 tree.

Thanks Sridhar, I'll try to apply these soon.
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 1/6][SCTP]: Limit association max_retrans setting in setsockopt

2006-06-15 Thread Sridhar Samudrala
Dave,

Please apply the following 6 SCTP patches to 2.6 tree.

Thanks
Sridhar
-
[SCTP]: Limit association max_retrans setting in setsockopt.

When using ASSOCINFO socket option, we need to limit the number of
maximum association retransmissions to be no greater than the sum
of all the path retransmissions. This is specified in Section 7.1.2
of the SCTP socket API draft.
However, we only do this if the association has multiple paths. If
there is only one path, the protocol stack will use the
assoc_max_retrans setting when trying to retransmit packets.

Signed-off-by: Vlad Yasevich <[EMAIL PROTECTED]>
Signed-off-by: Sridhar Samudrala <[EMAIL PROTECTED]>

---
 net/sctp/socket.c |   26 +-
 1 files changed, 25 insertions(+), 1 deletions(-)

diff --git a/net/sctp/socket.c b/net/sctp/socket.c
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -2530,8 +2530,32 @@ static int sctp_setsockopt_associnfo(str
 
/* Set the values to the specific association */
if (asoc) {
-   if (assocparams.sasoc_asocmaxrxt != 0)
+   if (assocparams.sasoc_asocmaxrxt != 0) {
+   __u32 path_sum = 0;
+   int   paths = 0;
+   struct list_head *pos;
+   struct sctp_transport *peer_addr;
+
+   list_for_each(pos, &asoc->peer.transport_addr_list) {
+   peer_addr = list_entry(pos,
+   struct sctp_transport,
+   transports);
+   path_sum += peer_addr->pathmaxrxt;
+   paths++;
+   }
+
+   /* Only validate asocmaxrxt if we have more then
+* one path/transport.  We do this because path
+* retransmissions are only counted when we have more
+* then one path.
+*/
+   if (paths > 1 &&
+   assocparams.sasoc_asocmaxrxt > path_sum)
+   return -EINVAL;
+
asoc->max_retrans = assocparams.sasoc_asocmaxrxt;
+   }
+
if (assocparams.sasoc_cookie_life != 0) {
asoc->cookie_life.tv_sec =
assocparams.sasoc_cookie_life / 1000;


-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html