blob: faec5f68e5670943de63e85895255854d2dd7591 [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>
4" Last change: 2007-01-30
5" 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 Moolenaar071d4272004-06-13 20:20:40 +000014" For version 5.x: Clear all syntax items
15" For version 6.x: Quit when a syntax file was already loaded
16if version < 600
17 syntax clear
18elseif exists("b:current_syntax")
19 finish
20endif
21
22syn case match
23
24if version >= 600
25 setlocal iskeyword=.,-,48-58,A-Z,a-z,_
26else
27 set iskeyword=.,-,48-58,A-Z,a-z,_
28endif
29
Bram Moolenaar9964e462007-05-05 17:54:07 +000030if version >= 600
31 syn sync match namedSync grouphere NONE "^(zone|controls|acl|key)"
32endif
33
Bram Moolenaar071d4272004-06-13 20:20:40 +000034let s:save_cpo = &cpo
35set cpo-=C
36
37" BIND configuration file
38
39syn match namedComment "//.*"
Bram Moolenaardfccaf02004-12-31 20:56:11 +000040syn match namedComment "#.*"
Bram Moolenaar071d4272004-06-13 20:20:40 +000041syn region namedComment start="/\*" end="\*/"
42syn region namedString start=/"/ end=/"/ contained
Bram Moolenaardfccaf02004-12-31 20:56:11 +000043" --- omitted trailing semicolon
44syn match namedError /[^;{#]$/
Bram Moolenaar071d4272004-06-13 20:20:40 +000045
46" --- top-level keywords
47
48syn keyword namedInclude include nextgroup=namedString skipwhite
49syn keyword namedKeyword acl key nextgroup=namedIntIdent skipwhite
50syn keyword namedKeyword server nextgroup=namedIdentifier skipwhite
51syn keyword namedKeyword controls nextgroup=namedSection skipwhite
52syn keyword namedKeyword trusted-keys nextgroup=namedIntSection skipwhite
53syn keyword namedKeyword logging nextgroup=namedLogSection skipwhite
54syn keyword namedKeyword options nextgroup=namedOptSection skipwhite
55syn keyword namedKeyword zone nextgroup=namedZoneString skipwhite
56
57" --- Identifier: name of following { ... } Section
58syn match namedIdentifier contained /\k\+/ nextgroup=namedSection skipwhite
59" --- IntIdent: name of following IntSection
60syn match namedIntIdent contained /"\=\k\+"\=/ nextgroup=namedIntSection skipwhite
61
62" --- Section: { ... } clause
63syn region namedSection contained start=+{+ end=+};+ contains=namedSection,namedIntKeyword
64
65" --- IntSection: section that does not contain other sections
66syn region namedIntSection contained start=+{+ end=+}+ contains=namedIntKeyword,namedError
67
68" --- IntKeyword: keywords contained within `{ ... }' sections only
69" + these keywords are contained within `key' and `acl' sections
70syn keyword namedIntKeyword contained key algorithm
71syn keyword namedIntKeyword contained secret nextgroup=namedString skipwhite
72
73" + these keywords are contained within `server' section only
74syn keyword namedIntKeyword contained bogus support-ixfr nextgroup=namedBool,namedNotBool skipwhite
75syn keyword namedIntKeyword contained transfers nextgroup=namedNumber,namedNotNumber skipwhite
76syn keyword namedIntKeyword contained transfer-format
77syn keyword namedIntKeyword contained keys nextgroup=namedIntSection skipwhite
78
79" + these keywords are contained within `controls' section only
80syn keyword namedIntKeyword contained inet nextgroup=namedIPaddr,namedIPerror skipwhite
81syn keyword namedIntKeyword contained unix nextgroup=namedString skipwhite
82syn keyword namedIntKeyword contained port perm owner group nextgroup=namedNumber,namedNotNumber skipwhite
83syn keyword namedIntKeyword contained allow nextgroup=namedIntSection skipwhite
84
Bram Moolenaar9964e462007-05-05 17:54:07 +000085" + these keywords are contained within `update-policy' section only
86syn keyword namedIntKeyword contained grant nextgroup=namedString skipwhite
87syn keyword namedIntKeyword contained name self subdomain wildcard nextgroup=namedString skipwhite
88syn keyword namedIntKeyword TXT A PTR NS SOA A6 CNAME MX ANY skipwhite
89
Bram Moolenaar071d4272004-06-13 20:20:40 +000090" --- options
91syn region namedOptSection contained start=+{+ end=+};+ contains=namedOption,namedCNOption,namedComment,namedParenError
92
93syn keyword namedOption contained version directory
94\ nextgroup=namedString skipwhite
95syn keyword namedOption contained named-xfer dump-file pid-file
96\ nextgroup=namedString skipwhite
97syn keyword namedOption contained mem-statistics-file statistics-file
98\ nextgroup=namedString skipwhite
99syn keyword namedOption contained auth-nxdomain deallocate-on-exit
100\ nextgroup=namedBool,namedNotBool skipwhite
101syn keyword namedOption contained dialup fake-iquery fetch-glue
102\ nextgroup=namedBool,namedNotBool skipwhite
103syn keyword namedOption contained has-old-clients host-statistics
104\ nextgroup=namedBool,namedNotBool skipwhite
105syn keyword namedOption contained maintain-ixfr-base multiple-cnames
106\ nextgroup=namedBool,namedNotBool skipwhite
107syn keyword namedOption contained notify recursion rfc2308-type1
108\ nextgroup=namedBool,namedNotBool skipwhite
109syn keyword namedOption contained use-id-pool treat-cr-as-space
110\ nextgroup=namedBool,namedNotBool skipwhite
111syn keyword namedOption contained also-notify forwarders
Bram Moolenaar9964e462007-05-05 17:54:07 +0000112\ nextgroup=namedIPlist skipwhite
Bram Moolenaar071d4272004-06-13 20:20:40 +0000113syn keyword namedOption contained forward check-names
Bram Moolenaar9964e462007-05-05 17:54:07 +0000114syn keyword namedOption contained allow-query allow-transfer allow-recursion
115\ nextgroup=namedAML skipwhite
Bram Moolenaar071d4272004-06-13 20:20:40 +0000116syn keyword namedOption contained blackhole listen-on
117\ nextgroup=namedIntSection skipwhite
118syn keyword namedOption contained lame-ttl max-transfer-time-in
119\ nextgroup=namedNumber,namedNotNumber skipwhite
120syn keyword namedOption contained max-ncache-ttl min-roots
121\ nextgroup=namedNumber,namedNotNumber skipwhite
122syn keyword namedOption contained serial-queries transfers-in
123\ nextgroup=namedNumber,namedNotNumber skipwhite
124syn keyword namedOption contained transfers-out transfers-per-ns
125syn keyword namedOption contained transfer-format
126syn keyword namedOption contained transfer-source
127\ nextgroup=namedIPaddr,namedIPerror skipwhite
128syn keyword namedOption contained max-ixfr-log-size
129\ nextgroup=namedNumber,namedNotNumber skipwhite
130syn keyword namedOption contained coresize datasize files stacksize
131syn keyword namedOption contained cleaning-interval interface-interval statistics-interval heartbeat-interval
132\ nextgroup=namedNumber,namedNotNumber skipwhite
133syn keyword namedOption contained topology sortlist rrset-order
134\ nextgroup=namedIntSection skipwhite
135
136syn match namedOption contained /\<query-source\s\+.*;/he=s+12 contains=namedQSKeywords
137syn keyword namedQSKeywords contained address port
138syn match namedCNOption contained /\<check-names\s\+.*;/he=s+11 contains=namedCNKeywords
139syn keyword namedCNKeywords contained fail warn ignore master slave response
140
141" --- logging facilities
142syn region namedLogSection contained start=+{+ end=+};+ contains=namedLogOption
143syn keyword namedLogOption contained channel nextgroup=namedIntIdent skipwhite
144syn keyword namedLogOption contained category nextgroup=namedIntIdent skipwhite
145syn keyword namedIntKeyword contained syslog null versions size severity
146syn keyword namedIntKeyword contained file nextgroup=namedString skipwhite
147syn keyword namedIntKeyword contained print-category print-severity print-time nextgroup=namedBool,namedNotBool skipwhite
148
149" --- zone section
150syn region namedZoneString contained oneline start=+"+ end=+"+ skipwhite
151\ contains=namedDomain,namedIllegalDom
152\ nextgroup=namedZoneClass,namedZoneSection
153syn keyword namedZoneClass contained in hs hesiod chaos
154\ IN HS HESIOD CHAOS
155\ nextgroup=namedZoneSection skipwhite
156
157syn region namedZoneSection contained start=+{+ end=+};+ contains=namedZoneOpt,namedCNOption,namedComment,namedMasters,namedParenError
158syn keyword namedZoneOpt contained file ixfr-base
159\ nextgroup=namedString skipwhite
160syn keyword namedZoneOpt contained notify dialup
161\ nextgroup=namedBool,namedNotBool skipwhite
162syn keyword namedZoneOpt contained pubkey forward
163syn keyword namedZoneOpt contained max-transfer-time-in
164\ nextgroup=namedNumber,namedNotNumber skipwhite
165syn keyword namedZoneOpt contained type nextgroup=namedZoneType skipwhite
166syn keyword namedZoneType contained master slave stub forward hint
167
168syn keyword namedZoneOpt contained masters forwarders
169\ nextgroup=namedIPlist skipwhite
170syn region namedIPlist contained start=+{+ end=+};+ contains=namedIPaddr,namedIPerror,namedParenError,namedComment
Bram Moolenaar9964e462007-05-05 17:54:07 +0000171syn keyword namedZoneOpt contained allow-update allow-query allow-transfer
Bram Moolenaar071d4272004-06-13 20:20:40 +0000172\ nextgroup=namedAML skipwhite
Bram Moolenaar9964e462007-05-05 17:54:07 +0000173syn keyword namedZoneOpt contained update-policy
174\ nextgroup=namedIntSection skipwhite
Bram Moolenaar071d4272004-06-13 20:20:40 +0000175
176" --- boolean parameter
177syn match namedNotBool contained "[^ ;]\+"
178syn keyword namedBool contained yes no true false 1 0
179
180" --- number parameter
181syn match namedNotNumber contained "[^ 0-9;]\+"
182syn match namedNumber contained "\d\+"
183
184" --- address match list
Bram Moolenaar9964e462007-05-05 17:54:07 +0000185syn region namedAML contained start=+{+ end=+};+ contains=namedParenError,namedComment,namedString
Bram Moolenaar071d4272004-06-13 20:20:40 +0000186
187" --- IPs & Domains
188syn match namedIPaddr contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{3};/he=e-1
189syn match namedDomain contained /\<[0-9A-Za-z][-0-9A-Za-z.]\+\>/ nextgroup=namedSpareDot
190syn match namedDomain contained /"\."/ms=s+1,me=e-1
191syn match namedSpareDot contained /\./
192
193" --- syntax errors
194syn match namedIllegalDom contained /"\S*[^-A-Za-z0-9.[:space:]]\S*"/ms=s+1,me=e-1
195syn match namedIPerror contained /\<\S*[^0-9.[:space:];]\S*/
196syn match namedEParenError contained +{+
197syn match namedParenError +}\([^;]\|$\)+
198
199" Define the default highlighting.
200" For version 5.7 and earlier: only when not done already
201" For version 5.8 and later: only when an item doesn't have highlighting yet
202if version >= 508 || !exists("did_named_syn_inits")
203 if version < 508
204 let did_named_syn_inits = 1
205 command -nargs=+ HiLink hi link <args>
206 else
207 command -nargs=+ HiLink hi def link <args>
208 endif
209
210 HiLink namedComment Comment
211 HiLink namedInclude Include
212 HiLink namedKeyword Keyword
213 HiLink namedIntKeyword Keyword
214 HiLink namedIdentifier Identifier
215 HiLink namedIntIdent Identifier
216
217 HiLink namedString String
218 HiLink namedBool Type
219 HiLink namedNotBool Error
220 HiLink namedNumber Number
221 HiLink namedNotNumber Error
222
223 HiLink namedOption namedKeyword
224 HiLink namedLogOption namedKeyword
225 HiLink namedCNOption namedKeyword
226 HiLink namedQSKeywords Type
227 HiLink namedCNKeywords Type
228 HiLink namedLogCategory Type
Bram Moolenaar9964e462007-05-05 17:54:07 +0000229 HiLink namedIPaddr Number
Bram Moolenaar071d4272004-06-13 20:20:40 +0000230 HiLink namedDomain Identifier
231 HiLink namedZoneOpt namedKeyword
232 HiLink namedZoneType Type
233 HiLink namedParenError Error
234 HiLink namedEParenError Error
235 HiLink namedIllegalDom Error
236 HiLink namedIPerror Error
237 HiLink namedSpareDot Error
238 HiLink namedError Error
239
240 delcommand HiLink
241endif
242
243let &cpo = s:save_cpo
244unlet s:save_cpo
245
246let b:current_syntax = "named"
247
248" vim: ts=17