Initial commit of Bird (routing daemon) syntax.
"----------------------------------------------------------------------
" Vim syntax file
" Language: Configuration for the Bird Internet Routing Daemon
" Bird Site: http://bird.network.cz/
" Maintainer: Mahlon E. Smith <mahlon@martini.nu>
" Version: $Id$
"----------------------------------------------------------------------
if has( "folding" )
setlocal foldmethod=syntax
endif
setlocal iskeyword+=;
syntax region birdInlineComment start=/#/ end=/$/
syntax region birdBlockComment start=/^#/ end=/^\([^#]\|$\)/me=e-1 fold
highlight link birdInlineComment Comment
highlight link birdBlockComment Comment
syntax region birdString start=/"/ skip=/\\"/ end=/"/
highlight link birdString String
syntax match birdNetworkAddressIP4 /\d\+\.\d\+\.\d\+\.\d\+\(\/\d\+\)\?/
highlight link birdNetworkAddressIP4 Character
syntax match birdNumber / \d\+\(;\|\s\|$\)/
highlight link birdNumber Number
syntax match birdOperator /\(+\|-\|*\|\/\|(\|)\|=\|<\|>\|!\|&&\|||\|\~\)/
highlight link birdOperator Operator
syntax region birdFunctionArguments start=/(/ end=/)/ oneline
syntax region birdFunction matchgroup=birdFunctionArguments start=/\S\+(/ end=/)/ oneline transparent
highlight link birdFunctionArguments Function
syntax cluster birdCommon contains=birdInlineComment,birdString,birdNetworkAddressIP4,birdNumber,birdOperator,birdFunction
syntax keyword birdGlobals define table eval
syntax match birdGlobals /\(router id\|listen bgp\) /
highlight link birdGlobals PreProc
syntax region birdLog start=/^log / end=/$/ keepend contains=@birdCommon,birdLogOptions,birdLogDirective,birdLogLevels
syntax keyword birdLogOptions syslog stderr contained
syntax keyword birdLogLevels all all; info warning error fatal trace remote auth bug contained
syntax keyword birdLogDirective log contained
highlight link birdLogOptions Identifier
highlight link birdLogDirective PreProc
highlight link birdLogLevels Special
highlight link birdLog Normal
syntax region birdDebug start=/debug / end=/$/ keepend contains=@birdCommon,birdDebugOptions,birdDebugDirective,birdDebugTypes
syntax keyword birdDebugOptions protocols commands contained
syntax keyword birdDebugTypes all all; off off; states routes filters interfaces events packets messages contained
syntax keyword birdDebugDirective debug contained
highlight link birdDebugOptions Identifier
highlight link birdDebugDirective PreProc
highlight link birdDebugTypes Special
highlight link birdDebug Normal
syntax region birdMrt start=/mrtdump / end=/$/ keepend contains=@birdCommon,birdMrtOptions,birdMrtDirective,birdMrtTypes
syntax keyword birdMrtOptions protocols contained
syntax keyword birdMrtTypes all all; off off; states messages contained
syntax keyword birdMrtDirective mrtdump contained
highlight link birdMrtOptions Identifier
highlight link birdMrtDirective PreProc
highlight link birdMrtTypes Special
highlight link birdMrt Normal
syntax cluster birdProtoShared contains=birdGlobals,birdDebug,birdMrt
syntax region birdTimeFormat start=/^timeformat / end=/$/ keepend contains=@birdCommon,birdTimeFormatDirective,birdTimeFormatTypes
syntax keyword birdTimeFormatTypes route protocol base log contained
syntax keyword birdTimeFormatDirective timeformat contained
highlight link birdTimeFormatDirective PreProc
highlight link birdTimeFormatTypes Identifier
highlight link birdTimeFormat Normal
syntax region birdImportExport start=/\(import\|export\) / end=/$/ contains=@birdCommon,birdImportExportDirective,birdImportExportTypes,birdFilter,birdFilterProtoConstants,birdFilterAttributes
syntax keyword birdImportExportDirective import export contained
syntax keyword birdImportExportTypes all all; none none; where contained
highlight link birdImportExportDirective Type
highlight link birdImportExportTypes Special
highlight link birdImportExport Normal
syntax region birdProtocol start=/^protocol / end=/^}/ contains=@birdCommon,@birdProtoShared,birdProtocolDirective,birdProtocolTypes,birdProtocolMisc,birdProtocolGlobals,birdImportExport,birdProtocolDisabled,birdProtocolBools,birdProtocolDate,birdFilter,birdProtocolAttributes fold
syntax keyword birdProtocolDirective protocol area interface networks stubnet neighbors contained
syntax match birdProtocolDirective /virtual link / contained
syntax keyword birdProtocolTypes bgp device direct kernel ospf pipe rip static contained
syntax keyword birdProtocolMisc as via self self; drop drop; ignore ignore; normal; large; broadcast; nonbroadcast nonbroadcast; pointopoint; none; simple; plain; md5; cryptographic; eligible; opaque; transparent; always; never; neighbor; multicast; reject; prohibit; contained
syntax keyword birdProtocolGlobals preference description id password type local neighbor multihop passive passive; persist persist; learn learn; primary rfc1583compat rfc1583compat; tick hidden hidden; summary summary; cost stub stub; hello poll retransmit priority wait authentication strict honor port infinity period mode route contained
syntax match birdProtocolGlobals /generate from\|generate to\|accept from\|accept to\|next hop\|missing lladdr\|source address\|rr client\|rr cluster id\|rs client\|enable route refresh\|interpret communities\|enable as4\|capabilities\|advertise ipv4\|route limit\|disable after error\|\(startup \)\?hold time\|\(scan\|keepalive\|timeout\|garbage\|connect retry\|start delay\|error \(wait\|forget\)\) time\|path metric\|prefer older\|default bgp_med\|default bgp_local_pref\|device routes\|\(kernel\|peer\) table\|stub cost\|dead\( count\)\?\|rx buffer/ contained
syntax match birdProtocolDate /\d\{2\}-\d\{2\}-\d\{4\} \d\{2\}:\d\{2\}:\d\{2\}/ contained
syntax keyword birdProtocolDisabled disabled disabled; contained
syntax keyword birdProtocolBools yes yes; no no; contained
syntax match birdProtocolAttributes /bgp_path\|bgp_local_pref\|bgp_med\|bgp_origin\|bgp_next_hop\|bgp_atomic_aggr\|bgp_community\|bgp_originator_id\|bgp_cluster_list\|ospf_metric1\|ospf_metric2\|ospf_tag\|rip_metric\|rip_tag/ contained
highlight link birdProtocolDirective PreProc
highlight link birdProtocolTypes Function
highlight link birdProtocolMisc String
highlight link birdProtocolGlobals Constant
highlight link birdProtocolDisabled Error
highlight link birdProtocolBools Boolean
highlight link birdProtocolDate Number
highlight link birdProtocolAttributes Identifier
highlight link birdProtocol Normal
syntax keyword birdInternalFunctions accept accept; reject reject; print printn return quitbird defined contained
syntax keyword birdInternalControls if then else case contained
syntax keyword birdInternalTypes bool int pair quad string ip prefix enum bgppath bgpmask clist contained
highlight link birdInternalFunctions Keyword
highlight link birdInternalControls Conditional
highlight link birdInternalTypes Type
" inline, named filters
syntax match birdFilter /filter.\+$/ contains=@birdCommon,birdFilterDirective
" filter definitions
syntax region birdFilter start=/^filter\(\s\+\S\+\)\?\s\+/ end=/^}$/ fold contains=@birdCommon,birdFilterDirective,birdFilterProtoConstants,birdInternalFunctions,birdFilterAttributes,birdInternalControls,birdInternalTypes,birdProtocolAttributes
" inline complex filters
syntax region birdFilter start=/filter\s\+{/ end=/};/ fold contains=@birdCommon,birdFilterDirective,birdFilterProtoConstants,birdInternalFunctions,birdFilterAttributes,birdInternalControls,birdInternalTypes,birdProtocolAttributes
syntax match birdFilterDirective /filter/ nextgroup=birdFilterName skipwhite contained
syntax match birdFilterName /[^{;]\+/ skipwhite contained
syntax match birdFilterProtoConstants /\(RTS_DUMMY\|RTS_STATIC\|RTS_INHERIT\|RTS_DEVICE\|RTS_STATIC_DEVICE\|RTS_REDIRECT\|RTS_RIP\|RTS_OSPF\|RTS_OSPF_IA\|RTS_OSPF_EXT1\|RTS_OSPF_EXT2\|RTS_BGP\|RTS_PIPE\)/ contained
syntax keyword birdFilterAttributes net scope preference from gw proto source cast dest contained
highlight link birdFilterDirective PreProc
highlight link birdFilterName Function
highlight link birdFilterProtoConstants Underlined
highlight link birdFilterAttributes Identifier
highlight link birdFilter Normal
syntax region birdFunctionDef start=/^function\(\s\+\S\+\)\?\s\+/ end=/^}$/ fold contains=@birdCommon,birdFunctionDirective,birdInternalFunctions,birdInternalControls,birdInternalTypes
syntax match birdFunctionDirective /function / nextgroup=birdFunctionName skipwhite contained
syntax match birdFunctionName /[^(]\+/ skipwhite contained
highlight link birdFunctionDirective PreProc
highlight link birdFunctionName Function
highlight link birdFunctionDef Normal
let b:current_syntax = "bird"