Index: /trunk/doc/manual/en_US/man_VBoxManage-dhcpserver.xml
===================================================================
--- /trunk/doc/manual/en_US/man_VBoxManage-dhcpserver.xml	(revision 79775)
+++ /trunk/doc/manual/en_US/man_VBoxManage-dhcpserver.xml	(revision 79776)
@@ -50,5 +50,30 @@
       <arg choice="opt" rep="repeat">
         <arg choice="opt">--global</arg>
-        <arg choice="opt" rep="repeat">--add-opt=<replaceable>dhcp-opt-no value</replaceable></arg>
+        <arg choice="opt" rep="repeat">--set-opt=<replaceable>dhcp-opt-no value</replaceable></arg>
+        <arg choice="opt" rep="repeat">--set-opt-hex=<replaceable>dhcp-opt-no hexstring</replaceable></arg>
+        <arg choice="opt">--min-lease-time=<replaceable>seconds</replaceable></arg>
+        <arg choice="opt">--default-lease-time=<replaceable>seconds</replaceable></arg>
+        <arg choice="opt">--max-lease-time=<replaceable>seconds</replaceable></arg>
+      </arg>
+      <sbr/>
+      <arg choice="opt" rep="repeat">
+        <arg choice="req">--group=<replaceable>name</replaceable></arg>
+        <arg choice="opt" rep="repeat">--set-opt=<replaceable>dhcp-opt-no value</replaceable></arg>
+        <arg choice="opt" rep="repeat">--set-opt-hex=<replaceable>dhcp-opt-no hexstring</replaceable></arg>
+        <arg choice="opt" rep="repeat">--incl-mac=<replaceable>address</replaceable></arg>
+        <arg choice="opt" rep="repeat">--excl-mac=<replaceable>address</replaceable></arg>
+        <arg choice="opt" rep="repeat">--incl-mac-wild=<replaceable>pattern</replaceable></arg>
+        <arg choice="opt" rep="repeat">--excl-mac-wild=<replaceable>pattern</replaceable></arg>
+        <arg choice="opt" rep="repeat">--incl-vendor=<replaceable>string</replaceable></arg>
+        <arg choice="opt" rep="repeat">--excl-vendor=<replaceable>string</replaceable></arg>
+        <arg choice="opt" rep="repeat">--incl-vendor-wild=<replaceable>pattern</replaceable></arg>
+        <arg choice="opt" rep="repeat">--excl-vendor-wild=<replaceable>pattern</replaceable></arg>
+        <arg choice="opt" rep="repeat">--incl-user=<replaceable>string</replaceable></arg>
+        <arg choice="opt" rep="repeat">--excl-user=<replaceable>string</replaceable></arg>
+        <arg choice="opt" rep="repeat">--incl-user-wild=<replaceable>pattern</replaceable></arg>
+        <arg choice="opt" rep="repeat">--excl-user-wild=<replaceable>pattern</replaceable></arg>
+        <arg choice="opt">--min-lease-time=<replaceable>seconds</replaceable></arg>
+        <arg choice="opt">--default-lease-time=<replaceable>seconds</replaceable></arg>
+        <arg choice="opt">--max-lease-time=<replaceable>seconds</replaceable></arg>
       </arg>
       <sbr/>
@@ -56,5 +81,20 @@
         <arg choice="req">--vm=<replaceable>name|uuid</replaceable></arg>
         <arg choice="opt">--nic=<replaceable>1-N</replaceable></arg>
