summaryrefslogtreecommitdiff
path: root/sys/net/if_ethersubr.c
diff options
context:
space:
mode:
authorChristopher Pascoe <pascoe@cvs.openbsd.org>2004-12-17 12:42:03 +0000
committerChristopher Pascoe <pascoe@cvs.openbsd.org>2004-12-17 12:42:03 +0000
commit00cabea6fcdbcf8569fba0e1263ab451f1cdf325 (patch)
treeaf618745f40973d7af5d616f304616ed17c64d0e /sys/net/if_ethersubr.c
parent4b8b00a64383f5942e6ec2170da2236e0ad29722 (diff)
Reorder code in the ethernet output path, and enhance unicast address
matching in the bridge receive path to make CARP operate correctly on physical interfaces that are participating in a bridge. ok mcbride@ henning@ dlg@
Diffstat (limited to 'sys/net/if_ethersubr.c')
-rw-r--r--sys/net/if_ethersubr.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/sys/net/if_ethersubr.c b/sys/net/if_ethersubr.c
index dee823be08c..cfc6fbc5cc5 100644
--- a/sys/net/if_ethersubr.c
+++ b/sys/net/if_ethersubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_ethersubr.c,v 1.85 2004/12/10 22:35:17 mcbride Exp $ */
+/* $OpenBSD: if_ethersubr.c,v 1.86 2004/12/17 12:42:02 pascoe Exp $ */
/* $NetBSD: if_ethersubr.c,v 1.19 1996/05/07 02:40:30 thorpej Exp $ */
/*
@@ -493,6 +493,14 @@ ether_output(ifp0, m0, dst, rt0)
bcopy((caddr_t)ac->ac_enaddr, (caddr_t)eh->ether_shost,
sizeof(eh->ether_shost));
+#if NCARP > 0
+ if (ifp->if_carp) {
+ error = carp_fix_lladdr(ifp0, m, dst, NULL);
+ if (error)
+ goto bad;
+ }
+#endif
+
#if NBRIDGE > 0
/*
* Interfaces that are bridge members need special handling
@@ -534,14 +542,6 @@ ether_output(ifp0, m0, dst, rt0)
}
#endif
-#if NCARP > 0
- if (ifp->if_carp) {
- error = carp_fix_lladdr(ifp0, m, dst, NULL);
- if (error)
- goto bad;
- }
-#endif
-
mflags = m->m_flags;
len = m->m_pkthdr.len;
s = splimp();