Command Section
ETHERS(3)              FreeBSD Library Functions Manual              ETHERS(3)

     ethers, ether_line, ether_aton, ether_aton_r, ether_ntoa, ether_ntoa_r,
     ether_ntohost, ether_hostton - Ethernet address conversion and lookup

     Standard C Library (libc, -lc)

     #include <sys/types.h>
     #include <sys/socket.h>
     #include <net/ethernet.h>

     ether_line(const char *l, struct ether_addr *e, char *hostname);

     struct ether_addr *
     ether_aton(const char *a);

     struct ether_addr *
     ether_aton_r(const char *a, struct ether_addr *e);

     char *
     ether_ntoa(const struct ether_addr *n);

     char *
     ether_ntoa_r(const struct ether_addr *n, char *buf);

     ether_ntohost(char *hostname, const struct ether_addr *e);

     ether_hostton(const char *hostname, struct ether_addr *e);

     These functions operate on ethernet addresses using an ether_addr
     structure, which is defined in the header file <net/ethernet.h>:

            * The number of bytes in an ethernet (MAC) address.
           #define ETHER_ADDR_LEN          6

            * Structure of a 48-bit Ethernet address.
           struct  ether_addr {
                   u_char octet[ETHER_ADDR_LEN];

     The function ether_line() scans l, an ASCII string in ethers(5) format
     and sets e to the ethernet address specified in the string and h to the
     hostname.  This function is used to parse lines from /etc/ethers into
     their component parts.

     The ether_aton() and ether_aton_r() functions convert ASCII
     representation of ethernet addresses into ether_addr structures.
     Likewise, the ether_ntoa() and ether_ntoa_r() functions convert ethernet
     addresses specified as ether_addr structures into ASCII strings.

     The ether_ntohost() and ether_hostton() functions map ethernet addresses
     to their corresponding hostnames as specified in the /etc/ethers
     database.  The ether_ntohost() function converts from ethernet address to
     hostname, and ether_hostton() converts from hostname to ethernet address.

     The ether_line() function returns zero on success and non-zero if it was
     unable to parse any part of the supplied line l.  It returns the
     extracted ethernet address in the supplied ether_addr structure e and the
     hostname in the supplied string h.

     On success, ether_ntoa() and ether_ntoa_r() functions return a pointer to
     a string containing an ASCII representation of an ethernet address.  If
     it is unable to convert the supplied ether_addr structure, it returns a
     NULL pointer.  ether_ntoa() stores the result in a static buffer;
     ether_ntoa_r() stores the result in a user-passed buffer.

     Likewise, ether_aton() and ether_aton_r() return a pointer to an
     ether_addr structure on success and a NULL pointer on failure.
     ether_aton() stores the result in a static buffer; ether_aton_r() stores
     the result in a user-passed buffer.

     The ether_ntohost() and ether_hostton() functions both return zero on
     success or non-zero if they were unable to find a match in the
     /etc/ethers database.

     The user must ensure that the hostname strings passed to the
     ether_line(), ether_ntohost() and ether_hostton() functions are large
     enough to contain the returned hostnames.

     If the /etc/ethers contains a line with a single + in it, the
     ether_ntohost() and ether_hostton() functions will attempt to consult the
     NIS ethers.byname and ethers.byaddr maps in addition to the data in the
     /etc/ethers file.

     ethers(5), yp(8)

     This particular implementation of the ethers library functions were
     written for and first appeared in FreeBSD 2.1.  Thread-safe function
     variants first appeared in FreeBSD 7.0.

     The ether_aton() and ether_ntoa() functions returns values that are
     stored in static memory areas which may be overwritten the next time they
     are called.

     ether_ntoa_r() accepts a character buffer pointer, but not a buffer
     length.  The caller must ensure adequate space is available in the buffer
     in order to avoid a buffer overflow.

FreeBSD 11.1-RELEASE-p4        October 30, 2007        FreeBSD 11.1-RELEASE-p4
Command Section