define(nsc_revIPa, `ifelse($#, 1, `$1', `nsc_revIPa(shift($@)).$1')')
define(nsc_revaddr, `nsc_revIPa(translit($1, `.', `,'))')
-# Fix up dots in a name: if the name is not simple (i.e., it contains at least one dot),
-# ensure that it ends with a dot.
+# Fix up dots in a name: If the name is not simple (i.e., it contains at least one unescaped
+# dot), ensure that it ends with a dot. Then unescape all escaped dots (\.).
-define(nsc_corr_dot, `ifelse(substr($1,decr(len($1))),.,$1,$1`'ifelse(index($1,.),-1,,.))')
+define(nsc_name, `nsc_unescape_name(ifelse(substr($1,decr(len($1))),.,$1,$1`'ifelse(regexp($1,`[^\\]\.'),-1,,.)))')
+define(nsc_unescape_name,`patsubst(`$1',\\\.,.)')
# Normalize IPv6 address