All Projects → pkulchenko → DHCPLite

pkulchenko / DHCPLite

Licence: MIT license
DHCP/DNS server for Arduino

Programming Languages

java
68154 projects - #9 most used programming language
C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
DHCP Lite library for Arduino v0.14

This library implements DHCP and DNS server processing for Arduino.

The library has been tested on Arduino Uno/Duemilanove. It correctly
handles requests from clients running Windows Vista, Ubuntu 11.04,
and iOS v.2, v.4 and v.5. See LIMITATIONS and KNOWN BUGS.

Visit http://notebook.kulchenko.com/dhcplite for updates.

HISTORY

I have been looking for DHCP server library for Arduino and while
there are several libraries mentioned in Arduino forums (most notably
http://www.musically.me.uk/DHCP_Web_Server_12.pde,
http://www.aether-hemera.com/blog/default.asp?PostId=30, and
Nebster's DHCP server code from this forum thread
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1239258729), 
some used UDP libraries I could not use and some I simply could not 
get to work.

I wrote this library in a way that should be easy to integrate with
other network libraries as it only takes a buffer (that is expected 
to have a DHCP message or DNS message) and compiles a response using 
the same buffer.

INSTALLATION

Copy the content of examples/ and libraries/ to your 
Arduino folders: arduino/examples/ and arduino/libraries/.

THIRD PARTY SOFTWARE

The library has no external dependencies.

The example is using RedFly library that comes with RedFly shield
(both are available at http://www.watterott.net/projects/redfly-shield).

LIMITATIONS

Only DHCP REQUEST and DHCP DISCOVER messages are being handled.
All DHCP INFORM messages get DHCP NAK in response.
Only 12 leases are tracked by default.

KNOWN BUGS

Windows Vista (and possibly other versions of Windows) seems to rely on 
DNS Suffix Search List rather than Connection-specific DNS suffix in 
generating fully qualified hostnames (http://support.microsoft.com/kb/275553).
This means that even though you can set your domain name to "mydomain.net"
and the DHCP server will report this using option 15, when you try to
resolve "arduino", it will send a request for "arduino.mshome.net",
rather than "arduino.mydomain.net" (which will fail to resolve).

If you know how to fix this, send me an email.

AUTHOR

Paul Kulchenko ([email protected])

LICENSE

See LICENSE file

HISTORY 

Mar 17 2012  v0.14  Updated the example to store WiFi configuration in
                    EEPROM and to provide a web interface to update it.
Mar 10 2012  v0.12  Updated to work with Arduino 1.0.
Nov 16 2011  v0.10  Fixed a bug with incorrect CRC being stored when IP 
                    address is assigned, which caused incorrect processing
                    of multiple DHCP REQUEST messages from the same IP.
                    This fixed the issue with iOS and MacOS clients.
                    Thanks to David Simmons @davidsimmons.com for assistance.
Nov 12 2011  v0.06  Added AJAX example with keep-alive to read real-time data 
                    over HTTP.
Nov 07 2011  v0.05  Added options for renewal and rebinding timers. 
                    Cleaned up code.
Oct 30 2011  v0.04  Added conversion to lowercase hostname and a check for 
                    simple hostname to DNS processing.
Oct 29 2011  v0.03  Added DNS processing.
Oct 29 2011  v0.02  Updated hash to a longer and more robust version.
Oct 28 2011  v0.01  First release.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].