svn commit: r308176 - head/sys/netpfil/ipfw
Luiz Otavio O Souza
loos at FreeBSD.org
Tue Nov 1 18:42:46 UTC 2016
Author: loos
Date: Tue Nov 1 18:42:44 2016
New Revision: 308176
URL: https://svnweb.freebsd.org/changeset/base/308176
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
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 Tue Nov 1 18:18:09 2016 (r308175)
+++ head/sys/netpfil/ipfw/ip_fw_pfil.c Tue Nov 1 18:42:44 2016 (r308176)
@@ -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:
More information about the svn-src-all
mailing list