-----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----- Index: sys/net/if_ethersubr.c =================================================================== --- sys/net/if_ethersubr.c (revision 195748) +++ sys/net/if_ethersubr.c (working copy) _at__at_ -194,7 +194,8 _at__at_ 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);Received on Sat Jul 18 2009 - 02:50:36 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:52 UTC