From 1a8843345eb14f9e995947007dadaa8a38b6d3b3 Mon Sep 17 00:00:00 2001
From: Ainar Garipov <a.garipov@adguard.com>
Date: Fri, 8 Oct 2021 19:08:41 +0300
Subject: [PATCH] Pull request: DHCP: imp markup, opt docs

Merge in DNS/adguard-home-wiki from imp-opt to master

Squashed commit of the following:

commit 9ddad2fb3a1dd72dc0306eb3ef00fed41e813b98
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date:   Fri Oct 8 19:07:27 2021 +0300

    DHCP: imp wording

commit 1baf136849127585fb7d87ef21ff72224aadd570
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date:   Fri Oct 8 18:51:08 2021 +0300

    DHCP: imp markup, opt docs
---
 Configuration.md    |   2 +-
 DHCP.md             | 140 +++++++++++++++++++++++++-------------------
 Hosts-Blocklists.md |   2 +-
 3 files changed, 82 insertions(+), 62 deletions(-)

diff --git a/Configuration.md b/Configuration.md
index b3359b2..5234603 100644
--- a/Configuration.md
+++ b/Configuration.md
@@ -82,7 +82,7 @@ Examples:
 
 * `[/example.local/]1.1.1.1`: DNS upstream for specific domains, see below.
 
