In fddi_output it appears that the call to carp_output to modify the packet header to contain the virtual MAC address happens too early. This patch moves the carp_output call to a place where it can have an effect. Chris Pascoe 2004/06/28 Index: if_fddisubr.c =================================================================== RCS file: /cvs/src/sys/net/if_fddisubr.c,v retrieving revision 1.38 diff -u -r1.38 net/if_fddisubr.c --- net/if_fddisubr.c 21 Jun 2004 23:50:36 -0000 1.38 +++ net/if_fddisubr.c 28 Jun 2004 08:31:57 -0000 @@ -431,6 +431,12 @@ #if NBPFILTER > 0 queue_it: #endif + if (hdrcmplt) + bcopy((caddr_t)esrc, (caddr_t)fh->fddi_shost, + sizeof(fh->fddi_shost)); + else + bcopy((caddr_t)ac->ac_enaddr, (caddr_t)fh->fddi_shost, + sizeof(fh->fddi_shost)); #if NCARP > 0 if (ifp->if_carp) { int error; @@ -439,13 +445,6 @@ goto bad; } #endif - - if (hdrcmplt) - bcopy((caddr_t)esrc, (caddr_t)fh->fddi_shost, - sizeof(fh->fddi_shost)); - else - bcopy((caddr_t)ac->ac_enaddr, (caddr_t)fh->fddi_shost, - sizeof(fh->fddi_shost)); mflags = m->m_flags; len = m->m_pkthdr.len; s = splimp();