if (data_len < sizeof(p->ip) + sizeof(p->udp)) {
if (from)
from->s_addr = INADDR_ANY;
- errno = EINVAL;
+ errno = ERANGE;
return -1;
}
p = (struct bootp_pkt *)data;
bytes = ntohs(p->ip.ip_len);
if (bytes > data_len) {
- errno = EINVAL;
+ errno = ENOBUFS;
return -1;
}
if (valid_udp_packet(data, len, &from, flags & RAW_PARTIALCSUM) == -1)
{
- logerrx("%s: invalid UDP packet from %s",
- ifp->name, inet_ntoa(from));
+ if (errno == EINVAL)
+ logerrx("%s: UDP checksum failure from %s",
+ ifp->name, inet_ntoa(from));
+ else
+ logerr("%s: invalid UDP packet from %s",
+ ifp->name, inet_ntoa(from));
return;
}
if (ifp->flags & IFF_POINTOPOINT &&