Ahcpd
=====

Ahcpd is a daemon for configuring an IPv6 network using the Ad-Hoc
Configuration Protocol (AHCP).  AHCP is designed for wireless mesh
networks, where DHCP and IPv6 autoconfiguration do not work, but could in
principle also be used on wired networks.


Installation
============

    $ make
    # make install

If compiling for OpenWRT, you will probably want to say something like

    $ make CC=mipsel-linux-gcc PLATFORM_DEFINES='-march=mips32'

You can reduce the size of the ahcpd binary by omitting server
functionality; to do so, specify

    $ make EXTRA_DEFINES=-DNO_SERVER


Setting up a server
===================

You need to set up one or more authoritative servers in your network.  The
server should be run as

    $ ahcpd -c /etc/ahcpd.conf wlan0

where the configuration file /etc/ahcpd.conf should say something like

    mode server

    prefix fde6:20f5:c9ac:358::/64
    prefix 192.168.4.128/25
    lease-dir /var/lib/leases
    name-server fde6:20f5:c9ac:358::1
    name-server 192.168.4.1
    ntp-server 192.168.4.2

If you want ahcpd to fork into the background, pass it the ``-D'' flag.
The server does not need to run ahcpd as root, as long as it can write the
lease database and the pidfile.

The server should synchronise its clock using NTP.  If ahcpd doesn't detect
time synchronisation, it will only give out leases for short periods of
time, and will be extremely conservative about releasing them.  Note that
ahcpd actually checks with the kernel for time synchronisation, so most
SNTP clients will not do; you will most probably need Mills' implementation
of NTP.

For redundancy, you may set up multiple servers in a single network as long
as they serve disjoint IPv4 address ranges.


Setting up a client
===================

Unlike the server, the client needs to run ahcpd as root.  No configuration
file is needed, just run

    # ahcpd wlan0

and you should get IPv4 and IPv6 addresses in a few seconds.


--Juliusz Chroboczek
