+ SilcSchedule schedule);
+
+/****f* silcutil/SilcSocketConnectionAPI/SilcSocketHostLookupCb
+ *
+ * SYNOPSIS
+ *
+ * typedef void (*SilcSocketHostLookupCb)(SilcSocketConnection sock,
+ * void *context);
+ *
+ * DESCRIPTION
+ *
+ * Asynchronous host lookup callback function that will be called
+ * when the lookup is performed.
+ *
+ ***/
+typedef void (*SilcSocketHostLookupCb)(SilcSocketConnection sock,
+ void *context);
+
+/****f* silcutil/SilcSocketConnectionAPI/silc_socket_host_lookup
+ *
+ * SYNOPSIS
+ *
+ * void silc_socket_host_lookup(SilcSocketConnection sock,
+ * bool port_lookup,
+ * SilcSocketHostLookupCb callback,
+ * void *context,
+ * SilcSchedule schedule);
+ *
+ * DESCRIPTION
+ *
+ * Performs asynchronous host name and IP address lookups for the
+ * specified socket connection. This may be called when the socket
+ * connection is created and the full IP address and fully qualified
+ * domain name information is desired. The `callback' with `context'
+ * will be called after the lookup is performed. The `schedule'
+ * is the application's scheduler which the lookup routine needs.
+ * If the socket connection is freed during the lookup the library
+ * will automatically cancel the lookup and the `callback' will not be
+ * called.
+ *
+ * If `port_lookup' is TRUE then the remote port of the socket
+ * connection is resolved. After the information is resolved they
+ * are accessible using sock->ip and sock->hostname pointers. Note
+ * that if the both IP and FQDN could not be resolved the sock->hostname
+ * includes the IP address of the remote host. The resolved port is
+ * available in sock->port.
+ *
+ ***/
+void silc_socket_host_lookup(SilcSocketConnection sock,
+ bool port_lookup,
+ SilcSocketHostLookupCb callback,
+ void *context,
+ SilcSchedule schedule);