blob: 0918352f6c3bc19d0527c06bfafb49b13beaea9a [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: BIND 8.x configuration file
3" Maintainer: glory hump <rnd@web-drive.ru>
4" Last change: Mon May 21 04:51:01 SAMST 2001
5" Filenames: named.conf
6" URL: http://rnd.web-drive.ru/vim/syntax/named.vim
7" $Id$
8"
9" NOTE
10" it was not widely tested, i just tried it on my simple
11" single-master-single-slave configuration. most syntax was borrowed
12" directly from "BIND Configuration File Guide" without testing.
13
14" 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
30let s:save_cpo = &cpo
31set cpo-=C
32
33" BIND configuration file
34
35syn match namedComment "//.*"
36syn region namedComment start="/\*" end="\*/"
37syn region namedString start=/"/ end=/"/ contained
38" --- omitted trailing semicolon FIXME
39syn match namedError /[^;{]$/
40
41" --- top-level keywords
42
43syn keyword namedInclude include nextgroup=namedString skipwhite
44syn keyword namedKeyword acl key nextgroup=namedIntIdent skipwhite
45syn keyword namedKeyword server nextgroup=namedIdentifier skipwhite
46syn keyword namedKeyword controls nextgroup=namedSection skipwhite
47syn keyword namedKeyword trusted-keys nextgroup=namedIntSection skipwhite
48syn keyword namedKeyword logging nextgroup=namedLogSection skipwhite
49syn keyword namedKeyword options nextgroup=namedOptSection skipwhite
50syn keyword namedKeyword zone nextgroup=namedZoneString skipwhite
51
52" --- Identifier: name of following { ... } Section
53syn match namedIdentifier contained /\k\+/ nextgroup=namedSection skipwhite
54" --- IntIdent: name of following IntSection
55syn match namedIntIdent contained /"\=\k\+"\=/ nextgroup=namedIntSection skipwhite
56
57" --- Section: { ... } clause
58syn region namedSection contained start=+{+ end=+};+ contains=namedSection,namedIntKeyword
59
60" --- IntSection: section that does not contain other sections
61syn region namedIntSection contained start=+{+ end=+}+ contains=namedIntKeyword,namedError
62
63" --- IntKeyword: keywords contained within `{ ... }' sections only
64" + these keywords are contained within `key' and `acl' sections
65syn keyword namedIntKeyword contained key algorithm
66syn keyword namedIntKeyword contained secret nextgroup=namedString skipwhite
67
68" + these keywords are contained within `server' section only
69syn keyword namedIntKeyword contained bogus support-ixfr nextgroup=namedBool,namedNotBool skipwhite
70syn keyword namedIntKeyword contained transfers nextgroup=namedNumber,namedNotNumber skipwhite
71syn keyword namedIntKeyword contained transfer-format
72syn keyword namedIntKeyword contained keys nextgroup=namedIntSection skipwhite
73
74" + these keywords are contained within `controls' section only
75syn keyword namedIntKeyword contained inet nextgroup=namedIPaddr,namedIPerror skipwhite
76syn keyword namedIntKeyword contained unix nextgroup=namedString skipwhite
77syn keyword namedIntKeyword contained port perm owner group nextgroup=namedNumber,namedNotNumber skipwhite
78syn keyword namedIntKeyword contained allow nextgroup=namedIntSection skipwhite
79
80" --- options
81syn region namedOptSection contained start=+{+ end=+};+ contains=namedOption,namedCNOption,namedComment,namedParenError
82
83syn keyword namedOption contained version directory
84\ nextgroup=namedString skipwhite
85syn keyword namedOption contained named-xfer dump-file pid-file
86\ nextgroup=namedString skipwhite
87syn keyword namedOption contained mem-statistics-file statistics-file
88\ nextgroup=namedString skipwhite
89syn keyword namedOption contained auth-nxdomain deallocate-on-exit
90\ nextgroup=namedBool,namedNotBool skipwhite
91syn keyword namedOption contained dialup fake-iquery fetch-glue
92\ nextgroup=namedBool,namedNotBool skipwhite
93syn keyword namedOption contained has-old-clients host-statistics
94\ nextgroup=namedBool,namedNotBool skipwhite
95syn keyword namedOption contained maintain-ixfr-base multiple-cnames
96\ nextgroup=namedBool,namedNotBool skipwhite
97syn keyword namedOption contained notify recursion rfc2308-type1
98\ nextgroup=namedBool,namedNotBool skipwhite
99syn keyword namedOption contained use-id-pool treat-cr-as-space
100\ nextgroup=namedBool,namedNotBool skipwhite
101syn keyword namedOption contained also-notify forwarders
102\ nextgroup=namedIntSection skipwhite
103syn keyword namedOption contained forward check-names
104syn keyword namedOption contained allow-query allow-transfer allow-recursion nextgroup=namedAML skipwhite
105syn keyword namedOption contained blackhole listen-on
106\ nextgroup=namedIntSection skipwhite
107syn keyword namedOption contained lame-ttl max-transfer-time-in
108\ nextgroup=namedNumber,namedNotNumber skipwhite
109syn keyword namedOption contained max-ncache-ttl min-roots
110\ nextgroup=namedNumber,namedNotNumber skipwhite
111syn keyword namedOption contained serial-queries transfers-in
112\ nextgroup=namedNumber,namedNotNumber skipwhite
113syn keyword namedOption contained transfers-out transfers-per-ns
114syn keyword namedOption contained transfer-format
115syn keyword namedOption contained transfer-source
116\ nextgroup=namedIPaddr,namedIPerror skipwhite
117syn keyword namedOption contained max-ixfr-log-size
118\ nextgroup=namedNumber,namedNotNumber skipwhite
119syn keyword namedOption contained coresize datasize files stacksize
120syn keyword namedOption contained cleaning-interval interface-interval statistics-interval heartbeat-interval
121\ nextgroup=namedNumber,namedNotNumber skipwhite
122syn keyword namedOption contained topology sortlist rrset-order
123\ nextgroup=namedIntSection skipwhite
124
125syn match namedOption contained /\<query-source\s\+.*;/he=s+12 contains=namedQSKeywords
126syn keyword namedQSKeywords contained address port
127syn match namedCNOption contained /\<check-names\s\+.*;/he=s+11 contains=namedCNKeywords
128syn keyword namedCNKeywords contained fail warn ignore master slave response
129
130" --- logging facilities
131syn region namedLogSection contained start=+{+ end=+};+ contains=namedLogOption
132syn keyword namedLogOption contained channel nextgroup=namedIntIdent skipwhite
133syn keyword namedLogOption contained category nextgroup=namedIntIdent skipwhite
134syn keyword namedIntKeyword contained syslog null versions size severity
135syn keyword namedIntKeyword contained file nextgroup=namedString skipwhite
136syn keyword namedIntKeyword contained print-category print-severity print-time nextgroup=namedBool,namedNotBool skipwhite
137
138" --- zone section
139syn region namedZoneString contained oneline start=+"+ end=+"+ skipwhite
140\ contains=namedDomain,namedIllegalDom
141\ nextgroup=namedZoneClass,namedZoneSection
142syn keyword namedZoneClass contained in hs hesiod chaos
143\ IN HS HESIOD CHAOS
144\ nextgroup=namedZoneSection skipwhite
145
146syn region namedZoneSection contained start=+{+ end=+};+ contains=namedZoneOpt,namedCNOption,namedComment,namedMasters,namedParenError
147syn keyword namedZoneOpt contained file ixfr-base
148\ nextgroup=namedString skipwhite
149syn keyword namedZoneOpt contained notify dialup
150\ nextgroup=namedBool,namedNotBool skipwhite
151syn keyword namedZoneOpt contained pubkey forward
152syn keyword namedZoneOpt contained max-transfer-time-in
153\ nextgroup=namedNumber,namedNotNumber skipwhite
154syn keyword namedZoneOpt contained type nextgroup=namedZoneType skipwhite
155syn keyword namedZoneType contained master slave stub forward hint
156
157syn keyword namedZoneOpt contained masters forwarders
158\ nextgroup=namedIPlist skipwhite
159syn region namedIPlist contained start=+{+ end=+};+ contains=namedIPaddr,namedIPerror,namedParenError,namedComment
160syn match namedZoneOpt contained "\<allow-\(update\|query\|transfer\)"
161\ nextgroup=namedAML skipwhite
162
163" --- boolean parameter
164syn match namedNotBool contained "[^ ;]\+"
165syn keyword namedBool contained yes no true false 1 0
166
167" --- number parameter
168syn match namedNotNumber contained "[^ 0-9;]\+"
169syn match namedNumber contained "\d\+"
170
171" --- address match list
172syn region namedAML contained start=+{+ end=+};+ contains=namedParenError,namedComment
173
174" --- IPs & Domains
175syn match namedIPaddr contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{3};/he=e-1
176syn match namedDomain contained /\<[0-9A-Za-z][-0-9A-Za-z.]\+\>/ nextgroup=namedSpareDot
177syn match namedDomain contained /"\."/ms=s+1,me=e-1
178syn match namedSpareDot contained /\./
179
180" --- syntax errors
181syn match namedIllegalDom contained /"\S*[^-A-Za-z0-9.[:space:]]\S*"/ms=s+1,me=e-1
182syn match namedIPerror contained /\<\S*[^0-9.[:space:];]\S*/
183syn match namedEParenError contained +{+
184syn match namedParenError +}\([^;]\|$\)+
185
186" Define the default highlighting.
187" For version 5.7 and earlier: only when not done already
188" For version 5.8 and later: only when an item doesn't have highlighting yet
189if version >= 508 || !exists("did_named_syn_inits")
190 if version < 508
191 let did_named_syn_inits = 1
192 command -nargs=+ HiLink hi link <args>
193 else
194 command -nargs=+ HiLink hi def link <args>
195 endif
196
197 HiLink namedComment Comment
198 HiLink namedInclude Include
199 HiLink namedKeyword Keyword
200 HiLink namedIntKeyword Keyword
201 HiLink namedIdentifier Identifier
202 HiLink namedIntIdent Identifier
203
204 HiLink namedString String
205 HiLink namedBool Type
206 HiLink namedNotBool Error
207 HiLink namedNumber Number
208 HiLink namedNotNumber Error
209
210 HiLink namedOption namedKeyword
211 HiLink namedLogOption namedKeyword
212 HiLink namedCNOption namedKeyword
213 HiLink namedQSKeywords Type
214 HiLink namedCNKeywords Type
215 HiLink namedLogCategory Type
216 HiLink namedDomain Identifier
217 HiLink namedZoneOpt namedKeyword
218 HiLink namedZoneType Type
219 HiLink namedParenError Error
220 HiLink namedEParenError Error
221 HiLink namedIllegalDom Error
222 HiLink namedIPerror Error
223 HiLink namedSpareDot Error
224 HiLink namedError Error
225
226 delcommand HiLink
227endif
228
229let &cpo = s:save_cpo
230unlet s:save_cpo
231
232let b:current_syntax = "named"
233
234" vim: ts=17