diff options
author | thompsa <thompsa@FreeBSD.org> | 2006-08-25 20:16:39 +0000 |
---|---|---|
committer | thompsa <thompsa@FreeBSD.org> | 2006-08-25 20:16:39 +0000 |
commit | 6e3cd0c9792982825455b4f26a2c389ef91e8ef2 (patch) | |
tree | 88e8b961aea9db914155b590095ddec7e031c979 /sys/net/if_ethersubr.c | |
parent | 3289f04db92312439d1e50714f6dfaa9f001dcf3 (diff) | |
download | FreeBSD-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/net/if_ethersubr.c')
-rw-r--r-- | sys/net/if_ethersubr.c | 16 |
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))) |