svn commit: r254518 - head/sys/netinet

Andre Oppermann andre at FreeBSD.org
Mon Aug 19 10:34:11 UTC 2013


Author: andre
Date: Mon Aug 19 10:34:10 2013
New Revision: 254518
URL: http://svnweb.freebsd.org/changeset/base/254518

Log:
  Move ip_reassemble()'s use of the global M_FRAG mbuf flag to a protocol layer
  specific flag instead.  The flag is only relevant while the packet stays in
  the IP reassembly queue.
  
  Discussed with:	trociny, glebius

Modified:
  head/sys/netinet/ip_input.c
  head/sys/netinet/ip_var.h

Modified: head/sys/netinet/ip_input.c
==============================================================================
--- head/sys/netinet/ip_input.c	Mon Aug 19 10:30:15 2013	(r254517)
+++ head/sys/netinet/ip_input.c	Mon Aug 19 10:34:10 2013	(r254518)
@@ -911,9 +911,9 @@ found:
 			IPSTAT_INC(ips_toosmall); /* XXX */
 			goto dropfrag;
 		}
-		m->m_flags |= M_FRAG;
+		m->m_flags |= M_IP_FRAG;
 	} else
-		m->m_flags &= ~M_FRAG;
+		m->m_flags &= ~M_IP_FRAG;
 	ip->ip_off = htons(ntohs(ip->ip_off) << 3);
 
 	/*
@@ -1060,7 +1060,7 @@ found:
 		next += ntohs(GETIP(q)->ip_len);
 	}
 	/* Make sure the last packet didn't have the IP_MF flag */
-	if (p->m_flags & M_FRAG) {
+	if (p->m_flags & M_IP_FRAG) {
 		if (fp->ipq_nfrags > V_maxfragsperpacket) {
 			IPSTAT_ADD(ips_fragdropped, fp->ipq_nfrags);
 			ip_freef(head, fp);

Modified: head/sys/netinet/ip_var.h
==============================================================================
--- head/sys/netinet/ip_var.h	Mon Aug 19 10:30:15 2013	(r254517)
+++ head/sys/netinet/ip_var.h	Mon Aug 19 10:34:10 2013	(r254518)
@@ -167,6 +167,7 @@ void	kmod_ipstat_dec(int statnum);
  */
 #define	M_FASTFWD_OURS		M_PROTO1	/* changed dst to local */
 #define	M_IP_NEXTHOP		M_PROTO2	/* explicit ip nexthop */
+#define	M_IP_FRAG		M_PROTO4	/* fragment reassembly */
 
 #ifdef __NO_STRICT_ALIGNMENT
 #define IP_HDR_ALIGNED_P(ip)	1


More information about the svn-src-all mailing list