git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
net
/
sctp
/
transport.c
diff --git
a/net/sctp/transport.c
b/net/sctp/transport.c
index
160f62a
..
3e5936a
100644
(file)
--- a/
net/sctp/transport.c
+++ b/
net/sctp/transport.c
@@
-49,6
+49,7
@@
*/
#include <linux/types.h>
*/
#include <linux/types.h>
+#include <linux/random.h>
#include <net/sctp/sctp.h>
#include <net/sctp/sm.h>
#include <net/sctp/sctp.h>
#include <net/sctp/sm.h>
@@
-74,7
+75,7
@@
static struct sctp_transport *sctp_transport_init(struct sctp_transport *peer,
* parameter 'RTO.Initial'.
*/
peer->rtt = 0;
* parameter 'RTO.Initial'.
*/
peer->rtt = 0;
- peer->rto =
sctp_rto_initial
;
+ peer->rto =
msecs_to_jiffies(sctp_rto_initial)
;
peer->rttvar = 0;
peer->srtt = 0;
peer->rto_pending = 0;
peer->rttvar = 0;
peer->srtt = 0;
peer->rto_pending = 0;
@@
-85,7
+86,6
@@
static struct sctp_transport *sctp_transport_init(struct sctp_transport *peer,
peer->init_sent_count = 0;
peer->init_sent_count = 0;
- peer->state = SCTP_ACTIVE;
peer->param_flags = SPP_HB_DISABLE |
SPP_PMTUD_ENABLE |
SPP_SACKDELAY_ENABLE;
peer->param_flags = SPP_HB_DISABLE |
SPP_PMTUD_ENABLE |
SPP_SACKDELAY_ENABLE;
@@
-109,6
+109,9
@@
static struct sctp_transport *sctp_transport_init(struct sctp_transport *peer,
peer->hb_timer.function = sctp_generate_heartbeat_event;
peer->hb_timer.data = (unsigned long)peer;
peer->hb_timer.function = sctp_generate_heartbeat_event;
peer->hb_timer.data = (unsigned long)peer;
+ /* Initialize the 64-bit random nonce sent with heartbeat. */
+ get_random_bytes(&peer->hb_nonce, sizeof(peer->hb_nonce));
+
atomic_set(&peer->refcnt, 1);
peer->dead = 0;
atomic_set(&peer->refcnt, 1);
peer->dead = 0;
@@
-517,7
+520,9
@@
void sctp_transport_lower_cwnd(struct sctp_transport *transport,
unsigned long sctp_transport_timeout(struct sctp_transport *t)
{
unsigned long timeout;
unsigned long sctp_transport_timeout(struct sctp_transport *t)
{
unsigned long timeout;
- timeout = t->hbinterval + t->rto + sctp_jitter(t->rto);
+ timeout = t->rto + sctp_jitter(t->rto);
+ if (t->state != SCTP_UNCONFIRMED)
+ timeout += t->hbinterval;
timeout += jiffies;
return timeout;
}
timeout += jiffies;
return timeout;
}