-        <arg choice="opt" rep="repeat">--add-opt=<replaceable>dhcp-opt-no value</replaceable></arg>
+        <arg choice="opt" rep="repeat">--set-opt=<replaceable>dhcp-opt-no value</replaceable></arg>
+        <arg choice="opt" rep="repeat">--set-opt-hex=<replaceable>dhcp-opt-no hexstring</replaceable></arg>
+        <arg choice="opt">--min-lease-time=<replaceable>seconds</replaceable></arg>
+        <arg choice="opt">--default-lease-time=<replaceable>seconds</replaceable></arg>
+        <arg choice="opt">--max-lease-time=<replaceable>seconds</replaceable></arg>
+        <arg choice="opt">--fixed-address=<replaceable>address</replaceable></arg>
+      </arg>
+      <sbr/>
+      <arg choice="opt" rep="repeat">
+        <arg choice="req">--mac-address=<replaceable>address</replaceable></arg>
+        <arg choice="opt" rep="repeat">--set-opt=<replaceable>dhcp-opt-no value</replaceable></arg>
+        <arg choice="opt" rep="repeat">--set-opt-hex=<replaceable>dhcp-opt-no hexstring</replaceable></arg>
+        <arg choice="opt">--min-lease-time=<replaceable>seconds</replaceable></arg>
+        <arg choice="opt">--default-lease-time=<replaceable>seconds</replaceable></arg>
+        <arg choice="opt">--max-lease-time=<replaceable>seconds</replaceable></arg>
+        <arg choice="opt">--fixed-address=<replaceable>address</replaceable></arg>
       </arg>
     </cmdsynopsis>
@@ -75,7 +115,41 @@
       <sbr/>
       <arg choice="opt" rep="repeat">
+        <arg choice="req">--group=<replaceable>name</replaceable></arg>
+        <arg choice="opt" rep="repeat">--set-opt=<replaceable>dhcp-opt-no value</replaceable></arg>
+        <arg choice="opt" rep="repeat">--set-opt-hex=<replaceable>dhcp-opt-no hexstring</replaceable></arg>
+        <arg choice="opt" rep="repeat">--del-mac=<replaceable>address</replaceable></arg>
+        <arg choice="opt" rep="repeat">--incl-mac=<replaceable>address</replaceable></arg>
+        <arg choice="opt" rep="repeat">--excl-mac=<replaceable>address</replaceable></arg>
+        <arg choice="opt" rep="repeat">--del-mac-wild=<replaceable>pattern</replaceable></arg>
+        <arg choice="opt" rep="repeat">--incl-mac-wild=<replaceable>pattern</replaceable></arg>
+        <arg choice="opt" rep="repeat">--excl-mac-wild=<replaceable>pattern</replaceable></arg>
+        <arg choice="opt" rep="repeat">--del-vendor=<replaceable>string</replaceable></arg>
+        <arg choice="opt" rep="repeat">--incl-vendor=<replaceable>string</replaceable></arg>
+        <arg choice="opt" rep="repeat">--excl-vendor=<replaceable>string</replaceable></arg>
+        <arg choice="opt" rep="repeat">--del-vendor-wild=<replaceable>pattern</replaceable></arg>
+        <arg choice="opt" rep="repeat">--incl-vendor-wild=<replaceable>pattern</replaceable></arg>
+        <arg choice="opt" rep="repeat">--excl-vendor-wild=<replaceable>pattern</replaceable></arg>
+        <arg choice="opt" rep="repeat">--del-user=<replaceable>string</replaceable></arg>
+        <arg choice="opt" rep="repeat">--incl-user=<replaceable>string</replaceable></arg>
+        <arg choice="opt" rep="repeat">--excl-user=<replaceable>string</replaceable></arg>
+        <arg choice="opt" rep="repeat">--del-user-wild=<replaceable>pattern</replaceable></arg>
+        <arg choice="opt" rep="repeat">--incl-user-wild=<replaceable>pattern</replaceable></arg>
+        <arg choice="opt" rep="repeat">--excl-user-wild=<replaceable>pattern</replaceable></arg>
+        <arg choice="opt">--zap-conditions</arg>
+        <arg choice="opt">--min-lease-time=<replaceable>seconds</replaceable></arg>
+        <arg choice="opt">--default-lease-time=<replaceable>seconds</replaceable></arg>
+        <arg choice="opt">--max-lease-time=<replaceable>seconds</replaceable></arg>
+        <arg choice="opt">--remove-config</arg>
+      </arg>
+      <sbr/>
+      <arg choice="opt" rep="repeat">
         <arg choice="opt">--global</arg>
