dnscontrol/documentation/language-reference/top-level-functions/REVCOMPAT.md
2024-04-09 14:26:45 -04:00

1.6 KiB

name parameters parameter_types ts_return
REVCOMPAT
rfc
rfc
string
string

REVCOMPAT() controls which RFC the REV() function adheres to.

Include one of these two commands near the top dnsconfig.js (at the global level):

{% code title="dnsconfig.js" %}

REVCOMPAT("rfc2317");  // RFC 2117: Compatible with old files.
REVCOMPAT("rfc4183");  // RFC 4183: Adopt the newer standard.

{% endcode %}

REVCOMPAT() is global for all of dnsconfig.js. It must appear before any use of REV(); If not, behavior is undefined.

RFC 4183 vs RFC 2317

RFC 2317 and RFC 4183 are two different ways to implement reverse lookups for CIDR blocks that are not on 8-bit boundaries (/24, /16, /8).

Originally DNSControl implemented the older standard, which only specifies what to do for /8, /16, /24 - /32. Using REV() for /9-17 and /17-23 CIDRs was an error.

v4 defaults to RFC 2317. In v5.0 the default will change to RFC 4183. REVCOMPAT() is provided for those that wish to retain the old behavior.

For more information, see Opinion #9.

Transition plan

What's the default behavior if REVCOMPAT() is not used?

Version /9 to /15 and /17 to /23 /25 to 32 Warnings
v4 RFC 4183 RFC 2317 Only if /25 - /32 are used
v5 RFC 4183 RFC 4183 none

No warnings are generated if the REVCOMPAT() function is used.