Index: sys/netinet/ip_output.c =================================================================== --- sys/netinet/ip_output.c +++ sys/netinet/ip_output.c @@ -502,7 +502,9 @@ if (ro->ro_nh->nh_flags & NHF_HOST) isbroadcast = (ro->ro_nh->nh_flags & NHF_BROADCAST); else if (ifp->if_flags & IFF_BROADCAST) - isbroadcast = in_ifaddr_broadcast(gw->sin_addr, ia); + isbroadcast = ((dst->sin_addr.s_addr == INADDR_BROADCAST) || + (dst->sin_addr.s_addr == INADDR_ANY) || + in_ifaddr_broadcast(gw->sin_addr, ia)); else isbroadcast = 0; if (ro->ro_nh->nh_flags & NHF_HOST)