This directory contains generic network interface device drivers that
do not contain any hardware or architecture specific code. The files
are:

etharp.c
          Implements the ARP (Address Resolution Protocol) over
          Ethernet. The code in this file should be used together with
          Ethernet device drivers. Note that this module has been
          largely made Ethernet independent so you should be able to
          adapt this for other link layers (such as Firewire).

ethernetif.c
          An example of how an Ethernet device driver could look. This
          file can be used as a "skeleton" for developing new Ethernet
          network device drivers. It uses the etharp.c ARP code.

loopif.c
          An example network interface that shows how a "loopback"
          interface would work. This is not really intended for actual
          use, but as a very basic example of how initialization and
          output functions work.

slipif.c
          A generic implementation of the SLIP (Serial Line IP)
          protocol. It requires a sio (serial I/O) module to work.
	  
ppp/      Point-to-Point Protocol stack
