about summary refs log tree commit diff
path: root/Completion/Solaris/Command/_flowadm
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Solaris/Command/_flowadm')
-rw-r--r--Completion/Solaris/Command/_flowadm110
1 files changed, 110 insertions, 0 deletions
diff --git a/Completion/Solaris/Command/_flowadm b/Completion/Solaris/Command/_flowadm
new file mode 100644
index 000000000..2a18ecc8d
--- /dev/null
+++ b/Completion/Solaris/Command/_flowadm
@@ -0,0 +1,110 @@
+#compdef flowadm
+# Synced with the Nevada build 171 man page
+
+_flowadm() {
+
+local -a subcmds tr props
+local expl
+
+_flowadm_flow(){
+	compadd "$@" - $(flowadm show-flow -p -o flow)
+}
+
+_flowadm_flow_int(){
+	compadd "$@" - $(flowadm show-flow -p -o flow)
+	compadd "$@" - $(dladm show-phys -p -o device)
+}
+
+subcmds=(
+	"show-flow"
+	"add-flow"
+	"remove-flow"
+	"set-flowprop"
+	"reset-flowprop"
+	"show-flowprop"
+)
+	
+tr=(
+	"tcp"
+	"udp"
+	"sctp"
+	"icmp"
+	"icmpv6"
+)
+
+props=(
+	"maxbw"
+)
+
+if [[ $service == "flowadm" ]]; then
+	_arguments -C -A "-*" \
+		'*::command:->subcmd' && return 0
+	
+	if (( CURRENT == 1 )); then
+		_wanted commands expl "flowadm subcommand" compadd -a subcmds
+		return
+	fi
+	service="$words[1]"
+	curcontext="${curcontext%:*}=$service:"
+fi
+case $service in
+
+	("show-flow")
+	_arguments -A "-*" \
+		'-o[specify field to display]:field:(flow link ipaddr proto port dsfield)' \
+		'-p[parsable output]' \
+		'-P[persistent flow property information]' \
+		- set1 \
+		'-l[display information for link]:link or flow:_net_interfaces' \
+		- set2 \
+		':flow:_flowadm_flow' \
+	;;
+
+	("add-flow")
+	_arguments -A "-*" \
+		'-t[temporary changes - do not persist across reboots]' \
+		'-R[alternate root dir]:alternate root:_files' \
+		'-l[specify link to which flow will be added]:link:_net_interfaces' \
+		'-a[specify attribute]:attribute:(local_ip= remote_ip= transport=$tr local_port= dsfield=)' \
+		'-p[set property value]:property:(maxbw=)' \
+	;;
+
+	("remove-flow")
+	_arguments -A "-*" \
+		'-t[temporary changes - do not persist across reboots]' \
+		'-R[alternate root dir]:alternate root:_files' \
+		- set1 \
+		'-l[specify link from which flow will be deleted]:link:_net_interfaces' \
+		- set2 \
+		':flow:_flowadm_flow' \
+	;;
+
+	("set-flowprop")
+	_arguments -A "-*" \
+		'-t[temporary changes - do not persist across reboots]' \
+		'-R[alternate root dir]:alternate root:_files' \
+		'-p[set property value]:property:(maxbw=)' \
+		':flow:_flowadm_flow' \
+	;;
+
+	("reset-flowprop")
+	_arguments -A "-*" \
+		'-t[temporary changes - do not persist across reboots]' \
+		'-R[alternate root dir]:alternate root:_files' \
+		'-p[set property value]:property:(maxbw=)' \
+		':flow:_flowadm_flow' \
+	;;
+
+	("show-flowprop")
+	_arguments -A "-*" \
+		'-c[parsable output (requires -o)]' \
+		'-l[specify link whose properties will be shown]:link:_net_interfaces' \
+		'-P[persistent flow property information]' \
+		'-p[property to show]:property:_values -s , "property" $props' \
+		':flow:_flowadm_flow' \
+	;;
+
+esac
+}
+
+_flowadm "$@"