From 30bf8f93db8855f5a855f4448874514017813fbc Mon Sep 17 00:00:00 2001 From: Gerrit Renker Date: Fri, 10 Nov 2006 02:13:56 -0200 Subject: [PATCH] --- yaml --- r: 41615 b: refs/heads/master c: 60361be1be7854cbffb6dc268d1bc094da33431c h: refs/heads/master i: 41613: b51265e5f9f5e4a299a2dd858af8ee9ce07acec6 41611: d3c6e5ba55397809339a59d0c7e8a58cd23ddf5f 41607: eec403fa7ab2b00ecd89576286f1162a13b43892 41599: 6da8a00289c686a3c0537681047a5383c325928a v: v3 --- [refs] | 2 +- trunk/net/dccp/dccp.h | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index b8b57d4bd813..5f1a22055c7e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 931731123a103cfb3f70ac4b7abfc71d94ba1f03 +refs/heads/master: 60361be1be7854cbffb6dc268d1bc094da33431c diff --git a/trunk/net/dccp/dccp.h b/trunk/net/dccp/dccp.h index 272e8584564e..9f00dd807e04 100644 --- a/trunk/net/dccp/dccp.h +++ b/trunk/net/dccp/dccp.h @@ -40,12 +40,18 @@ extern void dccp_tw_deschedule(struct inet_timewait_sock *tw); extern void dccp_time_wait(struct sock *sk, int state, int timeo); -/* FIXME: Right size this */ -#define DCCP_MAX_OPT_LEN 128 - -#define DCCP_MAX_PACKET_HDR 32 - -#define MAX_DCCP_HEADER (DCCP_MAX_PACKET_HDR + DCCP_MAX_OPT_LEN + MAX_HEADER) +/* + * Set safe upper bounds for header and option length. Since Data Offset is 8 + * bits (RFC 4340, sec. 5.1), the total header length can never be more than + * 4 * 255 = 1020 bytes. The largest possible header length is 28 bytes (X=1): + * - DCCP-Response with ACK Subheader and 4 bytes of Service code OR + * - DCCP-Reset with ACK Subheader and 4 bytes of Reset Code fields + * Hence a safe upper bound for the maximum option length is 1020-28 = 992 + */ +#define MAX_DCCP_SPECIFIC_HEADER (255 * sizeof(int)) +#define DCCP_MAX_PACKET_HDR 28 +#define DCCP_MAX_OPT_LEN (MAX_DCCP_SPECIFIC_HEADER - DCCP_MAX_PACKET_HDR) +#define MAX_DCCP_HEADER (MAX_DCCP_SPECIFIC_HEADER + MAX_HEADER) #define DCCP_TIMEWAIT_LEN (60 * HZ) /* how long to wait to destroy TIME-WAIT * state, about 60 seconds */