122 lines
2.8 KiB
Groff
122 lines
2.8 KiB
Groff
.\" $NetBSD: ethers.3,v 1.15 2017/10/30 15:46:38 wiz Exp $
|
|
.\"
|
|
.\" Written by roland@frob.com. Public domain.
|
|
.\"
|
|
.Dd November 2, 1997
|
|
.Dt ETHERS 3
|
|
.Os
|
|
.Sh NAME
|
|
.Nm ether_ntoa ,
|
|
.Nm ether_aton ,
|
|
.Nm ether_ntohost ,
|
|
.Nm ether_hostton ,
|
|
.Nm ether_line
|
|
.Nd get ethers entry
|
|
.Sh LIBRARY
|
|
.Lb libc
|
|
.Sh SYNOPSIS
|
|
.In sys/types.h
|
|
.In sys/socket.h
|
|
.In net/if.h
|
|
.In net/if_ether.h
|
|
.Ft char *
|
|
.Fn ether_ntoa "const struct ether_addr *e"
|
|
.Ft struct ether_addr *
|
|
.Fn ether_aton "const char *s"
|
|
.Ft int
|
|
.Fn ether_ntohost "char *hostname" "const struct ether_addr *e"
|
|
.Ft int
|
|
.Fn ether_hostton "const char *hostname" "struct ether_addr *e"
|
|
.Ft int
|
|
.Fn ether_line "const char *line" "struct ether_addr *e" "char *hostname"
|
|
.Sh DESCRIPTION
|
|
Ethernet addresses are represented by the
|
|
following structure:
|
|
.Bd -literal -offset indent
|
|
struct ether_addr {
|
|
u_char ether_addr_octet[6];
|
|
};
|
|
.Ed
|
|
.Pp
|
|
The
|
|
.Fn ether_ntoa
|
|
function converts this structure into an ASCII string of the form
|
|
``xx:xx:xx:xx:xx:xx'', consisting of 6 hexadecimal numbers separated
|
|
by colons.
|
|
It returns a pointer to a static buffer that is reused for
|
|
each call.
|
|
The
|
|
.Fn ether_aton
|
|
converts an ASCII string of the same form and to a structure
|
|
containing the 6 octets of the address.
|
|
It returns a pointer to a
|
|
static structure that is reused for each call.
|
|
.Pp
|
|
The
|
|
.Fn ether_ntohost
|
|
and
|
|
.Fn ether_hostton
|
|
functions interrogate the data base mapping host names to Ethernet
|
|
addresses,
|
|
.Pa /etc/ethers .
|
|
The
|
|
.Fn ether_ntohost
|
|
function looks up the given Ethernet address and writes the associated
|
|
host name into the character buffer passed.
|
|
The
|
|
.Fn ether_hostton
|
|
function looks up the given host name and writes the associated
|
|
Ethernet address into the structure passed.
|
|
Both functions return
|
|
zero if they find the requested host name or address, and -1 if not.
|
|
Each call reads
|
|
.Pa /etc/ethers
|
|
from the beginning; if a + appears alone on a line in the file, then
|
|
.Fn ether_hostton
|
|
will consult the
|
|
.Pa ethers.byname
|
|
YP map, and
|
|
.Fn ether_ntohost
|
|
will consult the
|
|
.Pa ethers.byaddr
|
|
YP map.
|
|
.Pp
|
|
The
|
|
.Fn ether_line
|
|
function parses a line from the
|
|
.Pa /etc/ethers
|
|
file and fills in the passed ``struct ether_addr'' and character
|
|
buffer with the Ethernet address and host name on the line.
|
|
It returns zero if the line was successfully parsed and -1 if not.
|
|
.Pp
|
|
The
|
|
.Fa hostname
|
|
buffer for
|
|
.Fn ether_line
|
|
and
|
|
.Fn ether_ntohost
|
|
should be at least
|
|
.Dv MAXHOSTNAMELEN
|
|
+ 1
|
|
characters long, to prevent a buffer overflow during parsing.
|
|
.Sh FILES
|
|
.Bl -tag -width /etc/ethers -compact
|
|
.It Pa /etc/ethers
|
|
.El
|
|
.Sh SEE ALSO
|
|
.Xr ethers 5
|
|
.Sh HISTORY
|
|
The
|
|
.Fn ether_ntoa ,
|
|
.Fn ether_aton ,
|
|
.Fn ether_ntohost ,
|
|
.Fn ether_hostton ,
|
|
and
|
|
.Fn ether_line
|
|
functions were adopted from SunOS and appeared in
|
|
.Nx 1.0 .
|
|
.Sh BUGS
|
|
The data space used by these functions is static; if future use
|
|
requires the data, it should be copied before any subsequent calls to
|
|
these functions overwrite it.
|