xref: /vim-8.2.3635/runtime/syntax/named.vim (revision 89bcfda6)
1" Vim syntax file
2" Language:	BIND configuration file
3" Maintainer:	Nick Hibma <[email protected]>
4" Last change:	2007-01-30
5" Filenames:	named.conf, rndc.conf
6" Location:	http://www.van-laarhoven.org/vim/syntax/named.vim
7"
8" Previously maintained by glory hump <[email protected]> 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"
14" quit when a syntax file was already loaded
15if exists("b:current_syntax")
16  finish
17endif
18
19syn case match
20
21setlocal iskeyword=.,-,48-58,A-Z,a-z,_
22
23syn sync match namedSync grouphere NONE "^(zone|controls|acl|key)"
24
25let s:save_cpo = &cpo
26set cpo-=C
27
28" BIND configuration file
29
30syn match	namedComment	"//.*"
31syn match	namedComment	"#.*"
32syn region	namedComment	start="/\*" end="\*/"
33syn region	namedString	start=/"/ end=/"/ contained
34" --- omitted trailing semicolon
35syn match	namedError	/[^;{#]$/
36
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
76" + 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
81" --- 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
103\		nextgroup=namedIPlist skipwhite
104syn keyword	namedOption	contained forward check-names
105syn keyword	namedOption	contained allow-query allow-transfer allow-recursion
106\		nextgroup=namedAML skipwhite
107syn 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
162syn keyword	namedZoneOpt	contained allow-update allow-query allow-transfer
163\		nextgroup=namedAML skipwhite
164syn keyword	namedZoneOpt	contained update-policy
165\		nextgroup=namedIntSection skipwhite
166
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
176syn region	namedAML	contained start=+{+ end=+};+ contains=namedParenError,namedComment,namedString
177
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.
191" Only when an item doesn't have highlighting yet
192command -nargs=+ HiLink hi def link <args>
193
194HiLink namedComment	Comment
195HiLink namedInclude	Include
196HiLink namedKeyword	Keyword
197HiLink namedIntKeyword	Keyword
198HiLink namedIdentifier	Identifier
199HiLink namedIntIdent	Identifier
200
201HiLink namedString	String
202HiLink namedBool	Type
203HiLink namedNotBool	Error
204HiLink namedNumber	Number
205HiLink namedNotNumber	Error
206
207HiLink 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
223
224delcommand HiLink
225
226let &cpo = s:save_cpo
227unlet s:save_cpo
228
229let b:current_syntax = "named"
230
231" vim: ts=17
232