Browse Source

Merge branch 'dccp' of git://eden-feed.erg.abdn.ac.uk/net-next-2.6

David S. Miller 14 years ago
parent
commit
14934efab6
4 changed files with 7 additions and 3 deletions
  1. 1 0
      Documentation/networking/dccp.txt
  2. 2 1
      net/dccp/dccp.h
  3. 1 1
      net/dccp/input.c
  4. 3 1
      net/dccp/sysctl.c

+ 1 - 0
Documentation/networking/dccp.txt

@@ -167,6 +167,7 @@ rx_ccid = 2
 seq_window = 100
 seq_window = 100
 	The initial sequence window (sec. 7.5.2) of the sender. This influences
 	The initial sequence window (sec. 7.5.2) of the sender. This influences
 	the local ackno validity and the remote seqno validity windows (7.5.1).
 	the local ackno validity and the remote seqno validity windows (7.5.1).
+	Values in the range Wmin = 32 (RFC 4340, 7.5.2) up to 2^32-1 can be set.
 
 
 tx_qlen = 5
 tx_qlen = 5
 	The size of the transmit buffer in packets. A value of 0 corresponds
 	The size of the transmit buffer in packets. A value of 0 corresponds

+ 2 - 1
net/dccp/dccp.h

@@ -426,7 +426,8 @@ static inline void dccp_update_gsr(struct sock *sk, u64 seq)
 {
 {
 	struct dccp_sock *dp = dccp_sk(sk);
 	struct dccp_sock *dp = dccp_sk(sk);
 
 
-	dp->dccps_gsr = seq;
+	if (after48(seq, dp->dccps_gsr))
+		dp->dccps_gsr = seq;
 	/* Sequence validity window depends on remote Sequence Window (7.5.1) */
 	/* Sequence validity window depends on remote Sequence Window (7.5.1) */
 	dp->dccps_swl = SUB48(ADD48(dp->dccps_gsr, 1), dp->dccps_r_seq_win / 4);
 	dp->dccps_swl = SUB48(ADD48(dp->dccps_gsr, 1), dp->dccps_r_seq_win / 4);
 	/*
 	/*

+ 1 - 1
net/dccp/input.c

@@ -260,7 +260,7 @@ static int dccp_check_seqno(struct sock *sk, struct sk_buff *skb)
 		 */
 		 */
 		if (time_before(now, (dp->dccps_rate_last +
 		if (time_before(now, (dp->dccps_rate_last +
 				      sysctl_dccp_sync_ratelimit)))
 				      sysctl_dccp_sync_ratelimit)))
-			return 0;
+			return -1;
 
 
 		DCCP_WARN("Step 6 failed for %s packet, "
 		DCCP_WARN("Step 6 failed for %s packet, "
 			  "(LSWL(%llu) <= P.seqno(%llu) <= S.SWH(%llu)) and "
 			  "(LSWL(%llu) <= P.seqno(%llu) <= S.SWH(%llu)) and "

+ 3 - 1
net/dccp/sysctl.c

@@ -21,7 +21,8 @@
 /* Boundary values */
 /* Boundary values */
 static int		zero     = 0,
 static int		zero     = 0,
 			u8_max   = 0xFF;
 			u8_max   = 0xFF;
-static unsigned long	seqw_min = 32;
+static unsigned long	seqw_min = DCCPF_SEQ_WMIN,
+			seqw_max = 0xFFFFFFFF;		/* maximum on 32 bit */
 
 
 static struct ctl_table dccp_default_table[] = {
 static struct ctl_table dccp_default_table[] = {
 	{
 	{
@@ -31,6 +32,7 @@ static struct ctl_table dccp_default_table[] = {
 		.mode		= 0644,
 		.mode		= 0644,
 		.proc_handler	= proc_doulongvec_minmax,
 		.proc_handler	= proc_doulongvec_minmax,
 		.extra1		= &seqw_min,		/* RFC 4340, 7.5.2 */
 		.extra1		= &seqw_min,		/* RFC 4340, 7.5.2 */
+		.extra2		= &seqw_max,
 	},
 	},
 	{
 	{
 		.procname	= "rx_ccid",
 		.procname	= "rx_ccid",