# the following variables are available in the template:
#
# $INTERFACE_     (interface for the terminalserver)
# $IP_            (ip for the terminalserver to bind)
# $NETMASK_       (network mask)
# $GW_            (gateway)
# $NAMESERVERS_   (nameservers for the nodes)
# $IPRANGE_FROM_  (user configured iprange, first ip)
# $IPRANGE_TO_    (user configured iprange, last ip)
# $NETWORK_       (first ip in this subnet)
# $OPTIONS_       (options for grml-terminalserver)
# $BOOT_ARGS_     (boot arguments for the nodes)
#
# NOTE:
# templates are shellscript fragments and will be sourced from the
# terminalserver
#
# GLOBAL_README_END

#
# this is the template to create the config file for the dhcpd server
#

date_=`execute date warn`

# insert commas when having multiple nameservers
if [ -n "$NAMESERVERS_" ]; then
	DNS_LINE_="option domain-name-servers $(echo "$NAMESERVERS_" | sed -e 's/\([0-9]\) \([0-9]\)/\1, \2/g');"
fi
# note: we don't support multiple routers options
if [ -n "$GW_" ]; then
	ROUTERS_LINE_="option routers $GW_;"
fi

cat >"$DHCPD_CONFIG_FILE_" <<EOT
# ${DHCPD_CONFIG_FILE_##/*/} for GRML terminalserver
# created on $date_
# THIS IS A GENERATED CONFIG FROM GRML-TERMINALSERVER, DO NOT EDIT!!!
# better adapt $TEMPLATE_CONFIG_DIR_/dhcpd_config to your needs and update config
# with grml-terminalserver config dhcp
#
# If you really want to edit _this_ file remove the next line
# __PLEASE_UPDATE_THIS_FILE__

# global settings
allow booting;
allow bootp;
default-lease-time 600;
max-lease-time 7200;

# UEFI boot with DHCPv4
option architecture-type code 93 = unsigned integer 16;

subnet $NETWORK_ netmask $NETMASK_ {
  next-server $IP_;
#  option subnet-mask $NETMASK_;
  range $IPRANGE_FROM_ $IPRANGE_TO_;
  $ROUTERS_LINE_
  $DNS_LINE_

  class "pxeclients" {
    match if substring (option vendor-class-identifier, 0 ,9) = "PXEClient";
    if option architecture-type = 00:07 {
      filename "shim.efi";
    } else {
      filename "pxelinux.0";
    }
  }
}

EOT

