[PATCH] IPV6: use macro for maximum payload length

flat view
DORMANTno replies

From: YOSHIFUJI Hideaki / 吉藤英明 <hidden>
Date: 2003-06-24 03:40:21

Hello.

Use macro for maximum payload length.
Patch is against "[PATCH] [IPV6] clean-up advmss calculation" patch.

Thanks.

Index: linux-2.5/include/net/ipv6.h
===================================================================
RCS file: /home/cvs/linux-2.5/include/net/ipv6.h,v
retrieving revision 1.19
diff -u -r1.19 ipv6.h
--- linux-2.5/include/net/ipv6.h	9 Jun 2003 17:26:52 -0000	1.19
+++ linux-2.5/include/net/ipv6.h	24 Jun 2003 01:58:26 -0000
@@ -23,6 +23,8 @@
 
 #define SIN6_LEN_RFC2133	24
 
+#define IPV6_MAXPLEN		65535
+
 /*
  *	NextHeader field of IPv6 header
  */
Index: linux-2.5/net/ipv6/exthdrs.c
===================================================================
RCS file: /home/cvs/linux-2.5/net/ipv6/exthdrs.c,v
retrieving revision 1.13
diff -u -r1.13 exthdrs.c
--- linux-2.5/net/ipv6/exthdrs.c	20 May 2003 06:49:54 -0000	1.13
+++ linux-2.5/net/ipv6/exthdrs.c	24 Jun 2003 01:58:26 -0000
@@ -432,7 +432,7 @@
 	}
 
 	pkt_len = ntohl(*(u32*)(skb->nh.raw+optoff+2));
-	if (pkt_len < 0x10000) {
+	if (pkt_len <= IPV6_MAXPLEN) {
 		icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, optoff+2);
 		return 0;
 	}
Index: linux-2.5/net/ipv6/ip6_output.c
===================================================================
RCS file: /home/cvs/linux-2.5/net/ipv6/ip6_output.c,v
retrieving revision 1.29
diff -u -r1.29 ip6_output.c
--- linux-2.5/net/ipv6/ip6_output.c	21 Jun 2003 16:20:41 -0000	1.29
+++ linux-2.5/net/ipv6/ip6_output.c	24 Jun 2003 01:58:27 -0000
@@ -621,7 +621,7 @@
 		if (opt)
 			pktlength += opt->opt_flen + opt->opt_nflen;
 
-		if (pktlength > 0xFFFF + sizeof(struct ipv6hdr)) {
+		if (pktlength > sizeof(struct ipv6hdr) + IPV6_MAXPLEN) {
 			/* Jumbo datagram.
 			   It is assumed, that in the case of hdrincl
 			   jumbo option is supplied by user.
@@ -1264,8 +1264,8 @@
 	fragheaderlen = sizeof(struct ipv6hdr) + (opt ? opt->opt_nflen : 0);
 	maxfraglen = ((mtu - fragheaderlen) & ~7) + fragheaderlen - sizeof(struct frag_hdr);
 
-	if (mtu < 65576) {
-		if (inet->cork.length + length > 0xFFFF - fragheaderlen) {
+	if (mtu <= sizeof(struct ipv6hdr) + IPV6_MAXPLEN) {
+		if (inet->cork.length + length > IPV6_MAXPLEN - fragheaderlen) {
 			ipv6_local_error(sk, EMSGSIZE, fl, mtu-exthdrlen);
 			return -EMSGSIZE;
 		}
@@ -1461,7 +1461,7 @@
 	
 	*(u32*)hdr = fl->fl6_flowlabel | htonl(0x60000000);
 
-	if (skb->len < 65536)
+	if (skb->len <= IPV6_MAXPLEN)
 		hdr->payload_len = htons(skb->len - sizeof(struct ipv6hdr));
 	else
 		hdr->payload_len = 0;
Index: linux-2.5/net/ipv6/reassembly.c
===================================================================
RCS file: /home/cvs/linux-2.5/net/ipv6/reassembly.c,v
retrieving revision 1.16
diff -u -r1.16 reassembly.c
--- linux-2.5/net/ipv6/reassembly.c	21 Jun 2003 16:16:59 -0000	1.16
+++ linux-2.5/net/ipv6/reassembly.c	24 Jun 2003 01:58:27 -0000
@@ -425,7 +425,7 @@
 	end = offset + (ntohs(skb->nh.ipv6h->payload_len) -
 			((u8 *) (fhdr + 1) - (u8 *) (skb->nh.ipv6h + 1)));
 
-	if ((unsigned int)end >= 65536) {
+	if ((unsigned int)end > IPV6_MAXPLEN) {
  		icmpv6_param_prob(skb,ICMPV6_HDR_FIELD, (u8*)&fhdr->frag_off - skb->nh.raw);
  		return;
 	}
@@ -597,7 +597,7 @@
 
 	/* Unfragmented part is taken from the first segment. */
 	payload_len = (head->data - head->nh.raw) - sizeof(struct ipv6hdr) + fq->len - sizeof(struct frag_hdr);
-	if (payload_len > 65535)
+	if (payload_len > IPV6_MAXPLEN)
 		goto out_oversize;
 
 	/* Head of list must not be cloned. */
Index: linux-2.5/net/ipv6/route.c
===================================================================
RCS file: /home/cvs/linux-2.5/net/ipv6/route.c,v
retrieving revision 1.40
diff -u -r1.40+ route.c
--- linux-2.5/net/ipv6/route.c	Tue Jun 24 12:10:22 2003
+++ linux-2.5/net/ipv6/route.c	Tue Jun 24 12:11:23 2003
@@ -606,13 +606,13 @@
 		mtu = ip6_rt_min_advmss;
 
 	/*
-	 * Maximal non-jumbo IPv6 payload is 65535 and 
-	 * corresponding MSS is 65535 - tcp_header_size. 
-	 * 65535 is also valid and means: "any MSS, 
+	 * Maximal non-jumbo IPv6 payload is IPV6_MAXPLEN and 
+	 * corresponding MSS is IPV6_MAXPLEN - tcp_header_size. 
+	 * IPV6_MAXPLEN is also valid and means: "any MSS, 
 	 * rely only on pmtu discovery"
 	 */
-	if (mtu > 65535 - sizeof(struct tcphdr))
-		mtu = 65535;
+	if (mtu > IPV6_MAXPLEN - sizeof(struct tcphdr))
+		mtu = IPV6_MAXPLEN;
 	return mtu;
 }
 

-- 
Hideaki YOSHIFUJI @ USAGI Project <yoshfuji@linux-ipv6.org>
GPG FP: 9022 65EB 1ECF 3AD1 0BDF  80D8 4807 F894 E062 0EEA
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help