#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); /* GNU extensions */
char *ether_ntoa_r(const struct ether_addr *addr, char *buf); struct ether_addr *ether_aton_r(const char *asc, struct ether_addr *addr);
The 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 zeros. The string is returned in a statically allocated buffer, which subsequent calls will overwrite.
The ether_ntohost() function maps an Ethernet address to the corresponding hostname in /etc/ethers and returns non-zero if it cannot be found.
The ether_hostton() function maps a hostname to the corresponding Ethernet address in /etc/ethers and returns non-zero if it cannot be found.
The ether_line() function parses a line in /etc/ethers format (ethernet address followed by whitespace followed by hostname; aq#aq 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 line.
The functions ether_ntoa_r() and ether_aton_r() are reentrant thread-safe versions of ether_ntoa() and ether_aton() respectively, and do not use static buffers.
The structure ether_addr is defined in <net/ethernet.h> as:
struct ether_addr { uint8_t ether_addr_octet[6]; }