-        <arg choice="plain">--del-opt=<replaceable>dhcp-opt-no</replaceable></arg>
-        <arg choice="plain">--add-opt=<replaceable>dhcp-opt-no value</replaceable></arg>
+        <arg choice="opt" rep="repeat">--del-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+        <arg choice="opt" rep="repeat">--set-opt=<replaceable>dhcp-opt-no value</replaceable></arg>
+        <arg choice="opt" rep="repeat">--set-opt-hex=<replaceable>dhcp-opt-no hexstring</replaceable></arg>
+        <arg choice="opt">--min-lease-time=<replaceable>seconds</replaceable></arg>
+        <arg choice="opt">--default-lease-time=<replaceable>seconds</replaceable></arg>
+        <arg choice="opt">--max-lease-time=<replaceable>seconds</replaceable></arg>
+        <arg choice="opt">--remove-config</arg>
       </arg>
       <sbr/>
@@ -84,5 +158,23 @@
         <arg choice="opt">--nic=<replaceable>1-N</replaceable></arg>
         <arg choice="opt" rep="repeat">--del-opt=<replaceable>dhcp-opt-no</replaceable></arg>
-        <arg choice="opt" rep="repeat">--add-opt=<replaceable>dhcp-opt-no value</replaceable></arg>
+        <arg choice="opt" rep="repeat">--set-opt=<replaceable>dhcp-opt-no value</replaceable></arg>
+        <arg choice="opt" rep="repeat">--set-opt-hex=<replaceable>dhcp-opt-no hexstring</replaceable></arg>
+        <arg choice="opt">--min-lease-time=<replaceable>seconds</replaceable></arg>
+        <arg choice="opt">--default-lease-time=<replaceable>seconds</replaceable></arg>
+        <arg choice="opt">--max-lease-time=<replaceable>seconds</replaceable></arg>
+        <arg choice="opt">--fixed-address=<replaceable>address</replaceable></arg>
+        <arg choice="opt">--remove-config</arg>
+      </arg>
+      <sbr/>
+      <arg choice="opt" rep="repeat">
+        <arg choice="req">--mac-address=<replaceable>address</replaceable></arg>
+        <arg choice="opt" rep="repeat">--del-opt=<replaceable>dhcp-opt-no</replaceable></arg>
+        <arg choice="opt" rep="repeat">--set-opt=<replaceable>dhcp-opt-no value</replaceable></arg>
+        <arg choice="opt" rep="repeat">--set-opt-hex=<replaceable>dhcp-opt-no hexstring</replaceable></arg>
+        <arg choice="opt">--min-lease-time=<replaceable>seconds</replaceable></arg>
+        <arg choice="opt">--default-lease-time=<replaceable>seconds</replaceable></arg>
+        <arg choice="opt">--max-lease-time=<replaceable>seconds</replaceable></arg>
+        <arg choice="opt">--fixed-address=<replaceable>address</replaceable></arg>
+        <arg choice="opt">--remove-config</arg>
       </arg>
     </cmdsynopsis>
@@ -157,4 +249,7 @@
         Adds a new DHCP server to a network or host-only interface.
       </para>
+      <para>
+        Options configuring the DHCP server core:
+      </para>
       <variablelist>
         <varlistentry>
@@ -178,26 +273,132 @@
             the server will be created in disabled state and no IP addresses handed out.</para></listitem>
         </varlistentry>
+      </variablelist>
+      <para>
+        Options selecting the scope:
+      </para>
+      <variablelist>
         <varlistentry>
           <term><option>--global</option></term>
