From b09dc7e328ae5266596b5cf87b8ff90d0bb16a9d Mon Sep 17 00:00:00 2001 From: Andre Oppermann Date: Mon, 19 Aug 2013 10:34:10 +0000 Subject: [PATCH] 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 --- sys/netinet/ip_input.c | 6 +++--- sys/netinet/ip_var.h | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/sys/netinet/ip_input.c b/sys/netinet/ip_input.c index 219f362dcc9..2d84f282e2c 100644 --- a/sys/netinet/ip_input.c +++ b/sys/netinet/ip_input.c @@ -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); diff --git a/sys/netinet/ip_var.h b/sys/netinet/ip_var.h index 1ac1bd28084..80c60d66481 100644 --- a/sys/netinet/ip_var.h +++ b/sys/netinet/ip_var.h @@ -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