Bare Bones BOOTP Daemon/Server






3.09/5 (5 votes)
This project presents a bare bones BOOTP daemon/server. Bootp is a protocol to assign an IP address to a device via its MAC address.

Introduction
This article describes a very bare bones bootp daemon/server.
I needed a very simple bootp daemon for my current project but I could not find one on CodeProject, so I programmed one.
For more information about the bootp protocol, see the Wikipedia site about it.
Using the Code
This bootp daemon only implements a subset of the bootp RFC-951 but it is enough to work for simple devices like the one I use in my project. The server can only handle one mac and IP address pair, but it is easy to expand the code to handle more pairs.
#include "bootpd.h"
void main(void)
{
// Create the bootpd object
Bootpd bootpd;
// Set the broadcast address
// You can use a mask to limit the broadcast scale
// example '10.0.255.255'. In theory 255.255.255.255 means broadcast
// to everyone in the world, but in practice filter routers these
// messages.
bootpd.m_broadcastIp = "255.255.255.255";
// Set the server address
// Use 0.0.0.0 to listen to all network messages from anyone connected
// to the network.
bootpd.m_interfaceIp = "0.0.0.0";
// The IP address the bootp device should get.
bootpd.m_targetIp = "10.0.1.55";
// The mac address of the device. Case insensitive.
bootpd.m_targetMac = "00:11:22:33:aa:bb";
// Now start the server and listen to requests.
bootpd.Start();
}
Bootp is a connectionless protocol. This code will show you how to create a listening socket to listen to broadcast messages and how to send a broadcast message.
History
- 1.0 | 9 June 2007 | Initial version