]> git.ipfire.org Git - thirdparty/dhcp.git/commitdiff
[master] Includes DHCP4 option definitions for RFCs 4578,5071, and 5859
authorThomas Markwalder <tmark@isc.org>
Fri, 26 Jan 2018 18:09:57 +0000 (13:09 -0500)
committerThomas Markwalder <tmark@isc.org>
Fri, 26 Jan 2018 18:09:57 +0000 (13:09 -0500)
    Merges in 47062

RELNOTES
common/dhcp-options.5
common/tables.c
includes/site.h

index 1487ff55256339e63cfb495ff0aebaf63008fc16..69e441b48d621fcf44704bf19e2ced27d243292d 100644 (file)
--- a/RELNOTES
+++ b/RELNOTES
@@ -97,6 +97,14 @@ by Eric Young (eay@cryptsoft.com).
   dad-wait-time is zero (the default), DAD error checking is not peformed.
   [ISC-Bugs 46805]
 
+- Support for sending and receiving additional DHCP4 options has been added
+  to both the dhcpd and dhclient.  Specifically: option codes 93,94, and 97
+  (RFC 4578); code 150 (RFC 5859); and codes 209,219, and 211 (RFC 5071).
+  Beyond configuring, sending, requesting, and receiving these options neither
+  server nor client apply any additional logic based on their values.
+  Thanks to Peter Lewis for requesting this change.
+  [ISC-Bugs 47062]
+
                Changes since 4.4.0b1 (Bug Fixes)
 
 - Added clarifying text to dhcpd.conf.5 explaining the class match expressions
index 70043e09c0f5e99bd02c89aea066bf67c7575cc0..33d4804393b610f0767dd90aca72799b05917d77 100644 (file)
@@ -1,7 +1,6 @@
 .\"    $Id: dhcp-options.5,v 1.50 2011/05/20 13:48:32 tomasz Exp $
 .\"
-.\" Copyright (c) 2012-2016 by Internet Systems Consortium, Inc. ("ISC")
-.\" Copyright (c) 2004-2010 by Internet Systems Consortium, Inc. ("ISC")
+.\" Copyright (c) 2004-2018 by Internet Systems Consortium, Inc. ("ISC")
 .\" Copyright (c) 1996-2003 by Internet Software Consortium
 .\"
 .\" Permission to use, copy, modify, and distribute this software for any
@@ -114,7 +113,7 @@ or
 .SH SETTING OPTION VALUES USING EXPRESSIONS
 Sometimes it's helpful to be able to set the value of a DHCP option
 based on some value that the client has sent.  To do this, you can
-use expression evaluation.  The 
+use expression evaluation.  The
 .B dhcp-eval(5)
 manual page describes how to write expressions.  To assign the result
 of an evaluation to an option, define the option as follows:
@@ -135,7 +134,7 @@ will be included in the code based on the definition of an argument for
 the RFC that defines the option in includes/site.h.  This provides you
 with a method for over-riding the ISC definitions if necessary - for
 example if you have previously defined the option with a different
-format using the mechanism from DEFINING NEW OPTIONS below.  
+format using the mechanism from DEFINING NEW OPTIONS below.
 .PP
 By default all of the options are enabled.  In order to disable an option
 you would edit the includes/site.h file and comment out the definition for
@@ -581,6 +580,35 @@ forwarding, and a value of true means enable IP forwarding.
 The IRC server option specifies a list of IRC servers available
 to the client.  Servers should be listed in order of preference.
 .RE
+
+.PP
+.B option \fBloader-configfile\fR \fItext\fR
+.RS 0.25i
+.PP
+This option is used to specify a boot loading configuration file
+a PXE client should use.
+.PP
+This option is included based on RFC 5071.
+.RE
+.PP
+.B option \fBloader-pathprefix\fR \fItext\fR
+.RS 0.25i
+.PP
+This option is used to specify a path prefix a PXE client should
+use in conjunction with the boot load configuration file.
+.PP
+This option is included based on RFC 5071.
+.RE
+.PP
+.B option \fBloader-reboottime\fR \fIuint32\fR
+.RS 0.25i
+.PP
+This option is used to dictate the maximum amount of time a
+PXE client should allow itself to achieve configured network
+resources before rebooting.
+.PP
+This option is included based on RFC 5071.
+.RE
 .PP
 .B option \fBlog-servers\fR \fIip-address\fR [\fB,\fR \fIip-address\fR...
 ]\fB;\fR
