#compdef dladm # Synced with the S11U1 build 19 man page _dladm_links() { compadd "$@" - $(dladm show-link -p -o link) } _dladm_devs() { compadd "$@" - $(dladm show-phys -p -o device) } _dladm_aggrs() { compadd "$@" - $(dladm show-aggr -p -o link) } _dladm_aggr_ports() { compadd "$@" - $(dladm show-aggr -p -x -o ports) } _dladm_vlans() { compadd "$@" - $(dladm show-vlan -p -o link) } _dladm_wifi_links() { compadd "$@" - $(dladm show-wifi -p -o link) } _dladm_wifi_nets() { compadd "$@" - ${(f)"$(dladm scan-wifi -p -o essid)"} } _dladm_secobjs() { compadd "$@" - ${(f)"$(dladm show-secobj -p -o object)"} } _dladm_ethers() { compadd "$@" - $(dladm show-ether -p -o link) } _dladm_vnics() { compadd "$@" - $(dladm show-vnic -p -o link) } _dladm_etherstubs() { compadd "$@" - $(dladm show-etherstub) } _dladm_bridges() { compadd "$@" - $(dladm show-bridge -p -o bridge) } _dladm_iptuns() { compadd "$@" - $(dladm show-iptun -p -o link) } _dladm_parts() { compadd "$@" - $(dladm show-part -p -o link) } _dladm_iblinks() { compadd "$@" - $(dladm show-ib -p -o link) } _dladm() { local context state line expl typeset -A opt_args local -a subcmds local -a linkprops linkprops_general linkprops_nonvlanvnic linkprops_wifi local -a linkprops_ether linkprops_ib linkprops_iptun local -a link_properties link_stats_properties vnic_properties local -a aggr_properties aggr_lacp_properties aggr_ext_properties local -a vlan_properties wifi_properties wifi_connect_properties local -a ether_properties linkprop_properties secobj_properties local -a bridge_properties bridge_stats_properties bridge_link_properties local -a bridge_link_stats_properties bridge_fwd_properties local -a bridge_fwd_properties bridge_trill_properties local -a iptun_properties tunnel_values part_properties ib_properties # TODO: some subcommands can take multiple comma-separated targets # TODO: some option sets may be different based on other commandline flags # TODO: some subcommands may take different arguments based on options subcmds=( "help" "show-ether" "show-ib" "show-usage" {"rename","show"}"-link" {"add","create","delete","modify","remove","show"}"-aggr" {"connect","disconnect","scan","show"}"-wifi" {"reset","set","show"}"-linkprop" {"create","delete","show"}"-secobj" {"create","delete","modify","show"}"-vlan" {"delete","show"}"-phys" {"create","delete","modify","show"}"-vnic" {"create","delete","show"}"-etherstub" {"create","modify","delete","add","remove","show"}"-bridge" {"create","modify","delete","show"}"-iptun" {"create","delete","show"}"-part" ) if [[ $service == "dladm" ]]; then _arguments -C -A "-*" \ '-\?[Help]' \ '*::command:->subcmd' && return 0 if (( CURRENT == 1 )); then _wanted commands expl "dladm subcommand" compadd -a subcmds return fi service="$words[1]" curcontext="${curcontext%:*}=$service:" fi link_properties=( "link" "zone" "class" "mtu" "state" "over" ) link_stats_properties=( "link" "ipackets" "rbytes" "ierrors" "opackets" "obytes" "oerrors" ) aggr_properties=( "link" "policy" "addrpolicy" "lacpactivity" "lacptimer" "mode" "flags" ) aggr_lacp_properties=( "link" "port" "aggregatable" "sync" "coll" "dist" "defaulted" "expired" ) aggr_ext_properties=( "link" "port" "speed" "duplex" "state" "address" "portstate" ) vlan_properties=( "link" "vid" "over" "flags" ) wifi_connect_properties=( "link" "essid" "bssid" "sec" "mode" "strength" "speed" "bsstype" ) wifi_properties=( $wifi_connect_properties "status" "auth" ) ether_properties=( "link" "ptype" "state" "auto" "speed-duplex" "pause" "rem_fault" ) linkprop_properties=( "link" "property" "value" "default" "possible" ) secobj_properties=( "object" "class" ) vnic_properties=( "link" "over" "speed" "macaddr" "macaddrtype" ) bridge_properties=( "bridge" "address" "priority" "bmaxage" "bhellotime" "bfwddelay" "forceproto" "tctime" "tccount" "tchange" "desroot" "rootcost" "rootport" "maxage" "hellotime" "fwddelay" "holdtime" ) bridge_stats_properties=( "bridge" "drops" "forwards" "mbcast" "recv" "sent" "unknown" ) bridge_link_properties=( "link" "index" "state" "uptime" "opercost" "operp2p" "operedge" "desroot" "descost" "desbridge" "desport" "tcack" ) bridge_link_stats_properties=( "link" "cfgbpdu" "tcnbpdu" "rstpbpdu" "txbpdu" "drops" "recv" "xmit" ) bridge_fwd_properties=( "dest" "age" "flags" "output" ) bridge_trill_properties=( "nick" "flags" "link" "nexthop" ) iptun_properties=( "link" "type" "flags" "local" "remote" ) tunnel_values=( "local:address/host: " "remote:address/host: " ) part_properties=( "link" "pkey" "over" "state" "flags" ) ib_properties=( "link" "hcaguid" "portguid" "port" "state" "pkeys" ) linkprops_general=( "autopush:streams modules:" "cos:value:(0 1 2 3 4 5 6 7)" "cpus:processors:" "cpus-effective" "etsbw-lcl:percentage:" "etsbw-lcl-advice" "etsbw-lcl-effective" "etsbw-rmt-effective" "lro:value:(off on auto)" "lro-effective" "mac-address:MAC address:" "maxbw:bandwith:" "pool:pools:" "pool-effective" "priority:priority:(high medium low)" "rxringsavail" "rxrings:value:" "rxhwclntavail" "txringsavail" "txrings:value:" "txhwclntavail" "forward:value:(0 1)" "stp_priority:value:" "stp_cost:value:" "stp_edge:value:(0 1)" "stp_p2p:value:(true false auto)" "stp_mcheck:value:(0 1)" "protection:value:(mac-nospoof ip-nospoof dhcp-nospoof restricted)" "vsi-mgrid:IPv6 address:" "vsi-mgrid-effective" "vsi-mgrid-enc:encoding:(oracle_v1 none)" "vsi-mgrid-enc-effective" "vsi-typeid:value:" "vsi-typeid-effective" "vsi-vers:value:" "vsi-vers-effective" "zone:value:_zones" ) linkprops_nonvlanvnic=( "default_tag:value:" "learn_decay:value:" "learn_limit:value:" "rxfanout:value:" "rxfanout-effective:value:" "stp:value:(0 1)" ) linkprops_wifi=( "channel:value:" "powermode:value:(off max fast)" "radio:value:(on off)" "speed:value:" ) linkprops_ether=( "duplex" "state" "adv_autoneg_cap" "adv_10gfdx_cap" "adv_1000fdx_cap" "adv_1000hdx_cap" "adv_100fdx_cap" "adv_100hdx_cap" "adv_10fdx_cap" "adv_10hdx_cap" "en_10gfdx_cap:value:(0 1)" "en_1000fdx_cap:value:(0 1)" "en_1000hdx_cap:value:(0 1)" "en_100fdx_cap:value:(0 1)" "en_100hdx_cap:value:(0 1)" "en_10fdx_cap:value:(0 1)" "en_10hdx_cap:value:(0 1)" "flowctrl:value:(auto no rx tx pfc bi)" "flowctrl-effective" "gvrp-timeout:value:" "mtu:value:" "ntcs" "pfcmap:value:" "pfcmap-lcl-effective" "pfcmap-rmt-effective" "speed" "tagmode:value:(normal vlanonly)" "vlan-announce:value:(off gvrp)" ) linkprops_ib=( "linkmode:value:(cm ud)" ) linkprops_iptun=( "hoplimit:value:" "encaplimit:value:" ) linkprops=( $linkprops_general $linkprops_wifi $linkprops_ether $linkprops_ib $linkprops_iptun ) case $service in ("help") _arguments ':subcommand:($subcmds)' ;; ("show-link") _arguments -A "-*" \ '(-P --persistent)'{-P,--persistent}'[Display persistent link configuration]' \ '(-p --parseable)'{-p,--parseable}'[Parseable output]' \ '-Z[Display ZONE column in output]' \ '-z[zone]:zonename:_values -s , "zone" $(zoneadm list)' \ - set1 \ '(-o --output)'{-o,--output}'[Properties to display]:property:_values -s , "property" $link_properties' \ - set2 \ '(-s --statistics)'{-s,--statistics}'[Display link statistics]' \ '(-i --interval)'{-i,--interval}'[Specify an interval]:interval:' \ '(-o --output)'{-o,--output}'[Properties to display]:property:_values -s , "property" $link_stats_properties' \ ':link name:_dladm_links' ;; ("rename-link") _arguments -A "-*" \ '-R[Root directory]:directory:_path_files -/' \ ':old link name:_dladm_links' \ ':new link name:' ;; ("show-phys") _arguments -A "-*" \ '-D[Show Data Center Bridging information]:featureset:(ets pfc)' \ '-H[Show hardware resource usage]' \ '-L[Display location information]' \ '(-P --persistent)'{-P,--persistent}'[Display persistent link configuration]' \ '(-p --parseable)'{-p,--parseable}'[Parseable output]' \ '-m[Display MAC address information]' \ '-Z[Display ZONE column in output]' \ '-z[zone]:zonename:_values -s , "zone" $(zoneadm list)' \ '(-s --statistics)'{-s,--statistics}'[Display link statistics]' \ '(-i --interval)'{-i,--interval}'[Specify an interval]:interval:' \ '(-o --output)'{-o,--output}'[Properties to display]:property:_values -s , "property" link media state speed duplex device' \ ':physical link name:_dladm_devs' ;; ("delete-phys") _arguments -A "-*" \ ':physical link name:_dladm_devs' ;; ("create-aggr") _arguments -A "-*" \ '(-t --temporary)'{-t,--temporary}'[Aggregation should be temporary]' \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ '(-l --link)'{-l,--link}'[Component link]:link:_dladm_links' \ '(-m --mode)'{-m,--mode}'[Aggregation mode]:mode:(dlmp trunk)' \ '(-P --policy)'{-P,--policy}'[Port selection policy]:policy:_values -s , "policy" L2 L3 L4' \ '(-L --lacp-mode)'{-L,--lacp-mode}'[LACP mode]:lacp mode:(off active passive)' \ '(-T --lacp-timer)'{-T,--lacp-timer}'[LACP timer]:lacp timer:(short long)' \ '(-u --unicast)'{-u,--unicast}'[Unicast address]:unicast address:' \ ':aggregate link name:' ;; ("modify-aggr") _arguments -A "-*" \ '(-t --temporary)'{-t,--temporary}'[Aggregation should be temporary]' \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ '(-l --link)'{-l,--link}'[Component link]:link:_dladm_links' \ '(-m --mode)'{-m,--mode}'[Aggregation mode]:mode:(dlmp trunk)' \ '(-P --policy)'{-P,--policy}'[Port selection policy]:policy:_values -s , "policy" L2 L3 L4' \ '(-L --lacp-mode)'{-L,--lacp-mode}'[LACP mode]:lacp mode:(off active passive)' \ '(-T --lacp-timer)'{-T,--lacp-timer}'[LACP timer]:lacp timer:(short long)' \ '(-u --unicast)'{-u,--unicast}'[Unicast address]:unicast address:' \ ':aggregate link name:_dladm_aggrs' ;; ("delete-aggr") _arguments -A "-*" \ '(-t --temporary)'{-t,--temporary}'[Deletion should be temporary]' \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ ':aggregate link name:_dladm_aggrs' ;; ("add-aggr") _arguments -A "-*" \ '(-t --temporary)'{-t,--temporary}'[Aggregation should be temporary]' \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ '(-l --link)'{-l,--link}'[Component link]:link:_dladm_links' \ ':aggregate link name:_dladm_aggrs' ;; ("remove-aggr") _arguments -A "-*" \ '(-t --temporary)'{-t,--temporary}'[Aggregation should be temporary]' \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ '(-l --link)'{-l,--link}'[Component link]:link:_dladm_aggr_ports' \ ':aggregate link name:_dladm_aggrs' ;; ("show-aggr") _arguments -A "-*" \ '(-P --persistent)'{-P,--persistent}'[Display persistent link configuration]' \ '(-p --parseable)'{-p,--parseable}'[Parseable output]' \ '(-s --statistics)'{-s,--statistics}'[Display link statistics]' \ '(-i --interval)'{-i,--interval}'[Specify an interval]:interval:' \ '-Z[Display ZONE column in output]' \ '-z[zone]:zonename:_values -s , "zone" $(zoneadm list)' \ ':aggregate link name:_dladm_links' \ - set1 \ '(-o --output)'{-o,--output}'[Properties to display]:property:_values -s , "property" $aggr_properties' \ - lacp \ '(-L --lacp)'{-L,--lacp}'[LACP information]' \ '(-o --output)'{-o,--output}'[Properties to display]:property:_values -s , "property" $aggr_lacp_properties' \ - extended \ '(-x --extended)'{-x,--extended}'[Extended information]' \ '(-o --output)'{-o,--output}'[Properties to display]:property:_values -s , "property" $aggr_ext_properties' ;; ("create-vlan") _arguments -A "-*" \ '(-t --temporary)'{-t,--temporary}'[VLAN should be temporary]' \ '(-f --force)'{-f,--force}'[Force VLAN creation]' \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ '(-l --link)'{-l,--link}'[Component link]:link:_dladm_links' \ '-v[VLAN ID]:id:' \ ':VLAN link name:' ;; ("delete-vlan") _arguments -A "-*" \ '(-t --temporary)'{-t,--temporary}'[Deletion should be temporary]' \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ ':VLAN link name:_dladm_vlans' ;; ("modify-vlan") _arguments -A "-*" \ '(-t --temporary)'{-t,--temporary}'[VLAN should be temporary]' \ '(-f --force)'{-f,--force}'[Force VLAN creation]' \ '(-R --root-dir)'{-R,--root-dir}'[Root directory]:directory:_path_files -/' \ '(-l --link)'{-l,--link}'[Component link]:link:_dladm_links' \ '-v[VLAN ID]:id:' \ - set1 \ '-L[Source link]:link:_dladm_links' \ - set2 \ ':VLAN link name:' ;; ("show-vlan") _arguments -A "-*" \ '(-P --persistent)'{-P,--persistent}'[Display persistent link configuration]' \ '(-p --parseable)'{-p,--parseable}'[Parseable output]' \ '(-o --output)'{-o,--output}'[Properties to display]:property:_values -s , "property" $vlan_properties' \ '-Z[Display ZONE column in output]' \ '-z[zone]:zonename:_values -s , "zone" $(zoneadm list)' \ ':VLAN link name:_dladm_vlans' ;; ("scan-wifi") _arguments -A "-*" \ '(-p --parseable)'{-p,--parseable}'[Parseable output]' \ '(-o --output)'{-o,--output}'[Properties to display]:property:_values -s , "property" $wifi_connect_properties' \ ':wireless link name:_dladm_wifi_links' ;; ("connect-wifi") _arguments -A "-*" \ '(-e --essid)'{-e,--essid}'[ESSID name]:network:_dladm_wifi_nets' \ '(-b --bsstype)'{-b,--bsstype}'[BSS type]:' \ '(-m --mode)'{-m,--mode}'[802.11 mode]:802.11 mode:(a b g n)' \ '(-k --key)'{-k,--key}'[Key name]:key:_dladm_secobjs' \ '(-s --sec)'{-s,--sec}'[Security mode]:security mode:(none wep wpa)' \ '(-a --auth)'{-a,--auth}'[Authentication mode]:authentication mode:(open shared)' \ '(-c --create-ibss)'{-c,--create-ibss}'[Create an ad-hoc network]' \ '(-T --timeout)'{-T,--timeout}'[Association timeout]:association timeout:(forever)' \ ':wireless link name:_dladm_wifi_links' ;; ("disconnect-wifi") _arguments -A "-*" \ - set1 \ '(-a --all-links)'{-a,--all-links}'[All links]' \ - set2 \ ':wireless link name:_dladm_wifi_links' ;; ("show-wifi") _arguments -A "-*" \ '(-p --parseable)'{-p,--parseable}'[Parseable output]' \ '(-o --output)'{-o,--output}'[Properties to display]:property:_values -s , "property" $wifi_properties' \ '-Z[Display ZONE column in output]' \ '-z[zone]:zonename:_values -s , "zone" $(zoneadm list)' \ ':wireless link name:_dladm_wifi_links' ;; ("show-ether") _arguments -A "-*" \ '(-p --parseable)'{-p,--parseable}'[Parseable output]' \ '(-x --extended)'{-x,--extended}'[Extended output]' \ '(-o --output)'{-o,--output}'[Properties to display]:property:_values -s , "property" $ether_properties' \ '-P[protocol]:protocol:(ecp vdp)' \ '-Z[Display ZONE column in output]' \ '-z[zone]:zonename:_values -s , "zone" $(zoneadm list)' \ ':ethernet link name:_dladm_ethers' ;; ("set-linkprop") _arguments -A "-*" \ '(-t --temporary)'{-t,--temporary}'[Change should be temporary]' \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ '(-p --prop)'{-p,--prop}'[Properties]:property:_values -s , "property" ${(M)linkprops\:#*\:*}' \ ':link name:_dladm_links' ;; ("reset-linkprop") _arguments -A "-*" \ '(-t --temporary)'{-t,--temporary}'[Change should be temporary]' \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ '(-p --prop)'{-p,--prop}'[Properties]:property:_values -s , "property" ${${(M)linkprops\:#*\:*}%%\:*}' \ ':link name:_dladm_links' ;; ("show-linkprop") _arguments -A "-*" \ '(-P --persistent)'{-P,--persistent}'[Display persistent link properties]' \ '(-c --parseable)'{-c,--parseable}'[Parseable output]' \ '(-o --output)'{-o,--output}'[Properties to display]:property:_values -s , "property" $linkprop_properties' \ '(-p --prop)'{-p,--prop}'[Properties]:property:_values -s , "property" ${linkprops%%\:*}' \ '-Z[Display ZONE column in output]' \ '-z[zone]:zonename:_values -s , "zone" $(zoneadm list)' \ ':link name:_dladm_links' ;; ("create-secobj") _arguments -A "-*" \ '(-t --temporary)'{-t,--temporary}'[Creation should be temporary]' \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ '(-c --class)'{-c,--class}'[Class]:class:(wep wpa)' \ '(-f --file)'{-f,--file}'[File containing object value]:file:_path_files' \ ':object name:' ;; ("delete-secobj") _arguments -A "-*" \ '(-t --temporary)'{-t,--temporary}'[Deletion should be temporary]' \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ ':object name:_dladm_secobjs' ;; ("show-secobj") _arguments -A "-*" \ '(-P --persistent)'{-P,--persistent}'[Display persistent object information]' \ '(-p --parseable)'{-p,--parseable}'[Parseable output]' \ '(-o --output)'{-o,--output}'[Properties to display]:property:_values -s , "property" $secobj_properties' \ ':object name:_dladm_secobjs' ;; ("create-vnic") # TODO: MAC address completion could be richer _arguments -A "-*" \ '(-t --temporary)'{-t,--temporary}'[Creation should be temporary]' \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ '(-l --link)'{-l,--link}'[Component link]:link:_dladm_links' \ '(-m --mac-address)'{-m,--mac-address}'[MAC address]:address:(factory random auto vrrp)' \ '-v[VLAN ID]:id:' \ '(-p --prop)'{-p,--prop}'[Property values]:value:_values -s , "property" ${(M)linkprops_general\:#*\:*}' \ ':VNIC name:' ;; ("delete-vnic") _arguments -A "-*" \ '(-t --temporary)'{-t,--temporary}'[Deletion should be temporary]' \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ ':VNIC name:_dladm_vnics' ;; ("modify-vnic") # TODO: MAC address completion could be richer _arguments -A "-*" \ '(-t --temporary)'{-t,--temporary}'[Creation should be temporary]' \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ '(-l --link)'{-l,--link}'[Component link]:link:_dladm_links' \ '(-m --mac-address)'{-m,--mac-address}'[MAC address]:address:(factory random auto vrrp)' \ '-v[VLAN ID]:id:' \ '(-p --prop)'{-p,--prop}'[Property values]:value:_values -s , "property" ${(M)linkprops_general\:#*\:*}' \ - set1 \ '-L[Source link]:link:_dladm_links' \ - set2 \ ':VNIC name:' ;; ("show-vnic") _arguments -A "-*" \ '(-P --persistent)'{-P,--persistent}'[Display persistent object information]' \ '(-p --parseable)'{-p,--parseable}'[Parseable output]' \ '(-o --output)'{-o,--output}'[Properties to display]:property:_values -s , "property" $vnic_properties' \ '(-l --link)'{-l,--link}'[Limit to VNICs on link]:link:_dladm_links' \ '(-s --statistics)'{-s,--statistics}'[Display VNIC statistics]' \ '(-i --interval)'{-i,--interval}'[Specify an interval]:interval:' \ '-Z[Display ZONE column in output]' \ '-z[zone]:zonename:_values -s , "zone" $(zoneadm list)' \ ':VNIC name:_dladm_vnics' ;; ("create-etherstub") _arguments -A "-*" \ '(-t --temporary)'{-t,--temporary}'[Creation should be temporary]' \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ ':etherstub name:' ;; ("delete-etherstub") _arguments -A "-*" \ '(-t --temporary)'{-t,--temporary}'[Deletion should be temporary]' \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ ':etherstub name:_dladm_etherstubs' ;; ("show-etherstub") _arguments -A "-*" \ '-Z[Display ZONE column in output]' \ '-z[zone]:zonename:_values -s , "zone" $(zoneadm list)' \ ':etherstub name:_dladm_etherstubs' ;; ("show-usage") _arguments -A "-*" \ '(-f --file)'{-f,--file}'[Read records from file]:file:_path_files' \ '(-F --format)'{-F,--format}'[Plotfile format]:plotfile format:(gnuplot)' \ '(-p --plot)'{-p,--plot}'[Write plot to file]:' \ '(-e --start)'{-e,--start}'[Start time]:date/time (MM/DD/YYYY,hh\:mm\:ss)' \ '(-s --stop)'{-s,--stop}'[Stop time]:date/time (MM/DD/YYYY,hh\:mm\:ss)' \ ':link name:_dladm_links' ;; ("create-bridge") _arguments -A "-*" \ '(-P --protect)'{-P,--protect}'[Specify a protection method]:protection method:(stp trill)' \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ '(-p --priority)'{-p,--priority}'[Specify the bridge priority]:value' \ '(-m --max-age)'{-m,--max-age}'[Specify the max age for config info]:value' \ '(-h --hello-time)'{-h,--hello-time}'[Specify the hello time]:value' \ '(-d --forward-delay)'{-d,--forward-delay}'[Specify the forward delay]:value' \ '(-f --force-protocol)'{-f,--force-protocol}'[Specify forced maximum supported protocol]:value' \ '*'{-l,--link}'[Specify link to add]:link:_dladm_links' \ ':bridge name:' ;; ("modify-bridge") _arguments -A "-*" \ '(-P --protect)'{-P,--protect}'[Specify a protection method]:protection method:(stp trill)' \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ '(-p --priority)'{-p,--priority}'[Specify the bridge priority]:value' \ '(-m --max-age)'{-m,--max-age}'[Specify the max age for config info]:value' \ '(-h --hello-time)'{-h,--hello-time}'[Specify the hello time]:value' \ '(-d --forward-delay)'{-d,--forward-delay}'[Specify the forward delay]:value' \ '(-f --force-protocol)'{-f,--force-protocol}'[Specify forced maximum supported protocol]:value' \ ':bridge name:_dladm_bridges' ;; ("delete-bridge") _arguments -A "-*" \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ ':bridge name:_dladm_bridges' ;; ("add-bridge"|"remove-bridge") _arguments -A "-*" \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ '*'{-l,--link}'[Specify link to add]:link:_dladm_links' \ ':bridge name:_dladm_bridges' ;; ("show-bridge") # XXX $bridge_stats_properties get added into -o completions for set1 # XXX $bridge_link_stats_properties get added into -o completions for set3 _arguments -A "-*" \ '(-p --parseable)'{-p,--parseable}'[Parseable output]' \ - set1 \ '(-o --output)'{-o,--output}'[Properties to display]:property:_values -s , "property" $bridge_properties' \ - set2 \ '(-s --statistics)'{-s,--statistics}'[Display statistics]' \ '(-i --interval)'{-i,--interval}'[Specify an interval]:seconds' \ '(-o --output)'{-o,--output}'[Properties to display]:property:_values -s , "property" $bridge_stats_properties' \ - set3 \ '(-l --link)'{-l,--link}'[Display link status or statistics]' \ '(-o --output)'{-o,--output}'[Properties to display]:property:_values -s , "property" $bridge_link_properties' \ - set4 \ '(-s --statistics)'{-s,--statistics}'[Display statistics]' \ '(-l --link)'{-l,--link}'[Display link status or statistics]' \ '(-i --interval)'{-i,--interval}'[Specify an interval]:seconds' \ '(-o --output)'{-o,--output}'[Properties to display]:property:_values -s , "property" $bridge_link_stats_properties' \ - set5 \ '(-f --forwarding)'{-f,--forwarding}'[Display forwarding entries]' \ '(-o --output)'{-o,--output}'[Properties to display]:property:_values -s , "property" $bridge_fwd_properties' \ - set6 \ '(-t --trill)'{-t,--trill}'[Display TRILL nickname entries]' \ '(-o --output)'{-o,--output}'[Properties to display]:property:_values -s , "property" $bridge_trill_properties' \ ':bridge name:_dladm_bridges' ;; ("create-iptun") _arguments -A "-*" \ '(-t --temporary)'{-t,--temporary}'[Temporary tunnel]' \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ '(-T --type)'{-T,--type}'[Tunnel type]:tunnel type:(ipv4 ipv6 6to4)' \ '(-a --address)'{-a,--address}'[Endpoint addresses]:address/host:_values -s , "address/host" $tunnel_values' \ ':tunnel name:' ;; ("modify-iptun") _arguments -A "-*" \ '(-t --temporary)'{-t,--temporary}'[Temporary modification]' \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ '(-a --address)'{-a,--address}'[Endpoint addresses]:address/host:_values -s , "address/host" $tunnel_values' \ ':tunnel name:_dladm_iptuns' ;; ("delete-iptun") _arguments -A "-*" \ '(-t --temporary)'{-t,--temporary}'[Temporary deletion]' \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ ':tunnel name:_dladm_iptuns' ;; ("show-iptun") _arguments -A "-*" \ '(-P --persistent)'{-P,--persistent}'[Display persistent tunnel configuration]' \ '(-p --parseable)'{-p,--parseable}'[Parseable output]' \ '(-o --output)'{-o,--output}'[Properties to display]:property:_values -s , "property" $iptun_properties' \ '-Z[Display ZONE column in output]' \ '-z[zone]:zonename:_values -s , "zone" $(zoneadm list)' \ ':tunnel name:_dladm_iptuns' ;; ("create-part") _arguments -A "-*" \ '(-t --temporary)'{-t,--temporary}'[Temporary partition]' \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ '(-f --force)'{-f,--force}'[Force partition creation]' \ '(-l --link)'{-l,--link}'[IP-over-IB physical link name]:IB link:_dladm_iblinks' \ '(-p --prop)'{-p,--prop}'[Set link properties]:link property:_values -s , "property" ${(M)linkprops_nonvlanvnic\:#*\:*} ${(M)linkprops_general\:#*\:*}' \ '(-P --pkey)'{-P,--pkey}'[Set parition key]:hex number:' \ ':partition link name:' ;; ("delete-part") _arguments -A "-*" \ '(-t --temporary)'{-t,--temporary}'[Temporary deletion]' \ '(-R --root)'{-R,--root}'[Root directory]:directory:_path_files -/' \ ':link name:_dladm_parts' ;; ("show-part") _arguments -A "-*" \ '(-P --persistent)'{-P,--persistent}'[Display persistent partition configuration]' \ '(-p --parseable)'{-p,--parseable}'[Parseable output]' \ '(-l --link)'{-l,--link}'[Information for this link]:link name:_dladm_iblinks' \ '(-o --output)'{-o,--output}'[Properties to display]:property:_values -s , "property" $part_properties' \ ':partition link name:_dladm_parts' ;; ("show-ib") _arguments -A "-*" \ '(-P --persistent)'{-P,--persistent}'[Display persistent partition configuration]' \ '(-p --parseable)'{-p,--parseable}'[Parseable output]' \ '(-o --output)'{-o,--output}'[Properties to display]:property:_values -s , "property" $ib_properties' \ ':IB link name:_dladm_iblinks' ;; (*) _message "unknown dladm subcommand: $service" ;; esac } _dladm "$@"