NOMBRE¶
getipnodebyname, getipnodebyaddr, freehostent - obtiene nombres y direcciones de
host
SINOPSIS¶
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
struct hostent *getipnodebyname(const char *name,
int af, int flags,
int *error_num);
struct hostent *getipnodebyaddr(const void *addr,
size_t len, int af,
int *error_num);
void freehostent(struct hostent *ip);
DESCRIPCIÓN¶
Estas funciones están obsoletas. Use
getaddrinfo(3) y
getnameinfo(3) en su lugar.
Las funciones
getipnodebyname(3) y
getipnodebyaddr(3) devuelven
los nombres y las direcciones de un host. Estas funciones devuelven un puntero
a la siguiente estructura:
struct hostent {
char *h_name;
char **h_aliases;
int h_addrtype;
int h_length;
char **h_addr_list;
};
Estas funciones reemplazan a las funciones
gethostbyname(3) y
gethostbyaddr(3) , las cuales sólo podían manejar la familia
de direcciones de red IPv4. Las funciones
getipnodebyname(3) y
getipnodebyaddr(3) pueden manejar múltiples familias de
direcciones de red.
A diferencia de las funciones
gethostby , estas funciones devuelven
punteros a memoria reservada dinámicamente. La función
freehostent(3) se emplea para liberar la memoria dinámica asignada
después de que el invocador deje de necesitar la estructura
hostent.
parámetros de getipnodebyname¶
La función
getipnodebyname(3) busca direcciones de red para el host
especificado en el parámetro
name. El parámetro
af
especifica uno de los siguientes valores:
- AF_INET
- El parámetro name apunta a una dirección
IPv4 en formato decimal con puntos o a un nombre de host IPv4.
- AF_INET6
- El parámetro name apunta a una dirección
IPv6 en formato hexadecimal o a un nombre de host IPv6.
El parámetro
flags especifica opciones adicionales. Se puede
especificar más de una opción mediante una operación OR
lógica de todas ellas.
flags debería contener el valor 0 si
no se desean opciones adicionales.
- AI_V4MAPPED
- Esta opción se usa con AF_INET6 para solicitar
una consulta de direcciones IPv4 en lugar de direcciones IPv6; las
direcciones IPv4 serán convertidas a direcciones IPv6.
- AI_ALL
- Esta opción se usa con AI_V4MAPPED para
solicitar una consulta de direcciones IPv4 y IPv6. Cualquier
dirección IPv4 encontrada se convertirá a una dirección
IPv6.
- AI_ADDRCONFIG
- Esta opción se usa con AF_INET6 para solicitar
que las consultas de direcciones IPv6 no se realicen a menos que el
sistema tenga al menos una dirección IPv6 asignada a una interfaz de
red, y que las consultas de direcciones IPv4 no se realicen a menos que el
sistema tenga al menos una dirección IPv4 asignada a una interfaz de
red. Esta opción puede usarse aislada o con la opción
AI_V4MAPPED.
- AI_ALL
- Esta opción es equivalente a (AI_ADDRCONFIG |
AI_V4MAPPED).
parámetros de getipnodebyaddr¶
La función
getipnodebyaddr(3) busca el nombre del host cuya
dirección de red está especificada en el parámetro
addr.
El parámetro
af especifica uno de los siguientes valores:
- AF_INET
- El parámetro addr apunta a una estructura
in_addr y len debe contener el valor sizeof(struct
in_addr).
- AF_INET6
- El parámetro addr apunta a una estructura
in6_addr y len debe contener el valor sizeof(struct
in6_addr).
VALOR DEVUELTO¶
Si ocurre un error se devuelve un puntero null, y
error_num
contendrá un código de error de la siguiente lista:
- HOST_NOT_FOUND
- No se encontró el nombre de host o la dirección
de red.
- NO_ADDRESS
- El servidor de nombres de dominio reconoció la
dirección o nombre de red, pero no devolvió ninguna respuesta.
Ésto puede suceder si el host tiene solamente direcciones IPv4 y se
realiza una consulta de direcciones IPv6 solamente, o viceversa.
- NO_RECOVERY
- El servidor de nombres de dominio devolvió una
respuesta de fallo permanente.
- TRY_AGAIN
- El servidor de nombres de dominio devolvió una
respuesta de fallo temporal. Puede que tenga mejor suerte la próxima
vez.
Una consulta exitosa devuelve un puntero a una estructura
hostent que
contiene los siguientes campos:
- h_name
- Nombre oficial del host.
- h_aliases
- Es un array de punteros a sinónimos no oficiales para
el mismo host. Este array termina en un puntero null.
- h_addrtype
- Es una copia del parámetro af a
getipnodebyname(3) o getipnodebyaddr(3). h_addrtype
será siempre AF_INET si el parámetro af era
AF_INET. será siempre AF_INET6 si el parámetro
af era AF_INET6.
- h_length
- Este campo contendrá el valor sizeof(struct
in_addr) si h_addrtype es AF_INET, y el valor sizeof(struct
in6_addr) si h_addrtype es AF_INET6.
- h_addr_list
- Es un array de uno o más punteros a estructuras de
direcciones de red para el host. Este array termina en un puntero
null.
OBSERVACIONES¶
Estas funciones han estado presentes en glibc 2.1.91-95, pero fueron eliminadas
de nuevo. Muchos sistemas derivados de Unix las soportan, pero todos las
consideran obsoletas.
RFC 2553.
VÉASE TAMBIÉN¶
getaddrinfo(3),
getnameinfo(3),
inet_ntop(3),
inet_pton(3)