summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorthompsa <thompsa@FreeBSD.org>2006-08-25 20:16:39 +0000
committerthompsa <thompsa@FreeBSD.org>2006-08-25 20:16:39 +0000
commit6e3cd0c9792982825455b4f26a2c389ef91e8ef2 (patch)
tree88e8b961aea9db914155b590095ddec7e031c979 /sys
parent3289f04db92312439d1e50714f6dfaa9f001dcf3 (diff)
downloadFreeBSD-src-6e3cd0c9792982825455b4f26a2c389ef91e8ef2.zip
FreeBSD-src-6e3cd0c9792982825455b4f26a2c389ef91e8ef2.tar.gz
Move the bridge hook after the loopback check so that IFF_SIMPLEX is honoured
on member interfaces. This makes us the same as OpenBSD/NetBSD. MFC after: 3 days
Diffstat (limited to 'sys')
-rw-r--r--sys/net/if_ethersubr.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/sys/net/if_ethersubr.c b/sys/net/if_ethersubr.c
index 9a9782a..5ba7297 100644
--- a/sys/net/if_ethersubr.c
+++ b/sys/net/if_ethersubr.c
@@ -284,14 +284,6 @@ ether_output(struct ifnet *ifp, struct mbuf *m,
(void)memcpy(eh->ether_shost, IF_LLADDR(ifp),
sizeof(eh->ether_shost));
- /*
- * Bridges require special output handling.
- */
- if (ifp->if_bridge) {
- BRIDGE_OUTPUT(ifp, m, error);
- return (error);
- }
-
/*
* If a simplex interface, and the packet is being sent to our
* Ethernet address or a broadcast address, loopback a copy.
@@ -330,6 +322,14 @@ ether_output(struct ifnet *ifp, struct mbuf *m,
}
}
+ /*
+ * Bridges require special output handling.
+ */
+ if (ifp->if_bridge) {
+ BRIDGE_OUTPUT(ifp, m, error);
+ return (error);
+ }
+
#ifdef DEV_CARP
if (ifp->if_carp &&
(error = carp_output(ifp, m, dst, NULL)))
OpenPOWER on IntegriCloud