ETHER(3)ETHER(3)NAME
ether - Ethernet device
SYNOPSIS
bind -a #ln /net
/net/ethern/clone
/net/ethern/addr
/net/ethern/ifstats
/net/ethern/stats
/net/ethern/[0-7]
/net/ethern/[0-7]/data
/net/ethern/[0-7]/ctl
/net/ethern/[0-7]/ifstats
/net/ethern/[0-7]/stats
/net/ethern/[0-7]/type
DESCRIPTION
The Ethernet interface, /net/ethern, is a directory containing subdi‐
rectories, one for each distinct Ethernet packet type, and clone, addr,
ifstats, and stats files. stats and ifstats are the same as in the
subdirectories (see below). Reading addr returns the MAC address of
this interface in hex with no punctuation and no trailing newline. The
number n (optional in the bind) is the device number of the card, per‐
mitting multiple cards to be used on a single machine.
Each directory contains files to control the associated connection,
receive and send data, and supply statistics. Incoming Ethernet pack‐
ets are demultiplexed by packet type and passed up the corresponding
open connection. Reading from the data file reads packets of that type
arriving from the network. A read will terminate at packet boundaries.
Each write to the data file causes a packet to be sent. The Ethernet
address of the interface is inserted into the packet header as the
source address.
A connection is assigned to a packet type by opening its ctl file and
writing connect n where n is a decimal integer constant identifying the
Ethernet packet type. A type of -1 enables the connection to receive
copies of packets of all types. A type of -2 enables the connection to
receive copies of the first 64 bytes of packets of all types. If mul‐
tiple connections are assigned to a given packet type a copy of each
packet is passed up each connection.
Some interfaces also accept unique options when written to the ctl (or
clone) file; see the description of wavelan in plan9.ini(8). The con‐
trol messages described in ip(3) under Configuring interfaces from to
are understood. The additional control message makes write systems
calls to this interface non-blocking iff followed by nothing or a non-
zero integer; a following makes writes block on a full output queue.
Reading the ctl file returns the decimal index of the associated con‐
nection, 0 through 7. Reading the type file returns the decimal value
of the assigned Ethernet packet type. Reading the stats file returns
status information such as the Ethernet address of the card and general
statistics, independent of the interface; ifstats contains device-spe‐
cific data and statistics about the card.
An interface normally receives only those packets whose destination
address is that of the interface or is the broadcast address,
ff:ff:ff:ff:ff:ff. The interface can be made to receive all packets on
the network by writing the string promiscuous to the ctl file. The
interface remains promiscuous until the control file is closed. The
extra packets are passed up connections only of types -1 and -2.
SOURCE
/sys/src/9/*/devether.c
ETHER(3)