-          <listitem><para>Set the option scope to global.  Any subsequent <option>--add-opt</option>
-            options will be apply to all the DHCP clients.</para></listitem>
+          <listitem><para>Set the configuration scope to global.  Any subsequent
+            <option>--set-opt</option> options will be apply to all the DHCP clients.</para></listitem>
         </varlistentry>
         <varlistentry>
           <term><option>--vm=<replaceable>vmname|uuid</replaceable></option></term>
-          <listitem><para>Set the option scope to the first NIC of the specified VM.  Any
-            subsequent <option>-add-opt</option> options will apply just to that interface,
+          <listitem><para>Set the configuration scope to the first NIC of the specified VM.  Any
+            subsequent <option>--set-opt</option> options will apply just to that interface,
             nothing else.</para></listitem>
         </varlistentry>
         <varlistentry>
           <term><option>--nic=<replaceable>1-N</replaceable></option></term>
-          <listitem><para>Set the option scope to a NIC other than first of the VM specified
-            the in <option>--vm</option>.</para></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><option>--add-opt=<replaceable>dhcp-opt-no value</replaceable></option></term>
-          <listitem><para>Adds the specified DHCP option number (0-255) and value.  The scope of
-            the option is decided by the <option>--vm</option> and <option>global</option> options.
-            The value format is option specific.
-          </para></listitem>
+          <listitem><para>Set the configuration scope to a NIC other than first of
+            the VM specified the in <option>--vm</option>.
+          </para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--mac-address=<replaceable>address</replaceable></option></term>
+          <listitem><para>Set the configuration scope to the specified MAC address.</para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--group=<replaceable>name</replaceable></option></term>
+          <listitem><para>Set the configuration scope to the specified group.</para></listitem>
+        </varlistentry>
+      </variablelist>
+      <para>
+        Options configuring the currently selected scope:
+      </para>
+      <variablelist>
+        <varlistentry>
+          <term><option>--set-opt=<replaceable>dhcp-opt-no value</replaceable></option></term>
+          <listitem><para>Adds the specified DHCP option number (0-255) and value.  The
+            value format is option specific (typically human readable) and will be
+            validated by the API and the DHCP server.
+          </para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--set-opt-hex=<replaceable>dhcp-opt-no hexstring</replaceable></option></term>
+          <listitem><para>Adds the specified DHCP option number (0-255) and value.  The option value
+            is specified as a raw series of hex bytes, optionally separated by colons.  No validation
+            is performed on these by the API or the DHCP server, they will be pass as specified to the
+            client.
+          </para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--min-lease-time=<replaceable>seconds</replaceable></option></term>
+          <listitem><para>Sets the minimum lease time for the current scope in seconds.
+            Zero means taking the value from a higher option level or use default.
+          </para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--default-lease-time=<replaceable>seconds</replaceable></option></term>
+          <listitem><para>Sets the default lease time for the current scope in seconds.
+            Zero means taking the value from a higher option level or use default.
+          </para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--max-lease-time=<replaceable>seconds</replaceable></option></term>
+          <listitem><para>Sets the maximum lease time for the current scope in seconds.
+            Zero means taking the value from a higher option level or use default.
+          </para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--fixed-address=<replaceable>address</replaceable></option></term>
+          <listitem><para>Fixed address assignment for a <option>--vm</option> or
+            <option>--mac-address</option> configuration scope.  Any empty
+            <replaceable>address</replaceable> turns it back to dynamic address assignment.
+          </para></listitem>
+        </varlistentry>
+      </variablelist>
+
+      <para>
+        Options configuring group membership conditions (excludes overrides includes):
+      </para>
+      <variablelist>
+        <varlistentry>
+          <term><option>--incl-mac=<replaceable>address</replaceable></option></term>
+          <listitem><para>Include the specific MAC address in the group.</para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--excl-mac=<replaceable>address</replaceable></option></term>
+          <listitem><para>Exclude the specific MAC address from the group.</para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--incl-mac-wild=<replaceable>pattern</replaceable></option></term>
+          <listitem><para>Include the specific MAC address pattern in the group.</para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--excl-mac-wild=<replaceable>pattern</replaceable></option></term>
+          <listitem><para>Exclude the specific MAC address pattern from the group.</para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--incl-vendor=<replaceable>string</replaceable></option></term>
+          <listitem><para>Include the specific vendor class ID  in the group.</para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--excl-vendor=<replaceable>string</replaceable></option></term>
+          <listitem><para>Exclude the specific vendor class ID from the group.</para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--incl-vendor-wild=<replaceable>pattern</replaceable></option></term>
+          <listitem><para>Include the specific vendor class ID pattern in the group.</para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--excl-vendor-wild=<replaceable>pattern</replaceable></option></term>
+          <listitem><para>Exclude the specific vendor class ID pattern from the group.</para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--incl-user=<replaceable>string</replaceable></option></term>
+          <listitem><para>Include the specific user class ID  in the group.</para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--excl-user=<replaceable>string</replaceable></option></term>
+          <listitem><para>Exclude the specific user class ID from the group.</para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--incl-user-wild=<replaceable>pattern</replaceable></option></term>
+          <listitem><para>Include the specific user class ID pattern in the group.</para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--excl-user-wild=<replaceable>pattern</replaceable></option></term>
+          <listitem><para>Exclude the specific user class ID pattern from the group.</para></listitem>
         </varlistentry>
       </variablelist>
