1*83ee113eSDavid van Moolenbroek# $NetBSD: pxe.defs,v 1.1 2013/03/24 15:54:32 christos Exp $ 2*83ee113eSDavid van Moolenbroek# 3*83ee113eSDavid van Moolenbroek# Copyright 2001 Wasabi Systems, Inc. 4*83ee113eSDavid van Moolenbroek# All rights reserved. 5*83ee113eSDavid van Moolenbroek# 6*83ee113eSDavid van Moolenbroek# Written by Jason R. Thorpe for Wasabi Systems, Inc. 7*83ee113eSDavid van Moolenbroek# 8*83ee113eSDavid van Moolenbroek# Redistribution and use in source and binary forms, with or without 9*83ee113eSDavid van Moolenbroek# modification, are permitted provided that the following conditions 10*83ee113eSDavid van Moolenbroek# are met: 11*83ee113eSDavid van Moolenbroek# 1. Redistributions of source code must retain the above copyright 12*83ee113eSDavid van Moolenbroek# notice, this list of conditions and the following disclaimer. 13*83ee113eSDavid van Moolenbroek# 2. Redistributions in binary form must reproduce the above copyright 14*83ee113eSDavid van Moolenbroek# notice, this list of conditions and the following disclaimer in the 15*83ee113eSDavid van Moolenbroek# documentation and/or other materials provided with the distribution. 16*83ee113eSDavid van Moolenbroek# 3. All advertising materials mentioning features or use of this software 17*83ee113eSDavid van Moolenbroek# must display the following acknowledgement: 18*83ee113eSDavid van Moolenbroek# This product includes software developed for the NetBSD Project by 19*83ee113eSDavid van Moolenbroek# Wasabi Systems, Inc. 20*83ee113eSDavid van Moolenbroek# 4. The name of Wasabi Systems, Inc. may not be used to endorse 21*83ee113eSDavid van Moolenbroek# or promote products derived from this software without specific prior 22*83ee113eSDavid van Moolenbroek# written permission. 23*83ee113eSDavid van Moolenbroek# 24*83ee113eSDavid van Moolenbroek# THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND 25*83ee113eSDavid van Moolenbroek# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 26*83ee113eSDavid van Moolenbroek# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 27*83ee113eSDavid van Moolenbroek# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL WASABI SYSTEMS, INC 28*83ee113eSDavid van Moolenbroek# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 29*83ee113eSDavid van Moolenbroek# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 30*83ee113eSDavid van Moolenbroek# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 31*83ee113eSDavid van Moolenbroek# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 32*83ee113eSDavid van Moolenbroek# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 33*83ee113eSDavid van Moolenbroek# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 34*83ee113eSDavid van Moolenbroek# POSSIBILITY OF SUCH DAMAGE. 35*83ee113eSDavid van Moolenbroek# 36*83ee113eSDavid van Moolenbroek 37*83ee113eSDavid van Moolenbroek# 38*83ee113eSDavid van Moolenbroek# A PXE client can be identified using Option 60 (vendor-class-identifier). 39*83ee113eSDavid van Moolenbroek# The format of the option is: 40*83ee113eSDavid van Moolenbroek# 41*83ee113eSDavid van Moolenbroek# PXEClient:Arch:xxxxx:UNDI:yyyzzz 42*83ee113eSDavid van Moolenbroek# 43*83ee113eSDavid van Moolenbroek# This allows you to select PXE clients for special treatment using 44*83ee113eSDavid van Moolenbroek# classes, like so: 45*83ee113eSDavid van Moolenbroek# 46*83ee113eSDavid van Moolenbroek# class "pxe-clients-ia32" { 47*83ee113eSDavid van Moolenbroek# match if substring (option vendor-class-identifier, 0, 20) = 48*83ee113eSDavid van Moolenbroek# "PXEClient:Arch:00000"; 49*83ee113eSDavid van Moolenbroek# . 50*83ee113eSDavid van Moolenbroek# . 51*83ee113eSDavid van Moolenbroek# . 52*83ee113eSDavid van Moolenbroek# } 53*83ee113eSDavid van Moolenbroek# 54*83ee113eSDavid van Moolenbroek# class "pxe-clients-ia64" { 55*83ee113eSDavid van Moolenbroek# match if substring (option vendor-class-identifier, 0, 20) = 56*83ee113eSDavid van Moolenbroek# "PXEClient:Arch:00002"; 57*83ee113eSDavid van Moolenbroek# . 58*83ee113eSDavid van Moolenbroek# . 59*83ee113eSDavid van Moolenbroek# . 60*83ee113eSDavid van Moolenbroek# } 61*83ee113eSDavid van Moolenbroek# 62*83ee113eSDavid van Moolenbroek 63*83ee113eSDavid van Moolenbroekoption space PXE; 64*83ee113eSDavid van Moolenbroekoption PXE.mtftp-ip code 1 = ip-address; 65*83ee113eSDavid van Moolenbroekoption PXE.mtftp-cport code 2 = unsigned integer 16; # XXX little-endian! 66*83ee113eSDavid van Moolenbroekoption PXE.mtftp-sport code 3 = unsigned integer 16; # XXX little-endian! 67*83ee113eSDavid van Moolenbroekoption PXE.mtftp-tmout code 4 = unsigned integer 8; 68*83ee113eSDavid van Moolenbroekoption PXE.mtftp-delay code 5 = unsigned integer 8; 69*83ee113eSDavid van Moolenbroek 70*83ee113eSDavid van Moolenbroek# PXE.discovery-control is actually a bitfield with the 71*83ee113eSDavid van Moolenbroek# following bits: 72*83ee113eSDavid van Moolenbroek# 0x01 disable broadcast discovery 73*83ee113eSDavid van Moolenbroek# 0x02 disable multicast discovery 74*83ee113eSDavid van Moolenbroek# 0x04 only use/accept servers in PXE.boot-servers 75*83ee113eSDavid van Moolenbroek# 0x08 if file name is present in initial DHCP OFFER, 76*83ee113eSDavid van Moolenbroek# download that boot file, rather than prompting, 77*83ee113eSDavid van Moolenbroek# displaying a menu, or performing Boot Server 78*83ee113eSDavid van Moolenbroek# Discovery. 79*83ee113eSDavid van Moolenbroekoption PXE.discovery-control code 6 = unsigned integer 8; 80*83ee113eSDavid van Moolenbroek 81*83ee113eSDavid van Moolenbroek# Note, this option is REQUIRED unless PXE.discovery-control has 82*83ee113eSDavid van Moolenbroek# 0x02 set. 83*83ee113eSDavid van Moolenbroekoption PXE.discovery-mcast-addr code 7 = ip-address; 84*83ee113eSDavid van Moolenbroek 85*83ee113eSDavid van Moolenbroek# XXX 86*83ee113eSDavid van Moolenbroek# I don't even want to think about how to represent these options 87*83ee113eSDavid van Moolenbroek# in dhcpd.conf syntax. See table 2-1 in the PXE spec. 88*83ee113eSDavid van Moolenbroek# 89*83ee113eSDavid van Moolenbroek# Luckily, these are options sent by the server back to the client, 90*83ee113eSDavid van Moolenbroek# so we don't really have to deal with them unless we want to use 91*83ee113eSDavid van Moolenbroek# their functionality. 92*83ee113eSDavid van Moolenbroek# 93*83ee113eSDavid van Moolenbroek# option PXE.boot-servers code 8 = ... 94*83ee113eSDavid van Moolenbroek# option PXE.boot-menu code 9 = ... 95*83ee113eSDavid van Moolenbroek# option PXE.menu-prompt code 10 = ... 96*83ee113eSDavid van Moolenbroek 97*83ee113eSDavid van Moolenbroek# XXX 98*83ee113eSDavid van Moolenbroek# Not sure how to represent these in dhcpd.conf syntax. 99*83ee113eSDavid van Moolenbroek# option PXE.mcast-addrs-alloc code 11 = ... 100*83ee113eSDavid van Moolenbroek# option PXE.credential-types code 12 = ... 101*83ee113eSDavid van Moolenbroek 102*83ee113eSDavid van Moolenbroek# Codes 64-127 : Loader Options : Boot Server specific 103*83ee113eSDavid van Moolenbroek 104*83ee113eSDavid van Moolenbroek# PXE.boot-item is actually two 16-bit fields packed into a single 105*83ee113eSDavid van Moolenbroek# 32-bit integer: 106*83ee113eSDavid van Moolenbroek# Boot Server type 0xffff0000 107*83ee113eSDavid van Moolenbroek# Boot Server layer 0x0000ffff 108*83ee113eSDavid van Moolenbroekoption PXE.boot-item code 71 = unsigned integer 32; 109*83ee113eSDavid van Moolenbroek 110*83ee113eSDavid van Moolenbroek# Codes 128-254 : Vendor Options : Vendor NBP specific 111*83ee113eSDavid van Moolenbroek 112*83ee113eSDavid van Moolenbroek# XXX NO WAY TO REPRESENT THIS! 113*83ee113eSDavid van Moolenbroek# option PXE.end code 255 = void; 114