Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Nov 2016 01:20:37 +0000 (UTC)
From:      Luiz Otavio O Souza <loos@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r308660 - stable/11/sys/netpfil/ipfw
Message-ID:  <201611150120.uAF1KbGc083114@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: loos
Date: Tue Nov 15 01:20:36 2016
New Revision: 308660
URL: https://svnweb.freebsd.org/changeset/base/308660

Log:
  Stop abusing from struct ifnet presence to determine the packet direction
  for dummynet, use the correct argument for that, remove the false coment
  about the presence of struct ifnet.
  
  Fixes the input match of dummynet l2 rules.
  
  Obtained from:	pfSense
  Sponsored by:	Rubicon Communications, LLC (Netgate)

Modified:
  stable/11/sys/netpfil/ipfw/ip_fw_pfil.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/netpfil/ipfw/ip_fw_pfil.c
==============================================================================
--- stable/11/sys/netpfil/ipfw/ip_fw_pfil.c	Tue Nov 15 00:58:31 2016	(r308659)
+++ stable/11/sys/netpfil/ipfw/ip_fw_pfil.c	Tue Nov 15 01:20:36 2016	(r308660)
@@ -303,11 +303,9 @@ again:
 
 /*
  * ipfw processing for ethernet packets (in and out).
- * Inteface is NULL from ether_demux, and ifp from
- * ether_output_frame.
  */
 int
-ipfw_check_frame(void *arg, struct mbuf **m0, struct ifnet *dst, int dir,
+ipfw_check_frame(void *arg, struct mbuf **m0, struct ifnet *ifp, int dir,
     struct inpcb *inp)
 {
 	struct ether_header *eh;
@@ -348,7 +346,7 @@ ipfw_check_frame(void *arg, struct mbuf 
 	m_adj(m, ETHER_HDR_LEN);	/* strip ethernet header */
 
 	args.m = m;		/* the packet we are looking at		*/
-	args.oif = dir == PFIL_OUT ? dst: NULL;	/* destination, if any	*/
+	args.oif = dir == PFIL_OUT ? ifp: NULL;	/* destination, if any	*/
 	args.next_hop = NULL;	/* we do not support forward yet	*/
 	args.next_hop6 = NULL;	/* we do not support forward yet	*/
 	args.eh = &save_eh;	/* MAC header for bridged/MAC packets	*/
@@ -383,14 +381,13 @@ ipfw_check_frame(void *arg, struct mbuf 
 
 	case IP_FW_DUMMYNET:
 		ret = EACCES;
-		int dir;
 
 		if (ip_dn_io_ptr == NULL)
 			break; /* i.e. drop */
 
 		*m0 = NULL;
-		dir = PROTO_LAYER2 | (dst ? DIR_OUT : DIR_IN);
-		ip_dn_io_ptr(&m, dir, &args);
+		dir = (dir == PFIL_IN) ? DIR_IN : DIR_OUT;
+		ip_dn_io_ptr(&m, dir | PROTO_LAYER2, &args);
 		return 0;
 
 	default:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201611150120.uAF1KbGc083114>