#
#  This configuration file that may be used by multiple instances of rlm_files
#  to set reply and control options for defining DHCP replies.
#
#  The content of this file is all made up and needs to be set appropriate to
#  the network being served.
#

############################################
#  Global and network-specific parameters  #
############################################

#
#  Note: This section is matched by calling the dhcp_network instance of the
#  files module.
#


#
#  Default options that can be overridden by subsequent matches.
#
network
	DHCP-Domain-Name-Server := 192.0.1.100,
	DHCP-Domain-Name-Server += 192.0.1.101,
	DHCP-Time-Server := 192.0.1.200,
	DHCP-Domain-Name := "example.org",
	DHCP-IP-Address-Lease-Time := 7200,
	Fall-Through := yes


#
#  The following examples set options specific to the Layer 2 network, matched
#  on whether the internal attribute DHCP-Network-Subnet (that acts as a
#  network identifier) is within the indicated range. This is equivalent to a
#  "shared-network" or "multinet" configuration (i.e. one that is possibly
#  composed of multiple subnets) as defined by some other DHCP servers.
#

#
#  Here is an example for a network containing a single IP subnet. We can set
#  the network-specific options *and* we directly set the DHCP-Subnet-Mask,
#  DHCP-Router-Address and DHCP-Broadcast-Address since it is a common reply
#  parameter for all DHCP requests originating from this network.
#
#  The use of the ^= "prepend" operator for setting DHCP-Domain-Name-Server
#  results in this new value being inserted at the start of the list, meaning
#  this will become the first DNS server presented in the reply.
#
#  Note: If the architecture has only a single subnet for each Layer 2 network
#  then by placing all subnet-related options here we can avoid calling the
#  dhcp_subnet policy after IP allocation.
#
network	DHCP-Network-Subnet < 10.20.0.0/16, Pool-Name := "smalldept"
	DHCP-IP-Address-Lease-Time := 3600,
	DHCP-Domain-Name := "smalldept.example.org",
	DHCP-Subnet-Mask := 255.255.0.0,
	DHCP-Router-Address := 10.20.0.1,
	DHCP-Domain-Name-Server ^= 10.20.0.2,
	DHCP-Broadcast-Address := 10.20.255.255

#
#  Here is an example for a network that consists of multiple IP subnets, each
#  of which is valid for a DHCP request originating from the network. We set
#  the Pool-Name parameter to identify a single pool that contains the IP
#  address within each subnet, any of which is suitable.
#
#  We set the options that are common to the network but we defer the setting
#  of DHCP-Subnet-Mask, DHCP-Router-Address and DHCP-Broadcast-Address until an
#  address has been allocated. Only then do we know which subnet parameters are
#  required. See the next section.
#
network	DHCP-Network-Subnet < 10.30.0.0/16, Pool-Name := "bigdept"
	DHCP-Domain-Name := "bigdept.example.org"


#
#  Here is an example for a network that has a dedicated pool for admin staff
#  and a seperate pool for everything else.
#
network	DHCP-Network-Subnet < 192.0.2.0/24, DHCP-Group-Name == "admin", Pool-Name := "admin-only"
network	DHCP-Network-Subnet < 192.0.2.0/24, Pool-Name := "general"


################################
#  Subnet-specific parameters  #
################################

#
#  Note: This section is matched by calling the dhcp_subnet policy which sets
#  DHCP-Network-Subnet to the allocated IP address of the device and then
#  calls the dhcp_subnet instance of the files module.
#
#  Layer 2 networks many contain multiple subnets, each with their own gateway.
#  We call this section *after* the allocation of an IP address (e.g. from a
#  single pool containing addresses within multiple equally-valid subnets for
#  the network) so that we then know which subnet-specific parameters to
#  return.
#

#
#  Subnet-specific options, matched on whether the allocated IP address is
#  within the indicated range.
#
subnet	DHCP-Network-Subnet < 10.30.10.0/24
	DHCP-Subnet-Mask := 255.255.255.0,
	DHCP-Router-Address := 10.30.10.1,
	DHCP-Broadcast-Address := 10.30.10.255

subnet	DHCP-Network-Subnet < 10.30.20.0/24
	DHCP-Subnet-Mask := 255.255.255.0,
	DHCP-Router-Address := 10.30.20.1,
	DHCP-Broadcast-Address := 10.30.20.255


###############################
#  Group-specific parameters  #
###############################

#
#  Note: This section is matched by calling the dhcp_group_options policy.
#
#  It should be called *after* defining the device's group memberships in
#  DHCP-Group-Name request attributes. In the default dhcp virtual server this
#  is demonstrated with the help of the dhcp_group_membership instance of the
#  passwd module.
#

#
#  Group-specific options, keyed by DHCP-Group-Name
#
group1
	DHCP-Server-Host-Name := "terminal-booter.example.org",
	DHCP-Boot-Filename := "bootfile.pxe"


##############################
#  Host-specific parameters  #
##############################

#
#  Note: This section is matched by calling the dhcp_hosts instance of the
#  files module.
#

#
#  Host-specific options, keyed by DHCP-Client-Hardware-Address
#
host-00:10:20:30:40:50
	DHCP-Boot-Filename := "customboot.pxe"

host-10:90:80:70:aa:bb
	DHCP-X-Window-Font-Server := 10.20.1.10,
	DHCP-Impress-Server := 10.20.1.20
