xref: /vim-8.2.3635/runtime/syntax/pf.vim (revision cf2d8dee)
1" pf syntax file
2" Language:        OpenBSD packet filter configuration (pf.conf)
3" Original Author: Camiel Dobbelaar <[email protected]>
4" Maintainer:      Lauri Tirkkonen <[email protected]>
5" Last Change:     2013 Apr 02
6
7" For version 5.x: Clear all syntax items
8" For version 6.x: Quit when a syntax file was already loaded
9if version < 600
10  syntax clear
11elseif exists("b:current_syntax")
12  finish
13endif
14
15setlocal foldmethod=syntax
16syn sync fromstart
17
18syn cluster	pfNotLS		contains=pfTodo,pfVarAssign
19syn keyword	pfCmd		altq anchor antispoof binat nat pass
20syn keyword	pfCmd		queue rdr scrub table set
21syn keyword	pfService	auth bgp domain finger ftp http https ident
22syn keyword	pfService	imap irc isakmp kerberos mail nameserver nfs
23syn keyword	pfService	nntp ntp pop3 portmap pptp rpcbind rsync smtp
24syn keyword	pfService	snmp snmptrap socks ssh sunrpc syslog telnet
25syn keyword	pfService	tftp www
26syn keyword	pfTodo		TODO XXX contained
27syn keyword	pfWildAddr	all any
28syn match	pfCmd		/block\s/
29syn match	pfComment	/#.*$/ contains=pfTodo
30syn match	pfCont		/\\$/
31syn match	pfErrClose	/}/
32syn match	pfIPv4		/\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/
33syn match	pfIPv6		/[a-fA-F0-9:]*::[a-fA-F0-9:.]*/
34syn match	pfIPv6		/[a-fA-F0-9:]\+:[a-fA-F0-9:]\+:[a-fA-F0-9:.]\+/
35syn match	pfNetmask	/\/\d\+/
36syn match	pfNum		/[a-zA-Z0-9_:.]\@<!\d\+[a-zA-Z0-9_:.]\@!/
37syn match	pfTable		/<\s*[a-zA-Z][a-zA-Z0-9_]*\s*>/
38syn match	pfVar		/$[a-zA-Z][a-zA-Z0-9_]*/
39syn match	pfVarAssign	/^\s*[a-zA-Z][a-zA-Z0-9_]*\s*=/me=e-1
40syn region	pfFold1		start=/^#\{1}>/ end=/^#\{1,3}>/me=s-1 transparent fold
41syn region	pfFold2		start=/^#\{2}>/ end=/^#\{2,3}>/me=s-1 transparent fold
42syn region	pfFold3		start=/^#\{3}>/ end=/^#\{3}>/me=s-1 transparent fold
43syn region	pfList		start=/{/ end=/}/ transparent contains=ALLBUT,pfErrClose,@pfNotLS
44syn region	pfString	start=/"/ end=/"/ transparent contains=ALLBUT,pfString,@pfNotLS
45syn region	pfString	start=/'/ end=/'/ transparent contains=ALLBUT,pfString,@pfNotLS
46
47" Define the default highlighting.
48" For version 5.7 and earlier: only when not done already
49" For version 5.8 and later: only when an item doesn't have highlighting yet
50if version >= 508 || !exists("did_c_syn_inits")
51  if version < 508
52    let did_c_syn_inits = 1
53    command -nargs=+ HiLink hi link <args>
54  else
55    command -nargs=+ HiLink hi def link <args>
56  endif
57
58  HiLink pfCmd		Statement
59  HiLink pfComment	Comment
60  HiLink pfCont		Statement
61  HiLink pfErrClose	Error
62  HiLink pfIPv4		Type
63  HiLink pfIPv6		Type
64  HiLink pfNetmask	Constant
65  HiLink pfNum		Constant
66  HiLink pfService	Constant
67  HiLink pfTable	Identifier
68  HiLink pfTodo		Todo
69  HiLink pfVar		Identifier
70  HiLink pfVarAssign	Identifier
71  HiLink pfWildAddr	Type
72
73  delcommand HiLink
74endif
75
76let b:current_syntax = "pf"
77