NAME
ether_aton, ether_ntoa, ether_ntohost, ether_hostton, ether_line,
ether_ntoa_r, ether_aton_r - Ethernet address manipulation routines
SYNOPSIS
#include <netinet/ether.h>
I char *ether_ntoa(const struct ether_addr * addr );
I struct ether_addr *ether_aton(const char * asc );
I int ether_ntohost(char * hostname , const struct ether_addr * addr );
I int ether_hostton(const char * hostname , struct ether_addr * addr );
I int ether_line(const char * line , struct ether_addr * addr ,
I char * hostname );
/* GNU extensions */
I char *ether_ntoa_r(const struct ether_addr * addr , char * buf );
I struct ether_addr *ether_aton_r(const char * asc ,
I struct ether_addr * addr );
DESCRIPTION
R ether_aton ()
converts the 48-bit Ethernet host address asc
from the standard hex-digits-and-colons notation into binary data in
network byte order and returns a pointer to it in a statically
allocated buffer, which subsequent calls will
overwrite.
R ether_aton ()
returns NULL if the address is invalid.
The
R ether_ntoa ()
function converts the Ethernet host address
addr given in network byte order to a string in standard
hex-digits-and-colons notation, omitting leading zeroes.
The string is returned in a statically allocated buffer,
which subsequent calls will overwrite.
The
R ether_ntohost ()
function maps an Ethernet address to the
corresponding hostname in
/etc/ethers
and returns non-zero if it cannot be found.
The
R ether_hostton ()
function maps a hostname to the
corresponding Ethernet address in
/etc/ethers
and returns non-zero if it cannot be found.
The
R ether_line ()
function parses a line in
/etc/ethers
format (ethernet address followed by whitespace followed by
hostname; '#' introduces a comment) and returns an address
and hostname pair, or non-zero if it cannot be parsed.
The buffer pointed to by
hostname
must be sufficiently long, for example, have the same length as
R line .
The functions
R ether_ntoa_r ()
and
R ether_aton_r ()
are re-entrant
threadsafe versions of
R ether_ntoa ()
and
R ether_aton ()
respectively, and do not use static buffers.
The structure
ether_addr is defined in
net/ethernet.h as:
struct ether_addr {
u_int8_t ether_addr_octet[6];
}
CONFORMING TO
4.3BSD, SunOS
BUGS
The glibc 2.2.5 implementation of ether_line() is broken.
SEE ALSO