]> git.sur5r.net Git - openldap/commitdiff
Import IPv6 update from devel
authorKurt Zeilenga <kurt@openldap.org>
Thu, 24 Aug 2000 23:25:09 +0000 (23:25 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Thu, 24 Aug 2000 23:25:09 +0000 (23:25 +0000)
servers/slapd/daemon.c

index b6cf134bbe8f8b9ce08161ee2e33ff7b91e144b2..9c961d607d439a55ccbe16f427e5dd83ba17760c 100644 (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: