1" Vim syntax file 2" Language: BIND configuration file 3" Maintainer: Nick Hibma <nick@van-laarhoven.org> 4" Last Change: 2019 Oct 08 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" 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,namedComment 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 192 193hi def link namedComment Comment 194hi def link namedInclude Include 195hi def link namedKeyword Keyword 196hi def link namedIntKeyword Keyword 197hi def link namedIdentifier Identifier 198hi def link namedIntIdent Identifier 199 200hi def link namedString String 201hi def link namedBool Type 202hi def link namedNotBool Error 203hi def link namedNumber Number 204hi def link namedNotNumber Error 205 206hi def link namedOption namedKeyword 207hi def link namedLogOption namedKeyword 208hi def link namedCNOption namedKeyword 209hi def link namedQSKeywords Type 210hi def link namedCNKeywords Type 211hi def link namedLogCategory Type 212hi def link namedIPaddr Number 213hi def link namedDomain Identifier 214hi def link namedZoneOpt namedKeyword 215hi def link namedZoneType Type 216hi def link namedParenError Error 217hi def link namedEParenError Error 218hi def link namedIllegalDom Error 219hi def link namedIPerror Error 220hi def link namedSpareDot Error 221hi def link namedError Error 222 223 224let &cpo = s:save_cpo 225unlet s:save_cpo 226 227let b:current_syntax = "named" 228 229" vim: ts=17 230