-define(stop_if_rev, `ifdef(`REVERSE', `divert(-1)')')
-define(mk_PTR, `divert
-revaddr(substr($1,incr(len(REVERSE)))) PTR $2`'ifelse(index($2,`.'),-1,`dotdomain.',`')')
+define(nsc_SOA, `
+$ORIGIN CURRENT_DOMAIN
+$TTL MINTTL
+nsc_emit_name `SOA' nsc_corr_dot(NSNAME) MAINTNAME (
+ VERSION REFRESH RETRY EXPIRE MINTTL )')
+define(SOA, `ifdef(`CURRENT_DOMAIN',`ifdef(`REVERSE_MODE',,`nsc_fatal_error(`SOA record defined twice')')')dnl
+define(`CURRENT_DOMAIN',$1.)dnl
+nsc_set_name(CURRENT_DOMAIN)dnl
+ifdef(`REVERSE_MODE',,`nsc_SOA')')
+
+# Reverse zones
+
+define(REVERSE, `divert(-1)
+ define(`REVERSE_MODE', `')
+ nsc_if_v6($1,`
+ define(`REVNET6', nsc_revblock6($1))
+ ',`
+ define(`REVNET', `$1.')
+ define(`REVLOW', `$2')
+ define(`REVHIGH', `$3')
+ ')
+')