blob: 6d6cbd484db2e022aee1a5793b3279850b0cd02a [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 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
57syn region namedIntSection contained start=+{+ end=+}+ contains=namedIntKeyword,namedError
58
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
192command -nargs=+ HiLink hi def link <args>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000193
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200194HiLink namedComment Comment
195HiLink namedInclude Include
196HiLink namedKeyword Keyword
197HiLink namedIntKeyword Keyword
198HiLink namedIdentifier Identifier
199HiLink namedIntIdent Identifier
Bram Moolenaar071d4272004-06-13 20:20:40 +0000200
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200201HiLink namedString String
202HiLink namedBool Type
203HiLink namedNotBool Error
204HiLink namedNumber Number
205HiLink namedNotNumber Error
Bram Moolenaar071d4272004-06-13 20:20:40 +0000206
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200207HiLink namedOption namedKeyword
208HiLink namedLogOption namedKeyword
209HiLink namedCNOption namedKeyword
210HiLink namedQSKeywords Type
211HiLink namedCNKeywords Type
212HiLink namedLogCategory Type
213HiLink namedIPaddr Number
214HiLink namedDomain Identifier
215HiLink namedZoneOpt namedKeyword
216HiLink namedZoneType Type
217HiLink namedParenError Error
218HiLink namedEParenError Error
219HiLink namedIllegalDom Error
220HiLink namedIPerror Error
221HiLink namedSpareDot Error
222HiLink namedError Error
Bram Moolenaar071d4272004-06-13 20:20:40 +0000223
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200224delcommand HiLink
Bram Moolenaar071d4272004-06-13 20:20:40 +0000225
226let &cpo = s:save_cpo
227unlet s:save_cpo
228
229let b:current_syntax = "named"
230
231" vim: ts=17