ARES_GETNAMEINFO(3) | Library Functions Manual | ARES_GETNAMEINFO(3) |
ares_getnameinfo - Address-to-nodename translation in protocol-independent manner
#include <ares.h> typedef void (*ares_nameinfo_callback)(void *arg, int status, int timeouts, char *node, char *service) void ares_getnameinfo(ares_channel_t *channel, const struct sockaddr *sa, ares_socklen_t salen, int flags, ares_nameinfo_callback callback, void *arg)
The ares_getnameinfo function is defined for protocol-independent address translation. The function is a combination of ares_gethostbyaddr(3) and getservbyport(3). The function will translate the address either by executing a host query on the name service channel identified by channel or it will attempt to resolve it locally if possible. The parameters sa and len give the address as a sockaddr structure, and flags gives the options that the function will use. Valid flags are listed below:
When the query is complete or has failed, the ares library will invoke callback. Completion or failure of the query may happen immediately, or may happen during a later call to ares_process(3), ares_destroy(3) or ares_cancel(3).
When the associated callback is called, it is called with a channel lock so care must be taken to ensure any processing is minimal to prevent DNS channel stalls.
The callback may be triggered from a different thread than the one which called ares_getnameinfo(3).
For integrators running their own event loops and not using ARES_OPT_EVENT_THREAD, care needs to be taken to ensure any file descriptor lists are updated immediately within the eventloop when notified.
The callback argument arg is copied from the ares_getnameinfo argument arg. The callback argument status indicates whether the query succeeded and, if not, how it failed. It may have any of the following values:
The callback argument timeouts reports how many times a query timed out during the execution of the given request.
On successful completion of the query, the callback argument node contains a string representing the hostname (assuming ARES_NI_LOOKUPHOST was specified). Additionally, service contains a string representing the service name (assuming ARES_NI_LOOKUPSERVICE was specified). If the query did not complete successfully, or one of the values was not requested, node or service will be NULL.
ares_process(3),
Dominick Meglio
Copyright 2005 by Dominick Meglio.
1 May 2009 |