From 8ecb51f31eb407a34355858a74778b3716eac394 Mon Sep 17 00:00:00 2001 From: Jung-uk Kim Date: Mon, 5 May 2008 15:07:07 +0000 Subject: MFC: 1.194 Check packet directions more properly instead of just checking received interface is null. --- sys/net/bpf.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sys/net/bpf.c b/sys/net/bpf.c index 8dcd1a318577..d83a9769897b 100644 --- a/sys/net/bpf.c +++ b/sys/net/bpf.c @@ -1330,9 +1330,9 @@ bpf_mcopy(const void *src_arg, void *dst_arg, size_t len) } } -#define BPF_CHECK_DIRECTION(d, i) \ - (((d)->bd_direction == BPF_D_IN && (i) == NULL) || \ - ((d)->bd_direction == BPF_D_OUT && (i) != NULL)) +#define BPF_CHECK_DIRECTION(d, r, i) \ + (((d)->bd_direction == BPF_D_IN && (r) != (i)) || \ + ((d)->bd_direction == BPF_D_OUT && (r) == (i))) /* * Incoming linkage from device drivers, when packet is in an mbuf chain. @@ -1357,7 +1357,7 @@ bpf_mtap(struct bpf_if *bp, struct mbuf *m) BPFIF_LOCK(bp); LIST_FOREACH(d, &bp->bif_dlist, bd_next) { - if (BPF_CHECK_DIRECTION(d, m->m_pkthdr.rcvif)) + if (BPF_CHECK_DIRECTION(d, m->m_pkthdr.rcvif, bp->bif_ifp)) continue; BPFD_LOCK(d); ++d->bd_rcount; @@ -1421,7 +1421,7 @@ bpf_mtap2(struct bpf_if *bp, void *data, u_int dlen, struct mbuf *m) BPFIF_LOCK(bp); LIST_FOREACH(d, &bp->bif_dlist, bd_next) { - if (BPF_CHECK_DIRECTION(d, m->m_pkthdr.rcvif)) + if (BPF_CHECK_DIRECTION(d, m->m_pkthdr.rcvif, bp->bif_ifp)) continue; BPFD_LOCK(d); ++d->bd_rcount; -- cgit v1.2.3