]> mj.ucw.cz Git - nsc-5.git/blobdiff - m4/nsc.m4
DNSSEC: Complete support for key delegations to sub-domains
[nsc-5.git] / m4 / nsc.m4
index 80d091e15e111f4e59e8ade983ef0febc5fb1681..cf7a81dcca1514f0d7a7f2074eca802b49e65c84 100644 (file)
--- a/m4/nsc.m4
+++ b/m4/nsc.m4
@@ -3,11 +3,14 @@ dnl ### NSC -- Zone File Generator
 dnl ### (c) 1997--2011 Martin Mares <mj@ucw.cz>
 dnl ###
 dnl ### Usage: m4 -DVERS=path-to-version-file nsc.m4 domain-source-files >zone-file
+dnl ###    or: m4 -DHASHING nsc.m4 domain-source-files | md5sum
 dnl ###
 include(m4/dnslib.m4)
 
 # Version number
 
+ifdef(`HASHING', `define(`VERSION',`YYYYMMDDNN')', `
+
 ifdef(`VERS',`',`nsc_fatal_error(`VERS macro not defined')')
 
 define(TODAY_CODE, translit(esyscmd(`date +"%Y%m%d"'),`
@@ -21,11 +24,14 @@ syscmd(echo >VERS "`define'(`LAST_TODAY_CODE',TODAY_CODE) `define'(`SUBVER_NUM',
 ifelse(eval(SUBVER_NUM > 99),1,`nsc_fatal_error(`Too many zone changes in a single day, you must tweak 'VERS` manually')')
 define(`VERSION',TODAY_CODE`'format(`%02d', SUBVER_NUM))
 
+')
+
 # Record names
 
 define(nsc_set_name, `define(`CURRENT_NAME', nsc_corr_dot($1))define(`PRINT_NAME', CURRENT_NAME)')
 define(nsc_emit_name, `ifdef(`PRINT_NAME', `PRINT_NAME`'undefine(`PRINT_NAME')', `')')
 define(nsc_abs_name, `ifelse(CURRENT_NAME, translit(CURRENT_NAME,.,:), CURRENT_NAME.CURRENT_DOMAIN, CURRENT_NAME)')
+define(nsc_abs_name_nodot, `define(`nsc_tmp', nsc_abs_name)substr(nsc_tmp,0,decr(len(nsc_tmp)))')
 
 # SOA record
 
@@ -139,6 +145,11 @@ define(CNAME, `$1  `CNAME' nsc_corr_dot($2)')
 
 define(PTR, `$1        `PTR'   nsc_corr_dot($2)')
 
+# DS records (DNSSEC keys for subdomains)
+
+define(DS, `ifdef(`REVERSE_MODE',,`nsc_DS')')
+define(nsc_DS, `undivert(dss/nsc_abs_name_nodot)')
+
 # Shortcut for classless reverse delegation of a block
 
 define(REVBLOCK, `nsc_forloop(`i', $2, $3, `i' `CNAME' `i'.$1
@@ -155,6 +166,7 @@ m4wrap(`nsc_cleanup')
 
 divert(0)dnl
 `;;;' Primary zone file
-`;;;' Generated by NSCVER (nsc.m4) on CURRENT_DATE
+`;;;' Generated by NSCVER (nsc.m4) on ifdef(`HASHING', ``CURRENT_DATE'', `CURRENT_DATE')
 `;;;' Please do not edit manually
+`;;;' `VERSION': VERSION
 `'