SINOPSIS
#include <netinet/ether.h>
char *
ether_ntoa(const struct ether_addr *addr);
struct ether_addr *
ether_aton(const char *asc);
int
ether_ntohost(char *hostname, const struct ether_addr *addr);
int
ether_hostton(const char *hostname, struct ether_addr *addr);
int
ether_line(const char *line, struct ether_addr *addr,
char *hostname);
/* extensiones de GNU */
char *
ether_ntoa_r(const struct ether_addr *addr, char *buf);
struct ether_addr *
ether_aton_r(const char *asc, struct ether_addr *addr);
DESCRIPCIÓN
ether_aton() convierte la dirección de host Ethernet de 48 bits asc en la notación estándar de dígitos-hexadecimales-y-puntos a datos binarios en el orden de bytes de la red y devuelve un puntero a éstos en un buffer reservado estáticamente, que será sobreescrito por llamadas posteriores. ether_aton devuelve NULL si la dirección no es válida.La función ether_ntoa() convierte la dirección de host Ethernet addr dada en el orden de bytes de la red a una cadena en la notación estándar de dígitos-hexadecimales-y-puntos, omitiendo los ceros del principio. La cadena se devuelve en almacenamiento estático, que será sobreescrito por llamadas posteriores.
La función ether_ntohost() asocia una dirección Ethernet con su correspondiente nombre de host en /etc/ethers y devuelve un valor distinto de cero si no se encontró ninguna correspondencia.
La función ether_hostton() asocia un nombre de host con su correspondiente dirección Ethernet en /etc/ethers y devuelve un valor distinto de cero si no se encontró ninguna correspondencia.
La función ether_line() analiza una línea con el formato de /etc/ethers (dirección ethernet seguida de espacios y seguida por el nombre de host; '#' introduce un comentario) y devuelve un par dirección - nombre de host, o un valor distinto de cero si no pudo ser analizada. El buffer apuntado por hostname debe ser suficientemente grande, p.e., tener la misma longitud que line.
Las funciones ether_ntoa_r y ether_aton_r son versiones reentrantes e hilo-seguro de ether_ntoa y ether_aton respectivamente, y no usan buffers estáticos.
La estructura ether_addr está definida en net/ethernet.h como:
-
struct ether_addr { u_int8_t ether_addr_octet[6]; }