-###  <a hfer="#upstreams-for-domains" id="upstreams-for-domains" name="upstreams-for-domains">Specifying Upstreams For Domains</a>
+###  <a href="#upstreams-for-domains" id="upstreams-for-domains" name="upstreams-for-domains">Specifying Upstreams For Domains</a>
 
 You can specify upstreams that will be used for specific domains using the
 dnsmasq-like syntax (see the documentation for the option `--server`
diff --git a/DHCP.md b/DHCP.md
index 2b3c5d1..8bb7c40 100644
--- a/DHCP.md
+++ b/DHCP.md
@@ -1,4 +1,4 @@
- # AdGuard Home - DHCP Server
+ #  AdGuard Home - DHCP Server
 
  *  [Prerequisites](#prereq)
  *  [Default Options](#default)
@@ -7,96 +7,112 @@
      *  [DHCPv6 Options](#config-6)
  *  [Automatic Hosts](#autohosts)
 
-*AdGuard Home* can be used as a DHCP server.  This page describes how to do that.
+AdGuard Home can be used as a DHCP server.  This page describes how to do that.
+
+
 
 ##  <a id="prereq" href="#prereq">Prerequisites</a>
 
-1.  Make sure that you run an OS on which *AdGuard Home* supports DHCP.  We
-    currently don't support DHCP on *Windows*.
+1.  Make sure that you run an OS on which AdGuard Home supports DHCP.  We
+    currently don't support DHCP on Windows.
+
 1.  Make sure that your machine has a static IP address.
 
+
+
 ##  <a id="default" href="#default">Default Options</a>
 
-By default, *AdGuard Home* will set itself as the DNS server for the DHCP
-clients.  The default lease time is 24 hours.
+By default, AdGuard Home will set itself as the DNS server for the DHCP clients.
+The default lease time is 24 hours.
+
+
 
 ##  <a id="config" href="#config">Configuration</a>
 
 See the DHCP section in the [configuration] article for the overview of the DHCP
 configuration options.  There are several configuration parameters for DHCP that
-can't be set via the *AdGuard Home* administrator dashboard.  Those are
-described below.
+can't be set via the AdGuard Home administrator dashboard.  Those are described
+below.
 
- ###  <a id="config-4" href="#config-4">The `dhcp.dhcpv4.options` Array Field</a>
 
-The `options` field accepts two types of values: `hex` and `ip`.  Both start
-with the `CODE`, which MUST be an integer in the [1, 255] range.
 
-See [RFC 2132, sec. 3](https://tools.ietf.org/html/rfc2132#section-3).
+   ###  <a id="config-4" href="#config-4">The `dhcp.dhcpv4.options` Array Field</a>
 
-The `hex` format is:
+The `options` field accepts four types of values: `hex`, `ip`, `ips`, and
+`text`.  They all start with the `CODE`, which MUST be an integer in the [1,
+255] range.  See also [RFC 2132, sec. 3][rfc-2132].
 
-```
-CODE hex HEX_VALUE
-```
+In accordance with [RFC 2131, sec. 4.3.1][rfc-2131], these options override the
+default options set by Adguard Home.  Which means that if you want to set DNS
+server addresses using option `6`, you should also add Adguard Home's own
+addresses there.  Otherwise, AdGuard Home's filtering won't work for the DHCP
+clients who receive these DNS server addresses.
 
-For example, to set option `6`, the DNS server, to two IP addresses, `1.2.3.4`
-and `1.2.3.5`, use:
+ *  The `hex` format is:
 
-```yaml
-# …
-'dhcp':
-  # …
-  'dhcpv4':
+    ```
+    CODE hex HEX_VALUE
+    ```
+
+    For example, to set option `6`, the DNS server, to two IP addresses,
+    `1.2.3.4` and `1.2.3.5`, use:
+
+    ```yaml
     # …
-    'options':
-    - '6 hex 0102030401020305'
-```
+    'dhcp':
+      # …
+      'dhcpv4':
+        # …
+        'options':
+        - '6 hex 0102030401020305'
+    ```
 
-The `ip` format is:
+ *  The `ip` format is:
 
-```
-CODE ip IPV4_VALUE
-```
+    ```
+    CODE ip IPV4_VALUE
+    ```
 
-For example, to set option `6`, the DNS server, to one IP address, `1.2.3.4`,
-use:
+    For example, to set option `6`, the DNS server, to one IP address,
+    `1.2.3.4`, use:
 
-```yaml
-# …
-'dhcp':
-  # …
-  'dhcpv4':
+    ```yaml
     # …
-    'options':
-    - '6 ip 1.2.3.4'
-```
+    'dhcp':
+      # …
+      'dhcpv4':
+        # …
+        'options':
+        - '6 ip 1.2.3.4'
+    ```
 
-The `ips` format (since **v0.106.0**) is the same, but with comma-separated
-IP-addresses:
+ *  The `ips` format (since **v0.106.0**) is the same, but with comma-separated
+    IP-addresses:
 
-```yaml
-# …
-'dhcp':
-  # …
-  'dhcpv4':
+    ```yaml
     # …
-    'options':
-    - '6 ips 1.2.3.4,5.6.7.8'
-```
+    'dhcp':
+      # …
+      'dhcpv4':
+        # …
+        'options':
+        - '6 ips 1.2.3.4,5.6.7.8'
+    ```
 
-The `text` format (since **v0.106.0**) allows you to put arbitrary UTF-8 text as
-the option data.  For example:
+ *  The `text` format (since **v0.106.0**) allows you to put arbitrary UTF-8
+    text as the option data.  For example:
 
-```yaml
-# …
-'dhcp':
-  # …
-  'dhcpv4':
+    ```yaml
     # …
-    'options':
-    - '252 text http://example.com'
-```
+    'dhcp':
+      # …
+      'dhcpv4':
+        # …
+        'options':
+        - '252 text http://example.com'
+    ```
+
+
 
  ###  <a id="config-6" href="#config-6">DHCPv6 Options</a>
 
@@ -107,6 +123,10 @@ The option `dhcp.dhcpv6.ra_allow_slaac`, if `true`, sends RA packets allowing
 the clients to choose between SLAAC and DHCPv6.
 
 [configuration]: https://github.com/AdguardTeam/AdGuardHome/wiki/Configuration
+[rfc-2131]:      https://tools.ietf.org/html/rfc2131#page-29
+[rfc-2132]:      https://tools.ietf.org/html/rfc2132#section-3
+
+
 
 ##  <a id="autohosts" href="#autohosts">Automatic Hosts</a>
 
diff --git a/Hosts-Blocklists.md b/Hosts-Blocklists.md
index 9ca5914..1718480 100644
--- a/Hosts-Blocklists.md
+++ b/Hosts-Blocklists.md
@@ -75,7 +75,7 @@ work. -->
     and alike) for a host is basically the same as blocking that host.
 
     ```none
-    # Returns the IP address 1.2.3.4 for exmaple.org.
+    # Returns the IP address 1.2.3.4 for example.org.
     1.2.3.4 example.org
     # Blocks example.com by responding with 0.0.0.0.
     0.0.0.0 example.com