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 contain-
          ing subdirectories, 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,
          permitting multiple cards to be used on a single machine.

          Each directory contains files to control the associated con-
          nection, receive and send data, and supply statistics.
          Incoming Ethernet packets 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 con-
          stant 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
          multiple 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 control messages described in ip(3) under
          Configuring interfaces from `bridge' to `headersonly' are

     ETHER(3)                                                 ETHER(3)

          understood.  The additional control message `nonblocking'
          makes write systems calls to this interface non-blocking iff
          followed by nothing or a non-zero integer; a following `0'
          makes writes block on a full output queue.

          Reading the ctl file returns the decimal index of the asso-
          ciated connection, 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 statis-
          tics, independent of the interface; ifstats contains
          device-specific data and statistics about the card.

          An interface normally receives only those packets whose des-
          tination address is that of the interface or is the broad-
          cast 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 promiscu-
          ous 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