Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / desktop / MFC

Bare Bones BOOTP Daemon/Server

3.09/5 (5 votes)
17 Jul 2007CPOL 1   940  
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.
Screenshot - bootpd.png

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.

C++
#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

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)