+
+#ifdef HAVE_IPV6
+ struct sockaddr_storage remote;
+ char s[NI_MAXHOST];
+
+ *hostname = NULL;
+ *ip = NULL;
+
+ SILC_LOG_DEBUG(("Resolving remote hostname and IP address"));
+
+ memset(&remote, 0, sizeof(remote));
+ memset(&s, 0, sizeof(s));
+ len = sizeof(remote);
+ rval = getpeername(sock, (struct sockaddr *)&remote, &len);
+ if (rval < 0)
+ return FALSE;
+
+ if (getnameinfo((struct sockaddr *)&remote, len, s, sizeof(s), NULL, 0,
+ NI_NUMERICHOST))
+ return FALSE;
+
+ *ip = silc_memdup(s, strlen(s));
+ if (*ip == NULL)
+ return FALSE;
+#else
+ struct sockaddr_in remote;