#
# Sample configuration file for ISC dhcpd for Debian
# with multi-architecture netbooting, for di-netboot-assistant
#
# $Id: 65a32a406951055e2afb337984aa526d7304bc0a $
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# ### Some options for Network boot (PXE) ###

# Declare pxelinux specific options _names_  (before we use them).
option space pxelinux;
option pxelinux.magic      code 208 = string;			# = 0xd0
option pxelinux.configfile code 209 = text;			# = 0xd1
option pxelinux.pathprefix code 210 = text;			# = 0xd2
option pxelinux.reboottime code 211 = unsigned integer 32;	# = 0xd3
# (see syslinux's /usr/share/doc/syslinux/pxelinux.txt.gz)

## The tftpd server IP address, for all clients.
#next-server <<<Your TFTP server>>>;
next-server 192.168.0.11;

# Default netboot filename for (bootp, and other non-PXE clients)
filename			"enter-your-default-di-netboot-imagename-here"

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

	## Only PXE clients, will get those options
	## (when they are _actually_ net-booting from their PXE agent).

	site-option-space		"pxelinux";
	option pxelinux.magic		f1:00:74:7e;
	#option pxelinux.reboottime	0;

	## x86 (i386, amd64, x86_64, IA32) architectures.
	if substring (option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00000" {
		#filename			"d-i/n-a/etch/i386/pxelinux.0";
		#option pxelinux.configfile	"d-i/n-a/etch/i386/pxelinux.cfg/default";

		## If you want to use the meta menu :
		filename			"d-i/n-a/pxelinux.0";
		option pxelinux.configfile	"::d-i/n-a/pxelinux.cfg/default";
		#or# option pxelinux.configfile	"::d-i/n-a/pxelinux.cfg/default.serial-9600";
	}

	if exists dhcp-parameter-request-list {
		# We Always send the PXELINUX options (values are in hexadecimal: 0xd0=208)
		option dhcp-parameter-request-list = concat(option dhcp-parameter-request-list,d0,d1,d2,d3);
	}

}

class "sun" {
	match if substring (option vendor-class-identifier, 0, 5) = "SUNW.";
	# Needs improvements: some Sun have x86 CPUs !!
	# uname -i : "SUNW.SPARCstation", "SUNW.Ultra", "SUNW.Sun-Blade", "SUNW.Sun-Fire"...

	# Replace "stable" with the actual boot image you want to boot.
	filename "d-i/n-a/stable/sparc/boot.img";
}


subnet 192.168.0.0 netmask 255.255.255.0 {

	# Adjust your modem/router's IP address here.
	option routers 192.168.0.1;

	range 192.168.0.81 192.168.0.91

	# If your dhcp server isn't configured with fixed IP address,
	# use this hack (replace with the DHCP server's MAC adress):
	#host mydhcpserver {
	#		hardware ethernet 00:15:58:01:23:45;
	#		fixed-address 192.168.0.10;
	#}
}

	# The "deny unknown-clients;", the "host" declaration and "authoritative"
	# allow to have two dhcp server runing side by side (one for PXE agent
	# booting, and one for Debian/Linux boot)
	#deny unknown-clients;

#group {
#	# a group for some hppa systems
#	filename "d-i/n-a/stable/hppa/boot.img";
#
#	host myhost1 { hardware ethernet 00:40:63:d8:02:2c; }
#	host myhost2 { hardware ethernet 00:40:63:d8:2c:02; }
#}
}

# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name "internal.example.org";
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename "vmunix.passacaglia";
#  server-name "toccata.fugue.com";
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class "foo" {
#  match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of "foo";
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of "foo";
#    range 10.0.29.10 10.0.29.230;
#  }
#}
