77 lines
2.9 KiB
Plaintext
77 lines
2.9 KiB
Plaintext
#-------------------------------
|
|
# Global options
|
|
#-------------------------------
|
|
authoritative;
|
|
|
|
option domain-name "example.net";
|
|
option domain-name-servers 192.168.110.4;
|
|
option ntp-servers 192.168.110.4;
|
|
option routers 192.168.110.10;
|
|
|
|
default-lease-time 86400; # 24 hours.
|
|
max-lease-time 604800; # 7 days.
|
|
|
|
lease-file-name "/var/lib/dhcp/dhcpd.leases";
|
|
|
|
#-------------------------------
|
|
# Subnet
|
|
#-------------------------------
|
|
subnet 192.168.110.0 netmask 255.255.255.0 {
|
|
range 192.168.110.100 192.168.110.199;
|
|
}
|
|
|
|
#-------------------------------
|
|
# Fixed address
|
|
#-------------------------------
|
|
host party {
|
|
hardware ethernet 00:0C:29:14:6E:24;
|
|
fixed-address 192.168.110.12;
|
|
}
|
|
|
|
host work {
|
|
hardware ethernet 00:0c:29:0a:83:af;
|
|
fixed-address 192.168.110.3;
|
|
}
|
|
|
|
#-------------------------------
|
|
# Dynamic DNS
|
|
#-------------------------------
|
|
on commit {
|
|
set noname = concat("dhcp-", binary-to-ascii(10, 8, "-", leased-address));
|
|
set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
|
|
set ClientDHCID = concat (
|
|
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,1,1))),2), ":",
|
|
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,2,1))),2), ":",
|
|
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,3,1))),2), ":",
|
|
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,4,1))),2), ":",
|
|
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,5,1))),2), ":",
|
|
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,6,1))),2)
|
|
);
|
|
set ClientName = pick-first-value(option host-name, config-option host-name, client-name, noname);
|
|
#log(concat("Commit: IP: ", ClientIP, " DHCID: ", ClientDHCID, " Name: ", ClientName));
|
|
execute("/usr/local/bin/dhcp-dyndns.sh", "add", ClientIP, ClientDHCID, ClientName);
|
|
}
|
|
|
|
on release {
|
|
set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
|
|
set ClientDHCID = concat (
|
|
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,1,1))),2), ":",
|
|
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,2,1))),2), ":",
|
|
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,3,1))),2), ":",
|
|
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,4,1))),2), ":",
|
|
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,5,1))),2), ":",
|
|
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,6,1))),2)
|
|
);
|
|
#log(concat("Release: IP: ", ClientIP));
|
|
execute("/usr/local/bin/dhcp-dyndns.sh", "delete", ClientIP, ClientDHCID);
|
|
}
|
|
|
|
on expiry {
|
|
set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
|
|
# cannot get a ClientMac here, apparently this only works when actually receiving a packet
|
|
#log(concat("Expired: IP: ", ClientIP));
|
|
# cannot get a ClientName here, for some reason that always fails
|
|
# however the dhcp update script will obtain the short hostname.
|
|
execute("/usr/local/bin/dhcp-dyndns.sh", "delete", ClientIP, "", "0");
|
|
}
|