Table of Contents
A section declaration follow the rules:
section : name argument '{' commands '}' ';'
name : symbol
argument : (string)?
commands : (section_specific_command ';')*
symbol : [a-zA-Z0-9_]+
string : "([^\\\"]|\\[\\\"])*" |
section_specific_command : option_selection
option_selection : symbol '=' string |
config {
transp = "ipv4,ipv6,std";
output = "straight,text";
verbose = "explain,details,intro,counter";
error = "standard";
resolver = "127.0.0.1";
}; |
toto
section_specific_command : affectation
affectation : symbol '=' string |
constant {
# For connectivity testing
# the '%s' will be replaced by the IP address
ping4 = "ping -q -c 5 %s > /dev/null";
ping6 = "ping6 -q -c 5 %s > /dev/null";
# HTML path for generated pages
publish_html_path = "/zc/";
}; |
toto
section_specific_command : domain_mapping
domain_mapping : 'map' domainname filename
domainname : string
filename : string |
useconf {
map "fr." "zc.conf.fr";
map "arpa." "zc.conf.arpa";
map "." "zc.conf.root";
}; |
toto
commands : block
block : (check ';' | switch)*
check : checkname severity category
switch : 'case' testname ('when' symbol block)+
('else' block)? 'end'
testname : symbol # with prefix 'tst_'
checkname : symbol # with prefix 'chk_'
severity : 'f' | 'w' | 'i' |
testseq "address" {
chk_given_ip f dns;
chk_given_nsprim_vs_soa f dns;
case tst_mail_by_mx_or_a
when MX
# MX
chk_mx f dns;
chk_mx_auth f dns;
chk_mx_sntx f dns;
end
}; |