#compdef dhclient dhclient3 local args case $OSTYPE in (open|free)bsd*) args+=( '-c+[specify configuration file]:file:_files' ) ;| freebsd*) args+=( '(-d)-b[immediately move to the background]' '-l+[specify leases file]:file:_files' '-p+[specify PID file]:file:_files' '-u[reject leases with unknown options]' '-q[quiet]' ) ;; openbsd*) args+=( '-i+[ignore values provided by leases for specified options]:options' "-n[don't configure any interfaces]" '-r[release the current lease back to the server it came from]' '-v[verbose log messages]' ) ;; *) # ISC implementation, used on Linux and NetBSD args=( '!(-6 -S -T -P -D -N)-4' '(-4 -s)-6[use the DHCPv6 protocol]' '-1[only try once to get a lease]' '(-d)-nw[daemonize immediately rather than wait for IP acquisition]' "-m[don't require responding ethernet address of dhcp server to match expectation]" '-v[verbose log messages]' "-w[don't exit if there are no interfaces found to configure]" "-n[don't configure any interfaces]" '-e[specify env vars to pass to child processes]:env var key value pairs' '-q[quiet]' '(-x)-r[release the current lease]' '(-r)-x[stop the running DHCP client without releaseing current lease]' '-p[specify port to transmit to / listen on]:port:_ports' '(-6)-s[transmit to specific target instead of broadcast]:server:_hosts' '-g[force giaddr field]:relay:_hosts' '-i[use a DUID with DHCPv4 clients]' '-I[use the standard DDNS scheme]' '(-)--version[display version number]' '(-4)-S[use Information-request to get only stateless configuration]' '(-4)*-T[ask for IPv6 temporary addresses]' '(-4)-P[enable IPv6 prefix delegation]' '-D[specify DUID selection method]:DUID:((LL\:link-layer LLT\:link-layer\ plus\ timestamp))' '(-4)-N[restore normal address query for IPv6]' '-lf[lease file]:lease file:_files' '(--no-pid)-pf[pid file]:pid file:_files' '(-pf)--no-pid[disable writing pid files]' '-cf[config file]:config file:_files' '-df[duid file]:duid file:_files' '-sf[script file]:script file:_files' '-4o6[DHCPv4 over DHCPv6 protocol]:port' "-nc[don't drop capabilities]" '-B[set the BOOTP broadcast flag in request packets]' '-C[specify dhcp-client-identifier option]:option' '(-F)-H[specify host-name option]:host name:_hosts' '(-H)-F[specify fully qualified hostname option]:host name:_hosts' '-V[specify vendor-class-identifier option]:option' '--request-options[specify list of options the client is to request from the server]:options' '--timeout[specify time after which dhclient will decide that no DHCP servers can be contacted]:timeout' '--dad-wait-time[specify maximum time to wait for duplicate address detection]:time (seconds)' '--prefix-len-hint[specify length to request when requesting new prefixes]:length' '--decline-wait-time[specify time an IPv4 client should wait between declining an address and issuing a discover]:time (seconds)' '--address-prefix-len[specify length of the prefix for IPv6 addresses]:length' '(-)'{--help,-h}'[display usage information]' ) ;; esac _arguments -s -S -A "-*" $args \ '(-b -nw)-d[remain as a foreground process]' \ ':interface:_net_interfaces'