dhcpd.conf.template.in 3.73 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
#
# dhcpd.conf.template - From the emulab software distribution
#
# This file is used with dhcpd_makeconf to generate an actual dhpd.conf file
# from the database.
#
# Make sure to change all subnets (don't forget the mask!), the DHCP and DNS
# servers' IP addresses, the router's IP, and see the comment about nodetypes
# below.
#
11 12
server-identifier               @BOSSNODE_IP@;
server-name                     "@BOSSNODE_IP@";
13

14
# Config these too?
15
option  root-path		"/tftpboot";
16
filename 			"/tftpboot/pxeboot.emu";
17 18 19

default-lease-time              36000;                  # 10 hours
max-lease-time                  36000;                  # 10 hours
20 21
ddns-update-style               none;                   # req'd vers 3 directive

22 23 24 25 26 27 28 29
# Define the PXE option space
# Code 1: Multicast IP address of bootfile
# Code 2: UDP port that client should monitor for MTFTP responses
# Code 3: UDP port that MTFTP servers are using to listen for MTFTP requests
# Code 4: Number of secondes a client must listen for activity before trying
#         to start a new MTFTP transfer
# Code 5: Number of secondes a client must listen before trying to restart
#         a MTFTP transfer
30
# Code 128: IP address of Emulab bootinfo server
31 32 33 34 35 36 37 38
option space PXE;
option PXE.mtftp-ip code 1 = ip-address;
option PXE.mtftp-cport code 2 = unsigned integer 16;
option PXE.mtftp-sport code 3 = unsigned integer 16;
option PXE.mtftp-tmout code 4 = unsigned integer 8;
option PXE.mtftp-delay code 5 = unsigned integer 8;
option PXE.discovery-control code 6 = unsigned integer 8;
option PXE.discovery-mcast-addr code 7 = ip-address;
39
option PXE.emulab-bootinfo code 128 = ip-address;
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59

#
# For PXE booting nodes we set the magic bits to tell the client that we are
# PXE-saavy so they don't wait around for 12 seconds or so waiting for a
# better response.
#
# If, for some reason, this doesn't work for you, just comment out the
# entire PXE class block.  It will work without it, it will just take longer.
#
class "PXE" {
	match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
	option vendor-class-identifier "PXEClient";
	vendor-option-space PXE;

	# bit 3 = If set, and a boot file name is present in the initial
	# DHCP or ProxyDHCP offer packet, download the boot file (do not
	# prompt/menu/discover).
	option PXE.discovery-control 8;
}

60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
on commit {
    if (@BOOTINFO_EVENTS@ = 0) {
	if (substring (option vendor-class-identifier, 0, 9) = "PXEClient") {
	    set boot = "PXE";
        } elsif (substring (option vendor-class-identifier, 0, 6) = "U-boot") {
	    set boot = "PXE";
        } else {
	    set boot = "OS";
        }
        set clip = binary-to-ascii(10, 8, ".", leased-address);
    	set clhw = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));

	execute("@prefix@/sbin/reportboot", clip, clhw, boot);
    }
}

76
@DHCPD_CONTROLNET_DECL@
77 78 79
 
shared-network emulab {
 
80 81
 subnet @CONTROL_NETWORK@ netmask @CONTROL_NETMASK@ {
	option subnet-mask		@CONTROL_NETMASK@;
82 83 84 85
	option routers                  @CONTROL_ROUTER_IP@;
	option domain-name-servers      @BOSSNODE_IP@;
	option domain-name              "@OURDOMAIN@";
	next-server			@BOSSNODE_IP@;
86

87 88 89
	# Example of a dynamic range. If you uncomment the following line 
	# (after changing the IP addresses to suitable ones, of course)
	# unknown nodes will get assigned a random IP in it
Leigh Stoller's avatar
Leigh Stoller committed
90
	#range @DHCPD_DYNRANGE@;
91

92 93 94
	# testbed PCs
	group {
		#
95
		# For every PC nodetype, include a line like the one below.
96
		# These lines will be replaced with auto-generated entries for
97 98
		# nodes of that type. You can also use the class field from the
		# node_types table
99
		#
100
		%%nodetype=pc
101
	}
102
 }
103

104 105 106
 # /usr/testbed/etc/dhcpd.conf.frag.one
 %%fragment=one

107 108
 %%management

109 110 111
 #
 # Private network; for virtual (jailed) nodes.
 #
112
 subnet @VIRTNODE_NETWORK@ netmask @VIRTNODE_NETMASK@ {
113
 }
114
}