summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Wright <jason@cvs.openbsd.org>1999-05-13 15:44:51 +0000
committerJason Wright <jason@cvs.openbsd.org>1999-05-13 15:44:51 +0000
commit0bee46841bdbef18c0aa0d7a4f4db10968a7160d (patch)
tree97d7627af802ef98567270ba59444140ae00ea14
parent0a81f6102525e5e33f378afc28e62381cafaded1 (diff)
Compensate for the check for onwership of unicast packets in promiscuous
mode being moved to if_ether.c. This is the last of the drivers hopefully.
-rw-r--r--sys/arch/amiga/dev/if_ae.c18
-rw-r--r--sys/arch/amiga/dev/if_ed.c18
-rw-r--r--sys/arch/amiga/dev/if_es.c18
-rw-r--r--sys/arch/amiga/dev/if_qn.c19
-rw-r--r--sys/arch/arc/dev/if_sn.c10
-rw-r--r--sys/arch/arm32/podulebus/if_ea.c12
-rw-r--r--sys/arch/arm32/podulebus/if_eb.c12
-rw-r--r--sys/arch/mac68k/dev/if_ae.c18
-rw-r--r--sys/arch/mac68k/dev/if_mc.c12
-rw-r--r--sys/arch/mac68k/dev/if_sn.c11
-rw-r--r--sys/arch/sun3/dev/if_ie.c16
-rw-r--r--sys/arch/vax/if/if_qe.c15
-rw-r--r--sys/arch/wgrisc/dev/if_sn.c13
13 files changed, 32 insertions, 160 deletions
diff --git a/sys/arch/amiga/dev/if_ae.c b/sys/arch/amiga/dev/if_ae.c
index 0760c32f721..56c63033133 100644
--- a/sys/arch/amiga/dev/if_ae.c
+++ b/sys/arch/amiga/dev/if_ae.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_ae.c,v 1.11 1998/01/07 00:33:45 niklas Exp $ */
+/* $OpenBSD: if_ae.c,v 1.12 1999/05/13 15:44:47 jason Exp $ */
/* $NetBSD: if_ae.c,v 1.14 1997/03/18 18:44:53 veego Exp $ */
/*
@@ -732,22 +732,8 @@ aeread(sc, buf, len)
* If so, hand off the raw packet to bpf, which must deal with
* trailers in its own way.
*/
- if (ifp->if_bpf) {
+ if (ifp->if_bpf)
bpf_mtap(ifp->if_bpf, m);
-
- /*
- * Note that the interface cannot be in promiscuous mode if
- * there are no bpf listeners. And if we are in promiscuous
- * mode, we have to check if this packet is really ours.
- */
- if ((ifp->if_flags & IFF_PROMISC) &&
- (eh->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */
- bcmp(eh->ether_dhost, sc->sc_arpcom.ac_enaddr,
- sizeof(eh->ether_dhost)) != 0) {
- m_freem(m);
- return;
- }
- }
#endif
/* We assume that the header fit entirely in one mbuf. */
diff --git a/sys/arch/amiga/dev/if_ed.c b/sys/arch/amiga/dev/if_ed.c
index 8244c5d7590..b3f0dfffdda 100644
--- a/sys/arch/amiga/dev/if_ed.c
+++ b/sys/arch/amiga/dev/if_ed.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_ed.c,v 1.11 1997/09/18 13:39:56 niklas Exp $ */
+/* $OpenBSD: if_ed.c,v 1.12 1999/05/13 15:44:48 jason Exp $ */
/* $NetBSD: if_ed.c,v 1.26 1997/03/17 17:51:42 is Exp $ */
/*
@@ -1014,22 +1014,8 @@ ed_get_packet(sc, buf, len)
* Check if there's a BPF listener on this interface. If so, hand off
* the raw packet to bpf.
*/
- if (sc->sc_arpcom.ac_if.if_bpf) {
+ if (sc->sc_arpcom.ac_if.if_bpf)
bpf_mtap(sc->sc_arpcom.ac_if.if_bpf, m);
-
- /*
- * Note that the interface cannot be in promiscuous mode if
- * there are no BPF listeners. And if we are in promiscuous
- * mode, we have to check if this packet is really ours.
- */
- if ((sc->sc_arpcom.ac_if.if_flags & IFF_PROMISC) &&
- (eh->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */
- bcmp(eh->ether_dhost, sc->sc_arpcom.ac_enaddr,
- sizeof(eh->ether_dhost)) != 0) {
- m_freem(m);
- return;
- }
- }
#endif
/* Fix up data start offset in mbuf to point past ether header. */
diff --git a/sys/arch/amiga/dev/if_es.c b/sys/arch/amiga/dev/if_es.c
index 11a6a0bb3cb..ca82e91e13d 100644
--- a/sys/arch/amiga/dev/if_es.c
+++ b/sys/arch/amiga/dev/if_es.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_es.c,v 1.10 1997/01/16 09:24:43 niklas Exp $ */
+/* $OpenBSD: if_es.c,v 1.11 1999/05/13 15:44:48 jason Exp $ */
/* $NetBSD: if_es.c,v 1.16 1996/12/23 09:10:17 veego Exp $ */
/*
@@ -714,22 +714,8 @@ esrint(sc)
* Check if there's a BPF listener on this interface. If so, hand off
* the raw packet to bpf.
*/
- if (sc->sc_arpcom.ac_if.if_bpf) {
+ if (sc->sc_arpcom.ac_if.if_bpf)
bpf_mtap(sc->sc_arpcom.ac_if.if_bpf, top);
-
- /*
- * Note that the interface cannot be in promiscuous mode if
- * there are no BPF listeners. And if we are in promiscuous
- * mode, we have to check if this packet is really ours.
- */
- if ((sc->sc_arpcom.ac_if.if_flags & IFF_PROMISC) &&
- (eh->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */
- bcmp(eh->ether_dhost, sc->sc_arpcom.ac_enaddr,
- sizeof(eh->ether_dhost)) != 0) {
- m_freem(top);
- return;
- }
- }
#endif
top->m_pkthdr.len -= sizeof (*eh);
top->m_len -= sizeof (*eh);
diff --git a/sys/arch/amiga/dev/if_qn.c b/sys/arch/amiga/dev/if_qn.c
index 313f5098d6c..6db5632a5e0 100644
--- a/sys/arch/amiga/dev/if_qn.c
+++ b/sys/arch/amiga/dev/if_qn.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_qn.c,v 1.11 1998/03/01 14:18:02 niklas Exp $ */
+/* $OpenBSD: if_qn.c,v 1.12 1999/05/13 15:44:48 jason Exp $ */
/* $NetBSD: if_qn.c,v 1.10 1996/12/23 09:10:19 veego Exp $ */
/*
@@ -623,23 +623,8 @@ qn_get_packet(sc, len)
}
#if NBPFILTER > 0
- if (sc->sc_bpf) {
+ if (sc->sc_bpf)
bpf_mtap(sc->sc_bpf, head);
-
- /*
- * The interface cannot be in promiscuous mode if there are
- * no BPF listeners. And in prom. mode we have to check
- * if the packet is really ours...
- */
- if ((sc->sc_arpcom.ac_if.if_flags & IFF_PROMISC) &&
- (eh->ether_dhost[0] & 1) == 0 && /* not bcast or mcast */
- bcmp(eh->ether_dhost,
- sc->sc_arpcom.ac_enaddr,
- ETHER_ADDR_LEN) != 0) {
- m_freem(head);
- return;
- }
- }
#endif
m_adj(head, sizeof(struct ether_header));
diff --git a/sys/arch/arc/dev/if_sn.c b/sys/arch/arc/dev/if_sn.c
index 0028e297a33..a204db7a4ff 100644
--- a/sys/arch/arc/dev/if_sn.c
+++ b/sys/arch/arc/dev/if_sn.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_sn.c,v 1.11 1999/01/11 05:11:09 millert Exp $ */
+/* $OpenBSD: if_sn.c,v 1.12 1999/05/13 15:44:48 jason Exp $ */
/*
* National Semiconductor SONIC Driver
* Copyright (c) 1991 Algorithmics Ltd (http://www.algor.co.uk)
@@ -1174,15 +1174,9 @@ sonic_read(sc, rxp)
* If so, hand off the raw packet to enet, then discard things
* not destined for us (but be sure to keep broadcast/multicast).
*/
- if (sc->sc_if.if_bpf) {
+ if (sc->sc_if.if_bpf)
bpf_tap(sc->sc_if.if_bpf, pkt,
len + sizeof(struct ether_header));
- if ((ifp->if_flags & IFF_PROMISC) != 0 &&
- (et->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */
- bcmp(et->ether_dhost, sc->sc_enaddr,
- sizeof(et->ether_dhost)) != 0)
- return(0);
- }
#endif
m = sonic_get(sc, et, len);
if (m == NULL)
diff --git a/sys/arch/arm32/podulebus/if_ea.c b/sys/arch/arm32/podulebus/if_ea.c
index e503d723ee5..3cd4ea66e3f 100644
--- a/sys/arch/arm32/podulebus/if_ea.c
+++ b/sys/arch/arm32/podulebus/if_ea.c
@@ -1337,18 +1337,6 @@ earead(sc, buf, len)
bpf_tap(sc->sc_arpcom.ac_if.if_bpf, buf, len + sizeof(struct ether_header));
/* bpf_mtap(sc->sc_arpcom.ac_if.if_bpf, m);*/
- /*
- * Note that the interface cannot be in promiscuous mode if
- * there are no BPF listeners. And if we are in promiscuous
- * mode, we have to check if this packet is really ours.
- */
- if ((sc->sc_arpcom.ac_if.if_flags & IFF_PROMISC) &&
- (eh->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */
- bcmp(eh->ether_dhost, sc->sc_arpcom.ac_enaddr,
- sizeof(eh->ether_dhost)) != 0) {
- m_freem(m);
- return;
- }
}
#endif
diff --git a/sys/arch/arm32/podulebus/if_eb.c b/sys/arch/arm32/podulebus/if_eb.c
index 356af878376..beba71bb46f 100644
--- a/sys/arch/arm32/podulebus/if_eb.c
+++ b/sys/arch/arm32/podulebus/if_eb.c
@@ -1356,18 +1356,6 @@ ebread(sc, buf, len)
bpf_tap(sc->sc_arpcom.ac_if.if_bpf, buf, len + sizeof(struct ether_header));
/* bpf_mtap(sc->sc_arpcom.ac_if.if_bpf, m);*/
- /*
- * Note that the interface cannot be in promiscuous mode if
- * there are no BPF listeners. And if we are in promiscuous
- * mode, we have to check if this packet is really ours.
- */
- if ((sc->sc_arpcom.ac_if.if_flags & IFF_PROMISC) &&
- (eh->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */
- bcmp(eh->ether_dhost, sc->sc_arpcom.ac_enaddr,
- sizeof(eh->ether_dhost)) != 0) {
- m_freem(m);
- return;
- }
}
#endif
diff --git a/sys/arch/mac68k/dev/if_ae.c b/sys/arch/mac68k/dev/if_ae.c
index b86ffde3894..d72c57eb0de 100644
--- a/sys/arch/mac68k/dev/if_ae.c
+++ b/sys/arch/mac68k/dev/if_ae.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_ae.c,v 1.13 1997/04/25 22:15:26 gene Exp $ */
+/* $OpenBSD: if_ae.c,v 1.14 1999/05/13 15:44:49 jason Exp $ */
/* $NetBSD: if_ae.c,v 1.62 1997/04/24 16:52:05 scottr Exp $ */
/*
@@ -864,22 +864,8 @@ aeread(sc, buf, len)
* Check if there's a BPF listener on this interface.
* If so, hand off the raw packet to bpf.
*/
- if (ifp->if_bpf) {
+ if (ifp->if_bpf)
bpf_mtap(ifp->if_bpf, m);
-
- /*
- * Note that the interface cannot be in promiscuous mode if
- * there are no BPF listeners. And if we are in promiscuous
- * mode, we have to check if this packet is really ours.
- */
- if ((ifp->if_flags & IFF_PROMISC) &&
- (eh->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */
- bcmp(eh->ether_dhost, sc->sc_arpcom.ac_enaddr,
- sizeof(eh->ether_dhost)) != 0) {
- m_freem(m);
- return;
- }
- }
#endif
/* Fix up data start offset in mbuf to point past ether header. */
diff --git a/sys/arch/mac68k/dev/if_mc.c b/sys/arch/mac68k/dev/if_mc.c
index aa03fb342f8..f504b184873 100644
--- a/sys/arch/mac68k/dev/if_mc.c
+++ b/sys/arch/mac68k/dev/if_mc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_mc.c,v 1.1 1998/05/08 22:15:31 gene Exp $ */
+/* $OpenBSD: if_mc.c,v 1.2 1999/05/13 15:44:49 jason Exp $ */
/* $NetBSD: if_mc.c,v 1.4 1998/01/12 19:22:09 thorpej Exp $ */
/*-
@@ -638,16 +638,10 @@ mace_read(sc, pkt, len)
#if NBPFILTER > 0
/*
* Check if there's a bpf filter listening on this interface.
- * If so, hand off the raw packet to enet, then discard things
- * not destined for us (but be sure to keep broadcast/multicast).
+ * If so, hand off the raw packet to enet.
*/
- if (ifp->if_bpf) {
+ if (ifp->if_bpf)
bpf_tap(ifp->if_bpf, pkt, len);
- if ((ifp->if_flags & IFF_PROMISC) != 0 &&
- (eh->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */
- ETHER_CMP(eh->ether_dhost, sc->sc_enaddr))
- return;
- }
#endif
m = mace_get(sc, pkt, len);
if (m == NULL) {
diff --git a/sys/arch/mac68k/dev/if_sn.c b/sys/arch/mac68k/dev/if_sn.c
index b192407a9c3..1bc820b882c 100644
--- a/sys/arch/mac68k/dev/if_sn.c
+++ b/sys/arch/mac68k/dev/if_sn.c
@@ -1126,18 +1126,11 @@ sonic_read(sc, pkt, len)
#if NBPFILTER > 0
/*
* Check if there's a bpf filter listening on this interface.
- * If so, hand off the raw packet to enet, then discard things
- * not destined for us (but be sure to keep broadcast/multicast).
+ * If so, hand off the raw packet to enet.
*/
- if (ifp->if_bpf) {
+ if (ifp->if_bpf)
bpf_tap(ifp->if_bpf, pkt,
len + sizeof(struct ether_header));
- if ((ifp->if_flags & IFF_PROMISC) != 0 &&
- (et->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */
- bcmp(et->ether_dhost, &sc->sc_enaddr,
- sizeof(et->ether_dhost)) != 0)
- return (0);
- }
#endif
m = sonic_get(sc, et, len);
if (m == NULL)
diff --git a/sys/arch/sun3/dev/if_ie.c b/sys/arch/sun3/dev/if_ie.c
index 34651d5d4e8..f831f9bac12 100644
--- a/sys/arch/sun3/dev/if_ie.c
+++ b/sys/arch/sun3/dev/if_ie.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_ie.c,v 1.10 1999/01/11 05:12:01 millert Exp $ */
+/* $OpenBSD: if_ie.c,v 1.11 1999/05/13 15:44:49 jason Exp $ */
/* $NetBSD: if_ie.c,v 1.15 1996/10/30 00:24:33 gwr Exp $ */
/*-
@@ -585,14 +585,17 @@ check_eh(sc, eh, to_bpf)
* Receiving all packets. These need to be passed on to BPF.
*/
#if NBPFILTER > 0
- *to_bpf = (sc->sc_arpcom.ac_if.if_bpf != 0);
+ *to_bpf = (sc->sc_arpcom.ac_if.if_bpf != 0) ||
+ (sc->sc_arpcom.ac_if.if_bridge != NULL);
+#else
+ *to_bpf = (sc->sc_arpcom.ac_if.if_bridge != NULL);
#endif
/* If for us, accept and hand up to BPF */
if (ether_equal(eh->ether_dhost, sc->sc_arpcom.ac_enaddr))
return 1;
#if NBPFILTER > 0
- if (*to_bpf)
+ if (*to_bpf && sc->sc_arpcom.ac_if.if_bridge == NULL)
*to_bpf = 2; /* we don't need to see it */
#endif
@@ -624,7 +627,10 @@ check_eh(sc, eh, to_bpf)
* time. Whew! (Hope this is a fast machine...)
*/
#if NBPFILTER > 0
- *to_bpf = (sc->sc_arpcom.ac_if.if_bpf != 0);
+ *to_bpf = (sc->sc_arpcom.ac_if.if_bpf != 0) ||
+ (sc->sc_arpcom.ac_if.if_bridge != NULL);
+#else
+ *to_bpf = (sc->sc_arpcom.ac_if.if_bridge != NULL);
#endif
/* We want to see multicasts. */
if (eh->ether_dhost[0] & 1)
@@ -636,7 +642,7 @@ check_eh(sc, eh, to_bpf)
/* Anything else goes to BPF but nothing else. */
#if NBPFILTER > 0
- if (*to_bpf)
+ if (*to_bpf && sc->sc_arpcom.ac_if.if_bridge == NULL)
*to_bpf = 2;
#endif
return 1;
diff --git a/sys/arch/vax/if/if_qe.c b/sys/arch/vax/if/if_qe.c
index 0ba98510161..b114420e4d1 100644
--- a/sys/arch/vax/if/if_qe.c
+++ b/sys/arch/vax/if/if_qe.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_qe.c,v 1.9 1997/09/10 08:28:41 maja Exp $ */
+/* $OpenBSD: if_qe.c,v 1.10 1999/05/13 15:44:50 jason Exp $ */
/* $NetBSD: if_qe.c,v 1.22 1997/05/02 17:11:24 ragge Exp $ */
/*
@@ -1037,19 +1037,6 @@ if (m) {
/* Pass it up */
bpf_mtap(sc->qe_if.if_bpf, &m0);
-
- /*
- * Note that the interface cannot be in promiscuous mode if
- * there are no BPF listeners. And if we are in promiscuous
- * mode, we have to check if this packet is really ours.
- */
- if ((ifp->if_flags & IFF_PROMISC) &&
- (eh->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */
- bcmp(eh->ether_dhost, sc->qe_addr,
- sizeof(eh->ether_dhost)) != 0) {
- m_freem(m);
- return;
- }
}
#endif /* NBPFILTER > 0 */
diff --git a/sys/arch/wgrisc/dev/if_sn.c b/sys/arch/wgrisc/dev/if_sn.c
index cfc42bc59ac..6aacfb8c859 100644
--- a/sys/arch/wgrisc/dev/if_sn.c
+++ b/sys/arch/wgrisc/dev/if_sn.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_sn.c,v 1.2 1999/01/11 05:12:10 millert Exp $ */
+/* $OpenBSD: if_sn.c,v 1.3 1999/05/13 15:44:50 jason Exp $ */
/*
* National Semiconductor SONIC Driver
* Copyright (c) 1991 Algorithmics Ltd (http://www.algor.co.uk)
@@ -1201,18 +1201,11 @@ sonic_read(sc, rxp)
#if NBPFILTER > 0
/*
* Check if there's a bpf filter listening on this interface.
- * If so, hand off the raw packet to enet, then discard things
- * not destined for us (but be sure to keep broadcast/multicast).
+ * If so, hand off the raw packet to enet.
*/
- if (sc->sc_if.if_bpf) {
+ if (sc->sc_if.if_bpf)
bpf_tap(sc->sc_if.if_bpf, pkt,
len + sizeof(struct ether_header));
- if ((ifp->if_flags & IFF_PROMISC) != 0 &&
- (et->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */
- bcmp(et->ether_dhost, sc->sc_enaddr,
- sizeof(et->ether_dhost)) != 0)
- return;
- }
#endif
m = sonic_get(sc, et, len);
if (m == NULL)