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. ) )