1" Vim syntax file 2" 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 7" 8" 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" 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 30if version >= 600 31 syn sync match namedSync grouphere NONE "^(zone|controls|acl|key)" 32endif 33 34let s:save_cpo = &cpo 35set cpo-=C 36 37" BIND configuration file 38 39syn match namedComment "//.*" 40syn match namedComment "#.*" 41syn region namedComment start="/\*" end="\*/" 42syn region namedString start=/"/ end=/"/ contained 43" --- omitted trailing semicolon 44syn match namedError /[^;{#]$/ 45 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 85" + 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 90" --- 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 112\ nextgroup=namedIPlist skipwhite 113syn keyword namedOption contained forward check-names 114syn keyword namedOption contained allow-query allow-transfer allow-recursion 115\ nextgroup=namedAML skipwhite 116syn 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 171syn keyword namedZoneOpt contained allow-update allow-query allow-transfer 172\ nextgroup=namedAML skipwhite 173syn keyword namedZoneOpt contained update-policy 174\ nextgroup=namedIntSection skipwhite 175 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 185syn region namedAML contained start=+{+ end=+};+ contains=namedParenError,namedComment,namedString 186 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 229 HiLink namedIPaddr Number 230 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 249