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 */
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to