This directory contains generic network interface device drivers that
don't 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.

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.
	  !!!THIS FILE IS NOT IN SYNC WITH CURRENT 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
