Socket wrapper library
=======================

This library makes possible to run several instances of the full software stack
on the same machine and perform locally functional testing of complex network
configurations. It passes all socket communication over unix domain sockets.

The user defines a directory where to put all the unix sockets using the
envionment variable "SOCKET_WRAPPER_DIR=/path/to/socket_dir". When a server
opens a port or a client wants to connect, socket_wrapper will translate IP
addresses to a special socket_wrapper name and look for the relevant unix
socket in the SOCKET_WRAPPER_DIR.

Additionally, the default interface to be used by an application is defined
with "SOCKET_WRAPPER_DEFAULT_IFACE=<ID>" where <ID> is between 2 and 254. This
is analogous to use the IPv4 addresses "127.0.0.<ID>" or IPv6 addresses
"fd00::5357:5f<IDx>" (where <IDx> is a hexadecimal presentation of <ID>). You
should always set the default interface. If you listen on INADDR_ANY then it
will use the default interface to listen on.

Exmaple: 
LD_PRELOAD=libsocket_wrapper.so \
SOCKET_WRAPPER_DIR=/path/to/socket_dir \
./mydaemon

The following environment variables could also be set:

SOCKET_WRAPPER_DEFAULT_IFACE
    The default interface to use if nothing has
    been set trough the functions.
    Set it to '11' for '127.0.0.11'.

SOCKET_WRAPPER_PCAP_FILE
    If set then all traffic will be written to the
    specified pcap file.

SOCKET_WRAPPER_DEBUGLEVEL
   If you socket_wrapper with with debug symbols
   you can turn on logging by setting this to an
   integer between 1 and 3.
   0 = ERROR
   1 = WARNING
   2 = DEBUG
   3 = TRACE
