From 368ceac8bfb49a0bd4c0a0c98fe624d623de9c6d Mon Sep 17 00:00:00 2001 From: Tomek Mrugalski Date: Wed, 23 Jan 2013 13:56:48 +0100 Subject: [PATCH 01/13] [2657] DHCPv6 Options described. --- ChangeLog | 4 + doc/guide/bind10-guide.xml | 342 ++++++++++++++++++++++++++++++++++--- 2 files changed, 325 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index e305569e55..2885576171 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +5XX. [func] tomek + Write new sections about DHCPv6 options in BIND10 Guide. + (Trac #2657, git TBD) + 557. [func] stephen Update DHCP sections of the BIND 10 guide. (Trac #2642, git e5faeb5fa84b7218fde486347359504cf692510e) diff --git a/doc/guide/bind10-guide.xml b/doc/guide/bind10-guide.xml index 37934cd553..4dce832da4 100644 --- a/doc/guide/bind10-guide.xml +++ b/doc/guide/bind10-guide.xml @@ -3921,44 +3921,344 @@ Dhcp6/subnet6/ list 2001:db8:: address may be assigned as well. If you want to avoid this, please use the "min-max" notation. + + +
+ Standard DHCPv6 options - Options can also be configured: the following commands configure - the DNS-SERVERS option for all subnets with the following addresses: - 2001:db8:1::1 and 2001:db8:1::2 + One of the major features of DHCPv6 server is to provide configuration + options to clients. Although there are several options that require + special behavior, most options are sent by the server only if the client + explicitely requested them. The following example shows how to + configure DNS servers, which is one of the most frequently used + options. Numbers in the first column are added for easier reference and + will not appear on screen. Options specified in this way are considered + global and apply to all configured subnets. + +1. > config add Dhcp6/option-data +2. > config set Dhcp6/option-data[0]/name "dns-servers" +3. > config set Dhcp6/option-data[0]/code 23 +4. > config set Dhcp6/option-data[0]/space "dhcp6" +5. > config set Dhcp6/option-data[0]/csv-format true +6. > config set Dhcp6/option-data[0]/data "2001:db8::cafe, 2001:db8::babe" +7. > config commit + + + + The first line creates new entry in option-data table. It + contains information on all global options that the server is + supposed to configure in all subnets. The second line specifies + option name. For a complete list of currently supported names, + see the list below. + The third line specified option code. It must match values from + the list. Fourth line specifies option space, which must always + be set to "dhcp6" as these are standard DHCPv6 options. For + other name spaces, including custom option spaces, see . Fifth line specifies format in + which data will be specified. It is recommended to use CSV (coma + separated values). The sixth list specifies the actual value to + be sent to clients. Data is specified as a normal text with + values separated with comas, if more than one value is + allowed. + + + + Options can also be configured as hex values. If csv-format is + set to false, option data must be specified as a hex string. The + following commands configure the DNS-SERVERS option for all + subnets with the following addresses: 2001:db8:1::cafe and + 2001:db8:1::babe. Note that csv-format is set to false. + > config add Dhcp6/option-data > config set Dhcp6/option-data[0]/name "dns-servers" > config set Dhcp6/option-data[0]/code 23 +> config set Dhcp6/option-data[0]/space "dhcp6" +> config set Dhcp6/option-data[0]/csv-format false > config set Dhcp6/option-data[0]/data "2001 0DB8 0001 0000 0000 0000 - 0000 0001 2001 0DB8 0001 0000 0000 0000 0000 0002" + 0000 CAFE 2001 0DB8 0001 0000 0000 0000 0000 BABE" > config commit (The value for the setting of the "data" element is split across two - lines in this document for clarity: when entering the command, the whole + lines in this document for clarity: when entering the command, all the string should be entered on the same line.) - - Currently the only way to set option data is to specify the - data as a string of hexadecimal digits. It is planned to allow - alternative ways of specifying the data as a comma-separated list, - e.g. "2001:db8:1::1,2001:db8:1::2". - - - As with global settings, it is also possible to override options on a - per-subnet basis, e.g. the following commands override the global DNS - servers option for a particular subnet, setting a single DNS server with - address 2001:db8:1::3. - + + + As with global settings, it is also possible to override options + on a per-subnet basis. The following commands override the + global DNS servers option for a particular subnet, setting a + single DNS server with address 2001:db8:1::3. It is convenient + to use global options when clients connected to most of your + subnets are expected to get the same values of a given + option. You can then override specific values for small number + of subnets. If you use different values in each subnet, it does + not make sense to specify global option values + (Dhcp6/option-data), but rather use only subnet-specific values + (Dhcp6/subnet[X]/option-data[Y]). + > config add Dhcp6/subnet6[0]/option-data > config set Dhcp6/subnet6[0]/option-data[0]/name "dns-servers" > config set Dhcp6/subnet6[0]/option-data[0]/code 23 -> config set Dhcp6/subnet6[0]/option-data[0]/data "2001 0DB8 0001 0000 - 0000 0000 0000 0003" +> config set Dhcp6/subnet6[0]/option-data[0]/space "dhcp6" +> config set Dhcp6/subnet6[0]/option-data[0]/csv-format true +> config set Dhcp6/subnet6[0]/option-data[0]/data "2001:db8:1::3" > config commit - (As before, the setting of the "data" element has been split across two - lines for clarity.) + + + + In upcoming Kea versions, it will not be required anymore to specify + option code, space and csv-format fields as those fields will be filled + automatically. + + + + + This is the list of currently supported standard DHCPv6 options. Name and code + specify name and code that should be used as a name in option-data + structures. Type designates the actual format of the data. Uint8 means 8 bit + unsigned integer with allowed values 0 to 255. Uint16 means 16 bit unsinged + integer with allowed values 0 to 65535. Uint32 means 32 bit unsigned integer with + allowed values 0 to 4294967295. ipv6-address means a normal IPv6 address. Fqdn means + fully qualified domain name. String means any text. Some options are designated + as arrays. This means that more than one value is allowed in such an option. For example + the option dns-servers allows conveying more than one IPv6 addresses, so clients will + get multiple DNS servers if needed. + + + + + + + List of standard DHCPv6 options + +name: preference, code: 7, type: uint8, array false + + +name: sip-server-dns, code: 21, type: fqdn, array true +name: sip-server-addr, code: 22, type: ipv6-address, array true +name: dns-servers, code: 23, type: ipv6-address, array true +name: domain-search, code: 24, type: fqdn, array true +name: ia-pd, code: 25, type: record, array false +name: iaprefix, code: 26, type: record, array false +name: nis-servers, code: 27, type: ipv6-address, array true +name: nisp-servers, code: 28, type: ipv6-address, array true +name: nis-domain-name, code: 29, type: fqdn, array true +name: nisp-domain-name, code: 30, type: fqdn, array true +name: sntp-servers, code: 31, type: ipv6-address, array true +name: information-refresh-time, code: 32, type: uint32, array false +name: bcmcs-server-dns, code: 33, type: fqdn, array true +name: bcmcs-server-addr, code: 34, type: ipv6-address, array true +name: geoconf-civic, code: 36, type: record, array false +name: remote-id, code: 37, type: record, array false +name: subscriber-id, code: 38, type: binary, array false +name: client-fqdn, code: 39, type: record, array false +name: pana-agent, code: 40, type: ipv6-address, array true +name: new-posix-timezone, code: 41, type: string, array false +name: new-tzdb-timezone, code: 42, type: string, array false +name: ero, code: 43, type: uint16, array true +name: lq-query, code: 44, type: record, array false +name: client-data, code: 45, type: empty, array false +name: clt-time, code: 46, type: uint32, array false +name: lq-relay-data, code: 47, type: record, array false +name: lq-client-link, code: 48, type: ipv6-address, array true + + +
+ +
+ Custom DHCPv6 options + It is also possible to define new options that are + currently not supported out of the box. Let's assume that we + want to define a new DHCPv6 option called foo. It will have code 100 + and will convey a single unsigned 32 bit integer value. We can define + such option format by using the following commands: + +> config add Dhcp6/option-def +> config set Dhcp6/option-def[0]/name "foo" +> config set Dhcp6/option-def[0]/code 100 +> config set Dhcp6/option-def[0]/type "uint32" +> config set Dhcp6/option-def[0]/array false +> config set Dhcp6/option-def[0]/record-types "" +> config set Dhcp6/option-def[0]/space "dhcp6" +> config set Dhcp6/option-def[0]/encapsulate "" +> config commit + Note that this specifies new option format, not the values conveyed in + that option. + + Once the new option format is specified, concrete values can then + be specified in the same way as standard options. For example the following + commands may be used to define global values that apply to all subnets. + +1. > config add Dhcp6/option-data +2. > config set Dhcp6/option-data[0]/name "foo" +3. > config set Dhcp6/option-data[0]/code 100 +4. > config set Dhcp6/option-data[0]/space "dhcp6" +5. > config set Dhcp6/option-data[0]/csv-format true +6. > config set Dhcp6/option-data[0]/data "12345" +7. > config commit + + + New options can take more complex forms than simple use of + primitives (uint8, string, ipv6-address etc). It is possible to + define composition of existing primitives. Let's assume that we + want to define a new option that will consist of an IPv6 + address, followed by unsigned 16 bit integer, followed by a text + string. Such an option could be defined in the following way: + +> config add Dhcp6/option-def +> config set Dhcp6/option-def[0]/name "bar" +> config set Dhcp6/option-def[0]/code 101 +> config set Dhcp6/option-def[0]/space "dhcp6" +> config set Dhcp6/option-def[0]/type "record" +> config set Dhcp6/option-def[0]/array false +> config set Dhcp6/option-def[0]/record-types "ipv6-address, uint16, string" +> config set Dhcp6/option-def[0]/encapsulate "" + + Its values can be later defined as follows: + +> config add Dhcp6/option-data +> config set Dhcp6/option-data[0]/name "bar" +> config set Dhcp6/option-data[0]/space "dhcp6" +> config set Dhcp6/option-data[0]/code 101 +> config set Dhcp6/option-data[0]/csv-format true +> config set Dhcp6/option-data[0]/data "2001:db8:1::10, 123, Hello World" +7. > config commit
+ +
+ DHCPv6 vendor specific options + Currently there are two option spaces defined: dhcp4 (to + be used in DHCPv4 daemon) and dhcp6. There is also vendor-opts-space, + which is empty by default, but options can be defined in it. Those options + are called vendor-specific information options. The following examples + show how to define an option foo with code 1 that consists of IPv6 address, + unsigned 16 bit integer and a string. The foo option is conveyed in + vendor specific information option. + +> config add Dhcp6/option-def +> config set Dhcp6/option-def[0]/name "foo" +> config set Dhcp6/option-def[0]/code 1 +> config set Dhcp6/option-def[0]/space "vendor-opts-space" +> config set Dhcp6/option-def[0]/type "record" +> config set Dhcp6/option-def[0]/array false +> config set Dhcp6/option-def[0]/record-types "ipv6-address, uint16, string" +> config set Dhcp6/option-def[0]/encapsulates "" +> config commit + After option format is defined, the next step is to define actual values + for that option: + +> config add Dhcp6/option-data +> config set Dhcp6/option-data[0]/name "foo" +> config set Dhcp6/option-data[0]/space "vendor-opts-space" +> config set Dhcp6/option-data[0]/code 1 +> config set Dhcp6/option-data[0]/csv-format true +> config set Dhcp6/option-data[0]/data "2001:db8:1::10, 123, Hello World" +> config commit + We should also define values for the vendor-opts, that will convey our option foo. + +> config add Dhcp6/option-data +> config set Dhcp6/option-data[1]/name "vendor-opts" +> config set Dhcp6/option-data[1]/space "dhcp6" +> config set Dhcp6/option-data[1]/code 17 +> config set Dhcp6/option-data[1]/csv-format true +> config set Dhcp6/option-data[1]/data "12345" +> config commit + +
+ +
+ Nested DHCPv6 options (custom option spaces) + It is sometimes useful to define completely new option + spaces. This is useful if the user wants his new option to + convey sub-options that use separate numbering scheme, for + example sub-options with codes 1 and 2. Those option codes + conflict with standard DHCPv6 options, so a separate option + space must be defined. Let's assume that we want to have a + DHCPv6 option with code 102 that conveys two sub-options with + codes 1 and 2. This could be achieved with the following examples. + First we need to define those new sub-options: + +config add Dhcp6/option-def +config set Dhcp6/option-def[0]/name "subopt1" +config set Dhcp6/option-def[0]/code 1 +config set Dhcp6/option-def[0]/space "isc" +config set Dhcp6/option-def[0]/type "ipv6-address" +config set Dhcp6/option-def[0]/record-types "" +config set Dhcp6/option-def[0]/array false +config set Dhcp6/option-def[0]/encapsulate "" +config commit + +config add Dhcp6/option-def +config set Dhcp6/option-def[1]/name "subopt2" +config set Dhcp6/option-def[1]/code 2 +config set Dhcp6/option-def[1]/space "isc" +config set Dhcp6/option-def[1]/type "string" +config set Dhcp6/option-def[1]/record-types "" +config set Dhcp6/option-def[1]/array false +config set Dhcp6/option-def[1]/encapsulate "" +config commit +The next step is to define a regular DHCPv6 option and specify that it +should include options from isc option space: + +config add Dhcp6/option-def +config set Dhcp6/option-def[2]/name "container" +config set Dhcp6/option-def[2]/code 102 +config set Dhcp6/option-def[2]/space "dhcp6" +config set Dhcp6/option-def[2]/type "uint16" +config set Dhcp6/option-def[2]/array false +config set Dhcp6/option-def[2]/record-types "" +config set Dhcp6/option-def[2]/encapsulate "isc" +config commit + +Finally, we should specify values for those new options: + +config add Dhcp6/option-data +config set Dhcp6/option-data[0]/name "subopt1" +config set Dhcp6/option-data[0]/space "isc" +config set Dhcp6/option-data[0]/code 1 +config set Dhcp6/option-data[0]/csv-format true +config set Dhcp6/option-data[0]/data "2001:db8::abcd" +config commit + +config add Dhcp6/option-data +config set Dhcp6/option-data[1]/name "subopt2" +config set Dhcp6/option-data[1]/space "isc" +config set Dhcp6/option-data[1]/code 2 +config set Dhcp6/option-data[1]/csv-format true +config set Dhcp6/option-data[1]/data "Hello world" +config commit + +config add Dhcp6/option-data +config set Dhcp6/option-data[2]/name "container" +config set Dhcp6/option-data[2]/space "dhcp6" +config set Dhcp6/option-data[2]/code 102 +config set Dhcp6/option-data[2]/csv-format true +config set Dhcp6/option-data[2]/data "123" +config commit + +
+ +
Subnet Selection From 388c202a9b3c95f3d8d1aa0c76803b1f398974f3 Mon Sep 17 00:00:00 2001 From: Stephen Morris Date: Wed, 23 Jan 2013 14:50:54 +0000 Subject: [PATCH 02/13] [2657] Some changes to the formatting of the DHCP sections Also, some typos corrected. --- doc/guide/bind10-guide.xml | 324 ++++++++++++++++++++----------------- 1 file changed, 173 insertions(+), 151 deletions(-) diff --git a/doc/guide/bind10-guide.xml b/doc/guide/bind10-guide.xml index 4dce832da4..6b40c36839 100644 --- a/doc/guide/bind10-guide.xml +++ b/doc/guide/bind10-guide.xml @@ -3929,7 +3929,7 @@ Dhcp6/subnet6/ list One of the major features of DHCPv6 server is to provide configuration options to clients. Although there are several options that require special behavior, most options are sent by the server only if the client - explicitely requested them. The following example shows how to + explicitly requested them. The following example shows how to configure DNS servers, which is one of the most frequently used options. Numbers in the first column are added for easier reference and will not appear on screen. Options specified in this way are considered @@ -3950,25 +3950,27 @@ Dhcp6/subnet6/ list contains information on all global options that the server is supposed to configure in all subnets. The second line specifies option name. For a complete list of currently supported names, - see the list below. - The third line specified option code. It must match values from - the list. Fourth line specifies option space, which must always + see below. + The third line specifies option code, which must match one of the + values from that + list. Line 4 specifies option space, which must always be set to "dhcp6" as these are standard DHCPv6 options. For other name spaces, including custom option spaces, see . Fifth line specifies format in - which data will be specified. It is recommended to use CSV (coma - separated values). The sixth list specifies the actual value to - be sent to clients. Data is specified as a normal text with - values separated with comas, if more than one value is + linkend="dhcp6-option-spaces"/>. The fifth line specfies the format in + which the data will be entered: use of CSV (comma + separated values) is recommended. The sixth line gives the actual value to + be sent to clients. Data is specified as a normal text, with + values separated by commas if more than one value is allowed. - Options can also be configured as hex values. If csv-format is - set to false, option data must be specified as a hex string. The + Options can also be configured as hexadecimal values. If csv-format is + set to false, the option data must be specified as a string of hexadecimal + numbers. The following commands configure the DNS-SERVERS option for all subnets with the following addresses: 2001:db8:1::cafe and - 2001:db8:1::babe. Note that csv-format is set to false. + 2001:db8:1::babe. > config add Dhcp6/option-data > config set Dhcp6/option-data[0]/name "dns-servers" @@ -3980,22 +3982,24 @@ Dhcp6/subnet6/ list > config commit (The value for the setting of the "data" element is split across two - lines in this document for clarity: when entering the command, all the - string should be entered on the same line.) + lines in this document for clarity: when entering the command, the + whole string should be entered on the same line.) - As with global settings, it is also possible to override options - on a per-subnet basis. The following commands override the - global DNS servers option for a particular subnet, setting a - single DNS server with address 2001:db8:1::3. It is convenient - to use global options when clients connected to most of your - subnets are expected to get the same values of a given - option. You can then override specific values for small number - of subnets. If you use different values in each subnet, it does - not make sense to specify global option values - (Dhcp6/option-data), but rather use only subnet-specific values + It is possible to override options on a per-subnet basis. If + clients connected to most of your subnets are expected to get the + same values of a given option, youu should use global options: you + can then override specific values for a small number of subnets. + On the other hand, if you use different values in each subnet, + it does not make sense to specify global option values + (Dhcp6/option-data), rather you should set only subnet-specific values (Dhcp6/subnet[X]/option-data[Y]). + + + The following commands override the global + DNS servers option for a particular subnet, setting a single DNS + server with address 2001:db8:1::3. > config add Dhcp6/subnet6[0]/option-data > config set Dhcp6/subnet6[0]/option-data[0]/name "dns-servers" @@ -4007,80 +4011,92 @@ Dhcp6/subnet6/ list - In upcoming Kea versions, it will not be required anymore to specify - option code, space and csv-format fields as those fields will be filled + In future version of Kea versions, it will not be necessary to specify + option code, space and csv-format fields as those fields will be set automatically. - This is the list of currently supported standard DHCPv6 options. Name and code + Below is a list of currently supported standard DHCPv6 options. The name and code specify name and code that should be used as a name in option-data - structures. Type designates the actual format of the data. Uint8 means 8 bit - unsigned integer with allowed values 0 to 255. Uint16 means 16 bit unsinged - integer with allowed values 0 to 65535. Uint32 means 32 bit unsigned integer with - allowed values 0 to 4294967295. ipv6-address means a normal IPv6 address. Fqdn means - fully qualified domain name. String means any text. Some options are designated - as arrays. This means that more than one value is allowed in such an option. For example - the option dns-servers allows conveying more than one IPv6 addresses, so clients will - get multiple DNS servers if needed. + structures. Type designates the actual format of the data: + + + uint8 means 8 bit unsigned integer with allowed values 0 to 255. + uint16 means 16 bit unsinged integer with allowed values 0 to 65535. + uint32 means 32 bit unsigned integer with allowed values 0 to 4294967295. + ipv6-address means a normal IPv6 address. + fqdn means fully qualified domain name. + String means any text. + + Some options are designated as arrays, which means that more than one + value is allowed in such an option. For example the option dns-servers + allows the specification of more than one IPv6 address, so allowing + clients to obtain the the addresses of multiple DNS servers. - - List of standard DHCPv6 options + + + + + + + -name: preference, code: 7, type: uint8, array false + + + + + + --> + -name: sip-server-dns, code: 21, type: fqdn, array true -name: sip-server-addr, code: 22, type: ipv6-address, array true -name: dns-servers, code: 23, type: ipv6-address, array true -name: domain-search, code: 24, type: fqdn, array true -name: ia-pd, code: 25, type: record, array false -name: iaprefix, code: 26, type: record, array false -name: nis-servers, code: 27, type: ipv6-address, array true -name: nisp-servers, code: 28, type: ipv6-address, array true -name: nis-domain-name, code: 29, type: fqdn, array true -name: nisp-domain-name, code: 30, type: fqdn, array true -name: sntp-servers, code: 31, type: ipv6-address, array true -name: information-refresh-time, code: 32, type: uint32, array false -name: bcmcs-server-dns, code: 33, type: fqdn, array true -name: bcmcs-server-addr, code: 34, type: ipv6-address, array true -name: geoconf-civic, code: 36, type: record, array false -name: remote-id, code: 37, type: record, array false -name: subscriber-id, code: 38, type: binary, array false -name: client-fqdn, code: 39, type: record, array false -name: pana-agent, code: 40, type: ipv6-address, array true -name: new-posix-timezone, code: 41, type: string, array false -name: new-tzdb-timezone, code: 42, type: string, array false -name: ero, code: 43, type: uint16, array true -name: lq-query, code: 44, type: record, array false -name: client-data, code: 45, type: empty, array false -name: clt-time, code: 46, type: uint32, array false -name: lq-relay-data, code: 47, type: record, array false -name: lq-client-link, code: 48, type: ipv6-address, array true - + + + + + + + + + + + + --> + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
List of standard DHCPv6 options
NameCodeTypeArray?
clientid1binaryfalse
serverid2binaryfalse
ia-na3recordfalse
ia-ta4uint32false
iaaddr5recordfalse
oro6uint16true
preference7uint8false
elapsed-time8uint16false
relay-msg9binaryfalse
auth11binaryfalse
unicast12ipv6-addressfalse
status-code13recordfalse
rapid-commit14emptyfalse
user-class15binaryfalse
vendor-class16recordfalse
vendor-opts17uint32false
interface-id18binaryfalse
reconf-msg19uint8false
reconf-accept20emptyfalse
sip-server-dns21fqdntrue
sip-server-addr22ipv6-addresstrue
dns-servers23ipv6-addresstrue
domain-search24fqdntrue
ia-pd25recordfalse
iaprefix26recordfalse
nis-servers27ipv6-addresstrue
nisp-servers28ipv6-addresstrue
nis-domain-name29fqdntrue
nisp-domain-name30fqdntrue
sntp-servers31ipv6-addresstrue
information-refresh-time32uint32false
bcmcs-server-dns33fqdntrue
bcmcs-server-addr34ipv6-addresstrue
geoconf-civic36recordfalse
remote-id37recordfalse
subscriber-id38binaryfalse
client-fqdn39recordfalse
pana-agent40ipv6-addresstrue
new-posix-timezone41stringfalse
new-tzdb-timezone42stringfalse
ero43uint16true
lq-query44recordfalse
client-data45emptyfalse
clt-time46uint32false
lq-relay-data47recordfalse
lq-client-link48ipv6-addresstrue
@@ -4088,9 +4104,9 @@ Dhcp6/subnet6/ list Custom DHCPv6 options It is also possible to define new options that are currently not supported out of the box. Let's assume that we - want to define a new DHCPv6 option called foo. It will have code 100 + want to define a new DHCPv6 option called "foo". It will have code 100 and will convey a single unsigned 32 bit integer value. We can define - such option format by using the following commands: + such an option by using the following commands: > config add Dhcp6/option-def > config set Dhcp6/option-def[0]/name "foo" @@ -4104,22 +4120,25 @@ Dhcp6/subnet6/ list Note that this specifies new option format, not the values conveyed in that option. - Once the new option format is specified, concrete values can then + Once the new option format is defined, concrete values can then be specified in the same way as standard options. For example the following commands may be used to define global values that apply to all subnets. -1. > config add Dhcp6/option-data -2. > config set Dhcp6/option-data[0]/name "foo" -3. > config set Dhcp6/option-data[0]/code 100 -4. > config set Dhcp6/option-data[0]/space "dhcp6" -5. > config set Dhcp6/option-data[0]/csv-format true -6. > config set Dhcp6/option-data[0]/data "12345" -7. > config commit +> config add Dhcp6/option-data +> config set Dhcp6/option-data[0]/name "foo" +> config set Dhcp6/option-data[0]/code 100 +> config set Dhcp6/option-data[0]/space "dhcp6" +> config set Dhcp6/option-data[0]/csv-format true +> config set Dhcp6/option-data[0]/data "12345" +> config commit New options can take more complex forms than simple use of primitives (uint8, string, ipv6-address etc). It is possible to - define composition of existing primitives. Let's assume that we + define an option comprising a a number of existing primitives. + + + Assume we want to define a new option that will consist of an IPv6 address, followed by unsigned 16 bit integer, followed by a text string. Such an option could be defined in the following way: @@ -4141,18 +4160,18 @@ Dhcp6/subnet6/ list > config set Dhcp6/option-data[0]/code 101 > config set Dhcp6/option-data[0]/csv-format true > config set Dhcp6/option-data[0]/data "2001:db8:1::10, 123, Hello World" -7. > config commit +> config commit
DHCPv6 vendor specific options - Currently there are two option spaces defined: dhcp4 (to - be used in DHCPv4 daemon) and dhcp6. There is also vendor-opts-space, + Currently there are three option spaces defined: dhcp4 (to + be used in DHCPv4 daemon) and dhcp6; there is also vendor-opts-space, which is empty by default, but options can be defined in it. Those options are called vendor-specific information options. The following examples - show how to define an option foo with code 1 that consists of IPv6 address, - unsigned 16 bit integer and a string. The foo option is conveyed in + show how to define an option "foo" with code 1 that consists of IPv6 address, + unsigned 16 bit integer and a string. The foo option is conveyed in a vendor specific information option. > config add Dhcp6/option-def @@ -4198,63 +4217,66 @@ Dhcp6/subnet6/ list codes 1 and 2. This could be achieved with the following examples. First we need to define those new sub-options: -config add Dhcp6/option-def -config set Dhcp6/option-def[0]/name "subopt1" -config set Dhcp6/option-def[0]/code 1 -config set Dhcp6/option-def[0]/space "isc" -config set Dhcp6/option-def[0]/type "ipv6-address" -config set Dhcp6/option-def[0]/record-types "" -config set Dhcp6/option-def[0]/array false -config set Dhcp6/option-def[0]/encapsulate "" -config commit - -config add Dhcp6/option-def -config set Dhcp6/option-def[1]/name "subopt2" -config set Dhcp6/option-def[1]/code 2 -config set Dhcp6/option-def[1]/space "isc" -config set Dhcp6/option-def[1]/type "string" -config set Dhcp6/option-def[1]/record-types "" -config set Dhcp6/option-def[1]/array false -config set Dhcp6/option-def[1]/encapsulate "" -config commit +> config add Dhcp6/option-def +> config set Dhcp6/option-def[0]/name "subopt1" +> config set Dhcp6/option-def[0]/code 1 +> config set Dhcp6/option-def[0]/space "isc" +> config set Dhcp6/option-def[0]/type "ipv6-address" +> config set Dhcp6/option-def[0]/record-types "" +> config set Dhcp6/option-def[0]/array false +> config set Dhcp6/option-def[0]/encapsulate "" +> config commit +> +> config add Dhcp6/option-def +> config set Dhcp6/option-def[1]/name "subopt2" +> config set Dhcp6/option-def[1]/code 2 +> config set Dhcp6/option-def[1]/space "isc" +> config set Dhcp6/option-def[1]/type "string" +> config set Dhcp6/option-def[1]/record-types "" +> config set Dhcp6/option-def[1]/array false +> config set Dhcp6/option-def[1]/encapsulate "" +> config commit + The next step is to define a regular DHCPv6 option and specify that it should include options from isc option space: -config add Dhcp6/option-def -config set Dhcp6/option-def[2]/name "container" -config set Dhcp6/option-def[2]/code 102 -config set Dhcp6/option-def[2]/space "dhcp6" -config set Dhcp6/option-def[2]/type "uint16" -config set Dhcp6/option-def[2]/array false -config set Dhcp6/option-def[2]/record-types "" -config set Dhcp6/option-def[2]/encapsulate "isc" -config commit +> config add Dhcp6/option-def +> config set Dhcp6/option-def[2]/name "container" +> config set Dhcp6/option-def[2]/code 102 +> config set Dhcp6/option-def[2]/space "dhcp6" +> config set Dhcp6/option-def[2]/type "uint16" +> config set Dhcp6/option-def[2]/array false +> config set Dhcp6/option-def[2]/record-types "" +> config set Dhcp6/option-def[2]/encapsulate "isc" +> config commit + Finally, we should specify values for those new options: -config add Dhcp6/option-data -config set Dhcp6/option-data[0]/name "subopt1" -config set Dhcp6/option-data[0]/space "isc" -config set Dhcp6/option-data[0]/code 1 -config set Dhcp6/option-data[0]/csv-format true -config set Dhcp6/option-data[0]/data "2001:db8::abcd" -config commit - -config add Dhcp6/option-data -config set Dhcp6/option-data[1]/name "subopt2" -config set Dhcp6/option-data[1]/space "isc" -config set Dhcp6/option-data[1]/code 2 -config set Dhcp6/option-data[1]/csv-format true -config set Dhcp6/option-data[1]/data "Hello world" -config commit - -config add Dhcp6/option-data -config set Dhcp6/option-data[2]/name "container" -config set Dhcp6/option-data[2]/space "dhcp6" -config set Dhcp6/option-data[2]/code 102 -config set Dhcp6/option-data[2]/csv-format true -config set Dhcp6/option-data[2]/data "123" -config commit +> config add Dhcp6/option-data +> config set Dhcp6/option-data[0]/name "subopt1" +> config set Dhcp6/option-data[0]/space "isc" +> config set Dhcp6/option-data[0]/code 1 +> config set Dhcp6/option-data[0]/csv-format true +> config set Dhcp6/option-data[0]/data "2001:db8::abcd" +> config commit +> +> config add Dhcp6/option-data +> config set Dhcp6/option-data[1]/name "subopt2" +> config set Dhcp6/option-data[1]/space "isc" +> config set Dhcp6/option-data[1]/code 2 +> config set Dhcp6/option-data[1]/csv-format true +> config set Dhcp6/option-data[1]/data "Hello world" +> config commit +> +> config add Dhcp6/option-data +> config set Dhcp6/option-data[2]/name "container" +> config set Dhcp6/option-data[2]/space "dhcp6" +> config set Dhcp6/option-data[2]/code 102 +> config set Dhcp6/option-data[2]/csv-format true +> config set Dhcp6/option-data[2]/data "123" +> config commit +
From 3d1ea31fe2461f28b7337c78623834eb987c73a5 Mon Sep 17 00:00:00 2001 From: Marcin Siodelski Date: Wed, 23 Jan 2013 16:23:38 +0100 Subject: [PATCH 03/13] [2657] DHCPv4 options described. --- doc/guide/bind10-guide.xml | 358 +++++++++++++++++++++++++++++++++++++ 1 file changed, 358 insertions(+) diff --git a/doc/guide/bind10-guide.xml b/doc/guide/bind10-guide.xml index 6b40c36839..d606f78a79 100644 --- a/doc/guide/bind10-guide.xml +++ b/doc/guide/bind10-guide.xml @@ -3611,6 +3611,364 @@ Dhcp4/subnet4 [] list (default) +
+ Standard DHCPv4 options + + One of the major features of DHCPv4 server is to provide configuration + options to clients. Although there are several options that require + special behavior, most options are sent by the server only if the client + explicitely requested them. The following example shows how to + configure DNS servers, which is one of the most frequently used + options. Numbers in the first column are added for easier reference and + will not appear on screen. Options specified in this way are considered + global and apply to all configured subnets. + + +1. > config add Dhcp4/option-data +2. > config set Dhcp4/option-data[0]/name "domain-name-servers" +3. > config set Dhcp4/option-data[0]/code 6 +4. > config set Dhcp4/option-data[0]/space "dhcp4" +5. > config set Dhcp4/option-data[0]/csv-format true +6. > config set Dhcp4/option-data[0]/data "192.0.3.1, 192.0.3.2" +7. > config commit + + + + The first line creates new entry in option-data table. It + contains information on all global options that the server is + supposed to configure in all subnets. The second line specifies + option name. For a complete list of currently supported names, + see the list below. + The third line specified option code. It must match values from + the list. Fourth line specifies option space, which must always + be set to "dhcp4" as these are standard DHCPv4 options. For + other option spaces, including custom option spaces, see . Fifth line specifies format in + which data will be specified. It is recommended to use CSV (coma + separated values). The sixth list specifies the actual value to + be sent to clients. Data is specified as a normal text with + values separated with comas, if more than one value is + allowed. + + + + Options can also be configured as hex values. If csv-format is + set to false, option data must be specified as a hex string. The + following commands configure the domain-name-servers option for all + subnets with the following addresses: 192.0.3.1 and 192.0.3.2. + Note that csv-format is set to false. + +> config add Dhcp4/option-data +> config set Dhcp4/option-data[0]/name "domain-name-servers" +> config set Dhcp4/option-data[0]/code 6 +> config set Dhcp4/option-data[0]/space "dhcp4" +> config set Dhcp4/option-data[0]/csv-format false +> config set Dhcp4/option-data[0]/data "C0 00 03 01 + C0 00 03 02" +> config commit + + (The value for the setting of the "data" element is split across two + lines in this document for clarity: when entering the command, all the + string should be entered on the same line.) + + + + As with global settings, it is also possible to override options + on a per-subnet basis. The following commands override the + global DNS servers option for a particular subnet, setting a + single DNS server with address 192.0.2.3. It is convenient + to use global options when clients connected to most of your + subnets are expected to get the same values of a given + option. You can then override specific values for small number + of subnets. If you use different values in each subnet, it does + not make sense to specify global option values + (Dhcp4/option-data), but rather use only subnet-specific values + (Dhcp4/subnet[X]/option-data[Y]). + +> config add Dhcp4/subnet4[0]/option-data +> config set Dhcp4/subnet4[0]/option-data[0]/name "domain-name-servers" +> config set Dhcp4/subnet4[0]/option-data[0]/code 6 +> config set Dhcp4/subnet4[0]/option-data[0]/space "dhcp4" +> config set Dhcp4/subnet4[0]/option-data[0]/csv-format true +> config set Dhcp4/subnet4[0]/option-data[0]/data "192.0.2.3" +> config commit + + + + In upcoming Kea versions, it will not be required anymore to specify + option code, space and csv-format fields as those fields will be filled + automatically. + + + + This is the list of currently supported standard DHCPv4 options. Name and code + specify name and code that should be used as a name in option-data + structures. Type designates the actual format of the data. Uint8 means 8 bit + unsigned integer with allowed values 0 to 255. Uint16 means 16 bit unsinged + integer with allowed values 0 to 65535. Uint32 means 32 bit unsigned integer with + allowed values 0 to 4294967295. ipv4-address means a normal IPv4 address. Fqdn means + fully qualified domain name. String means any text. Some options are designated + as arrays. This means that more than one value is allowed in such an option. For example + the option domain-name-servers allows conveying more than one IPv4 addresses, + so clients will get multiple DNS servers if needed. + + + + + + + List of standard DHCPv4 options +name: subnet-mask, code: 1, csv-format: true, type: ipv4-address, array: false +name: time-offset, code: 2, csv-format: true, type: uint32, array: false +name: routers, code: 3, csv-format: true, type: ipv4-address, array true +name: time-servers, code: 4, csv-format: true, type: ipv4-address, array true +name: name-servers, code: 5, csv-format: true, type: ipv4-address, array: false +name: domain-name-servers, code: 6, csv-format: true, type: ipv4-address, array true +name: log-servers, code: 7, csv-format: true, type: ipv4-address, array true +name: cookie-servers, code: 8, csv-format: true, type: ipv4-address, array true +name: lpr-servers, code: 9, csv-format: true, type: ipv4-address, array true +name: impress-servers, code: 10, csv-format: true, type: ipv4-address, array true +name: resource-location-servers, code: 11, csv-format: true, type: ipv4-address, array true +name: host-name, code: 12, csv-format: true, type: string, array: false +name: boot-size, code: 13, csv-format: true, type: uint16, array: false +name: merit-dump, code: 14, csv-format: true, type: string, array: false +name: domain-name, code: 15, csv-format: true, type: fqdn, array: false +name: swap-server, code: 16, csv-format: true, type: ipv4-address, array: false +name: root-path, code: 17, csv-format: true, type: string, array: false +name: extensions-path, code: 18, csv-format: true, type: string, array: false +name: ip-forwarding, code: 19, csv-format: true, type: boolean, array: false +name: non-local-source-routing, code: 20, csv-format: true, type: boolean, array: false +name: policy-filter, code: 21, csv-format: true, type: ipv4-address, array true +name: max-dgram-reassembly, code: 22, csv-format: true, type: uint16, array: false +name: default-ip-ttl, code: 23, csv-format: true, type: uint8, array: false +name: path-mtu-aging-timeout, code: 24, csv-format: true, type: uint32, array: false +name: path-mtu-plateau-table, code: 25, csv-format: true, type: uint16, array true +name: interface-mtu, code: 26, csv-format: true, type: uint16, array: false +name: all-subnets-local, code: 27, csv-format: true, type: boolean, array: false +name: broadcast-address, code: 28, csv-format: true, type: ipv4-address, array: false +name: perform-mask-discovery, code: 29, csv-format: true, type: boolean, array: false +name: mask-supplier, code: 30, csv-format: true, type: boolean, array: false +name: router-discovery, code: 31, csv-format: true, type: boolean, array: false +name: router-solicitation-address, code: 32, csv-format: true, type: ipv4-address, array: false +name: static-routes, code: 33, csv-format: true, type: ipv4-address, array true +name: trailer-encapsulation, code: 34, csv-format: true, type: boolean, array: false +name: arp-cache-timeout, code: 35, csv-format: true, type: uint32, array: false +name: ieee802-3-encapsulation, code: 36, csv-format: true, type: boolean, array: false +name: default-tcp-ttl, code: 37, csv-format: true, type: uint8, array: false +name: tcp-keepalive-internal, code: 38, csv-format: true, type: uint32, array: false +name: tcp-keepalive-garbage, code: 39, csv-format: true, type: boolean, array: false +name: nis-domain, code: 40, csv-format: true, type: string, array: false +name: nis-servers, code: 41, csv-format: true, type: ipv4-address, array true +name: ntp-servers, code: 42, csv-format: true, type: ipv4-address, array true +name: vendor-encapsulated-options, code: 43, csv-format: true, type: empty, array: false +name: netbios-name-servers, code: 44, csv-format: true, type: ipv4-address, array true +name: netbios-dd-server, code: 45, csv-format: true, type: ipv4-address, array true +name: netbios-node-type, code: 46, csv-format: true, type: uint8, array: false +name: netbios-scope, code: 47, csv-format: true, type: string, array: false +name: font-servers, code: 48, csv-format: true, type: ipv4-address, array true +name: x-display-manager, code: 49, csv-format: true, type: ipv4-address, array true +name: dhcp-requested-address, code: 50, csv-format: true, type: ipv4-address, array: false +name: dhcp-lease-time, code: 51, csv-format: true, type: uint32, array: false +name: dhcp-option-overload, code: 52, csv-format: true, type: uint8, array: false +name: dhcp-message-type, code: 53, csv-format: true, type: uint8, array: false +name: dhcp-server-identifier, code: 54, csv-format: true, type: ipv4-address, array: false +name: dhcp-parameter-request-list, code: 55, csv-format: true, type: uint8, array true +name: dhcp-message, code: 56, csv-format: true, type: string, array: false +name: dhcp-max-message-size, code: 57, csv-format: true, type: uint16, array: false +name: dhcp-renewal-time, code: 58, csv-format: true, type: uint32, array: false +name: dhcp-rebinding-time, code: 59, csv-format: true, type: uint32, array: false +name: vendor-class-identifier, code: 60, csv-format: true, type: binary, array: false +name: dhcp-client-identifier, code: 61, csv-format: true, type: binary, array: false +name: nwip-domain-name, code: 62, csv-format: true, type: string, array: false +name: nwip-suboptions, code: 63, csv-format: true, type: binary, array: false +name: user-class, code: 77, csv-format: true, type: binary, array: false +name: fqdn, code: 81, csv-format: true, type: record, array: false +name: dhcp-agent-options, code: 82, csv-format: true, type: empty, array: false +name: authenticate, code: 90, csv-format: true, type: binary, array: false +name: client-last-transaction-time, code: 91, csv-format: true, type: uint32, array: false +name: associated-ip, code: 92, csv-format: true, type: ipv4-address, array true +name: subnet-selection, code: 118, csv-format: true, type: ipv4-address, array: false +name: domain-search, code: 119, csv-format: true, type: binary, array: false +name: vivco-suboptions, code: 124, csv-format: true, type: binary, array: false +name: vivso-suboptions, code: 125, csv-format: true, type: binary, array: false + +
+ +
+ Custom DHCPv4 options + It is also possible to define new options that are + currently not supported out of the box. Let's assume that we + want to define a new DHCPv4 option called foo. It will have code 222 + and will convey a single unsigned 32 bit integer value. We can define + such option format by using the following commands: + +> config add Dhcp4/option-def +> config set Dhcp4/option-def[0]/name "foo" +> config set Dhcp4/option-def[0]/code 222 +> config set Dhcp4/option-def[0]/type "uint32" +> config set Dhcp4/option-def[0]/array false +> config set Dhcp4/option-def[0]/record-types "" +> config set Dhcp4/option-def[0]/space "dhcp4" +> config set Dhcp4/option-def[0]/encapsulate "" +> config commit + Note that this specifies new option format, not the values conveyed in + that option. + + Once the new option format is specified, concrete values can then + be specified in the same way as standard options. For example the following + commands may be used to define global values that apply to all subnets. + +1. > config add Dhcp4/option-data +2. > config set Dhcp4/option-data[0]/name "foo" +3. > config set Dhcp4/option-data[0]/code 222 +4. > config set Dhcp4/option-data[0]/space "dhcp4" +5. > config set Dhcp4/option-data[0]/csv-format true +6. > config set Dhcp4/option-data[0]/data "12345" +7. > config commit + + + New options can take more complex forms than simple use of + primitives (uint8, string, ipv4-address etc). It is possible to + define composition of existing primitives. Let's assume that we + want to define a new option that will consist of an IPv4 + address, followed by unsigned 16 bit integer, followed by a text + string. Such an option could be defined in the following way: + +> config add Dhcp4/option-def +> config set Dhcp4/option-def[0]/name "bar" +> config set Dhcp4/option-def[0]/code 223 +> config set Dhcp4/option-def[0]/space "dhcp4" +> config set Dhcp4/option-def[0]/type "record" +> config set Dhcp4/option-def[0]/array false +> config set Dhcp4/option-def[0]/record-types "ipv4-address, uint16, string" +> config set Dhcp4/option-def[0]/encapsulate "" + + Its values can be later defined as follows: + +> config add Dhcp4/option-data +> config set Dhcp4/option-data[0]/name "bar" +> config set Dhcp4/option-data[0]/space "dhcp4" +> config set Dhcp4/option-data[0]/code 223 +> config set Dhcp4/option-data[0]/csv-format true +> config set Dhcp4/option-data[0]/data "192.0.2.100, 123, Hello World" +7. > config commit + + +
+ +
+ DHCPv4 vendor specific options + Currently there are two option spaces defined: dhcp4 (to + be used in DHCPv4 daemon) and dhcp4. There is also vendor-opts-space, + which is empty by default, but options can be defined in it. Those options + are called vendor-specific information options. The following examples + show how to define an option foo with code 1 that consists of IPv4 address, + unsigned 16 bit integer and a string. The foo option is conveyed in + vendor specific information option. + +> config add Dhcp4/option-def +> config set Dhcp4/option-def[0]/name "foo" +> config set Dhcp4/option-def[0]/code 1 +> config set Dhcp4/option-def[0]/space "vendor-encapsulated-options-space" +> config set Dhcp4/option-def[0]/type "record" +> config set Dhcp4/option-def[0]/array false +> config set Dhcp4/option-def[0]/record-types "ipv4-address, uint16, string" +> config set Dhcp4/option-def[0]/encapsulates "" +> config commit + After option format is defined, the next step is to define actual values + for that option: + +> config add Dhcp4/option-data +> config set Dhcp4/option-data[0]/name "foo" +> config set Dhcp4/option-data[0]/space "vendor-encapsulated-options-space" +> config set Dhcp4/option-data[0]/code 1 +> config set Dhcp4/option-data[0]/csv-format true +> config set Dhcp4/option-data[0]/data "192.0.2.3, 123, Hello World" +> config commit + We should also define values for the vendor-opts, that will convey our option foo. + +> config add Dhcp4/option-data +> config set Dhcp4/option-data[1]/name "vendor-encapsulated-options" +> config set Dhcp4/option-data[1]/space "dhcp4" +> config set Dhcp4/option-data[1]/code 43 +> config set Dhcp4/option-data[1]/csv-format true +> config set Dhcp4/option-data[1]/data "12345" +> config commit + +
+ +
+ Nested DHCPv4 options (custom option spaces) + It is sometimes useful to define completely new option + spaces. This is useful if the user wants his new option to + convey sub-options that use separate numbering scheme, for + example sub-options with codes 1 and 2. Those option codes + conflict with standard DHCPv4 options, so a separate option + space must be defined. Let's assume that we want to have a + DHCPv4 option with code 222 that conveys two sub-options with + codes 1 and 2. This could be achieved with the following examples. + First we need to define those new sub-options: + +config add Dhcp4/option-def +config set Dhcp4/option-def[0]/name "subopt1" +config set Dhcp4/option-def[0]/code 1 +config set Dhcp4/option-def[0]/space "isc" +config set Dhcp4/option-def[0]/type "ipv4-address" +config set Dhcp4/option-def[0]/record-types "" +config set Dhcp4/option-def[0]/array false +config set Dhcp4/option-def[0]/encapsulate "" +config commit + +config add Dhcp4/option-def +config set Dhcp4/option-def[1]/name "subopt2" +config set Dhcp4/option-def[1]/code 2 +config set Dhcp4/option-def[1]/space "isc" +config set Dhcp4/option-def[1]/type "string" +config set Dhcp4/option-def[1]/record-types "" +config set Dhcp4/option-def[1]/array false +config set Dhcp4/option-def[1]/encapsulate "" +config commit +The next step is to define a regular DHCPv6 option and specify that it +should include options from isc option space: + +config add Dhcp4/option-def +config set Dhcp4/option-def[2]/name "container" +config set Dhcp4/option-def[2]/code 222 +config set Dhcp4/option-def[2]/space "dhcp4" +config set Dhcp4/option-def[2]/type "uint16" +config set Dhcp4/option-def[2]/array false +config set Dhcp4/option-def[2]/record-types "" +config set Dhcp4/option-def[2]/encapsulate "isc" +config commit + +Finally, we should specify values for those new options: + +config add Dhcp4/option-data +config set Dhcp4/option-data[0]/name "subopt1" +config set Dhcp4/option-data[0]/space "isc" +config set Dhcp4/option-data[0]/code 1 +config set Dhcp4/option-data[0]/csv-format true +config set Dhcp4/option-data[0]/data "192.0.2.3" +config commit + +config add Dhcp4/option-data +config set Dhcp4/option-data[1]/name "subopt2" +config set Dhcp4/option-data[1]/space "isc" +config set Dhcp4/option-data[1]/code 2 +config set Dhcp4/option-data[1]/csv-format true +config set Dhcp4/option-data[1]/data "Hello world" +config commit + +config add Dhcp4/option-data +config set Dhcp4/option-data[2]/name "container" +config set Dhcp4/option-data[2]/space "dhcp4" +config set Dhcp4/option-data[2]/code 222 +config set Dhcp4/option-data[2]/csv-format true +config set Dhcp4/option-data[2]/data "123" +config commit + +
+
Server Identifier in DHCPv4 The DHCPv4 protocol uses a "server identifier" for clients to be able From 2a9656fb9ac69e87273f14f4a6807986ee9739a8 Mon Sep 17 00:00:00 2001 From: Marcin Siodelski Date: Wed, 23 Jan 2013 17:18:00 +0100 Subject: [PATCH 04/13] [2657] Reformatting some of the DHCPv4 sections. --- doc/guide/bind10-guide.xml | 363 +++++++++++++++++++------------------ 1 file changed, 189 insertions(+), 174 deletions(-) diff --git a/doc/guide/bind10-guide.xml b/doc/guide/bind10-guide.xml index d606f78a79..063197d8dc 100644 --- a/doc/guide/bind10-guide.xml +++ b/doc/guide/bind10-guide.xml @@ -3617,7 +3617,7 @@ Dhcp4/subnet4 [] list (default) One of the major features of DHCPv4 server is to provide configuration options to clients. Although there are several options that require special behavior, most options are sent by the server only if the client - explicitely requested them. The following example shows how to + explicitly requested them. The following example shows how to configure DNS servers, which is one of the most frequently used options. Numbers in the first column are added for easier reference and will not appear on screen. Options specified in this way are considered @@ -3638,16 +3638,16 @@ Dhcp4/subnet4 [] list (default) contains information on all global options that the server is supposed to configure in all subnets. The second line specifies option name. For a complete list of currently supported names, - see the list below. - The third line specified option code. It must match values from - the list. Fourth line specifies option space, which must always + see below. + The third line specifies option code, which must match one of the + values from that list. Line 4 specifies option space, which must always be set to "dhcp4" as these are standard DHCPv4 options. For other option spaces, including custom option spaces, see . Fifth line specifies format in - which data will be specified. It is recommended to use CSV (coma - separated values). The sixth list specifies the actual value to - be sent to clients. Data is specified as a normal text with - values separated with comas, if more than one value is + linkend="dhcp4-option-spaces"/>. The fifth line specfies the format in + which the data will be entered: use of CSV (comma + separated values) is recommended. The sixth line gives the actual value to + be sent to clients. Data is specified as a normal text, with + values separated by commas if more than one value is allowed. @@ -3668,22 +3668,24 @@ Dhcp4/subnet4 [] list (default) > config commit (The value for the setting of the "data" element is split across two - lines in this document for clarity: when entering the command, all the + lines in this document for clarity: when entering the command, the string should be entered on the same line.) - As with global settings, it is also possible to override options - on a per-subnet basis. The following commands override the - global DNS servers option for a particular subnet, setting a - single DNS server with address 192.0.2.3. It is convenient - to use global options when clients connected to most of your - subnets are expected to get the same values of a given - option. You can then override specific values for small number - of subnets. If you use different values in each subnet, it does - not make sense to specify global option values - (Dhcp4/option-data), but rather use only subnet-specific values + It is possible to override options on a per-subnet basis. If + clients connected to most of your subnets are expected to get the + same values of a given option, you should use global options: you + can then override specific values for a small number of subnets. + On the other hand, if you use different values in each subnet, + it does not make sense to specify global option values + (Dhcp4/option-data), rather you should set only subnet-specific values (Dhcp4/subnet[X]/option-data[Y]). + + + The following commands override the global + DNS servers option for a particular subnet, setting a single DNS + server with address 2001:db8:1::3. > config add Dhcp4/subnet4[0]/option-data > config set Dhcp4/subnet4[0]/option-data[0]/name "domain-name-servers" @@ -3701,106 +3703,114 @@ Dhcp4/subnet4 [] list (default) - This is the list of currently supported standard DHCPv4 options. Name and code + Below is a list of currently supported standard DHCPv4 options. The name and code specify name and code that should be used as a name in option-data - structures. Type designates the actual format of the data. Uint8 means 8 bit - unsigned integer with allowed values 0 to 255. Uint16 means 16 bit unsinged - integer with allowed values 0 to 65535. Uint32 means 32 bit unsigned integer with - allowed values 0 to 4294967295. ipv4-address means a normal IPv4 address. Fqdn means - fully qualified domain name. String means any text. Some options are designated - as arrays. This means that more than one value is allowed in such an option. For example - the option domain-name-servers allows conveying more than one IPv4 addresses, - so clients will get multiple DNS servers if needed. + structures. Type designates the actual format of the data: - - List of standard DHCPv4 options -name: subnet-mask, code: 1, csv-format: true, type: ipv4-address, array: false -name: time-offset, code: 2, csv-format: true, type: uint32, array: false -name: routers, code: 3, csv-format: true, type: ipv4-address, array true -name: time-servers, code: 4, csv-format: true, type: ipv4-address, array true -name: name-servers, code: 5, csv-format: true, type: ipv4-address, array: false -name: domain-name-servers, code: 6, csv-format: true, type: ipv4-address, array true -name: log-servers, code: 7, csv-format: true, type: ipv4-address, array true -name: cookie-servers, code: 8, csv-format: true, type: ipv4-address, array true -name: lpr-servers, code: 9, csv-format: true, type: ipv4-address, array true -name: impress-servers, code: 10, csv-format: true, type: ipv4-address, array true -name: resource-location-servers, code: 11, csv-format: true, type: ipv4-address, array true -name: host-name, code: 12, csv-format: true, type: string, array: false -name: boot-size, code: 13, csv-format: true, type: uint16, array: false -name: merit-dump, code: 14, csv-format: true, type: string, array: false -name: domain-name, code: 15, csv-format: true, type: fqdn, array: false -name: swap-server, code: 16, csv-format: true, type: ipv4-address, array: false -name: root-path, code: 17, csv-format: true, type: string, array: false -name: extensions-path, code: 18, csv-format: true, type: string, array: false -name: ip-forwarding, code: 19, csv-format: true, type: boolean, array: false -name: non-local-source-routing, code: 20, csv-format: true, type: boolean, array: false -name: policy-filter, code: 21, csv-format: true, type: ipv4-address, array true -name: max-dgram-reassembly, code: 22, csv-format: true, type: uint16, array: false -name: default-ip-ttl, code: 23, csv-format: true, type: uint8, array: false -name: path-mtu-aging-timeout, code: 24, csv-format: true, type: uint32, array: false -name: path-mtu-plateau-table, code: 25, csv-format: true, type: uint16, array true -name: interface-mtu, code: 26, csv-format: true, type: uint16, array: false -name: all-subnets-local, code: 27, csv-format: true, type: boolean, array: false -name: broadcast-address, code: 28, csv-format: true, type: ipv4-address, array: false -name: perform-mask-discovery, code: 29, csv-format: true, type: boolean, array: false -name: mask-supplier, code: 30, csv-format: true, type: boolean, array: false -name: router-discovery, code: 31, csv-format: true, type: boolean, array: false -name: router-solicitation-address, code: 32, csv-format: true, type: ipv4-address, array: false -name: static-routes, code: 33, csv-format: true, type: ipv4-address, array true -name: trailer-encapsulation, code: 34, csv-format: true, type: boolean, array: false -name: arp-cache-timeout, code: 35, csv-format: true, type: uint32, array: false -name: ieee802-3-encapsulation, code: 36, csv-format: true, type: boolean, array: false -name: default-tcp-ttl, code: 37, csv-format: true, type: uint8, array: false -name: tcp-keepalive-internal, code: 38, csv-format: true, type: uint32, array: false -name: tcp-keepalive-garbage, code: 39, csv-format: true, type: boolean, array: false -name: nis-domain, code: 40, csv-format: true, type: string, array: false -name: nis-servers, code: 41, csv-format: true, type: ipv4-address, array true -name: ntp-servers, code: 42, csv-format: true, type: ipv4-address, array true -name: vendor-encapsulated-options, code: 43, csv-format: true, type: empty, array: false -name: netbios-name-servers, code: 44, csv-format: true, type: ipv4-address, array true -name: netbios-dd-server, code: 45, csv-format: true, type: ipv4-address, array true -name: netbios-node-type, code: 46, csv-format: true, type: uint8, array: false -name: netbios-scope, code: 47, csv-format: true, type: string, array: false -name: font-servers, code: 48, csv-format: true, type: ipv4-address, array true -name: x-display-manager, code: 49, csv-format: true, type: ipv4-address, array true -name: dhcp-requested-address, code: 50, csv-format: true, type: ipv4-address, array: false -name: dhcp-lease-time, code: 51, csv-format: true, type: uint32, array: false -name: dhcp-option-overload, code: 52, csv-format: true, type: uint8, array: false -name: dhcp-message-type, code: 53, csv-format: true, type: uint8, array: false -name: dhcp-server-identifier, code: 54, csv-format: true, type: ipv4-address, array: false -name: dhcp-parameter-request-list, code: 55, csv-format: true, type: uint8, array true -name: dhcp-message, code: 56, csv-format: true, type: string, array: false -name: dhcp-max-message-size, code: 57, csv-format: true, type: uint16, array: false -name: dhcp-renewal-time, code: 58, csv-format: true, type: uint32, array: false -name: dhcp-rebinding-time, code: 59, csv-format: true, type: uint32, array: false -name: vendor-class-identifier, code: 60, csv-format: true, type: binary, array: false -name: dhcp-client-identifier, code: 61, csv-format: true, type: binary, array: false -name: nwip-domain-name, code: 62, csv-format: true, type: string, array: false -name: nwip-suboptions, code: 63, csv-format: true, type: binary, array: false -name: user-class, code: 77, csv-format: true, type: binary, array: false -name: fqdn, code: 81, csv-format: true, type: record, array: false -name: dhcp-agent-options, code: 82, csv-format: true, type: empty, array: false -name: authenticate, code: 90, csv-format: true, type: binary, array: false -name: client-last-transaction-time, code: 91, csv-format: true, type: uint32, array: false -name: associated-ip, code: 92, csv-format: true, type: ipv4-address, array true -name: subnet-selection, code: 118, csv-format: true, type: ipv4-address, array: false -name: domain-search, code: 119, csv-format: true, type: binary, array: false -name: vivco-suboptions, code: 124, csv-format: true, type: binary, array: false -name: vivso-suboptions, code: 125, csv-format: true, type: binary, array: false - -
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
List of standard DHCPv4 options
NameCodeTypeArray?
subnet-mask1trueipv4-addressfalse
time-offset2trueuint32false
routers3trueipv4-addresstrue
time-servers4trueipv4-addressarray true
name-servers5truetype: ipv4-addressfalse
domain-name-servers6truetype: ipv4-addressarray true
log-servers7truetype: ipv4-addressarray true
cookie-servers8truetype: ipv4-addressarray true
lpr-servers9truetype: ipv4-addressarray true
impress-servers10truetype: ipv4-addressarray true
resource-location-servers11truetype: ipv4-addressarray true
host-name12truetype: stringfalse
boot-size13truetype: uint16false
merit-dump14truetype: stringfalse
domain-name15truetype: fqdnfalse
swap-server16truetype: ipv4-addressfalse
root-path17truetype: stringfalse
extensions-path18truetype: stringfalse
ip-forwarding19truetype: booleanfalse
non-local-source-routing20truetype: booleanfalse
policy-filter21truetype: ipv4-addressarray true
max-dgram-reassembly22truetype: uint16false
default-ip-ttl23truetype: uint8false
path-mtu-aging-timeout24truetype: uint32false
path-mtu-plateau-table25truetype: uint16array true
interface-mtu26truetype: uint16false
all-subnets-local27truetype: booleanfalse
broadcast-address28truetype: ipv4-addressfalse
perform-mask-discovery29truetype: booleanfalse
mask-supplier30truetype: booleanfalse
router-discovery31truetype: booleanfalse
router-solicitation-address32truetype: ipv4-addressfalse
static-routes33truetype: ipv4-addressarray true
trailer-encapsulation34truetype: booleanfalse
arp-cache-timeout35truetype: uint32false
ieee802-3-encapsulation36truetype: booleanfalse
default-tcp-ttl37truetype: uint8false
tcp-keepalive-internal38truetype: uint32false
tcp-keepalive-garbage39truetype: booleanfalse
nis-domain40truetype: stringfalse
nis-servers41truetype: ipv4-addressarray true
ntp-servers42truetype: ipv4-addressarray true
vendor-encapsulated-options43truetype: emptyfalse
netbios-name-servers44truetype: ipv4-addressarray true
netbios-dd-server45truetype: ipv4-addressarray true
netbios-node-type46truetype: uint8false
netbios-scope47truetype: stringfalse
font-servers48truetype: ipv4-addressarray true
x-display-manager49truetype: ipv4-addressarray true
dhcp-requested-address50truetype: ipv4-addressfalse
dhcp-option-overload52truetype: uint8false
dhcp-message56truetype: stringfalse
dhcp-max-message-size57truetype: uint16false
vendor-class-identifier60truetype: binaryfalse
nwip-domain-name62truetype: stringfalse
nwip-suboptions63truetype: binaryfalse
user-class77truetype: binaryfalse
fqdn81truetype: recordfalse
dhcp-agent-options82truetype: emptyfalse
authenticate90truetype: binaryfalse
client-last-transaction-time91truetype: uint32false
associated-ip92truetype: ipv4-addressarray true
subnet-selection118truetype: ipv4-addressfalse
domain-search119truetype: binaryfalse
vivco-suboptions124truetype: binaryfalse
vivso-suboptions125truetype: binaryfalse
+
+
Custom DHCPv4 options It is also possible to define new options that are currently not supported out of the box. Let's assume that we - want to define a new DHCPv4 option called foo. It will have code 222 + want to define a new DHCPv4 option called "foo". It will have code 222 and will convey a single unsigned 32 bit integer value. We can define - such option format by using the following commands: + such an option by using the following commands: > config add Dhcp4/option-def > config set Dhcp4/option-def[0]/name "foo" @@ -3814,22 +3824,24 @@ Dhcp4/subnet4 [] list (default) Note that this specifies new option format, not the values conveyed in that option. - Once the new option format is specified, concrete values can then + Once the new option format is defined, concrete values can then be specified in the same way as standard options. For example the following commands may be used to define global values that apply to all subnets. -1. > config add Dhcp4/option-data -2. > config set Dhcp4/option-data[0]/name "foo" -3. > config set Dhcp4/option-data[0]/code 222 -4. > config set Dhcp4/option-data[0]/space "dhcp4" -5. > config set Dhcp4/option-data[0]/csv-format true -6. > config set Dhcp4/option-data[0]/data "12345" -7. > config commit +> config add Dhcp4/option-data +> config set Dhcp4/option-data[0]/name "foo" +> config set Dhcp4/option-data[0]/code 222 +> config set Dhcp4/option-data[0]/space "dhcp4" +> config set Dhcp4/option-data[0]/csv-format true +> config set Dhcp4/option-data[0]/data "12345" +> config commit New options can take more complex forms than simple use of primitives (uint8, string, ipv4-address etc). It is possible to - define composition of existing primitives. Let's assume that we + define an option comprising a number of existing primitives. + + Assume we want to define a new option that will consist of an IPv4 address, followed by unsigned 16 bit integer, followed by a text string. Such an option could be defined in the following way: @@ -3851,19 +3863,19 @@ Dhcp4/subnet4 [] list (default) > config set Dhcp4/option-data[0]/code 223 > config set Dhcp4/option-data[0]/csv-format true > config set Dhcp4/option-data[0]/data "192.0.2.100, 123, Hello World" -7. > config commit +> config commit
DHCPv4 vendor specific options - Currently there are two option spaces defined: dhcp4 (to - be used in DHCPv4 daemon) and dhcp4. There is also vendor-opts-space, + Currently there are three option spaces defined: dhcp4 (to + be used in DHCPv4 daemon) and dhcp4; there is also vendor-opts-space, which is empty by default, but options can be defined in it. Those options are called vendor-specific information options. The following examples - show how to define an option foo with code 1 that consists of IPv4 address, - unsigned 16 bit integer and a string. The foo option is conveyed in + show how to define an option "foo" with code 1 that consists of IPv4 address, + unsigned 16 bit integer and a string. The "foo" option is conveyed in a vendor specific information option. > config add Dhcp4/option-def @@ -3909,63 +3921,66 @@ Dhcp4/subnet4 [] list (default) codes 1 and 2. This could be achieved with the following examples. First we need to define those new sub-options: -config add Dhcp4/option-def -config set Dhcp4/option-def[0]/name "subopt1" -config set Dhcp4/option-def[0]/code 1 -config set Dhcp4/option-def[0]/space "isc" -config set Dhcp4/option-def[0]/type "ipv4-address" -config set Dhcp4/option-def[0]/record-types "" -config set Dhcp4/option-def[0]/array false -config set Dhcp4/option-def[0]/encapsulate "" -config commit +> config add Dhcp4/option-def +> config set Dhcp4/option-def[0]/name "subopt1" +> config set Dhcp4/option-def[0]/code 1 +> config set Dhcp4/option-def[0]/space "isc" +> config set Dhcp4/option-def[0]/type "ipv4-address" +> config set Dhcp4/option-def[0]/record-types "" +> config set Dhcp4/option-def[0]/array false +> config set Dhcp4/option-def[0]/encapsulate "" +> config commit -config add Dhcp4/option-def -config set Dhcp4/option-def[1]/name "subopt2" -config set Dhcp4/option-def[1]/code 2 -config set Dhcp4/option-def[1]/space "isc" -config set Dhcp4/option-def[1]/type "string" -config set Dhcp4/option-def[1]/record-types "" -config set Dhcp4/option-def[1]/array false -config set Dhcp4/option-def[1]/encapsulate "" -config commit +> config add Dhcp4/option-def +> config set Dhcp4/option-def[1]/name "subopt2" +> config set Dhcp4/option-def[1]/code 2 +> config set Dhcp4/option-def[1]/space "isc" +> config set Dhcp4/option-def[1]/type "string" +> config set Dhcp4/option-def[1]/record-types "" +> config set Dhcp4/option-def[1]/array false +> config set Dhcp4/option-def[1]/encapsulate "" +> config commit + The next step is to define a regular DHCPv6 option and specify that it should include options from isc option space: -config add Dhcp4/option-def -config set Dhcp4/option-def[2]/name "container" -config set Dhcp4/option-def[2]/code 222 -config set Dhcp4/option-def[2]/space "dhcp4" -config set Dhcp4/option-def[2]/type "uint16" -config set Dhcp4/option-def[2]/array false -config set Dhcp4/option-def[2]/record-types "" -config set Dhcp4/option-def[2]/encapsulate "isc" -config commit +> add Dhcp4/option-def +> set Dhcp4/option-def[2]/name "container" +> set Dhcp4/option-def[2]/code 222 +> set Dhcp4/option-def[2]/space "dhcp4" +> set Dhcp4/option-def[2]/type "uint16" +> set Dhcp4/option-def[2]/array false +> set Dhcp4/option-def[2]/record-types "" +> set Dhcp4/option-def[2]/encapsulate "isc" +> commit + Finally, we should specify values for those new options: -config add Dhcp4/option-data -config set Dhcp4/option-data[0]/name "subopt1" -config set Dhcp4/option-data[0]/space "isc" -config set Dhcp4/option-data[0]/code 1 -config set Dhcp4/option-data[0]/csv-format true -config set Dhcp4/option-data[0]/data "192.0.2.3" -config commit - -config add Dhcp4/option-data -config set Dhcp4/option-data[1]/name "subopt2" -config set Dhcp4/option-data[1]/space "isc" -config set Dhcp4/option-data[1]/code 2 -config set Dhcp4/option-data[1]/csv-format true -config set Dhcp4/option-data[1]/data "Hello world" -config commit - -config add Dhcp4/option-data -config set Dhcp4/option-data[2]/name "container" -config set Dhcp4/option-data[2]/space "dhcp4" -config set Dhcp4/option-data[2]/code 222 -config set Dhcp4/option-data[2]/csv-format true -config set Dhcp4/option-data[2]/data "123" -config commit +> config add Dhcp4/option-data +> config set Dhcp4/option-data[0]/name "subopt1" +> config set Dhcp4/option-data[0]/space "isc" +> config set Dhcp4/option-data[0]/code 1 +> config set Dhcp4/option-data[0]/csv-format true +> config set Dhcp4/option-data[0]/data "192.0.2.3" +> config commit + +> config add Dhcp4/option-data +> config set Dhcp4/option-data[1]/name "subopt2" +> config set Dhcp4/option-data[1]/space "isc" +> config set Dhcp4/option-data[1]/code 2 +> config set Dhcp4/option-data[1]/csv-format true +> config set Dhcp4/option-data[1]/data "Hello world" +> config commit + +> config add Dhcp4/option-data +> config set Dhcp4/option-data[2]/name "container" +> config set Dhcp4/option-data[2]/space "dhcp4" +> config set Dhcp4/option-data[2]/code 222 +> config set Dhcp4/option-data[2]/csv-format true +> config set Dhcp4/option-data[2]/data "123" +> config commit +
@@ -4347,7 +4362,7 @@ Dhcp6/subnet6/ list It is possible to override options on a per-subnet basis. If clients connected to most of your subnets are expected to get the - same values of a given option, youu should use global options: you + same values of a given option, you should use global options: you can then override specific values for a small number of subnets. On the other hand, if you use different values in each subnet, it does not make sense to specify global option values @@ -4493,7 +4508,7 @@ Dhcp6/subnet6/ list New options can take more complex forms than simple use of primitives (uint8, string, ipv6-address etc). It is possible to - define an option comprising a a number of existing primitives. + define an option comprising a number of existing primitives. Assume we From fc03d665a777c47920a85bae41f3e359c61fa42e Mon Sep 17 00:00:00 2001 From: Marcin Siodelski Date: Wed, 23 Jan 2013 17:23:56 +0100 Subject: [PATCH 05/13] [2657] Corrected formatting of the table listing std DHCP4 options. --- doc/guide/bind10-guide.xml | 146 ++++++++++++++++++------------------- 1 file changed, 73 insertions(+), 73 deletions(-) diff --git a/doc/guide/bind10-guide.xml b/doc/guide/bind10-guide.xml index 063197d8dc..eefb2c6479 100644 --- a/doc/guide/bind10-guide.xml +++ b/doc/guide/bind10-guide.xml @@ -3718,87 +3718,87 @@ Dhcp4/subnet4 [] list (default) -subnet-mask1trueipv4-addressfalse -time-offset2trueuint32false -routers3trueipv4-addresstrue -time-servers4trueipv4-addressarray true -name-servers5truetype: ipv4-addressfalse -domain-name-servers6truetype: ipv4-addressarray true -log-servers7truetype: ipv4-addressarray true -cookie-servers8truetype: ipv4-addressarray true -lpr-servers9truetype: ipv4-addressarray true -impress-servers10truetype: ipv4-addressarray true -resource-location-servers11truetype: ipv4-addressarray true -host-name12truetype: stringfalse -boot-size13truetype: uint16false -merit-dump14truetype: stringfalse -domain-name15truetype: fqdnfalse -swap-server16truetype: ipv4-addressfalse -root-path17truetype: stringfalse -extensions-path18truetype: stringfalse -ip-forwarding19truetype: booleanfalse -non-local-source-routing20truetype: booleanfalse -policy-filter21truetype: ipv4-addressarray true -max-dgram-reassembly22truetype: uint16false -default-ip-ttl23truetype: uint8false -path-mtu-aging-timeout24truetype: uint32false -path-mtu-plateau-table25truetype: uint16array true -interface-mtu26truetype: uint16false -all-subnets-local27truetype: booleanfalse -broadcast-address28truetype: ipv4-addressfalse -perform-mask-discovery29truetype: booleanfalse -mask-supplier30truetype: booleanfalse -router-discovery31truetype: booleanfalse -router-solicitation-address32truetype: ipv4-addressfalse -static-routes33truetype: ipv4-addressarray true -trailer-encapsulation34truetype: booleanfalse -arp-cache-timeout35truetype: uint32false -ieee802-3-encapsulation36truetype: booleanfalse -default-tcp-ttl37truetype: uint8false -tcp-keepalive-internal38truetype: uint32false -tcp-keepalive-garbage39truetype: booleanfalse -nis-domain40truetype: stringfalse -nis-servers41truetype: ipv4-addressarray true -ntp-servers42truetype: ipv4-addressarray true -vendor-encapsulated-options43truetype: emptyfalse -netbios-name-servers44truetype: ipv4-addressarray true -netbios-dd-server45truetype: ipv4-addressarray true -netbios-node-type46truetype: uint8false -netbios-scope47truetype: stringfalse -font-servers48truetype: ipv4-addressarray true -x-display-manager49truetype: ipv4-addressarray true -dhcp-requested-address50truetype: ipv4-addressfalse +subnet-mask1ipv4-addressfalse +time-offset2uint32false +routers3ipv4-address +time-servers4ipv4-addresstrue +name-servers5ipv4-addressfalse +domain-name-servers6ipv4-addresstrue +log-servers7ipv4-addresstrue +cookie-servers8ipv4-addresstrue +lpr-servers9ipv4-addresstrue +impress-servers10ipv4-addresstrue +resource-location-servers11ipv4-addresstrue +host-name12stringfalse +boot-size13uint16false +merit-dump14stringfalse +domain-name15fqdnfalse +swap-server16ipv4-addressfalse +root-path17stringfalse +extensions-path18stringfalse +ip-forwarding19booleanfalse +non-local-source-routing20booleanfalse +policy-filter21ipv4-addresstrue +max-dgram-reassembly22uint16false +default-ip-ttl23uint8false +path-mtu-aging-timeout24uint32false +path-mtu-plateau-table25uint16true +interface-mtu26uint16false +all-subnets-local27booleanfalse +broadcast-address28ipv4-addressfalse +perform-mask-discovery29booleanfalse +mask-supplier30booleanfalse +router-discovery31booleanfalse +router-solicitation-address32ipv4-addressfalse +static-routes33ipv4-addresstrue +trailer-encapsulation34booleanfalse +arp-cache-timeout35uint32false +ieee802-3-encapsulation36booleanfalse +default-tcp-ttl37uint8false +tcp-keepalive-internal38uint32false +tcp-keepalive-garbage39booleanfalse +nis-domain40stringfalse +nis-servers41ipv4-addresstrue +ntp-servers42ipv4-addresstrue +vendor-encapsulated-options43emptyfalse +netbios-name-servers44ipv4-addresstrue +netbios-dd-server45ipv4-addresstrue +netbios-node-type46uint8false +netbios-scope47stringfalse +font-servers48ipv4-addresstrue +x-display-manager49ipv4-addresstrue +dhcp-requested-address50ipv4-addressfalse -dhcp-option-overload52truetype: uint8false +dhcp-option-overload52uint8false -dhcp-message56truetype: stringfalse -dhcp-max-message-size57truetype: uint16false +dhcp-message56stringfalse +dhcp-max-message-size57uint16false -vendor-class-identifier60truetype: binaryfalse +vendor-class-identifier60binaryfalse -nwip-domain-name62truetype: stringfalse -nwip-suboptions63truetype: binaryfalse -user-class77truetype: binaryfalse -fqdn81truetype: recordfalse -dhcp-agent-options82truetype: emptyfalse -authenticate90truetype: binaryfalse -client-last-transaction-time91truetype: uint32false -associated-ip92truetype: ipv4-addressarray true -subnet-selection118truetype: ipv4-addressfalse -domain-search119truetype: binaryfalse -vivco-suboptions124truetype: binaryfalse -vivso-suboptions125truetype: binaryfalse +nwip-domain-name62stringfalse +nwip-suboptions63binaryfalse +user-class77binaryfalse +fqdn81recordfalse +dhcp-agent-options82emptyfalse +authenticate90binaryfalse +client-last-transaction-time91uint32false +associated-ip92ipv4-addresstrue +subnet-selection118ipv4-addressfalse +domain-search119binaryfalse +vivco-suboptions124binaryfalse +vivso-suboptions125binaryfalse From 1e2111996aa44a583fcdf0997a6aa170542f3ea2 Mon Sep 17 00:00:00 2001 From: Marcin Siodelski Date: Wed, 23 Jan 2013 17:44:45 +0100 Subject: [PATCH 06/13] [2657] Added a note regarding the need to configure vendor options. Also, updated the copyright header with the current date. --- doc/guide/bind10-guide.xml | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/doc/guide/bind10-guide.xml b/doc/guide/bind10-guide.xml index eefb2c6479..d2e1a6a731 100644 --- a/doc/guide/bind10-guide.xml +++ b/doc/guide/bind10-guide.xml @@ -7,7 +7,7 @@ ]> - - + +
- - + - + @@ -3799,17 +3800,37 @@ Dhcp4/subnet4 [] list (default) - -
List of standard DHCPv4 options
NameCodeTypeArray?
NameCodeTypeArray?
subnet-mask1ipv4-addressfalse
time-offset2uint32false
routers3ipv4-address
routers3ipv4-addresstrue
time-servers4ipv4-addresstrue
name-servers5ipv4-addressfalse
domain-name-servers6ipv4-addresstrue
domain-search119binaryfalse
vivco-suboptions124binaryfalse
vivso-suboptions125binaryfalse
-
+ + +
+ + + + + + + + + + + + + + + + + + + +
List of standard DHCP option types
NameMeaning
binaryAn arbitrary string of bytes, specified as a set of hexadecimal digits.
booleanBoolean value with allowed values true or false
emptyNo value, data is carried in suboptions
fqdnFully qualified domain name (e.g. www.example.com)
ipv4-addressIPv4 address in the usual dotted-decimal notation (e.g. 192.0.2.1)
ipv6-addressIPv6 address in the usual colon notation (e.g. 2001:db8::1)
recordStructured data that may comprise any types (except "record" and "empty")
stringAny text
uint88 bit unsigned integer with allowed values 0 to 255
uint1616 bit unsinged integer with allowed values 0 to 65535
uint3232 bit unsigned integer with allowed values 0 to 4294967295
+
Custom DHCPv4 options - It is also possible to define new options that are - currently not supported out of the box. Let's assume that we - want to define a new DHCPv4 option called "foo". It will have code 222 - and will convey a single unsigned 32 bit integer value. We can define + It is also possible to define options other than the standard ones. + Assume that we want to define a new DHCPv4 option called "foo" which will have + code 222 and will convey a single unsigned 32 bit integer value. We can define such an option by using the following commands: > config add Dhcp4/option-def @@ -3821,12 +3842,12 @@ Dhcp4/subnet4 [] list (default) > config set Dhcp4/option-def[0]/space "dhcp4" > config set Dhcp4/option-def[0]/encapsulate "" > config commit - Note that this specifies new option format, not the values conveyed in - that option. + Note that the above set of comments define the format of the new option and do not + set its values. - Once the new option format is defined, concrete values can then - be specified in the same way as standard options. For example the following - commands may be used to define global values that apply to all subnets. + Once the new option format is defined, its value is set + in the same way as for a standard option. For example the following + commands set a global value that applies to all subnets. > config add Dhcp4/option-data > config set Dhcp4/option-data[0]/name "foo" @@ -3838,7 +3859,7 @@ Dhcp4/subnet4 [] list (default) New options can take more complex forms than simple use of - primitives (uint8, string, ipv4-address etc). It is possible to + primitives (uint8, string, ipv4-address etc): it is possible to define an option comprising a number of existing primitives. Assume we @@ -3855,7 +3876,12 @@ Dhcp4/subnet4 [] list (default) > config set Dhcp4/option-def[0]/record-types "ipv4-address, uint16, string" > config set Dhcp4/option-def[0]/encapsulate "" - Its values can be later defined as follows: + The "type" is set to "record" to indicate that the option contains + multiple values of different types. These types are given as a comma-separated + list in the "record-types" field and should be those listed in . + + + The values of the option are set as follows: > config add Dhcp4/option-data > config set Dhcp4/option-data[0]/name "bar" @@ -3865,19 +3891,24 @@ Dhcp4/subnet4 [] list (default) > config set Dhcp4/option-data[0]/data "192.0.2.100, 123, Hello World" > config commit - + "csv-format" is set "true" to indicate that the "data" field comprises a command-separated + list of values. The values in the "data" must correspond to the types set in + the "record-types" field of the option definition.
DHCPv4 vendor specific options Currently there are three option spaces defined: dhcp4 (to - be used in DHCPv4 daemon) and dhcp4; there is also vendor-opts-space, - which is empty by default, but options can be defined in it. Those options + be used in DHCPv4 daemon), dhcp6, and vendor-opts-space. The last-mentioned + is empty by default but options can be defined in it: those options are called vendor-specific information options. The following examples show how to define an option "foo" with code 1 that consists of IPv4 address, unsigned 16 bit integer and a string. The "foo" option is conveyed in a vendor specific information option. - + + + The first step is to define the format of the option: + > config add Dhcp4/option-def > config set Dhcp4/option-def[0]/name "foo" > config set Dhcp4/option-def[0]/code 1 @@ -3886,8 +3917,10 @@ Dhcp4/subnet4 [] list (default) > config set Dhcp4/option-def[0]/array false > config set Dhcp4/option-def[0]/record-types "ipv4-address, uint16, string" > config set Dhcp4/option-def[0]/encapsulates "" -> config commit - After option format is defined, the next step is to define actual values +> config commit + + (Note that the option space is set to "vendor-encapsulated-option-space".) + Once the option format is defined, the next step is to define actual values for that option: > config add Dhcp4/option-data @@ -3897,7 +3930,7 @@ Dhcp4/subnet4 [] list (default) > config set Dhcp4/option-data[0]/csv-format true > config set Dhcp4/option-data[0]/data "192.0.2.3, 123, Hello World" > config commit - We should also define values for the vendor-opts, that will convey our option foo. + We also set up a dummy value for vendor-opts, the option that conveys our sub-option "foo". > config add Dhcp4/option-data > config set Dhcp4/option-data[1]/name "vendor-encapsulated-options" @@ -3927,10 +3960,12 @@ Dhcp4/subnet4 [] list (default) convey sub-options that use separate numbering scheme, for example sub-options with codes 1 and 2. Those option codes conflict with standard DHCPv4 options, so a separate option - space must be defined. Let's assume that we want to have a - DHCPv4 option with code 222 that conveys two sub-options with - codes 1 and 2. This could be achieved with the following examples. - First we need to define those new sub-options: + space must be defined. + + + Assume that we want to have a DHCPv4 option called "container" with + code 222 that conveys two sub-options with codes 1 and 2. + First we need to define the new sub-options: > config add Dhcp4/option-def > config set Dhcp4/option-def[0]/name "subopt1" @@ -3952,8 +3987,12 @@ Dhcp4/subnet4 [] list (default) > config set Dhcp4/option-def[1]/encapsulate "" > config commit -The next step is to define a regular DHCPv6 option and specify that it -should include options from isc option space: + Note that we have defined the options to belong to a new option space + (in this case, "isc"). + + + The next step is to define a regular DHCPv4 option with our desired + code and specify that it should include options from the new option space: > add Dhcp4/option-def > set Dhcp4/option-def[2]/name "container" @@ -3965,8 +4004,11 @@ should include options from isc option space: > set Dhcp4/option-def[2]/encapsulate "isc" > commit - -Finally, we should specify values for those new options: + The name of the option space in which the sub-options are defined + is set in the "encapsulates" field. + + + Finally, we can set values for the new options: > config add Dhcp4/option-data > config set Dhcp4/option-data[0]/name "subopt1" @@ -3992,26 +4034,31 @@ Finally, we should specify values for those new options: > config set Dhcp4/option-data[2]/data "123" > config commit + Even though the "container" option comprises sub-options, we need to + set dummy values for it so that it is included in the data sent to a + client.
Server Identifier in DHCPv4 - The DHCPv4 protocol uses a "server identifier" for clients to be able - to discriminate between several servers present on the same link: this - value is an IPv4 address of the server. When started for the first time, - the DHCPv4 server will choose one of its IPv4 addresses as its server-id, - and store the chosen value to a file. (The file is named b10-dhcp4-serverid and is - stored in the "local state directory". This is set during installation - when "configure" is run, and can be changed by using "--localstatedir" - on the "configure" command line.) That file will be read by the server - and the contained value used whenever the server is subsequently started. + + The DHCPv4 protocol uses a "server identifier" for clients to be able + to discriminate between several servers present on the same link: this + value is an IPv4 address of the server. When started for the first time, + the DHCPv4 server will choose one of its IPv4 addresses as its server-id, + and store the chosen value to a file. That file will be read by the server + and the contained value used whenever the server is subsequently started. - It is unlikely that this parameter needs to be changed. If such a need - arises, please stop the server, edit the file and restart the server. - It is a text file that should contain an IPv4 address. Spaces are - ignored. No extra characters are allowed in this file. + It is unlikely that this parameter should ever need to be changed. + However, if such a need arises, stop the server, edit the file and restart + the server. (The file is named b10-dhcp4-serverid and by default is + stored in the "var" subdirectory of the directory in which BIND 10 is installed. + This can be changed when BIND 10 is built by using "--localstatedir" + on the "configure" command line.) The file is a text file that should + contain an IPv4 address. Spaces are ignored, and no extra characters are allowed + in this file.
@@ -4340,7 +4387,7 @@ Dhcp6/subnet6/ list list. Line 4 specifies option space, which must always be set to "dhcp6" as these are standard DHCPv6 options. For other name spaces, including custom option spaces, see . The fifth line specfies the format in + linkend="dhcp6-option-spaces"/>. The fifth line specifies the format in which the data will be entered: use of CSV (comma separated values) is recommended. The sixth line gives the actual value to be sent to clients. Data is specified as a normal text, with @@ -4394,42 +4441,38 @@ Dhcp6/subnet6/ list > config commit - - In future version of Kea versions, it will not be necessary to specify - option code, space and csv-format fields as those fields will be set - automatically. - + + + In future version of Kea versions, it will not be necessary to specify + option code, space and csv-format fields as those fields will be set + automatically. + + - - Below is a list of currently supported standard DHCPv6 options. The name and code - specify name and code that should be used as a name in option-data - structures. Type designates the actual format of the data: - - - uint8 means 8 bit unsigned integer with allowed values 0 to 255. - uint16 means 16 bit unsinged integer with allowed values 0 to 65535. - uint32 means 32 bit unsigned integer with allowed values 0 to 4294967295. - ipv6-address means a normal IPv6 address. - fqdn means fully qualified domain name. - String means any text. - - Some options are designated as arrays, which means that more than one - value is allowed in such an option. For example the option dns-servers - allows the specification of more than one IPv6 address, so allowing - clients to obtain the the addresses of multiple DNS servers. - + + Below is a list of currently supported standard DHCPv6 options. The name and code + specify name and code that should be used as a name in option-data + structures. Type designates the actual format of the data and is one of + the types listed in . + + + Some options are designated as arrays, which means that more than one + value is allowed in such an option. For example the option dns-servers + allows the specification of more than one IPv6 address, so allowing + clients to obtain the the addresses of multiple DNS servers. + - - - - - + +
List of standard DHCPv6 options
NameCodeTypeArray?
+ + + - - + + + @@ -4579,7 +4574,12 @@ Dhcp6/subnet6/ list > config set Dhcp6/option-def[0]/record-types "ipv6-address, uint16, string" > config set Dhcp6/option-def[0]/encapsulate "" - Its values can be later defined as follows: + The "type" is set to "record" to indicate that the option contains + multiple values of different types. These types are given as a comma-separated + list in the "record-types" field and should be those listed in . + + + The values of the option are set as follows: > config add Dhcp6/option-data > config set Dhcp6/option-data[0]/name "bar" @@ -4589,19 +4589,24 @@ Dhcp6/subnet6/ list > config set Dhcp6/option-data[0]/data "2001:db8:1::10, 123, Hello World" > config commit + "csv-format" is set "true" to indicate that the "data" field comprises a command-separated + list of values. The values in the "data" must correspond to the types set in + the "record-types" field of the option definition.
DHCPv6 vendor specific options - Currently there are three option spaces defined: dhcp4 (to - be used in DHCPv4 daemon) and dhcp6; there is also vendor-opts-space, - which is empty by default, but options can be defined in it. Those options - are called vendor-specific information options. The following examples - show how to define an option "foo" with code 1 that consists of IPv6 address, - unsigned 16 bit integer and a string. The "foo" option is conveyed in a - vendor specific information option. This option comprises a single - uint32 value that is set to "12345". The sub-option "foo" follows - the data field holding this value. + + Currently there are three option spaces defined: dhcp4 (to be used + in DHCPv4 daemon) and dhcp6 (for the DHCPv6 daemon); there is also + vendor-opts-space, which is empty by default, but options can be + defined in it. Those options are called vendor-specific information + options. The following examples show how to define an option "foo" + with code 1 that consists of an IPv6 address, an unsigned 16 bit integer + and a string. The "foo" option is conveyed in a vendor specific + information option. This option comprises a single uint32 value + that is set to "12345". The sub-option "foo" follows the data + field holding this value. > config add Dhcp6/option-def > config set Dhcp6/option-def[0]/name "foo" @@ -4641,10 +4646,12 @@ Dhcp6/subnet6/ list convey sub-options that use separate numbering scheme, for example sub-options with codes 1 and 2. Those option codes conflict with standard DHCPv6 options, so a separate option - space must be defined. Let's assume that we want to have a - DHCPv6 option with code 102 that conveys two sub-options with - codes 1 and 2. This could be achieved with the following examples. - First we need to define those new sub-options: + space must be defined. + + + Assume that we want to have a DHCPv6 option called "container" + with code 102 that conveys two sub-options with codes 1 and 2. + First we need to define the new sub-options: > config add Dhcp6/option-def > config set Dhcp6/option-def[0]/name "subopt1" @@ -4666,6 +4673,10 @@ Dhcp6/subnet6/ list > config set Dhcp6/option-def[1]/encapsulate "" > config commit + Note that we have defined the options to belong to a new option space + (in this case, "isc"). + + The next step is to define a regular DHCPv6 option and specify that it should include options from isc option space: @@ -4679,8 +4690,11 @@ should include options from isc option space: > config set Dhcp6/option-def[2]/encapsulate "isc" > config commit - -Finally, we should specify values for those new options: + The name of the option space in which the sub-options are defined + is set in the "encapsulates" field. + + + Finally, we can set values for the new options: > config add Dhcp6/option-data > config set Dhcp6/option-data[0]/name "subopt1" @@ -4714,9 +4728,9 @@ Finally, we should specify values for those new options:
Subnet Selection - The DHCPv6 server may receive requests from local (connected to the same - subnet as the server) and remote (connecting via relays) - clients. + The DHCPv6 server may receive requests from local (connected + to the same subnet as the server) and remote (connecting via + relays) clients. Currently relayed DHCPv6 traffic is not supported. The server will @@ -4754,7 +4768,7 @@ Finally, we should specify values for those new options: The DHCPv6 protocol uses a "server identifier" (also known as a DUID) for clients to be able to discriminate between several servers present on the same link. There are several types of - DUIDs defined, but RFC 3315 instructs servers to use DUID-LLT if + DUIDs defined, but RFC 3315 instructs servers to use DUID-LLT if possible. This format consists of a link-layer (MAC) address and a timestamp. When started for the first time, the DHCPv6 server will automatically generate such a DUID and store the chosen value to @@ -4777,7 +4791,7 @@ Finally, we should specify values for those new options:
- Supported DHCPv6 Standards + Supported Standards The following standards and draft standards are currently supported: From 6dc113cc0e20a4781ad0f991871966d244371440 Mon Sep 17 00:00:00 2001 From: Stephen Morris Date: Tue, 5 Feb 2013 12:46:20 +0000 Subject: [PATCH 10/13] [2657] Final minor changes as part of the review --- doc/guide/bind10-guide.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/guide/bind10-guide.xml b/doc/guide/bind10-guide.xml index 2231bc224f..49076272b0 100644 --- a/doc/guide/bind10-guide.xml +++ b/doc/guide/bind10-guide.xml @@ -3917,7 +3917,7 @@ Dhcp4/subnet4 [] list (default) Currently there are three option spaces defined: dhcp4 (to be used in DHCPv4 daemon) and dhcp6 (for the DHCPv6 daemon); there - is also vendor-opts-space, which is empty by default, but options + is also vendor-encapsulated-options-space, which is empty by default, but options can be defined in it. Those options are called vendor-specific information options. The following examples show how to define an option "foo" with code 1 that consists of an IPv4 address, an @@ -3982,10 +3982,10 @@ Dhcp4/subnet4 [] list (default) sub-option codes will have a separate numbering scheme and may overlap with codes of standard options. - Note that it is not required to create new option space when - defining sub-options for a standard option because it is by - default created if the standard option is meant to convey - any sub-options (see ). + Note that creation of a new new option space when defining + sub-options for a standard option is not required, because it is + created by default if the standard option is meant to convey any + sub-options (see ). Assume that we want to have a DHCPv4 option called "container" with From 8b2f7c325534431cb4f6cca82c5d314583e03248 Mon Sep 17 00:00:00 2001 From: Marcin Siodelski Date: Tue, 5 Feb 2013 17:59:14 +0100 Subject: [PATCH 11/13] [2657] Changes to the DHCP configuration example as a result of the review. --- doc/guide/bind10-guide.xml | 56 ++++++++++++++++++++++++++++++-------- 1 file changed, 45 insertions(+), 11 deletions(-) diff --git a/doc/guide/bind10-guide.xml b/doc/guide/bind10-guide.xml index 49076272b0..cf4193d52b 100644 --- a/doc/guide/bind10-guide.xml +++ b/doc/guide/bind10-guide.xml @@ -3982,7 +3982,7 @@ Dhcp4/subnet4 [] list (default) sub-option codes will have a separate numbering scheme and may overlap with codes of standard options. - Note that creation of a new new option space when defining + Note that creation of a new option space when defining sub-options for a standard option is not required, because it is created by default if the standard option is meant to convey any sub-options (see ). @@ -4023,14 +4023,16 @@ Dhcp4/subnet4 [] list (default) > set Dhcp4/option-def[2]/name "container" > set Dhcp4/option-def[2]/code 222 > set Dhcp4/option-def[2]/space "dhcp4" -> set Dhcp4/option-def[2]/type "uint16" +> set Dhcp4/option-def[2]/type "empty" > set Dhcp4/option-def[2]/array false > set Dhcp4/option-def[2]/record-types "" > set Dhcp4/option-def[2]/encapsulate "isc" > commit The name of the option space in which the sub-options are defined - is set in the "encapsulate" field. + is set in the "encapsulate" field. The "type" field is set to "empty" + which imposes that this option does not carry any data other than + sub-options. Finally, we can set values for the new options: @@ -4056,10 +4058,26 @@ Dhcp4/subnet4 [] list (default) > config set Dhcp4/option-data[2]/space "dhcp4" > config set Dhcp4/option-data[2]/code 222 > config set Dhcp4/option-data[2]/csv-format true -> config set Dhcp4/option-data[2]/data "123" +> config set Dhcp4/option-data[2]/data "" > config commit - + Even tough the "container" option does not carry any data except + sub-options, the "data" field must be explictly set to an empty value. + It is required because the default configuration values are not + propagated to the configuration parsers in the current version of Kea. + If the "data" is not set the configuration parser will assume that this + parameter is not specified and the error will be reported. + + Note that it is possible to create an option which carries some data + apart from the sub-options defined in the encapsulated option space. + If the "container" option from the previous example was to carry an uint16 + value then the "type" value would have to be set to "uint16" instead of + "empty" in the option definition. Such option would have the following + data structure: DHCP header, uint16 value, sub-options. The value specified + with the "data" parameter will be assigned to the uint16 field in the + "container" option. This value must be a valid integer enclosed in quotes, + e.g. "123". +
@@ -4718,14 +4736,16 @@ should include options from the isc option space: > config set Dhcp6/option-def[2]/name "container" > config set Dhcp6/option-def[2]/code 102 > config set Dhcp6/option-def[2]/space "dhcp6" -> config set Dhcp6/option-def[2]/type "uint16" +> config set Dhcp6/option-def[2]/type "empty" > config set Dhcp6/option-def[2]/array false > config set Dhcp6/option-def[2]/record-types "" > config set Dhcp6/option-def[2]/encapsulate "isc" > config commit The name of the option space in which the sub-options are defined - is set in the "encapsulate" field. + is set in the "encapsulate" field. The "type" field is set to "empty" + which imposes that this option does not carry any data other than + sub-options. Finally, we can set values for the new options: @@ -4751,13 +4771,27 @@ should include options from the isc option space: > config set Dhcp6/option-data[2]/space "dhcp6" > config set Dhcp6/option-data[2]/code 102 > config set Dhcp6/option-data[2]/csv-format true -> config set Dhcp6/option-data[2]/data "123" +> config set Dhcp6/option-data[2]/data "" > config commit - + Even tough the "container" option does not carry any data except + sub-options, the "data" field must be explictly set to an empty value. + It is required because the default configuration values are not + propagated to the configuration parsers in the current version of Kea. + If the "data" is not set the configuration parser will assume that this + parameter is not specified and the error will be reported. + + Note that it is possible to create an option which carries some data + apart from the sub-options defined in the encapsulated option space. + If the "container" option from the previous example was to carry an uint16 + value then the "type" value would have to be set to "uint16" instead of + "empty" in the option definition. Such option would have the following + data structure: DHCP header, uint16 value, sub-options. The value specified + with the "data" parameter will be assigned to the uint16 field in the + "container" option. This value must be a valid integer enclosed in quotes, + e.g. "123". +
- -
Subnet Selection From d85b2e22c5c45050d3191ee73c508bbd3cd1251f Mon Sep 17 00:00:00 2001 From: Marcin Siodelski Date: Wed, 6 Feb 2013 10:20:33 +0100 Subject: [PATCH 12/13] [2657] Minor: corrected some typos. --- doc/guide/bind10-guide.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/guide/bind10-guide.xml b/doc/guide/bind10-guide.xml index cf4193d52b..3c619157a4 100644 --- a/doc/guide/bind10-guide.xml +++ b/doc/guide/bind10-guide.xml @@ -4061,7 +4061,7 @@ Dhcp4/subnet4 [] list (default) > config set Dhcp4/option-data[2]/data "" > config commit - Even tough the "container" option does not carry any data except + Even though the "container" option does not carry any data except sub-options, the "data" field must be explictly set to an empty value. It is required because the default configuration values are not propagated to the configuration parsers in the current version of Kea. @@ -4774,7 +4774,7 @@ should include options from the isc option space: > config set Dhcp6/option-data[2]/data "" > config commit - Even tough the "container" option does not carry any data except + Even though the "container" option does not carry any data except sub-options, the "data" field must be explictly set to an empty value. It is required because the default configuration values are not propagated to the configuration parsers in the current version of Kea. From b4de3233542a0c98c04c0cf730bd8222efe897b7 Mon Sep 17 00:00:00 2001 From: Stephen Morris Date: Fri, 8 Feb 2013 13:07:08 +0000 Subject: [PATCH 13/13] [2657] Minor modifications to changed text Also explicitly added a note in the "Installation" section referring to the BIND 10 DHCP database installation and configuration section. --- doc/guide/bind10-guide.xml | 70 +++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 38 deletions(-) diff --git a/doc/guide/bind10-guide.xml b/doc/guide/bind10-guide.xml index 3c619157a4..0847838877 100644 --- a/doc/guide/bind10-guide.xml +++ b/doc/guide/bind10-guide.xml @@ -740,17 +740,13 @@ as a dependency earlier --> - - --with-dhcp-mysql - - Enable MySQL support for BIND 10 DHCP. For notes on configuring - and building DHCP with MySQL see . - - - - - + + + For additional instructions concerning the building and installation of + BIND 10 DHCP, see . + + @@ -3363,7 +3359,7 @@ then change those defaults with config set Resolver/forward_addresses[0]/address Build and install BIND 10 as described in , with the following modification: to enable the MySQL database code, at the "configure" step (see ), specify the location of the - MySQL configuration program "mysql_config" with the "--with-mysql-config" switch, + MySQL configuration program "mysql_config" with the "--with-dhcp-mysql" switch, i.e. ./configure [other-options] --with-dhcp-mysql ...if MySQL was installed in the default location, or: @@ -4031,7 +4027,7 @@ Dhcp4/subnet4 [] list (default) The name of the option space in which the sub-options are defined is set in the "encapsulate" field. The "type" field is set to "empty" - which imposes that this option does not carry any data other than + to indicate that this option does not carry any data other than sub-options. @@ -4063,20 +4059,19 @@ Dhcp4/subnet4 [] list (default) Even though the "container" option does not carry any data except sub-options, the "data" field must be explictly set to an empty value. - It is required because the default configuration values are not - propagated to the configuration parsers in the current version of Kea. - If the "data" is not set the configuration parser will assume that this - parameter is not specified and the error will be reported. + This is required because in the current version of BIND 10 DHCP, the + default configuration values are not propagated to the configuration parsers: + if the "data" is not set the parser will assume that this + parameter is not specified and an error will be reported. Note that it is possible to create an option which carries some data - apart from the sub-options defined in the encapsulated option space. - If the "container" option from the previous example was to carry an uint16 - value then the "type" value would have to be set to "uint16" instead of - "empty" in the option definition. Such option would have the following - data structure: DHCP header, uint16 value, sub-options. The value specified - with the "data" parameter will be assigned to the uint16 field in the - "container" option. This value must be a valid integer enclosed in quotes, - e.g. "123". + in addition to the sub-options defined in the encapsulated option space. For example, + if the "container" option from the previous example was required to carry an uint16 + value as well as the sub-options, the "type" value would have to be set to "uint16" in + the option definition. (Such an option would then have the following + data structure: DHCP header, uint16 value, sub-options.) The value specified + with the "data" parameter - which should be a valid integer enclosed in quotes, + e.g. "123" - would then be assigned to the uint16 field in the "container" option.
@@ -4475,8 +4470,8 @@ Dhcp6/subnet6/ list - In future version of Kea versions, it will not be necessary to specify - option code, space and csv-format fields as those fields will be set + In future versions of BIND 10 DHCP, it will not be necessary to specify + option code, space and csv-format fields, as those fields will be set automatically. @@ -4776,20 +4771,19 @@ should include options from the isc option space: Even though the "container" option does not carry any data except sub-options, the "data" field must be explictly set to an empty value. - It is required because the default configuration values are not - propagated to the configuration parsers in the current version of Kea. - If the "data" is not set the configuration parser will assume that this - parameter is not specified and the error will be reported. + This is required because in the current version of BIND 10 DHCP, the + default configuration values are not propagated to the configuration parsers: + if the "data" is not set the parser will assume that this + parameter is not specified and an error will be reported. Note that it is possible to create an option which carries some data - apart from the sub-options defined in the encapsulated option space. - If the "container" option from the previous example was to carry an uint16 - value then the "type" value would have to be set to "uint16" instead of - "empty" in the option definition. Such option would have the following - data structure: DHCP header, uint16 value, sub-options. The value specified - with the "data" parameter will be assigned to the uint16 field in the - "container" option. This value must be a valid integer enclosed in quotes, - e.g. "123". + in addition to the sub-options defined in the encapsulated option space. For example, + if the "container" option from the previous example was required to carry an uint16 + value as well as the sub-options, the "type" value would have to be set to "uint16" in + the option definition. (Such an option would then have the following + data structure: DHCP header, uint16 value, sub-options.) The value specified + with the "data" parameter - which should be a valid integer enclosed in quotes, + e.g. "123" - would then be assigned to the uint16 field in the "container" option.
List of standard DHCPv6 options
NameCodeTypeArray?
nis-servers27ipv6-addresstrue
nisp-servers28ipv6-addresstrue
nis-domain-name29fqdntrue