2.3 KiB
name | parameters | parameter_types | ts_return | |||
---|---|---|---|---|---|---|
REV |
|
|
string |
REV
returns the reverse lookup domain for an IP network. For
example REV("1.2.3.0/24")
returns 3.2.1.in-addr.arpa.
and
REV("2001:db8:302::/48")
returns 2.0.3.0.8.b.d.0.1.0.0.2.ip6.arpa.
.
REV()
is commonly used with the D()
functions to create reverse DNS lookup zones.
These two are equivalent:
{% code title="dnsconfig.js" %}
D("3.2.1.in-addr.arpa", ...
{% endcode %}
{% code title="dnsconfig.js" %}
D(REV("1.2.3.0/24", ...
{% endcode %}
The latter is easier to type and less error-prone.
If the address does not include a "/" then REV()
assumes /32 for IPv4 addresses
and /128 for IPv6 addresses.
RFC compliance
REV()
implements both RFC 2317 and the newer RFC 4183. The REVCOMPAT()
function selects which mode is used. If REVCOMPAT()
is not called, a default
is selected for you. The default will change to RFC 4183 in DNSControl v5.0.
See REVCOMPAT()
for details.
Host bits
v4.x:
The host bits (the ones outside the netmask) must be zeros. They are not zeroed
out automatically. Thus, REV("1.2.3.4/24")
is an error.
v5.0 and later:
The host bits (the ones outside the netmask) are ignored. Thus
REV("1.2.3.4/24")
and REV("1.2.3.0/24")
are equivalent.
Examples
Here's an example reverse lookup domain:
{% code title="dnsconfig.js" %}
D(REV("1.2.3.0/24"), REGISTRAR, DnsProvider(BIND),
PTR("1", "foo.example.com."),
PTR("2", "bar.example.com."),
PTR("3", "baz.example.com."),
// If the first parameter is an IP address, DNSControl automatically calls REV() for you.
PTR("1.2.3.10", "ten.example.com."),
);
D(REV("2001:db8:302::/48"), REGISTRAR, DnsProvider(BIND),
PTR("1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0", "foo.example.com."), // 2001:db8:302::1
// If the first parameter is an IP address, DNSControl automatically calls REV() for you.
PTR("2001:db8:302::2", "two.example.com."), // 2.0.0...
PTR("2001:db8:302::3", "three.example.com."), // 3.0.0...
);
{% endcode %}
Automatic forward and reverse record generation
DNSControl does not automatically generate forward and reverse lookups. However
it is possible to write a macro that does this. See
PTR()
for an example.