summaryrefslogtreecommitdiffstats
path: root/contrib/initrd/dhcpd.conf.etherboot.include
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/initrd/dhcpd.conf.etherboot.include')
-rw-r--r--contrib/initrd/dhcpd.conf.etherboot.include207
1 files changed, 207 insertions, 0 deletions
diff --git a/contrib/initrd/dhcpd.conf.etherboot.include b/contrib/initrd/dhcpd.conf.etherboot.include
new file mode 100644
index 00000000..9cec1dc1
--- /dev/null
+++ b/contrib/initrd/dhcpd.conf.etherboot.include
@@ -0,0 +1,207 @@
+# dhcpd.conf include file for Etherboot
+#
+# Include this file from your /etc/dhcpd.conf
+# $Id$
+
+# Definition of Etherboot options
+# (taken from vendortags.html)
+
+# We use an encapsulated option space to avoid polluting the site-local DHCP option space
+#
+option space etherboot;
+option etherboot-encapsulated-options code 150 = encapsulate etherboot;
+
+# Definition of option codes within the etherboot-encapsulated-options space
+#
+option etherboot.extensions-path code 18 = string;
+option etherboot.magic code 128 = string;
+option etherboot.kernel-cmdline code 129 = string;
+option etherboot.menu-opts code 160 = string;
+option etherboot.nic-dev-id code 175 = string;
+option etherboot.menu-selection code 176 = unsigned integer 8;
+option etherboot.motd-1 code 184 = string;
+option etherboot.motd-2 code 185 = string;
+option etherboot.motd-3 code 186 = string;
+option etherboot.motd-4 code 187 = string;
+option etherboot.motd-5 code 188 = string;
+option etherboot.motd-6 code 189 = string;
+option etherboot.motd-7 code 190 = string;
+option etherboot.motd-8 code 191 = string;
+option etherboot.image-1 code 192 = string;
+option etherboot.image-2 code 193 = string;
+option etherboot.image-3 code 194 = string;
+option etherboot.image-4 code 195 = string;
+option etherboot.image-5 code 196 = string;
+option etherboot.image-6 code 197 = string;
+option etherboot.image-7 code 198 = string;
+option etherboot.image-8 code 199 = string;
+option etherboot.image-9 code 200 = string;
+option etherboot.image-10 code 201 = string;
+option etherboot.image-11 code 202 = string;
+option etherboot.image-12 code 203 = string;
+option etherboot.image-13 code 204 = string;
+option etherboot.image-14 code 205 = string;
+option etherboot.image-15 code 206 = string;
+option etherboot.image-16 code 207 = string;
+option etherboot.kmod code 254 = string;
+
+# Legacy support for Etherboot options as site-local options (i.e. non-encapsulated)
+# Note: options defined after the switch to encapsulated options should not be defined here
+#
+option legacy-etherboot-magic code 128 = string;
+option legacy-etherboot-kernel-cmdline code 129 = string;
+option legacy-etherboot-menu-opts code 160 = string;
+option legacy-etherboot-menu-selection code 176 = unsigned integer 8;
+option legacy-etherboot-motd-1 code 184 = string;
+option legacy-etherboot-motd-2 code 185 = string;
+option legacy-etherboot-motd-3 code 186 = string;
+option legacy-etherboot-motd-4 code 187 = string;
+option legacy-etherboot-motd-5 code 188 = string;
+option legacy-etherboot-motd-6 code 189 = string;
+option legacy-etherboot-motd-7 code 190 = string;
+option legacy-etherboot-motd-8 code 191 = string;
+option legacy-etherboot-image-1 code 192 = string;
+option legacy-etherboot-image-2 code 193 = string;
+option legacy-etherboot-image-3 code 194 = string;
+option legacy-etherboot-image-4 code 195 = string;
+option legacy-etherboot-image-5 code 196 = string;
+option legacy-etherboot-image-6 code 197 = string;
+option legacy-etherboot-image-7 code 198 = string;
+option legacy-etherboot-image-8 code 199 = string;
+option legacy-etherboot-image-9 code 200 = string;
+option legacy-etherboot-image-10 code 201 = string;
+option legacy-etherboot-image-11 code 202 = string;
+option legacy-etherboot-image-12 code 203 = string;
+option legacy-etherboot-image-13 code 204 = string;
+option legacy-etherboot-image-14 code 205 = string;
+option legacy-etherboot-image-15 code 206 = string;
+option legacy-etherboot-image-16 code 207 = string;
+
+# Apply Etherboot options only for Etherboot clients
+#
+if substring ( option vendor-class-identifier, 0, 9 ) = "Etherboot" {
+
+ # We must specify this value for etherboot-magic, or Etherboot will
+ # ignore all other options.
+ #
+ option etherboot.magic E4:45:74:68:00:00;
+
+ # Bootfile name: derive from etherboot.kmod (calculated below)
+ # Use boot.nbi if no NIC_DEV_ID option present
+ # (i.e. if etherboot.kmod doesn't get set)
+ # Also pass filename back in filename field
+ #
+ option bootfile-name = pick-first-value ( concat ( "boot-",
+ config-option etherboot.kmod,
+ ".nbi" ),
+ "boot.nbi" ) ;
+ filename = config-option bootfile-name;
+
+ # "Sensible" default values for some options
+
+ # Mount devfs (will probably be needed for a network-boot)
+ option etherboot.kernel-cmdline " devfs=mount";
+
+ # Info message (includes client IP address, MAC address, hardware ID string,
+ # server IP address and name of boot file)
+ option etherboot.motd-4 = concat ( "Using Etherboot to boot ",
+ binary-to-ascii ( 10, 8, ".", leased-address ),
+ " [",
+ binary-to-ascii ( 16, 8, ":", suffix ( hardware, 6 ) ),
+ "] [",
+ pick-first-value ( option etherboot.nic-dev-id, "unknown card" ),
+ "]", 0d:0a, " from ",
+ binary-to-ascii ( 10, 8, ".", option dhcp-server-identifier ),
+ " with file ",
+ config-option tftp-server-name,
+ ":",
+ config-option bootfile-name,
+ " [",
+ pick-first-value ( config-option etherboot.kmod, "unknown module" ),
+ "]", 0d:0a );
+
+ # Legacy site-local option support
+ # If client does not include an etherboot-encapsulated-options field in its DHCPREQUEST, then
+ # it will not understand etherboot-encapsulated-options in the DHCPACK and so we must send
+ # back the options as site-local options (i.e. not encapsulated).
+ # Note: we need do this only for options that existed prior to the switch to encapsulation.
+ #
+ if not exists etherboot-encapsulated-options {
+ option legacy-etherboot-magic = config-option etherboot.magic;
+ option legacy-etherboot-kernel-cmdline = config-option etherboot.kernel-cmdline;
+ option legacy-etherboot-menu-opts = config-option etherboot.menu-opts;
+ option legacy-etherboot-menu-selection = config-option etherboot.menu-selection;
+ option legacy-etherboot-motd-1 = config-option etherboot.motd-1;
+ option legacy-etherboot-motd-2 = config-option etherboot.motd-2;
+ option legacy-etherboot-motd-3 = config-option etherboot.motd-3;
+ option legacy-etherboot-motd-4 = config-option etherboot.motd-4;
+ option legacy-etherboot-motd-5 = config-option etherboot.motd-5;
+ option legacy-etherboot-motd-6 = config-option etherboot.motd-6;
+ option legacy-etherboot-motd-7 = config-option etherboot.motd-7;
+ option legacy-etherboot-motd-8 = config-option etherboot.motd-8;
+ option legacy-etherboot-image-1 = config-option etherboot.image-1;
+ option legacy-etherboot-image-2 = config-option etherboot.image-2;
+ option legacy-etherboot-image-3 = config-option etherboot.image-3;
+ option legacy-etherboot-image-4 = config-option etherboot.image-4;
+ option legacy-etherboot-image-5 = config-option etherboot.image-5;
+ option legacy-etherboot-image-6 = config-option etherboot.image-6;
+ option legacy-etherboot-image-7 = config-option etherboot.image-7;
+ option legacy-etherboot-image-8 = config-option etherboot.image-8;
+ option legacy-etherboot-image-9 = config-option etherboot.image-9;
+ option legacy-etherboot-image-10 = config-option etherboot.image-10;
+ option legacy-etherboot-image-11 = config-option etherboot.image-11;
+ option legacy-etherboot-image-12 = config-option etherboot.image-12;
+ option legacy-etherboot-image-13 = config-option etherboot.image-13;
+ option legacy-etherboot-image-14 = config-option etherboot.image-14;
+ option legacy-etherboot-image-15 = config-option etherboot.image-15;
+ option legacy-etherboot-image-16 = config-option etherboot.image-16;
+ }
+}
+
+# Some options should be set for both Etherboot and the udhcpc client
+#
+if ( ( substring ( option vendor-class-identifier, 0, 9 ) = "Etherboot" )
+ or ( substring ( option vendor-class-identifier, 0, 5 ) = "udhcp" ) ) {
+
+ # TFTP server defaults to DHCP server and is specified in both
+ # next-server field and tftp-server-name option field
+ #
+ option tftp-server-name = binary-to-ascii ( 10, 8, ".", config-option dhcp-server-identifier );
+ server-name = config-option tftp-server-name;
+ next-server = config-option dhcp-server-identifier;
+
+ # Root path defaults to root of TFTP server
+ option root-path = concat ( config-option tftp-server-name, ":/" );
+
+ # A fallback hostname, generated from the IP address
+ option host-name = concat ( "client_", binary-to-ascii ( 10, 8, "_", leased-address ) );
+}
+
+# Force some items onto parameter request list for udhcp
+#
+if substring ( option vendor-class-identifier, 0, 5 ) = "udhcp" {
+ # Forcibly add root-path to list
+ option dhcp-parameter-request-list = concat ( option dhcp-parameter-request-list, 11 );
+}
+
+# Etherboot sends a string to identify the NIC in etherboot.nic-dev-id.
+# For PCI NICs, this string is of the form "PCI:vvvv:dddd" where vvvv is the
+# vendor identifier and dddd the device identifier, in lower-case ASCII hex.
+# For ISA NICs, the format of the string is "ISA:..." where ... is not yet
+# decided upon.
+#
+# We use the identifier to select the NBI image that will be specified via
+# the "bootfile-name" option.
+#
+# PCI NICs - use PCI vendor and device IDs
+# Listed in file generated by mknbi-set
+#
+include "/etc/dhcpd.conf.etherboot-pcimap.include";
+
+# ISA NICs
+#
+if substring ( option vendor-class-identifier, 0, 9 ) = "Etherboot" {
+ if exists etherboot.nic-dev-id {
+
+ }
+}