CARP broken on -CURRENT?
Xin LI
delphij at delphij.net
Sat Jul 18 04:50:37 UTC 2009
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
I got it. It was the cached llentry that preventing ether_output() to
choose the right broadcast/multicast address and use the default
gateway's L2 address. Here is a proposed patch.
Cheers,
- --
Xin LI <delphij at delphij.net> http://www.delphij.net/
FreeBSD - The Power to Serve!
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.12 (FreeBSD)
iEYEARECAAYFAkphVE0ACgkQi+vbBBjt66CghgCeOeqa4vLb+oW1qiZCKAggSdKM
O7wAoIF/JL1DNQ/EcuOi8TkNPofJyGLN
=hP2w
-----END PGP SIGNATURE-----
-------------- next part --------------
Index: sys/net/if_ethersubr.c
===================================================================
--- sys/net/if_ethersubr.c (revision 195748)
+++ sys/net/if_ethersubr.c (working copy)
@@ -194,7 +194,8 @@
switch (dst->sa_family) {
#ifdef INET
case AF_INET:
- if (lle != NULL && (lle->la_flags & LLE_VALID))
+ if (lle != NULL && (lle->la_flags & LLE_VALID) &&
+ !(m->m_flags & (M_BCAST | M_MCAST)))
memcpy(edst, &lle->ll_addr.mac16, sizeof(edst));
else
error = arpresolve(ifp, rt0, m, dst, edst, &lle);
More information about the freebsd-current
mailing list