@@ -209,14 +410,56 @@
       <para>
         This modifies an existing DHCP server configuration.  It takes the same
-        options as the <command>add</command> command with the addition of:
+        options as the <command>add</command> command with the addition of the following
+        on scope configuration:
       </para>
       <variablelist>
         <varlistentry>
           <term><option>--del-opt=<replaceable>dhcp-opt-no</replaceable></option></term>
-          <listitem><para>Counterpart to <option>--add-opt</option> that will cause the specified
+          <listitem><para>Counterpart to <option>--set-opt</option> that will cause the specified
             DHCP option number (0-255) to be deleted from the server settings.  Like with
-            <option>--add-opt</option> the scope of the deletion is governed by the
-            <option>--vm</option> and <option>global</option> options.
-          </para></listitem>
+            <option>--set-opt</option> the scope of the deletion is governed by the
+            <option>--global</option>, <option>--vm</option>, <option>--mac-address</option>
+            and <option>--group</option> options.
+          </para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--remove-config</option></term>
+          <listitem><para>Removes the configuration currently being scoped.  The
+          <option>--global</option> scope is not removable.  The configuration scope will
+           change to <option>--global</option> after this option.
+          </para></listitem>
+        </varlistentry>
+      </variablelist>
+      <para>
+        And the addition of these group membership condition options:
+      </para>
+      <variablelist>
+        <varlistentry>
+          <term><option>--del-mac=<replaceable>address</replaceable></option></term>
+          <listitem><para>Delete the specific MAC address from the group conditions.</para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--del-mac-wild=<replaceable>pattern</replaceable></option></term>
+          <listitem><para>Delete the specific MAC address pattern from the group conditions.</para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--del-vendor=<replaceable>string</replaceable></option></term>
+          <listitem><para>Delete the specific vendor class ID from the group conditions.</para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--del-vendor-wild=<replaceable>pattern</replaceable></option></term>
+          <listitem><para>Delete the specific vendor class ID pattern from the group conditions.</para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--del-user=<replaceable>string</replaceable></option></term>
+          <listitem><para>Delete the specific user class ID pattern from the group conditions.</para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--del-user-wild=<replaceable>pattern</replaceable></option></term>
+          <listitem><para>Delete the specific user class ID pattern from the group conditions.</para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term><option>--zap-conditions</option></term>
+          <listitem><para>Deletes all the group conditions.</para></listitem>
         </varlistentry>
       </variablelist>
