#compdef netstat _netstat() { local -a f_rules f_rules=( 'af\::specify address family: inet, inet6, unix, number' 'outif\::specify output interface: ifName, ifIndex, any, none' 'dst\::specify destination IP: ip-addr[/mask], any, none' 'flags\::select routes tagged with flags: [+ -]?[ABDGHLMSU]+' ) _arguments \ - set1 \ '-a[show state of all sockets, all routing tables or all interfaces]' \ '-R[show extended security attributes for sockets and routing tables]' \ '-n[do not resolve addresses to names]' \ '-v[verbose]' \ '-f[specify address family]:address family:(inet inet6 unix)' \ '-P[specify protocol]:protocol:(ip ipv6 icmp icmpv6 igmp udp tcp rawip)' \ - set2 \ '-r[show routing table]' \ '-f[filter routing table]:rule:(($f_rules))' \ '-a[show state of all sockets, all routing tables or all interfaces]' \ '-v[verbose]' \ '-n[do not resolve addresses to names]' \ '-R[show extended security attributes for sockets and routing tables]' \ - set3 \ '-g[show multicast group memberships]' \ '-n[do not resolve addresses to names]' \ '-v[verbose]' \ '-f[specify address family]:address family:(inet inet6 unix)' \ - set4 \ '-i[show state of interfaces]' \ '-a[show state of all sockets, all routing tables or all interfaces]' \ '-f[specify address family]:address family:(inet inet6 unix)' \ '-n[do not resolve addresses to names]' \ '-I[select interface]:interface:_net_interfaces' \ - set5 \ '-m[show STREAMS memory statistics]' \ '-v[verbose]' \ - set6 \ '-p[show net to media tables]' \ '-n[do not resolve addresses to names]' \ '-f[specify address family]:address family:(inet inet6 unix)' \ - set7 \ '-s[show per protocol statistics]' \ '-f[specify address family]:address family:(inet inet6 unix)' \ '-P[specify protocol]:protocol:(ip ipv6 icmp icmpv6 igmp udp tcp rawip)' \ - set8 \ '-M[show multicast routing tables]' \ '-f[specify address family]:address family:(inet inet6 unix)' \ '-n[do not resolve addresses to names]' \ '-s[show per protocol statistics]' \ - set9 \ '-D[show status of DHCP configured interfaces]' \ '-f[specify address family]:address family:(inet inet6 unix)' \ '-I[select interface]:interface:_net_interfaces' \ } _netstat "$@"