Address-to-host name translation [given the binary address and port].
Library (libc.a)
#include <sys/socket.h>
#include <netdb.h>
int
getnameinfo (sa, salen, host, hostlen, serv, servlen, flags)
const struct sockaddr *sa;
char *host;
size_t hostlen;
char *serv;
size_t servlen;
int flags;
The sa parameter points to either a sockaddr_in structure (for IPv4) or a sockaddr_in6 structure (for IPv6) that holds the IP address and port number. Thesalen parameter gives the length of the sockaddr_in or sockaddr_in6 structure.
The host parameter is a buffer where the hostname associated with the IP address is copied. The hostlen parameter provides the length of this buffer. The service name associated with the port number is copied into the buffer pointed to by the serv parameter. The servlen parameter provides the length of this buffer.
The flags parameter defines flags that may be used to modify the default actions of this function. By default, the fully-qualified domain name (FQDN) for the host is looked up in DNS and returned.
Item | Description |
---|---|
NI_NOFQDN | If set, return only the hostname portion of the FQDN. If cleared, return the FQDN. |
NI_NUMERICHOST | If set, return the numeric form of the host address. If cleared, return the name. |
NI_NAMEREQD | If set, return an error if the host's name cannot be determined. If cleared, return the numeric form of the host's address (as if NI_NUMERICHOST had been set). |
NI_NUMERICSERV | If set, return the numeric form of the desired service. If cleared, return the service name. |
NI_DGRAM | If set, consider the desired service to be a datagram service, (for example, call getservbyport with an argument of udp). If clear, consider the desired service to be a stream service (for example, call getserbyport with an argument of tcp). |
A zero return value indicates successful completion; a non-zero value indicates failure. If successful, the strings for hostname and service name are copied into the host and serv buffers, respectively. If either the host or service name cannot be located, the numeric form is copied into the host and serv buffers, respectively.