WVPART(ipstreams, The IPStreams (TCP/IP sockets interface) Library,
 WVCHAPTER(basicip, Support Classes,

  WVSECT1(wvaddr, WvAddr - storing an arbitrary network address, 
  
  Device-independent and device-specific hardware/protocol address classes
  that can store themselves efficiently as well as create a printable
  string version of themselves.

  WVEXAMPLE(wvhttpex.cc)
  )

  WVSECT1(wvresolver, WvResolver - Background DNS name resolution,
   DNS name resolver with support for background lookups.
   It is an aSynchronous DNS resolver functions, so that we can do non-blocking
   lookups.

   WVEXAMPLE(wvresolverex.cc)
  )
 )
 WVCHAPTER(kernelip, Interfacing to Linux Kernel Features,
  WVSECT1(wvinterface, WvInterface - manipulating network interfaces,
   A WvInterface stores information about a particular network interface. It
   is _allowed_ to have more than one WvInterface instance referring to the same
   physical interface, because that is more convenient.
   Note that this file doesn't compile on anything other than Linux.
  )

  WVSECT1(wviproute, WvIPRoute - manipulating the routing table,
   The WvIPRoute and WvIPRouteList classes, which can manipulate the kernel
   routing table in useful ways.
  )

  WVSECT1(wvipfirewall, WvIPFirewall - basic ipchains firewall interface,
   WvIPFirewall is an extremely simple hackish class that handles the Linux
   2.4 "iptables" firewall.  It's okay to create more than one instance
   of this class; they'll co-operate.
 
   They need you to have created the appropriate firewall tables already,
   however, and call them from the right places in the Input and/or Forward
   firewalls.
  )
  
  WVSECT1(wvipaliaser, WvIPAliaser - using Linux IP aliasing, 
   WvIPAliaser handles IP aliasing in the Linux kernel.  Multiple instances
   of the object can be created, and they will share aliases between them.
   Aliased addresses are only removed when all WvIPAliaser objects using
   that address give it up.  (ie. the object is destroyed, or the Aliaser
   is reconfigured without including that address)
  )

  WVSECT1(wvtundev, WvTunDev - using Linux tunnel devices, 
   WvTunDev provides a convenient way of using Linux tunnel devices.
 
   If you don't have the /dev/net/tun device, try doing:
   mknod /dev/net/tun c 10 200
  )
  WVSECT1(wvdcp, WvDcp - , x)
 )

 WVCHAPTER(wvudp, WvUDP - using udp datagrams,
  WvUDPStream can send and receive packets on a connectionless UDP socket.

  In the constructor, the socket is attached using bind() to the given
  _local address.  If the address is 0.0.0.0, all addresses on the local
  host are used; if the port is 0, an available port number is chosen
  automatically.

  If the _rem address is 0.0.0.0, the port is not connect()ed.  That means
  it can receive packets from anywhere and send them to anywhere.  The
  src() and setdest() functions are useful for this.  If _rem is not
  0.0.0.0, connect() is called and the socket will only accept data to/from the
  specified remote UDP address.
 
  Buffering: all the usual WvStream-style input buffering is available,
  including getline(), but because input packets may get lost it is of
  limited usefulness.  Buffering will cause particular confusion if the
  socket is not connect()ed.
 
  WVEXAMPLE(wvudpex.cc)
 )

 WVCHAPTER(wvudp2, WvUDP2 - logically separate udp datagram connections, x)
 WVCHAPTER(wvtcp, WvTCP - using tcp streams, 
  WvTCP is a WvStream-based TCP connection class.
  WVEXAMPLE(wvtcpex.cc)
 )

 WVCHAPTER(wvhttp, WvHTTP - HTTP URL downloader,
  WvHTTPStream connects to an HTTP server and allows the requested file
  to be retrieved using the usual WvStream-style calls.
  WVEXAMPLE(wvhttpex.cc)
 )

 WVCHAPTER(wvurl, WvURL ,
  WvUrl is a simple URL-parsing class with built-in (though still somewhat
  inconvenient) DNS resolution.
 )

 WVCHAPTER(wvunixconn, WvUnixConn ,
  WvUnixConn is a WvStream-based Unix domain socket connection class.
 
  Unlike WvTCPConn, WvUnixConn makes connections synchronously because either
  the remote server is there, or it isn't.  For convenience, we'll just
  ignore situations where it's a local server but still slow.
 )
)