@@ -810,6 +838,33 @@ NetWare/IP suboptions - see the NETWARE/IP SUBOPTIONS section for more
 information.
 .RE
 .PP
+.B option \fBpxe-system-type\fR \fIuint16\fR [\fB, \fIuint16\fR ... ]\fB;\fR
+.RS 0.25i
+.PP
+A list of one ore more 16-bit integers which allows a client to specify its 
+pre-boot architecture type(s).
+.PP
+This option is included based on RFC 4578.
+.RE
+.PP
+.B option \fBpxe-interface-id\fR \fIuint8\fR \fIuint8\fR \fIuint8\fR
+.RS 0.25i
+.PP
+A three octet value which allows a client to specify its network interface
+type.
+.PP
+This option is included based on RFC 4578.
+.RE
+.PP
+.B option \fBpxe-client-id\fR \fIuint8\fR \fIstring\fR
+.RS 0.25i
+.PP
+A single octet indicating type, followed by a string that allows a
+client to specify its PXE client identity.
+.PP
+This option is included based on RFC 4578.
+.RE
+.PP
 .B option \fBoption-6rd\fR \fIuint8 uint8 ip6-address ip-address\fR  [\fB,\fR
 .I ip-address \fR...]\fB;\fR
 .RS 0.25i
@@ -966,7 +1021,7 @@ If you have an NDS directory agent whose address you need to
 configure, the slp-directory-agent option should work.
 .RE
 .PP
-.B option slp-service-scope \fIboolean text\fR\fB;\fR
+.B option \fBslp-service-scope\fR \fIboolean text\fR\fB;\fR
 .RS 0.25i
 .PP
 The Service Location Protocol Service Scope Option specifies two
@@ -1067,6 +1122,16 @@ This option is not user configurable in the server.
 This specifies the IP address of the client's swap server.
 .RE
 .PP
+.B option \fBtftp-server-address\fR \fIip-address\fR [\fB,\fR
+\fIip-address\fR... ]\fB;\fR
+.RS 0.25i
+.PP
+This option configures a list of one or more IPv4 addresses of
+tftp servers a client may use.
+.PP
+This option is included based on RFC 5859
+.RE
+.PP
 .B option \fBtcp-keepalive-garbage\fR \fIflag\fR\fB;\fR
 .RS 0.25i
 .PP
@@ -1648,7 +1713,7 @@ rather than IPv6 addresses, please see the \fBsip-servers-names\fR option
 above.
 .RE
 .PP
-.B option 
+.B option
 .B dhcp6.name-servers
 .I ip6-address \fR[\fB,\fR
 .I ip6-address \fR... ]
@@ -1682,7 +1747,7 @@ manufactured and consumed by the software.
 .PP
 The \fBia-prefix\fR option is placed inside \fBia-pd\fR options in order
 to identify the prefix(es) allocated to the client.  It is not directly
-edited in dhcpd.conf(5) or dhclient.conf(5), but rather is  
+edited in dhcpd.conf(5) or dhclient.conf(5), but rather is
 manufactured and consumed by the software.
 .RE
 .PP
@@ -2177,7 +2242,7 @@ option sql-server-address sql.example.com;
 .B ;
 .PP
 An option whose structure is an IPv6 address must be expressed as
-a valid IPv6 address.  The following is an example use of the 
+a valid IPv6 address.  The following is an example use of the
 ip6-address type:
 .nf
 
@@ -2315,7 +2380,7 @@ option static-routes
        10.0.1.0 255.255.255.0 net-1-rtr.example.com 1,
        10.2.0.0 255.255.224.0 net-2-0-rtr.example.com 3;
 
-.fi    
+.fi
 .SH VENDOR ENCAPSULATED OPTIONS
 The DHCP protocol defines the \fBvendor-encapsulated-options\fR
 option, which allows vendors to define their own options that will be
@@ -2359,7 +2424,7 @@ option dhcp6.vendor-opts
 The second way of setting the value of these options is to have the DHCP
 server generate a vendor-specific option buffer.  To do this, you
 must do four things: define an option space, define some options in
