summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2009-06-04 11:07:57 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2009-06-04 11:07:57 +0000
commite8a93f46a5ad378f7a2e9b21d9ae662ccff305db (patch)
tree6217dc6e7557a05e2063c9e1c20b16878f0c8dbd
parent35e80f207ee24aa00e5e47b894eb46d7f62541bf (diff)
downloadzsh-e8a93f46a5ad378f7a2e9b21d9ae662ccff305db.tar.gz
zsh-e8a93f46a5ad378f7a2e9b21d9ae662ccff305db.zip
Baptiste Daroussin: 27029: new pfctl completion
-rw-r--r--ChangeLog7
-rw-r--r--Completion/BSD/Command/.distfiles1
-rw-r--r--Completion/BSD/Command/_pfctl96
3 files changed, 103 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index a85417573..cc5e145d0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-06-04 Peter Stephenson <pws@csr.com>
+
+ * Baptiste Daroussin: 27029: Completion/BSD/Command/_pfctl: new
+ completion.
+
2009-06-02 Clint Adams <clint@zsh.org>
* Colin Watson: 27027: Completion/Unix/Command/_bzr:
@@ -11817,5 +11822,5 @@
*****************************************************
* This is used by the shell to define $ZSH_PATCHLEVEL
-* $Revision: 1.4709 $
+* $Revision: 1.4710 $
*****************************************************
diff --git a/Completion/BSD/Command/.distfiles b/Completion/BSD/Command/.distfiles
index 0fc183522..fb17240f8 100644
--- a/Completion/BSD/Command/.distfiles
+++ b/Completion/BSD/Command/.distfiles
@@ -7,6 +7,7 @@ _cvsup
_fetch
_freebsd-update
_kld
+_pfctl
_portaudit
_portlint
_portsnap
diff --git a/Completion/BSD/Command/_pfctl b/Completion/BSD/Command/_pfctl
new file mode 100644
index 000000000..bb185f463
--- /dev/null
+++ b/Completion/BSD/Command/_pfctl
@@ -0,0 +1,96 @@
+#compdef pfctl
+
+local pfctl_flush_modifiers pfctl_optimizer_level pfctl_show_modifiers pfctl_tables_command pfctl_debug_level
+
+pfctl_flush_modifiers=(
+ 'all:Flush all'
+ 'info:Flush the filter information'
+ 'nat:Flush the NAT rules'
+ 'osfp:Flush the passive operating system fingerprints'
+ 'queue:Flush the queue rules'
+ 'rules:Flush the filter rules'
+ 'state:Flush the stable table'
+ 'Sources:Flush the source tracking table'
+ 'Tables:Flush the tables'
+)
+
+pfctl_show_modifiers=(
+ 'nat:Show the currently loaded NAT rules'
+ 'queue:Show the currently loaded queue rules'
+ 'rules:Show the currently loaded filter rules'
+ 'Anchors:Show the currently loaded anchors directly attached to the main ruleset'
+ 'state:Show the contents of the state table'
+ 'Sources:Show the contents of the source tracking table'
+ 'info:Show filter information'
+ 'labels:Show per-rule statistics of filter rules with labels'
+ 'timeouts:Show the current global timeouts'
+ 'memory:Show the current pool memory hard limits'
+ 'Tables:Show the list of tables'
+ 'osfp:Show the list of operating system fingerprints'
+ 'Interfaces:Show the list of interfaces and interface drivers available to PF'
+ 'all:Show all except for the lists of interfaces and operating system fingerprints'
+)
+
+pfctl_optimizer_level=(
+ 'none:Disable the ruleset optimizer'
+ 'basic:Enable basic ruleset optimizations'
+ 'profile:Enable basic ruleset optimizations with profiling'
+)
+pfctl_tables_command=(
+ 'kill:Kill a table'
+ 'flush:Flush all addresses of a table'
+ 'add:Add one or more addresses in a table'
+ 'delete:Delete one or more addresses from a table'
+ 'expire:Delete addresses which had their statistics cleared more than number seconds ago'
+ 'replace:Replace the addresses of the table'
+ 'show:Show the content (addresses) of a table'
+ 'test:Test if the given addresses match a table'
+ 'zero:Clear all the statistics of a table'
+ 'load:Load only the table definitions from pf.conf(5)'
+)
+pfctl_debug_level=(
+ "none:Don\'t generate debug messages"
+ 'urgent:Generate debug messages only for serious errors'
+ 'misc:Generate debug messages for various errors'
+ 'loud:Generate debug messages for common conditions'
+)
+_iface() {
+ local pfctl_iface
+ pfctl_iface=($(pfctl -s Interfaces))
+ compadd $pfctl_iface
+}
+_tables() {
+ local pfctl_tables
+ pfctl_tables=($(pfctl -s Tables))
+ compadd $pfctl_tables
+}
+# TODO:
+# Missing -a
+#
+_arguments -s \
+ '-F[Flush the filter parameters specified by modifier]:modifier:(($pfctl_flush_modifiers))' \
+ '-A[Load only the queue rules present in the rule file]' \
+ '-D[Define macro to be set to value]:macro:' \
+ '-d[Disable the packet filter]' \
+ '-e[Enable the packet filter]' \
+ '-f[Load the rules contained in a file]:configuration file:_files' \
+ '-g[Include output helpful for debugging]' \
+ '-h[Help]' \
+ '-i[Restrict the operation to the given interface]:interface:_iface' \
+ '-K[Kill all of the source tracking entries originating from the specified host or network]:host or network:_hosts' \
+ '-k[Kill all of the state entries originating from the specified host or network]:host or network:_hosts' \
+ '-m[Merge in explicitly given options]' \
+ '-N[Load only the NAT rules present in the rule file]' \
+ '-n[Do not actually load rules, just parse them]' \
+ '-O[Load only the options present in the rule file]' \
+ '-o[Control the ruleset optimizer]:level:(($pfctl_optimizer_level))' \
+ '-p[Use the device file device instead of the default /dev/pf]:device:_files' \
+ '-q[Only print errors and warnings]' \
+ '-R[Load only the filter rules present in the rule file]' \
+ '-r[Perform reverse DNS lookups on states when displaying them]' \
+ '-s[Show the filter parameters specified by modifier]:modifier:(($pfctl_show_modifiers ))' \
+ '-T[Specify the command to apply to the table]:command:(($pfctl_tables_command))' \
+ '-t[Specify the name of the table]:table:_tables' \
+ '-v[Produce more verbose output]' \
+ '-x[Set the debug level]:debug level:(($pfctl_debug_level))' \
+ '-z[Clear per-rule statistics]'