The DHCPv6 protocol can be used to distribute IP address information, prefix delegation (a'ka routing) information, as well as DNS server info and a host of other settings. TDHCP implements the bare minimum that is needed on a tunnel or PPP interface - the main goal being exchanging routing information between server and client.
TDHCP is specifically designed to work in tunnel-like setups with a server on one side and a client on the other - like a VPN or PPP connection. It does not work well on shared media, like ethernet. Other than full DHCPv6 implementations (like WIDE or ISC) its server assumes to talk to only one specific client and hence always responds with the same information, its client assumes that only one server can exist on the medium and may fails if there is more than one. The client also believes everything it is told by the server, for example it does no duplicate address detection (DAD) to find out whether the assigned address is valid.
TDHCP implements the following features:
The TDHCP client does not do any setup itself - it calls a script that is supposed to do the setup - it is assumed that the script knows enough about its environment to actually do the setup (eg. in a PPP environment it also receives the variables from PPP if tdhcpc is called from pppd).
Type tdhcpd --help or tdhcpc --help respectively to see details about which options exist for TDHCP.
As a very dynamic implementation TDHCP has its own way of dealing with DUIDs. Link-Layer-plus-Time (LLT) based addresses are not viable, since the time between starts of TDHCP changes. Link-Layer (LL) based addresses also fail, since TDHCP cannot make a good guess about which interface-ID to use and the interfaces it is supposed to service do not have LL-IDs. This leaves Enterprise-Number based (EN) DUIDs.
In order to save users the trouble to get their own PEN (Private Enterprise Number) from IANA and to devise a scheme on how to sub-class it, TDHCP uses the PEN 34360 (assigned to Silmor.de), appends some bytes that differenciate it as TDHCP (an internal project ID: 0x0000) server or client (a single byte of 0x01 or 0x00) and the MD5-sum of the local ID given by the user (or as fall-back the local host name).
If you do not like this behaviour: TDHCP allows you to override the DUID (if you do, please do not re-use my PEN).
svn co https://silmor.de/svn/misc/tdhcp
be warned: this is alpha quality, if it eats your net, kills your cat and behaves generally naughty - it's not my fault! I warned you!
For compiling simply type make in the TDHCP directory.