#compdef snoop _snoop() { local -a t_opt exp t_opt=( "r"\:"time relative to first packet" "a"\:"absolute time" "d"\:"delta time - time since receiving previous packet" ) exp=( "ether" "ethertype" "host" "from" "to" "ip" "ip6" "arp" "rarp" "pppoe" "pppoed" "pppoes" "vlan" "vlan-id" "broadcast" "multicast" "bootp" "dhcp" "dhcp6" "apple" "decnet" "greater" "less" "udp" "tcp" "icmp" "icmp6" "ah" "esp" "net" "port" "rpc" "zone" "ldap" "gateway" "nofrag" ">" ">=" "<" "<=" "=" "!=" "and" "or" "not" "slp" "sctp" "ospf" ) _arguments \ '-a[generate audio signal on receiving packets]' \ '-c[quit after capturing maxcount packets]:maxcount' \ '-d[capture packets from specified device]:device:_net_interfaces' \ '-i[display packets previously captured to file]:file:_files' \ '-n[use file as IP address-to-name mapping table]:file:_files' \ '-o[save captured packets to file]:file:_files' \ '-p[display one or more packets from captured file]:first packet number [ , last packet number]' \ '-q[do not display packet counter when capturing to file]' \ '-r[do not resolve IP addresses to names]' \ '-s[truncate each packet after snaplen bytes]:snaplen' \ '-t[time-stamp presentation]:time-stamp mode:(($t_opt))' \ '-C[list code generated from filter expression]' \ '-D[display number of packets dropped on the summary line]' \ '-N[create IP-address-to-name mapping table file (used with -i)]' \ '-I[capture packets from specified interface]:interface:_net_interfaces' \ '-P[capture packets in non-promiscuous mode]' \ '-S[display size of the entire link layer frame in bytes]' \ '-V[verbose summary mode]' \ '-v[verbose mode]' \ '-x[display offset and length of packet in HEX and ASCII]:offset [ , length]' \ '*:expression:(($exp))' \ } _snoop "$@"