svn commit: r308237 - head/sys/netpfil/ipfw
Luiz Otavio O Souza
loos at FreeBSD.org
Thu Nov 3 00:27:00 UTC 2016
Author: loos
Date: Thu Nov 3 00:26:58 2016
New Revision: 308237
URL: https://svnweb.freebsd.org/changeset/base/308237
Log:
Remove the mbuf tag after use (for reinjected packets).
Fixes the packet processing in dummynet l2 rules.
Obtained from: pfSense
MFC after: 2 weeks
Sponsored by: Rubicon Communications, LLC (Netgate)
Modified:
head/sys/netpfil/ipfw/ip_fw_pfil.c
Modified: head/sys/netpfil/ipfw/ip_fw_pfil.c
==============================================================================
--- head/sys/netpfil/ipfw/ip_fw_pfil.c Wed Nov 2 23:58:10 2016 (r308236)
+++ head/sys/netpfil/ipfw/ip_fw_pfil.c Thu Nov 3 00:26:58 2016 (r308237)
@@ -315,20 +315,15 @@ ipfw_check_frame(void *arg, struct mbuf
struct ip_fw_args args;
struct m_tag *mtag;
- /* fetch start point from rule, if any */
+ /* fetch start point from rule, if any. remove the tag if present. */
mtag = m_tag_locate(*m0, MTAG_IPFW_RULE, 0, NULL);
if (mtag == NULL) {
args.rule.slot = 0;
} else {
- /* dummynet packet, already partially processed */
- struct ipfw_rule_ref *r;
-
- /* XXX can we free it after use ? */
- mtag->m_tag_id = PACKET_TAG_NONE;
- r = (struct ipfw_rule_ref *)(mtag + 1);
- if (r->info & IPFW_ONEPASS)
+ args.rule = *((struct ipfw_rule_ref *)(mtag+1));
+ m_tag_delete(*m0, mtag);
+ if (args.rule.info & IPFW_ONEPASS)
return (0);
- args.rule = *r;
}
/* I need some amt of data to be contiguous */
More information about the svn-src-all
mailing list