svn commit: r248416 - head/sys/netinet/libalias
Gleb Smirnoff
glebius at FreeBSD.org
Sun Mar 17 07:37:11 UTC 2013
Author: glebius
Date: Sun Mar 17 07:37:10 2013
New Revision: 248416
URL: http://svnweb.freebsd.org/changeset/base/248416
Log:
In m_megapullup() instead of reserving some space at the end of packet,
m_align() it, reserving space to prepend data.
Reviewed by: mav
Modified:
head/sys/netinet/libalias/alias.c
Modified: head/sys/netinet/libalias/alias.c
==============================================================================
--- head/sys/netinet/libalias/alias.c Sun Mar 17 07:28:17 2013 (r248415)
+++ head/sys/netinet/libalias/alias.c Sun Mar 17 07:37:10 2013 (r248416)
@@ -1749,26 +1749,22 @@ LibAliasUnLoadAllModule(void)
struct mbuf *
m_megapullup(struct mbuf *m, int len) {
struct mbuf *mcl;
-
+
if (len > m->m_pkthdr.len)
goto bad;
-
- /* Do not reallocate packet if it is sequentional,
- * writable and has some extra space for expansion.
- * XXX: Constant 100bytes is completely empirical. */
-#define RESERVE 100
- if (m->m_next == NULL && M_WRITABLE(m) && M_TRAILINGSPACE(m) >= RESERVE)
+
+ if (m->m_next == NULL && M_WRITABLE(m))
return (m);
- mcl = m_get2(len + RESERVE, M_NOWAIT, MT_DATA, M_PKTHDR);
+ mcl = m_get2(len, M_NOWAIT, MT_DATA, M_PKTHDR);
if (mcl == NULL)
goto bad;
-
+ m_align(mcl, len);
m_move_pkthdr(mcl, m);
m_copydata(m, 0, len, mtod(mcl, caddr_t));
mcl->m_len = mcl->m_pkthdr.len = len;
m_freem(m);
-
+
return (mcl);
bad:
m_freem(m);
More information about the svn-src-head
mailing list