svn commit: r248320 - head/sys/netinet6

Gleb Smirnoff glebius at FreeBSD.org
Fri Mar 15 12:33:24 UTC 2013


Author: glebius
Date: Fri Mar 15 12:33:23 2013
New Revision: 248320
URL: http://svnweb.freebsd.org/changeset/base/248320

Log:
  Use m_getcl() instead of hand made allocation.
  
  Sponsored by:	Nginx, Inc.

Modified:
  head/sys/netinet6/ip6_input.c

Modified: head/sys/netinet6/ip6_input.c
==============================================================================
--- head/sys/netinet6/ip6_input.c	Fri Mar 15 11:16:12 2013	(r248319)
+++ head/sys/netinet6/ip6_input.c	Fri Mar 15 12:33:23 2013	(r248320)
@@ -497,21 +497,16 @@ ip6_input(struct mbuf *m)
 	if (m && m->m_next != NULL && m->m_pkthdr.len < MCLBYTES) {
 		struct mbuf *n;
 
-		MGETHDR(n, M_NOWAIT, MT_HEADER);
-		if (n)
-			M_MOVE_PKTHDR(n, m);
-		if (n && n->m_pkthdr.len > MHLEN) {
-			MCLGET(n, M_NOWAIT);
-			if ((n->m_flags & M_EXT) == 0) {
-				m_freem(n);
-				n = NULL;
-			}
-		}
+		if (m->m_pkthdr.len > MHLEN)
+			n = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR);
+		else
+			n = m_gethdr(M_NOWAIT, MT_DATA);
 		if (n == NULL) {
 			m_freem(m);
 			return;	/* ENOBUFS */
 		}
 
+		M_MOVE_PKTHDR(n, m);
 		m_copydata(m, 0, n->m_pkthdr.len, mtod(n, caddr_t));
 		n->m_len = n->m_pkthdr.len;
 		m_freem(m);


More information about the svn-src-all mailing list