Provided by: manpages-es_1.55-10_all bug

NOMBRE

       getnameinfo  - traduccion direccion-a-nombre de forma independiente del
       protocolo

SINOPSIS

       #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);

DESCRIPCI'ON

       La funcion getnameinfo(3) se define  para  la  traduccion  direccion-a-
       nombrenodo   de   manera   independiente  del  protocolo.   Combina  la
       funcionalidad de gethostbyaddr(3) y getservbyport(3) y es la inversa de
       getaddrinfo(3).   El  argumento  sa  es  un  puntero  a  una estructura
       generica de direccion de  conector  (socket)  (de  tipo  sockaddr_in  o
       sockaddr_in6)  de tamano salen que contiene la direccion IP y el numero
       del puerto de entrada.  Los argumentos  host  y  serv  son  punteros  a
       buffers  (de  tamano hostlen y servlen respectivamente) que se utilizan
       para almacenar los valores devueltos.

       El invocador puede especificar que no se solicita ningun nombre de host
       (o  nombre  de  servicio) pasando como argumento host (o serv) el valor
       NULL o asignando cero al parametro hostlen (o servlen).   Sin  embargo,
       al  menos uno de los dos, nombre de host o nombre de servicio, debe ser
       solicitado.

       El argumento flags modifica el comportamiento  de  getnameinfo(3)  como
       sigue:

       NI_NOFQDN
              Si  se  activa,  devuelve  solamente la parte del nombre de host
              correspondiente al FQDN para hosts locales.

       NI_NUMERICHOST
              Si se activa, se devuelve la forma numerica del nombre de  host.
              (Si  no se activa, devolvera igualmente este valor en el caso en
              que el nombre de nodo no pueda ser buscado.)

       NI_NAMEREQD
              Si se activa, se devuelve un error cuando el nombre de  host  no
              puede ser buscado.

       NI_NUMERICSERV
              Si  se  activa, la direccion del servicio se devuelve en formato
              numerico, por ejemplo, mediante su numero de puerto.

       NI_DGRAM
              Si se activa, el servicio se basa en datagramas (UDP) en vez  de
              basarse  en  flujos  (TCP).  Se  necesita para los pocos puertos
              (512-514) que tienen servicios diferentes para UDP y TCP.

VALOR DEVUELTO

       Cuando tiene exito se devuelve 0 y los nombres de nodo y  de  servicio,
       si   se   solicitan,   se  rellenan  con  cadenas  terminadas  en  NUL,
       posiblemente truncadas para ajustarse al  tamano  especificado  de  los
       buffers.   En  caso de error se devuelve un valor distinto de cero y se
       modifica errno apropiadamente.

ERRORES

       EAI_AGAIN
              El nombre no pudo resolverse en este instante. Pruebe  de  nuevo
              mas tarde.

       EAI_BADFLAGS
              El parametro flags tiene un valor invalido.

       EAI_FAIL
              Ocurrio un error no recuperable.

       EAI_FAMILY
              No  se  reconocio  la familia de direcciones o la longitud de la
              direccion es invalida para la familia especificada.

       EAI_MEMORY
              Memoria insuficiente.

       EAI_NONAME
              El nombre no  se  resuelve  para  los  parametros  pasados.   Se
              especifico la opcion NI_NAMEREQD y el nombre de host no pudo ser
              localizado o ni el nombre de  host  ni  el  nombre  de  servicio
              fueron solicitados.

       EAI_SYSTEM
              Ocurrio   un   error  de  sistema.  El  codigo  de  error  puede
              encontrarse en errno.

FICHEROS

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

NOTA

       Con el objetivo de ayudar al programador a  elegir  tamanos  razonables
       para los buffers suministrados, <netdb.h> define las constantes
              # define NI_MAXHOST      1025
              # define NI_MAXSERV      32
       La  primera es la constante MAXDNAME en versiones recientes del fichero
       de cabecera <arpa/nameser.h> de  BIND.  La  ultima  es  una  suposicion
       basada en los servicios listados en el actual RFC de Numeros Asignados.

EJEMPLOS

       El  codigo  siguiente trata de obtener el nombre de host y el nombre de
       servicio en formato numerico, para  una  direccion  de  conector  dada.
       Observe   que  no  hay  una  referencia  explicita  a  una  familia  de
       direcciones particular.

                struct sockaddr *sa;    /* entrada */
                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);

       La siguiente version comprueba si la direccion de  conector  tiene  una
       correspondencia inversa.

                struct sockaddr *sa;    /* entrada */
                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);

CONFORME A

       RFC 2553. (Vease tambien XNS, apartado 5.2.)

V'EASE TAMBI'EN

       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 y W. Stevens, Basic Socket  Interface
       Extensions for IPv6, RFC 2553, Marzo de 1999.

       Tatsuya  Jinmei  y Atsushi Onoe, An Extension of Format for IPv6 Scoped
       Addresses,      internet      draft,      work       in       progress.
       ftp://ftp.ietf.org/internet-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/proceedings/usenix2000/freenix/metzprotocol.html

Pagina de Manual de Linux      11 diciembre 2000                getnameinfo(3)