##
##  dhcpd.conf -- ISC DHCP Daemon Configuration
##

#   Options applicable to all subnets
option domain-name "example.com";
authoritative;
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
use-host-decl-names on;

#   Define some non-standard options
option freebsd-swappath code 128 = text;
option freebsd-rootopts code 130 = text;
option freebsd-swapopts code 131 = text;

#   Test drive using loopback
subnet 127.0.0.0 netmask 255.0.0.0 {
}

#   Define a particular sample subnet
subnet 192.168.1.0 netmask 255.255.255.0 {

    #   Options applicable to this particular subnet
    option broadcast-address 192.168.1.255;
    option subnet-mask 255.255.255.0;
    option routers 192.168.1.1;
    option domain-name-servers 192.168.1.2;

    #   Dynamic DNS (DDNS) Updating
    ddns-updates off;
    ddns-domainname "example.com";
    ddns-rev-domainname "in-addr.arpa";

    #   Pool of known clients (i.e. MAC known but IP not specified)
    pool {
        range 192.168.1.100 192.168.1.149;
        min-lease-time      600;   # 10min
        default-lease-time  43200; # 12hour
        max-lease-time      86400; # 24hour
        deny unknown clients;
    }

    #   Pool of unknown clients (i.e. MAC not known)
    pool {
        range 192.168.1.150 192.168.1.199;
        min-lease-time      300;   # 5min
        default-lease-time  3600;  # 1hour
        max-lease-time      10800; # 3hour
        allow unknown clients;
    }
}

#   The list of clients we explicitly configure
group {
    #   Just assign a fixed IP address for machine "quux1"
    host quux1 {
        hardware ethernet 01:02:03:00:00:01;
        fixed-address 192.168.1.3;
    }

    #   Provide full boot information for a FreeBSD diskless client "quux2":
    #   On the server, create a 32MB swapfile /dlc/fs/swap/swap.192.168.1.4
    #   with `dd if=/dev/zero of=swap.192.168.1.4 bs=1m count=32' and the
    #   filesystem /dlc/fs/quux2 with `cd /usr/src; make buildworld; make
    #   installworld DESTDIR=/dlc/fs/quux2'. Then use Etherboot for booting.
    host quux2 {
        hardware ethernet 01:02:03:00:00:02;
        fixed-address 192.168.1.4;
        next-server 192.168.1.2;
        option tftp-server-name "192.168.1.2";
        filename "kernel.quux";
        always-reply-rfc1048 on;
        option root-path "192.168.1.2:/dlc/fs/quux2";
        option freebsd-rootopts "rw,noatime";
        option swap-server 192.168.1.2;
        option freebsd-swappath "192.168.1.2:/dlc/fs/swap";
        option freebsd-swapopts "sw";
    }
}

#   The list of clients we know, but which get IP addresses from pool
group {
    host quux3 { hardware ethernet 01:02:03:00:00:03; }
    host quux4 { hardware ethernet 01:02:03:00:00:04; }
}

