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