dhcpd.conf.subboss.template.in 3.1 KB
Newer Older
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
#
# 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.
#
server-identifier               %%subboss_ip;
server-name                     "%%subboss_ip";

# Config these too?
option  root-path		"/tftpboot";
filename 			"/tftpboot/pxeboot.emu";

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

# 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
# Code 128: IP address of Emulab bootinfo server
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;
option PXE.emulab-bootinfo code 128 = ip-address;

#
# 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;
	option PXE.emulab-bootinfo @BOSSNODE_IP@;
}

61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
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);
    }
}

77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
shared-network emulab {
 
 subnet @CONTROL_NETWORK@ netmask @CONTROL_NETMASK@ {
	option subnet-mask		@CONTROL_NETMASK@;
	option routers                  @CONTROL_ROUTER_IP@;
	option domain-name-servers      @BOSSNODE_IP@;
	option domain-name              "@OURDOMAIN@";

	# testbed PCs
	group {
		%%nodes
	}

 }
}