svn commit: r211023 - head/usr.sbin/syslogd
Dag-Erling Smørgrav
des at des.no
Tue Aug 10 17:47:26 UTC 2010
"M. Warner Losh" <imp at bsdimp.com> writes:
> /*
> * Macros to cast a struct sockaddr, or parts thereof.
> * On architectures with strict alignment requirements, the compiler
> * can bogusly warn about alignment problems since its static analysis
> * is insufficient for it to know that with the APIs used, there
> * really is no alignment issue.
> */
That's a bit harsh on the compiler, don't you think? It never pays to
hurt the compiler's feelings :)
> : @@ -2410,8 +2419,8 @@
> : }
> : reject = 0;
> : for (j = 0; j < 16; j += 4) {
> : - if ((*(u_int32_t *)&sin6->sin6_addr.s6_addr[j] & *(u_int32_t *)&m6p->sin6_addr.s6_addr[j])
> : - != *(u_int32_t *)&a6p->sin6_addr.s6_addr[j]) {
> : + if ((UINT32_CAST(sin6->sin6_addr.s6_addr[j]) & UINT32_CAST(m6p->sin6_addr.s6_addr[j]))
> : + != UINT32_CAST(a6p->sin6_addr.s6_addr[j])) {
> : ++reject;
> : break;
> : }
> :
> :
>
> Why 16 and 4 here? What's so magical about them?
4 = bytes in a uint32_t, 16 = bytes in an ipv6 address.
DES
--
Dag-Erling Smørgrav - des at des.no
More information about the svn-src-head
mailing list