blob: 292d1b2bbf313f00f5e8be97c813050785d762fd [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
Bram Moolenaar9964e462007-05-05 17:54:07 +00002" Language: BIND configuration file
3" Maintainer: Nick Hibma <nick@van-laarhoven.org>
Bram Moolenaar2e693a82019-10-16 22:35:02 +02004" Last Change: 2019 Oct 08
Bram Moolenaar9964e462007-05-05 17:54:07 +00005" Filenames: named.conf, rndc.conf
6" Location: http://www.van-laarhoven.org/vim/syntax/named.vim
Bram Moolenaar071d4272004-06-13 20:20:40 +00007"
Bram Moolenaar9964e462007-05-05 17:54:07 +00008" Previously maintained by glory hump <rnd@web-drive.ru> and updated by Marcin
9" Dalecki.
10"
11" This file could do with a lot of improvements, so comments are welcome.
12" Please submit the named.conf (segment) with any comments.
13"
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020014" quit when a syntax file was already loaded
15if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000016 finish
17endif
18
19syn case match
20
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020021setlocal iskeyword=.,-,48-58,A-Z,a-z,_
Bram Moolenaar071d4272004-06-13 20:20:40 +000022
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020023syn sync match namedSync grouphere NONE "^(zone|controls|acl|key)"
Bram Moolenaar9964e462007-05-05 17:54:07 +000024
Bram Moolenaar071d4272004-06-13 20:20:40 +000025let s:save_cpo = &cpo
26set cpo-=C
27
28" BIND configuration file
29
30syn match namedComment "//.*"
Bram Moolenaardfccaf02004-12-31 20:56:11 +000031syn match namedComment "#.*"
Bram Moolenaar071d4272004-06-13 20:20:40 +000032syn region namedComment start="/\*" end="\*/"
33syn region namedString start=/"/ end=/"/ contained
Bram Moolenaardfccaf02004-12-31 20:56:11 +000034" --- omitted trailing semicolon
35syn match namedError /[^;{#]$/
Bram Moolenaar071d4272004-06-13 20:20:40 +000036
37" --- top-level keywords
38
39syn keyword namedInclude include nextgroup=namedString skipwhite
40syn keyword namedKeyword acl key nextgroup=namedIntIdent skipwhite
41syn keyword namedKeyword server nextgroup=namedIdentifier skipwhite
42syn keyword namedKeyword controls nextgroup=namedSection skipwhite
43syn keyword namedKeyword trusted-keys nextgroup=namedIntSection skipwhite
44syn keyword namedKeyword logging nextgroup=namedLogSection skipwhite
45syn keyword namedKeyword options nextgroup=namedOptSection skipwhite
46syn keyword namedKeyword zone nextgroup=namedZoneString skipwhite
47
48" --- Identifier: name of following { ... } Section
49syn match namedIdentifier contained /\k\+/ nextgroup=namedSection skipwhite
50" --- IntIdent: name of following IntSection
51syn match namedIntIdent contained /"\=\k\+"\=/ nextgroup=namedIntSection skipwhite
52
53" --- Section: { ... } clause
54syn region namedSection contained start=+{+ end=+};+ contains=namedSection,namedIntKeyword
55
56" --- IntSection: section that does not contain other sections
Bram Moolenaar2e693a82019-10-16 22:35:02 +020057syn region namedIntSection contained start=+{+ end=+}+ contains=namedIntKeyword,namedError,namedComment
Bram Moolenaar071d4272004-06-13 20:20:40 +000058
59" --- IntKeyword: keywords contained within `{ ... }' sections only
60" + these keywords are contained within `key' and `acl' sections
61syn keyword namedIntKeyword contained key algorithm
62syn keyword namedIntKeyword contained secret nextgroup=namedString skipwhite
63
64" + these keywords are contained within `server' section only
65syn keyword namedIntKeyword contained bogus support-ixfr nextgroup=namedBool,namedNotBool skipwhite
66syn keyword namedIntKeyword contained transfers nextgroup=namedNumber,namedNotNumber skipwhite
67syn keyword namedIntKeyword contained transfer-format
68syn keyword namedIntKeyword contained keys nextgroup=namedIntSection skipwhite
69
70" + these keywords are contained within `controls' section only
71syn keyword namedIntKeyword contained inet nextgroup=namedIPaddr,namedIPerror skipwhite
72syn keyword namedIntKeyword contained unix nextgroup=namedString skipwhite
73syn keyword namedIntKeyword contained port perm owner group nextgroup=namedNumber,namedNotNumber skipwhite
74syn keyword namedIntKeyword contained allow nextgroup=namedIntSection skipwhite
75
Bram Moolenaar9964e462007-05-05 17:54:07 +000076" + these keywords are contained within `update-policy' section only
77syn keyword namedIntKeyword contained grant nextgroup=namedString skipwhite
78syn keyword namedIntKeyword contained name self subdomain wildcard nextgroup=namedString skipwhite
79syn keyword namedIntKeyword TXT A PTR NS SOA A6 CNAME MX ANY skipwhite
80
Bram Moolenaar071d4272004-06-13 20:20:40 +000081" --- options
82syn region namedOptSection contained start=+{+ end=+};+ contains=namedOption,namedCNOption,namedComment,namedParenError
83
84syn keyword namedOption contained version directory
85\ nextgroup=namedString skipwhite
86syn keyword namedOption contained named-xfer dump-file pid-file
87\ nextgroup=namedString skipwhite
88syn keyword namedOption contained mem-statistics-file statistics-file
89\ nextgroup=namedString skipwhite
90syn keyword namedOption contained auth-nxdomain deallocate-on-exit
91\ nextgroup=namedBool,namedNotBool skipwhite
92syn keyword namedOption contained dialup fake-iquery fetch-glue
93\ nextgroup=namedBool,namedNotBool skipwhite
94syn keyword namedOption contained has-old-clients host-statistics
95\ nextgroup=namedBool,namedNotBool skipwhite
96syn keyword namedOption contained maintain-ixfr-base multiple-cnames
97\ nextgroup=namedBool,namedNotBool skipwhite
98syn keyword namedOption contained notify recursion rfc2308-type1
99\ nextgroup=namedBool,namedNotBool skipwhite
100syn keyword namedOption contained use-id-pool treat-cr-as-space
101\ nextgroup=namedBool,namedNotBool skipwhite
102syn keyword namedOption contained also-notify forwarders
Bram Moolenaar9964e462007-05-05 17:54:07 +0000103\ nextgroup=namedIPlist skipwhite
Bram Moolenaar071d4272004-06-13 20:20:40 +0000104syn keyword namedOption contained forward check-names
Bram Moolenaar9964e462007-05-05 17:54:07 +0000105syn keyword namedOption contained allow-query allow-transfer allow-recursion
106\ nextgroup=namedAML skipwhite
Bram Moolenaar071d4272004-06-13 20:20:40 +0000107syn keyword namedOption contained blackhole listen-on
108\ nextgroup=namedIntSection skipwhite
109syn keyword namedOption contained lame-ttl max-transfer-time-in
110\ nextgroup=namedNumber,namedNotNumber skipwhite
111syn keyword namedOption contained max-ncache-ttl min-roots
112\ nextgroup=namedNumber,namedNotNumber skipwhite
113syn keyword namedOption contained serial-queries transfers-in
114\ nextgroup=namedNumber,namedNotNumber skipwhite
115syn keyword namedOption contained transfers-out transfers-per-ns
116syn keyword namedOption contained transfer-format
117syn keyword namedOption contained transfer-source
118\ nextgroup=namedIPaddr,namedIPerror skipwhite
119syn keyword namedOption contained max-ixfr-log-size
120\ nextgroup=namedNumber,namedNotNumber skipwhite
121syn keyword namedOption contained coresize datasize files stacksize
122syn keyword namedOption contained cleaning-interval interface-interval statistics-interval heartbeat-interval
123\ nextgroup=namedNumber,namedNotNumber skipwhite
124syn keyword namedOption contained topology sortlist rrset-order
125\ nextgroup=namedIntSection skipwhite
126
127syn match namedOption contained /\<query-source\s\+.*;/he=s+12 contains=namedQSKeywords
128syn keyword namedQSKeywords contained address port
129syn match namedCNOption contained /\<check-names\s\+.*;/he=s+11 contains=namedCNKeywords
130syn keyword namedCNKeywords contained fail warn ignore master slave response
131
132" --- logging facilities
133syn region namedLogSection contained start=+{+ end=+};+ contains=namedLogOption
134syn keyword namedLogOption contained channel nextgroup=namedIntIdent skipwhite
135syn keyword namedLogOption contained category nextgroup=namedIntIdent skipwhite
136syn keyword namedIntKeyword contained syslog null versions size severity
137syn keyword namedIntKeyword contained file nextgroup=namedString skipwhite
138syn keyword namedIntKeyword contained print-category print-severity print-time nextgroup=namedBool,namedNotBool skipwhite
139
140" --- zone section
141syn region namedZoneString contained oneline start=+"+ end=+"+ skipwhite
142\ contains=namedDomain,namedIllegalDom
143\ nextgroup=namedZoneClass,namedZoneSection
144syn keyword namedZoneClass contained in hs hesiod chaos
145\ IN HS HESIOD CHAOS
146\ nextgroup=namedZoneSection skipwhite
147
148syn region namedZoneSection contained start=+{+ end=+};+ contains=namedZoneOpt,namedCNOption,namedComment,namedMasters,namedParenError
149syn keyword namedZoneOpt contained file ixfr-base
150\ nextgroup=namedString skipwhite
151syn keyword namedZoneOpt contained notify dialup
152\ nextgroup=namedBool,namedNotBool skipwhite
153syn keyword namedZoneOpt contained pubkey forward
154syn keyword namedZoneOpt contained max-transfer-time-in
155\ nextgroup=namedNumber,namedNotNumber skipwhite
156syn keyword namedZoneOpt contained type nextgroup=namedZoneType skipwhite
157syn keyword namedZoneType contained master slave stub forward hint
158
159syn keyword namedZoneOpt contained masters forwarders
160\ nextgroup=namedIPlist skipwhite
161syn region namedIPlist contained start=+{+ end=+};+ contains=namedIPaddr,namedIPerror,namedParenError,namedComment
Bram Moolenaar9964e462007-05-05 17:54:07 +0000162syn keyword namedZoneOpt contained allow-update allow-query allow-transfer
Bram Moolenaar071d4272004-06-13 20:20:40 +0000163\ nextgroup=namedAML skipwhite
Bram Moolenaar9964e462007-05-05 17:54:07 +0000164syn keyword namedZoneOpt contained update-policy
165\ nextgroup=namedIntSection skipwhite
Bram Moolenaar071d4272004-06-13 20:20:40 +0000166
167" --- boolean parameter
168syn match namedNotBool contained "[^ ;]\+"
169syn keyword namedBool contained yes no true false 1 0
170
171" --- number parameter
172syn match namedNotNumber contained "[^ 0-9;]\+"
173syn match namedNumber contained "\d\+"
174
175" --- address match list
Bram Moolenaar9964e462007-05-05 17:54:07 +0000176syn region namedAML contained start=+{+ end=+};+ contains=namedParenError,namedComment,namedString
Bram Moolenaar071d4272004-06-13 20:20:40 +0000177
178" --- IPs & Domains
179syn match namedIPaddr contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{3};/he=e-1
180syn match namedDomain contained /\<[0-9A-Za-z][-0-9A-Za-z.]\+\>/ nextgroup=namedSpareDot
181syn match namedDomain contained /"\."/ms=s+1,me=e-1
182syn match namedSpareDot contained /\./
183
184" --- syntax errors
185syn match namedIllegalDom contained /"\S*[^-A-Za-z0-9.[:space:]]\S*"/ms=s+1,me=e-1
186syn match namedIPerror contained /\<\S*[^0-9.[:space:];]\S*/
187syn match namedEParenError contained +{+
188syn match namedParenError +}\([^;]\|$\)+
189
190" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200191" Only when an item doesn't have highlighting yet
Bram Moolenaar071d4272004-06-13 20:20:40 +0000192
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200193hi def link namedComment Comment
194hi def link namedInclude Include
195hi def link namedKeyword Keyword
196hi def link namedIntKeyword Keyword
197hi def link namedIdentifier Identifier
198hi def link namedIntIdent Identifier
Bram Moolenaar071d4272004-06-13 20:20:40 +0000199
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200200hi def link namedString String
201hi def link namedBool Type
202hi def link namedNotBool Error
203hi def link namedNumber Number
204hi def link namedNotNumber Error
Bram Moolenaar071d4272004-06-13 20:20:40 +0000205
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200206hi def link namedOption namedKeyword
207hi def link namedLogOption namedKeyword
208hi def link namedCNOption namedKeyword
209hi def link namedQSKeywords Type
210hi def link namedCNKeywords Type
211hi def link namedLogCategory Type
212hi def link namedIPaddr Number
213hi def link namedDomain Identifier
214hi def link namedZoneOpt namedKeyword
215hi def link namedZoneType Type
216hi def link namedParenError Error
217hi def link namedEParenError Error
218hi def link namedIllegalDom Error
219hi def link namedIPerror Error
220hi def link namedSpareDot Error
221hi def link namedError Error
Bram Moolenaar071d4272004-06-13 20:20:40 +0000222
Bram Moolenaar071d4272004-06-13 20:20:40 +0000223
224let &cpo = s:save_cpo
225unlet s:save_cpo
226
227let b:current_syntax = "named"
228
229" vim: ts=17