# ether_aton

## NAME



           ether_aton, ether_ntoa, ether_ntohost, ether_hostton, ether_line,
           ether_ntoa_r, ether_aton_r - Ethernet address manipulation
           routines
    


## LIBRARY



           Standard C library (_libc_ , _-lc_)
    


## SYNOPSIS



           **#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_**);**
    


## DESCRIPTION



           **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.
           **ether_aton**() returns NULL if the address is invalid.
    
           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 nonzero if it
           cannot be found.
    
           The **ether_hostton**() function maps a hostname to the corresponding
           Ethernet address in _/etc/ethers_ and returns nonzero if it cannot
           be found.
    
           The **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
           nonzero 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];
               }
    


## ATTRIBUTES



           For an explanation of the terms used in this section, see
           attributes(7).
           ┌────────────────────────────────────┬───────────────┬───────────┐
           │ **Interface** │ **Attribute** │ **Value** │
           ├────────────────────────────────────┼───────────────┼───────────┤
           │ **ether_aton**(), **ether_ntoa**()         │ Thread safety │ MT-Unsafe │
           ├────────────────────────────────────┼───────────────┼───────────┤
           │ **ether_ntohost**(), **ether_hostton**(),  │ Thread safety │ MT-Safe   │
           │ **ether_line**(), **ether_ntoa_r**(),      │               │           │
           │ **ether_aton_r**()                     │               │           │
           └────────────────────────────────────┴───────────────┴───────────┘
    


## STANDARDS



           None.
    


## BUGS



           In glibc 2.2.5 and earlier, the implementation of **ether_line**() is
           broken.
    


* * *