- if (!allowbroadcast && (ifp->if_flags & IFF_BROADCAST)) {
- struct sockaddr_in *sin;
-
- sin = (struct sockaddr_in *)&ifp->if_broadaddr;
- if (sin->sin_addr.s_addr == ip->ip_dst.s_addr) {
+ if (in_lnaof(((struct sockaddr_in *)dst)->sin_addr) == INADDR_ANY) {
+ if ((ifp->if_flags & IFF_BROADCAST) == 0) {
+ error = EADDRNOTAVAIL;
+ goto bad;
+ }
+ if ((flags & IP_ALLOWBROADCAST) == 0) {