-that option space, provide values for them, and specify that that 
+that option space, provide values for them, and specify that that
 option space should be used to generate the relevant option.
 .PP
 To define a new option space in which vendor options can be stored,
index b3d5ae660711dbc7309eb65b511604ab3e534274..c1aa21450459bf5e50ce943ace919b0b835b038e 100644 (file)
@@ -3,7 +3,7 @@
    Tables of information... */
 
 /*
- * Copyright (c) 2004-2017 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2004-2018 by Internet Systems Consortium, Inc. ("ISC")
  * Copyright (c) 1995-2003 by Internet Software Consortium
  *
  * This Source Code Form is subject to the terms of the Mozilla Public
@@ -191,9 +191,9 @@ static struct option dhcp_options[] = {
 
        { "client-last-transaction-time", "L",  &dhcp_universe,  91, 1 },
        { "associated-ip", "Ia",                &dhcp_universe,  92, 1 },
-#if 0
+#if defined(RFC4578_OPTIONS)
        /* Defined by RFC 4578 */
-       { "pxe-system-type", "S",               &dhcp_universe,  93, 1 },
+       { "pxe-system-type", "Sa",              &dhcp_universe,  93, 1 },
        { "pxe-interface-id", "BBB",            &dhcp_universe,  94, 1 },
        { "pxe-client-id", "BX",                &dhcp_universe,  97, 1 },
 #endif
@@ -250,8 +250,7 @@ static struct option dhcp_options[] = {
 #if defined(RFC6731_OPTIONS)
         { "rdnss-selection", "BIID",           &dhcp_universe, 146, 1 },
 #endif
-#if 0
-       /* Not defined by RFC yet */
+#if defined(RFC5859_OPTIONS)
        { "tftp-server-address", "Ia",          &dhcp_universe, 150, 1 },
 #endif
 #if defined(RFC7618_OPTIONS)
@@ -260,9 +259,11 @@ static struct option dhcp_options[] = {
 #if defined(RFC7710_OPTIONS)
        { "v4-captive-portal", "t",             &dhcp_universe, 160, 1 },
 #endif
-#if 0
-       /* PXELINUX options: defined by RFC 5071 */
+#if defined(RFC5071_OPTIONS)
+#if  0
+       /* Option 208 has been officially deprecated. Do NOT define it */
        { "pxelinux-magic", "BBBB",             &dhcp_universe, 208, 1 },
+#endif
        { "loader-configfile", "t",             &dhcp_universe, 209, 1 },
        { "loader-pathprefix", "t",             &dhcp_universe, 210, 1 },
        { "loader-reboottime", "L",             &dhcp_universe, 211, 1 },
@@ -365,10 +366,10 @@ static struct option dhcpv6_options[] = {
        { "relay-msg", "X",                     &dhcpv6_universe,  9, 1 },
 
        /* Option code 10 is curiously unassigned. */
-       /* 
+       /*
         * In draft-ietf-dhc-dhcpv6-25 there were two OPTION_CLIENT_MSG and
         * OPTION_SERVER_MSG options. They were eventually unified as
-        * OPTION_RELAY_MSG, hence no option with value of 10. 
+        * OPTION_RELAY_MSG, hence no option with value of 10.
         */
 #if 0
        /* XXX: missing suitable atoms for the auth option.  We may want
index d9c1494b17ab0c8f5acc696abc7ee0dea6d240e4..2ef69e415e6aa6eb6d3589d3c7228953920de3b6 100644 (file)
 
 /* Include definitions for various options.  In general these
    should be left as is, but if you have already defined one
-   of these and prefer your definition you can comment the 
+   of these and prefer your definition you can comment the
    RFC define out to avoid conflicts */
 #define RFC2563_OPTIONS
 #define RFC2937_OPTIONS
 #define RFC4776_OPTIONS
+#define RFC4578_OPTIONS
 #define RFC4833_OPTIONS
 #define RFC4994_OPTIONS
+#define RFC5071_OPTIONS
 #define RFC5192_OPTIONS
 #define RFC5223_OPTIONS
 #define RFC5417_OPTIONS
 #define RFC5460_OPTIONS
+#define RFC5859_OPTIONS
 #define RFC5969_OPTIONS
 #define RFC5970_OPTIONS
 #define RFC5986_OPTIONS