ITS#681: Fix for problems with IPv6 and ACLs

from Stig Venaas <venaas@uninett.no>
---
Copyright 2000 Stig Venaas, UNINETT
All rights reserved.

Redistribution and use in source and binary forms are permitted
without restriction or fee of any kind as long as this notice is
preserved. The name of UNINETT may not be used to endorse or promote
products derived from this software without specific prior written
permission. This software is provided ``as is'' without express or
implied warranty.
This commit is contained in:
Kurt Zeilenga 2000-08-24 18:34:48 +00:00
parent f0cd2a13bb
commit 60c474a4a0

View file

@ -907,14 +907,22 @@ slapd_daemon_task(
#endif /* LDAP_PF_LOCAL */
# ifdef LDAP_PF_INET6
case AF_INET6: {
case AF_INET6:
if ( IN6_IS_ADDR_V4MAPPED(&from.sa_in6_addr.sin6_addr) ) {
peeraddr = inet_ntoa( *((struct in_addr *)
&from.sa_in6_addr.sin6_addr.s6_addr32[3]) );
sprintf( peername, "IP=%s:%d",
peeraddr != NULL ? peeraddr : "unknown",
(unsigned) ntohs( from.sa_in6_addr.sin6_port ) );
} else {
char addr[INET6_ADDRSTRLEN];
sprintf( peername, "IP=%s %d",
inet_ntop( AF_INET6,
&from.sa_in6_addr.sin6_addr,
addr, sizeof addr) ? addr : "unknown",
(unsigned) ntohs( from.sa_in6_addr.sin6_port ) );
} break;
inet_ntop( AF_INET6,
&from.sa_in6_addr.sin6_addr,
addr, sizeof addr) ? addr : "unknown",
(unsigned) ntohs( from.sa_in6_addr.sin6_port ) );
}
break;
# endif /* LDAP_PF_INET6 */
case AF_INET: