In if_ethersubr.c @ line 304:
switch (dst->sa_family) {
case AF_INET:
error = arpresolve(ac, rt, m, dst, edst);
if (error)
return (error == EAGAIN ? 0 : error);
/* If broadcasting on a simplex interface, loopback a
copy */
if ((m->m_flags & M_BCAST) && (ifp->if_flags &
IFF_SIMPLEX) &&
!m->m_pkthdr.pf.routed)
mcopy = m_copy(m, 0, (int)M_COPYALL);
etype = htons(ETHERTYPE_IP);
break;
#ifdef INET6
case AF_INET6:
error = nd6_storelladdr(ifp, rt, m, dst, (u_char *)edst);
if (error)
return (error);
etype = htons(ETHERTYPE_IPV6);
break;
@ 374
/* XXX Should we feed-back an unencrypted IPsec packet ? */
if (mcopy)
(void) looutput(ifp, mcopy, dst, rt);
Does the loopback for a simplex interface for IPv6 happen somewhere else?
thanks!
Geoff Steckel