summaryrefslogtreecommitdiffstats
path: root/config/dhcpd.conf
blob: 6fe3d76b72f7fff8dd6ad55b951a2e2c65995262 (about) (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# dhcpd.conf for interface __INTERFACE__
# generated by dyndhcpd/__VERSION__
authoritative;
ddns-update-style none;
ignore client-updates;
default-lease-time 21600;
max-lease-time 43200;

option domain-name "__DOMAINNAME__";

subnet __NETADDRESS__ netmask __NETMASK__ {
	option broadcast-address __BROADCAST__;
	option routers __ADDRESS__;
	option domain-name-servers __ADDRESS__;
	option time-servers __ADDRESS__;

	range dynamic-bootp __MINHOST__ __MAXHOST__;
}

# make sure we do not serve our own address
host localhost {
	hardware ethernet de:ad:00:be:ef:00;
	fixed-address __ADDRESS__;
}

include "/etc/dyndhcpd/ipxe-options.conf";

class "PXEClient" {
	match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";

	allow booting;
	allow bootp;

	next-server __ADDRESS__;

	# Disable ProxyDHCP, we're in control of the primary DHCP server.
	option ipxe.no-pxedhcp 1;

	# Make sure the iPXE we're loading supports what we need,
	# if not load a full-featured version.
	if exists ipxe.http
	  and exists ipxe.menu
	  and ((exists ipxe.pxe
	      and exists ipxe.bzimage
	      and exists ipxe.elf)
	    or (exists ipxe.efi)) {
		# Everything is fine, just send the boot configuration file.
		filename "http://__ADDRESS__:3928/default.ipxe";
	} elsif exists user-class and option user-class = "iPXE" {
		# We're already using iPXE, but not a feature-full version,
		# and possibly an out-of-date version from ROM, so load a more
		# complete version with native drivers.
		if option arch = 00:06 {
			filename "/ipxe/efi-i386.efi";
		} elsif option arch = 00:07 {
			filename "/ipxe/efi-x86_64.efi";
		} else {
			filename "/ipxe/ipxe.pxe";
		}
	} elsif exists user-class and option user-class = "gPXE" {
 		# If someone has an old version of gPXE burned into their ROM,
		# load a more recent iPXE
		filename "/ipxe/ipxe.pxe";
	} elsif option arch = 00:06 {
		filename "/ipxe/efi-i386.efi";
	} elsif option arch = 00:07 {
		filename "/ipxe/efi-x86_64.efi";
	} else {
		filename "/ipxe/ipxe.pxe";
	}
}