*******************************************************
*                                                     *
* LUNAR - Lightweight Underlay Network Ad hoc Routing *
*                                                     *
* University of Basel - Switzerland - 2006            *
*                                                     *
* LUNAR is distributed under the terms of the GNU     *
* general Public License (GPL), see the file COPYING  *
*                                                     *
*******************************************************

********************************************************
*           !!!  B E   C A R E F U L   !!!             *
*                                                      *
* This is a very special version of LUNAR. It uses     *
* what we call "private address maps": each LUNAR node *
* maintains it own personal view of the addressing     *
* plan. A LUNAR-internal NAT function translates       *
* incoming packets according to the node's local map.  *
*                                                      *
* In this LUNAR version, the LUNAR nodes can have      *
* any IP addresses. There is no coherence: the same    *
* address can be used multiple times, and each node    *
* assigns whatever addresses it wants to other nodes.  *
*                                                      *
********************************************************

1) *** To compile ***

   # make { intel | arm | mipsel | uml }
   
   This should create the LUNAR module in the lnx subdir.

2) *** Configure the wireless interface ***
   e.g. wireless interface is eth1, SSID is lunar

   # iwconfig eth1 mode ad-hoc essid lunar

3) *** Install the lunar driver ***
   (remember that in kernel 2.6 the module is named .ko)

   # cd lnx; insmod lunar.o

   Optional module arguments:

      debuglevel=10 \
      basedevname=eth1 \
      mackill=\"11:22:33:44:55:66,aa:bb:cc:dd:ef:ff\"

   This will create a network device called lunar.
   
   The optional argument "basedevname" is the wireless
   interface to be used by LUNAR.
   
   The optional argument "debuglevel" is the amount of
   debugging information that the LUNAR module will
   dump in /var/log/messages. Default is quiet (0).

4) *** Address (auto)configuration ***

   # dhclient lunar
   (may fail on some systems where network device is not
   pre-registered or pre-configured)
   
   or
   
   # ifup-dhcp lunar
   (on some systems like Fedora Core, this creates an entry 
   in /etc/sysconfig/network-scripts)

   If successful, this procedure assigns an IPv4 address to
   the lunar interface, and it also creates a LUNAR
   friendly /etc/resolv.conf entry (i.e. domain lunar.net,
   nameserver 192.168.42.254). Name resolution inside
   the lunar cloud then becomes possible.
   
   Alternatively, it is possible to manually assign an
   IPv4 or IPv6 address to the lunar interface.
   
   In this special LUNAR version, you can assign whatever
   address you want in the 192.168.42.0/24 subnet. The 
   address does not need to be unique. LUNAR will take 
   care of that.

5) *** IP version 6 ***

   LUNAR is IPv6-ready. If you want to use IP version 6,
   make sure IPv6 is enabled on your machine. If necessary,
   load the IPv6 module with
   
   # modprobe ipv6
   
   If the machine is IPv6 enabled, LUNAR will autoconfigure
   the lunar interface with the "MANET-local" prefix
   fd00:2001:620:1::/64, taken from the fc00::/7 prefix
   of unique local IPv6 unicast addresses.
   See IETF RFC 4193.
   
   Note that IPv6 stateless address autoconfiguration does
   not apply to gateways.
   
6) *** IPv6 gatewaying ***

   LUNAR will detect if the lunar interface is manually
   configured with an IPv6 address with global scope.
   In such a case, the node will consider itself as an
   IPv6 gateway and will advertise the global prefix to
   the other LUNAR nodes. A LUNAR node which receives such
   information creates the corresponding global address and
   adds a default route towards the gateway.
   
   Note that LUNAR does not activate IPv6 forwarding by 
   itself: the user must take care of this.
   
7) *** Information ***

   See /proc/net/lunar for summarized LUNAR information.
   See /proc/net/lunardb for detailed information.
   
