mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-11-03 19:11:34 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			92 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
#compdef tcpdump
 | 
						|
 | 
						|
typeset -A opt_args
 | 
						|
 | 
						|
_interfaces () {
 | 
						|
	_wanted interfaces expl 'network interface' \
 | 
						|
		_net_interfaces
 | 
						|
	_values "Pseudo-device that captures on all interfaces" "any"
 | 
						|
}
 | 
						|
 | 
						|
_esp_secrets () {
 | 
						|
	_values -S : 'ESP algorithm' \
 | 
						|
		'des-cbc:secret' \
 | 
						|
		'3des-cbc:secret' \
 | 
						|
		'blowfish-cbc:secret' \
 | 
						|
		'rc3-cbc:secret' \
 | 
						|
		'cast128-cbc:secret' \
 | 
						|
		none
 | 
						|
}
 | 
						|
 | 
						|
_packet_types () {
 | 
						|
	_values 'Packets type' \
 | 
						|
		'aodv[Ad-hoc On-demand Distance Vector protocol]' \
 | 
						|
		'cnfp[Cisco NetFlow protocol]' \
 | 
						|
		'rpc[Remote Procedure Call]' \
 | 
						|
		'rtp[Real-Time  Applications  protocol]' \
 | 
						|
		'rtcp[Real-Time Applications control protocol]' \
 | 
						|
		'snmp[Simple Network Management Protocol]' \
 | 
						|
		'tftp[Trivial File Transfer Protocol]' \
 | 
						|
		'vat[Visual Audio Tool]' \
 | 
						|
		'wb[distributed White Board]'
 | 
						|
}
 | 
						|
 | 
						|
_data_link_types () {
 | 
						|
	if (( $+opt_args[-i] )); then
 | 
						|
		vals=( ${${${(s:  :)"$(_call_program data-link-types tcpdump -L -i $opt_args[-i] 2>&1)"}[2,-1]}/ /:} )
 | 
						|
		_describe -t data-link-types "data link types ($opt_args[-i])" vals && ret=0
 | 
						|
	else
 | 
						|
		_values "Data link types (general)" \
 | 
						|
			"EN10MB" \
 | 
						|
			"LINUX_SLL"
 | 
						|
	fi
 | 
						|
}
 | 
						|
 | 
						|
_bpf_filter () {
 | 
						|
}
 | 
						|
 | 
						|
_arguments \
 | 
						|
  '()-A[print each packet in ASCII]' \
 | 
						|
  -c'[exit after receiving specified number of packets]:number of packets' \
 | 
						|
  -C'[specify output file size in MB (10e6 bytes)]:output file size' \
 | 
						|
  '(-ddd)-d[dump the compiled packet-matching code in a human readable form]' \
 | 
						|
  '(-ddd)-dd[dump packet-matching code as a C program fragment]' \
 | 
						|
  '(-d -dd)-ddd[dump packet-matching code as decimal numbers (preceded with a count)]' \
 | 
						|
  '(-A -c -C -d -dd -ddd -e -E -f -F -i -l -L -m -M -n -N -O -p -q -R -r -S -s -T -t -tt -ttt -tttt -u -U -v -vv -vvv -w -W -x -xx -X -XX -y -Z *)'-D'[print the list of the network interfaces available on the system]' \
 | 
						|
  -e'[print the link-level header on each dump line]' \
 | 
						|
  -E"[decrypting IPsec ESP packets]:spi@ipaddr::algo\:secret:_esp_secrets" \
 | 
						|
  -f"[print 'foreign' IPv4 addresses numerically]" \
 | 
						|
  -F'[input file for the filter expression]:filter expression file:_files' \
 | 
						|
  -i'[interface]:interface:_interfaces' \
 | 
						|
  -l'[make stdout line buffered]' \
 | 
						|
  '(-A -c -C -d -dd -ddd -e -E -f -F -l -D -m -M -n -N -O -p -q -R -r -S -s -T -t -tt -ttt -tttt -u -U -v -vv -vvv -w -W -x -xx -X -XX -y -Z *)'-L'[list the known data link types for the interface]' \
 | 
						|
  '*-m[load SMI MIB module definitions]:SMI MIB module definitions:_files' \
 | 
						|
  -M'[shared secret for validating the digests in TCP segments with the TCP-MD5 option]:secret' \
 | 
						|
  -n"[don't convert addresses to names]" \
 | 
						|
  -N"[don't print domain name qualification of host names]" \
 | 
						|
  -O"[don't run the packet-matching code optimizer]" \
 | 
						|
  -p"[don't put the interface into promiscuous mode]" \
 | 
						|
  -q'[quick (quiet?) output]' \
 | 
						|
  -R'[assume ESP/AH packets to be based on old specification (RFC1825 to RFC1829)]' \
 | 
						|
  -r'[read packets from file]:input file:_files' \
 | 
						|
  -S'[print absolute TCP sequence numbers]' \
 | 
						|
  -s'[specify number of bytes of data to snarf from each packet]:number of bytes to snap' \
 | 
						|
  -T'[interpret captured packets as specified type]:packet type:_packet_types' \
 | 
						|
  "(-tttt)-t[don't print a timestamp on each dump line]" \
 | 
						|
  '(-ttt -tttt)-tt[print an unformatted timestamp on each dump line]' \
 | 
						|
  '(-tt -tttt)-ttt[print a delta (in micro-seconds) between current and previous line on each dump line]' \
 | 
						|
  '(-t -tt -ttt)-tttt[print a timestamp in default format proceeded by date on each dump line]' \
 | 
						|
  -u'[print undecoded NFS handles]' \
 | 
						|
  -U'[make output packet-buffered when saving to file (-w)]' \
 | 
						|
  '(-vvv)-v[slightly more verbose output]' \
 | 
						|
  '(-vvv)-vv[more verbose output]' \
 | 
						|
  '(-v -vv)-vvv[most verbose output]' \
 | 
						|
  -w'[write the raw packets to file]:output file:_files' \
 | 
						|
  -W'[limit the number of created files (-C)]:number of files' \
 | 
						|
  -x'[print each packet (minus its link level header) in hex]' \
 | 
						|
  '(-x)-xx[print each packet, including its link level header, in hex]' \
 | 
						|
  -X'[print each packet (minus its link level header) in hex and ASCII]' \
 | 
						|
  '(-X)-XX[print each packet, including its link level header, in hex and ASCII]' \
 | 
						|
  -y'[set the data link type to use while capturing packets]:data link type:_data_link_types' \
 | 
						|
  -Z'[drops privileges (if root) and changes user ID (along with primary group)]:user:_users' \
 | 
						|
  '*:BPF filter:_bpf_filter'
 |