getnameinfo man page on YellowDog

Man page or keyword search:  
man Server   18644 pages
apropos Keyword Search (all sections)
Output format
YellowDog logo
[printable version]

getnameinfo(3)		   UNIX Programmer's Manual		getnameinfo(3)

NAME
       getnameinfo  - address-to-name translation in protocol-independent man‐
       ner

SYNOPSIS
       #include <sys/socket.h>
       #include <netdb.h>

       int getnameinfo(const struct sockaddr *sa, socklen_t salen,
		       char *host, size_t hostlen,
		       char *serv, size_t servlen, int flags);

DESCRIPTION
       The  getnameinfo(3)  function  is  defined   for	  protocol-independent
       address-to-nodename  translation.   It  combines	 the  functionality of
       gethostbyaddr(3) and getservbyport(3) and  is  the  inverse  of	getad‐
       drinfo(3).   The	 sa  argument is a pointer to a generic socket address
       structure (of type sockaddr_in or  sockaddr_in6)	 of  size  salen  that
       holds  the  input  IP  address and port number.	The arguments host and
       serv are pointers to buffers (of size hostlen and servlen respectively)
       to hold the return values.

       The  caller  can	 specify  that	no  hostname  (or  no service name) is
       required by providing a NULL host (or serv) argument or a zero  hostlen
       (or  servlen)  parameter.  However, at least one of hostname or service
       name must be requested.

       The flags argument modifies the behaviour of getnameinfo(3) as follows:

       NI_NOFQDN
	      If set, return only the hostname part  of	 the  FQDN  for	 local
	      hosts.

       NI_NUMERICHOST
	      If  set,	then  the  numeric  form  of the hostname is returned.
	      (When not set, this will still happen in case  the  node's  name
	      cannot be looked up.)

       NI_NAMEREQD
	      If  set,	then  a	 error	is  returned if the hostname cannot be
	      looked up.

       NI_NUMERICSERV
	      If set, then the service address is returned  in	numeric	 form,
	      for example by its port number.

       NI_DGRAM
	      If  set,	then  the  service is datagram (UDP) based rather than
	      stream (TCP) based. This is required for the few ports (512-514)
	      that have different services for UDP and TCP.

RETURN VALUE
       On success 0 is returned, and node and service names, if requested, are
       filled with null-terminated strings,  possibly  truncated  to  fit  the
       specified buffer lengths.  On error one of the following non-zero error
       codes is returned:

       EAI_AGAIN
	      The name could not be resolved at this time. Try again later.

       EAI_BADFLAGS
	      The flags parameter has an invalid value.

       EAI_FAIL
	      A non-recoverable error occurred.

       EAI_FAMILY
	      The address family was not recognized, or the address length was
	      invalid for the specified family.

       EAI_MEMORY
	      Out of memory.

       EAI_NONAME
	      The   name   does	 not  resolve  for  the	 supplied  parameters.
	      NI_NAMEREQD is set and the host's name  cannot  be  located,  or
	      neither hostname nor service name were requested.

       EAI_OVERFLOW
	      The buffer pointed to by host or serv was too small.

       EAI_SYSTEM
	      A system error occurred. The error code can be found in errno.

       The  gai_strerror(3)  function  translates these error codes to a human
       readable string, suitable for error reporting.

FILES
       /etc/hosts
       /etc/nsswitch.conf
       /etc/resolv.conf

NOTE
       In order to assist the programmer in choosing reasonable sizes for  the
       supplied buffers, <netdb.h> defines the constants
	      # define NI_MAXHOST      1025
	      # define NI_MAXSERV      32
       The  former  is	the  constant  MAXDNAME	 in  recent versions of BIND's
       <arpa/nameser.h> header file. The latter is a guess based on  the  ser‐
       vices listed in the current Assigned Numbers RFC.

EXAMPLE
       The  following code tries to get the numeric hostname and service name,
       for a given socket address. Note that there is no  hardcoded  reference
       to a particular address family.

		struct sockaddr *sa;	/* input */
		char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV];

		if (getnameinfo(sa, sa->sa_len, hbuf, sizeof(hbuf), sbuf,
		    sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV) == 0)
			printf("host=%s, serv=%s\n", hbuf, sbuf);

       The  following  version	checks	if  the	 socket	 address has a reverse
       address mapping.

		struct sockaddr *sa;	/* input */
		char hbuf[NI_MAXHOST];

		if (getnameinfo(sa, sa->sa_len, hbuf, sizeof(hbuf),
		    NULL, 0, NI_NAMEREQD))
		       printf("could not resolve hostname");
		else
		       printf("host=%s\n", hbuf);

CONFORMING TO
       RFC 2553, POSIX.1-2001.

SEE ALSO
       getaddrinfo(3), gethostbyaddr(3),  getservbyname(3),  getservbyport(3),
       inet_ntop(3), socket(3), hosts(5), services(5), hostname(7), named(8)

       R.  Gilligan,  S. Thomson, J. Bound and W. Stevens, Basic Socket Inter‐
       face Extensions for IPv6, RFC 2553, March 1999.

       Tatsuya Jinmei and Atsushi Onoe, An Extension of Format for IPv6 Scoped
       Addresses, internet draft, work in progress.  ftp://ftp.ietf.org/inter‐
       net-drafts/draft-ietf-ipngwg-scopedaddr-format-02.txt

       Craig Metz, Protocol Independence Using the Sockets API, Proceedings of
       the  freenix track: 2000 USENIX annual technical conference, June 2000.
       http://www.usenix.org/publications/library/proceed‐
       ings/usenix2000/freenix/metzprotocol.html

Linux Man Page			  2000-12-11			getnameinfo(3)
[top]

List of man pages available for YellowDog

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net