summaryrefslogtreecommitdiffstats
path: root/net/dccp/output.c
diff options
context:
space:
mode:
authorGerrit Renker <gerrit@erg.abdn.ac.uk>2006-11-13 13:34:38 -0200
committerDavid S. Miller <davem@sunset.davemloft.net>2006-12-02 21:22:22 -0800
commitd7f7365f5776723da6df73540d855069c2daaa5c (patch)
treecc63c8a85c4d6a768cee8da00577900215e786a8 /net/dccp/output.c
parent865e9022d88ceedd89fa1079a6e1f9266ccd3711 (diff)
downloadlinux-d7f7365f5776723da6df73540d855069c2daaa5c.tar.gz
linux-d7f7365f5776723da6df73540d855069c2daaa5c.tar.bz2
linux-d7f7365f5776723da6df73540d855069c2daaa5c.zip
[DCCPv6]: Choose a genuine initial sequence number
This * resolves a FIXME - DCCPv6 connections started all with an initial sequence number of 1; * provides a redirection `secure_dccpv6_sequence_number' in case the init_sequence_v6 code should be updated later; * concentrates the update of S.GAR into dccp_connect_init(); * removes a duplicate dccp_update_gss() in ipv4.c; * uses inet->dport instead of usin->sin_port, due to the following assignment in dccp_v4_connect(): inet->dport = usin->sin_port; Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk> Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
Diffstat (limited to 'net/dccp/output.c')
-rw-r--r--net/dccp/output.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/net/dccp/output.c b/net/dccp/output.c
index 08ee5547a2f2..0994b13f0f15 100644
--- a/net/dccp/output.c
+++ b/net/dccp/output.c
@@ -448,7 +448,6 @@ static inline void dccp_connect_init(struct sock *sk)
dccp_sync_mss(sk, dst_mtu(dst));
- dccp_update_gss(sk, dp->dccps_iss);
/*
* SWL and AWL are initially adjusted so that they are not less than
* the initial Sequence Numbers received and sent, respectively:
@@ -457,8 +456,13 @@ static inline void dccp_connect_init(struct sock *sk)
* These adjustments MUST be applied only at the beginning of the
* connection.
*/
+ dccp_update_gss(sk, dp->dccps_iss);
dccp_set_seqno(&dp->dccps_awl, max48(dp->dccps_awl, dp->dccps_iss));
+ /* S.GAR - greatest valid acknowledgement number received on a non-Sync;
+ * initialized to S.ISS (sec. 8.5) */
+ dp->dccps_gar = dp->dccps_iss;
+
icsk->icsk_retransmits = 0;
init_timer(&dp->dccps_xmit_timer);
dp->dccps_xmit_timer.data = (unsigned long)sk;