Compare port numbers correctly. They are stored by SRCPORT()
in host byte order, so we need to compare them as such. Properly compare IPv6 addresses as well. This allows the, by default, 8 badaddrs slots per address family to work correctly and only print sendto() errors once. The change is no longer applicable to any latest upstream versions. Approved by: roberto Sponsored by: Sandvine Incorporated MFC after: 1 week
This commit is contained in:
parent
235195988b
commit
a9b3947837
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=223626
@ -2716,14 +2716,14 @@ sendpkt(
|
|||||||
|
|
||||||
for (slot = ERRORCACHESIZE; --slot >= 0; )
|
for (slot = ERRORCACHESIZE; --slot >= 0; )
|
||||||
if(dest->ss_family == AF_INET) {
|
if(dest->ss_family == AF_INET) {
|
||||||
if (badaddrs[slot].port == ((struct sockaddr_in*)dest)->sin_port &&
|
if (badaddrs[slot].port == SRCPORT(dest) &&
|
||||||
badaddrs[slot].addr.s_addr == ((struct sockaddr_in*)dest)->sin_addr.s_addr)
|
badaddrs[slot].addr.s_addr == ((struct sockaddr_in*)dest)->sin_addr.s_addr)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#ifdef INCLUDE_IPV6_SUPPORT
|
#ifdef INCLUDE_IPV6_SUPPORT
|
||||||
else if (dest->ss_family == AF_INET6) {
|
else if (dest->ss_family == AF_INET6) {
|
||||||
if (badaddrs6[slot].port == ((struct sockaddr_in6*)dest)->sin6_port &&
|
if (badaddrs6[slot].port == SRCPORT(dest) &&
|
||||||
badaddrs6[slot].addr.s6_addr == ((struct sockaddr_in6*)dest)->sin6_addr.s6_addr)
|
!memcmp(&badaddrs6[slot].addr, &((struct sockaddr_in6*)dest)->sin6_addr, sizeof(struct in6_addr)))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif /* INCLUDE_IPV6_SUPPORT */
|
#endif /* INCLUDE_IPV6_SUPPORT */
|
||||||
|
Loading…
Reference in New Issue
Block a user