summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorTom Grennan <tgrennan@vyatta.com>2007-09-27 17:19:32 -0700
committerTom Grennan <tgrennan@vyatta.com>2007-09-27 17:19:32 -0700
commitb47d02e999233cb8b87b7dbc62a28a6a1701aa69 (patch)
tree6f3f631f738f3243b34b59daf93bdf7c3065544a /scripts
parentfa664ff802d73743bfa6bf37acdd2c66060b4fd9 (diff)
downloadvyatta-op-b47d02e999233cb8b87b7dbc62a28a6a1701aa69.tar.gz
vyatta-op-b47d02e999233cb8b87b7dbc62a28a6a1701aa69.zip
consolidate show_interfaces* scripts with vyatta-show-interfaces
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/show_interfaces74
-rwxr-xr-xscripts/show_interfaces_ethernet112
-rwxr-xr-xscripts/show_interfaces_loopback76
-rwxr-xr-xscripts/show_interfaces_statistics123
-rwxr-xr-xscripts/show_interfaces_summary55
-rwxr-xr-xscripts/show_interfaces_system75
-rwxr-xr-xscripts/show_interfaces_tunnel76
-rwxr-xr-xscripts/vyatta-show-interfaces195
8 files changed, 195 insertions, 591 deletions
diff --git a/scripts/show_interfaces b/scripts/show_interfaces
deleted file mode 100755
index 44b3c8c..0000000
--- a/scripts/show_interfaces
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/bin/bash
-# **** License ****
-# Version: VPL 1.0
-#
-# The contents of this file are subject to the Vyatta Public License
-# Version 1.0 ("License"); you may not use this file except in
-# compliance with the License. You may obtain a copy of the License at
-# http://www.vyatta.com/vpl
-#
-# Software distributed under the License is distributed on an "AS IS"
-# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
-# the License for the specific language governing rights and limitations
-# under the License.
-#
-# This code was originally developed by Vyatta, Inc.
-# Portions created by Vyatta are Copyright (C) 2007 Vyatta, Inc.
-# All Rights Reserved.
-#
-# Author: Tom Grennan
-# Date: 2007
-#
-# **** End License ****
-
-shopt -s extglob
-shopt -s nullglob
-
-test -f /etc/default/vyatta && source /etc/default/vyatta
-: ${vyatta_bindir:=/opt/vyatta/bin}
-
-declare progname=${0##*/}
-declare -a full_itfs=( /sys/class/net/+(eth|vmnet|lo|sit|wan)* )
-declare -a itfs
-
-_usage ()
-{
- cat <<-EOF
- $progname [ INTERFACE ]
- EOF
-}
-
-_error ()
-{
- ecode=$1
- shift
- echo $@
- if [ $ecode -eq 1 ] ; then
- echo
- _usage
- fi
- exit $ecode
-}
-
-if [ $# -gt 0 ] ; then
- if [[ $1 == --+(usage|help) ]] ; then
- _usage
- exit 0
- elif [[ $1 != +(eth|vmnet|lo|sit|wan)* ]] ; then
- _error 2 \""$1"\" is not an interface name\!
- elif ! test -d /sys/class/net/$1 ; then
- _error 2 $1: no such interface\!
- else
- itfs=( $1 )
- shift
- fi
-else
- itfs=( ${full_itfs[@]##*/} )
-fi
-
-$vyatta_bindir/show_interfaces_statistics ${itfs[@]}
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 4
-# End:
diff --git a/scripts/show_interfaces_ethernet b/scripts/show_interfaces_ethernet
deleted file mode 100755
index d592018..0000000
--- a/scripts/show_interfaces_ethernet
+++ /dev/null
@@ -1,112 +0,0 @@
-#!/bin/bash
-# **** License ****
-# Version: VPL 1.0
-#
-# The contents of this file are subject to the Vyatta Public License
-# Version 1.0 ("License"); you may not use this file except in
-# compliance with the License. You may obtain a copy of the License at
-# http://www.vyatta.com/vpl
-#
-# Software distributed under the License is distributed on an "AS IS"
-# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
-# the License for the specific language governing rights and limitations
-# under the License.
-#
-# This code was originally developed by Vyatta, Inc.
-# Portions created by Vyatta are Copyright (C) 2007 Vyatta, Inc.
-# All Rights Reserved.
-#
-# Author: Tom Grennan
-# Date: 2007
-#
-# **** End License ****
-
-test -f /etc/default/vyatta && source /etc/default/vyatta
-: ${vyatta_bindir:=/opt/vyatta/bin}
-
-shopt -s extglob
-shopt -s nullglob
-
-declare progname=${0##*/}
-declare -a itfs
-
-_usage ()
-{
- cat <<-EOF
- $progname
- $progname INTERFACE
- $progname INTERFACE physical
- $progname INTERFACE vif VIF
- $progname INTERFACE vif VIF physical
- EOF
-}
-
-_error ()
-{
- ecode=$1
- shift
- echo $@
- if [ $ecode -eq 1 ] ; then
- echo
- _usage
- fi
- exit $ecode
-}
-
-_show_interfaces_ethernet_physical ()
-{
- if type -t ethtool &>/dev/null ; then
- for eth ; do
- sudo ethtool $eth
- echo
- done
- fi
-}
-
-if [ $# -gt 0 ] ; then
- if [[ $1 == --+(usage|help) ]] ; then
- _usage
- exit 0
- elif [[ $1 != +(eth|vmnet)*([[:digit:]]) ]] ; then
- _error 2 \""$1"\" is not an ethernet device name\!
- elif ! test -d /sys/class/net/$1 ; then
- _error 2 \""$1"\" no such ethernet interface\!
- else
- eth=$1
- shift
- fi
- if [[ $# -gt 0 && $1 == vif ]] ; then
- shift
- if [ $# -gt 0 ] ; then
- vif=$1 ; shift
- itf=${eth}.${vif}
- test -d /sys/class/net/$itf || \
- _error 2 \""$vif"\" no such vif for $eth\!
- else
- _error 1 Missing VIF parameter\!
- fi
- else
- itf=$eth
- fi
- itfs=( $itf )
-else
- declare -a full_eths=( /sys/class/net/+(eth|vmnet)* )
- test ${#full_eths[@]} -gt 0 || \
- _error 2 No ethernet interfaces\!
- itfs=( ${full_eths[@]##*/} )
-fi
-
-case "$1" in
- physical ) cmd=_show_interfaces_ethernet_physical ;;
- "" | statistics ) cmd=$vyatta_bindir/show_interfaces_statistics ;;
- name ) cmd=echo ;;
- * ) _error 1 \""$1"\" is an invalid parameter\! ;;
-esac
-
-eval $cmd ${itfs[@]##*/}
-
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 4
-# End:
diff --git a/scripts/show_interfaces_loopback b/scripts/show_interfaces_loopback
deleted file mode 100755
index ab1bb5d..0000000
--- a/scripts/show_interfaces_loopback
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/bin/bash
-# **** License ****
-# Version: VPL 1.0
-#
-# The contents of this file are subject to the Vyatta Public License
-# Version 1.0 ("License"); you may not use this file except in
-# compliance with the License. You may obtain a copy of the License at
-# http://www.vyatta.com/vpl
-#
-# Software distributed under the License is distributed on an "AS IS"
-# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
-# the License for the specific language governing rights and limitations
-# under the License.
-#
-# This code was originally developed by Vyatta, Inc.
-# Portions created by Vyatta are Copyright (C) 2007 Vyatta, Inc.
-# All Rights Reserved.
-#
-# Author: Tom Grennan
-# Date: 2007
-#
-# **** End License ****
-
-test -f /etc/default/vyatta && source /etc/default/vyatta
-: ${vyatta_bindir:=/opt/vyatta/bin}
-
-shopt -s extglob
-shopt -s nullglob
-
-declare progname=${0##*/}
-declare -a itfs
-
-_usage ()
-{
- cat <<-EOF
- $progname [ INTERFACE ]
- EOF
-}
-
-_error ()
-{
- ecode=$1
- shift
- echo $@
- if [ $ecode -eq 1 ] ; then
- echo
- _usage
- fi
- exit $ecode
-}
-
-if [ $# -gt 0 ] ; then
- if [[ $1 == --+(usage|help) ]] ; then
- _usage
- exit 0
- elif [[ $1 != lo* ]] ; then
- _error 2 \""$1"\" is not a loopback device name\!
- elif ! test -d /sys/class/net/$1 ; then
- _error 2 $1: no such loopback interface\!
- else
- itfs=( $1 )
- shift
- fi
-else
- declare -a full_los=( /sys/class/net/lo* )
- test ${#full_los[@]} -gt 0 || \
- _error 2 No loopback interfaces\!
- itfs=( ${full_los[@]##*/} )
-fi
-
-$vyatta_bindir/show_interfaces_statistics ${itfs[@]}
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 4
-# End:
diff --git a/scripts/show_interfaces_statistics b/scripts/show_interfaces_statistics
deleted file mode 100755
index 40870cc..0000000
--- a/scripts/show_interfaces_statistics
+++ /dev/null
@@ -1,123 +0,0 @@
-#!/bin/bash
-# **** License ****
-# Version: VPL 1.0
-#
-# The contents of this file are subject to the Vyatta Public License
-# Version 1.0 ("License"); you may not use this file except in
-# compliance with the License. You may obtain a copy of the License at
-# http://www.vyatta.com/vpl
-#
-# Software distributed under the License is distributed on an "AS IS"
-# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
-# the License for the specific language governing rights and limitations
-# under the License.
-#
-# This code was originally developed by Vyatta, Inc.
-# Portions created by Vyatta are Copyright (C) 2007 Vyatta, Inc.
-# All Rights Reserved.
-#
-# Author: Tom Grennan
-# Date: 2007
-#
-# **** End License ****
-
-shopt -s extglob
-shopt -s nullglob
-
-declare progname=${0##*/}
-declare -a full_itfs=( /sys/class/net/+(eth|vmnet|wan|sit|lo)* )
-declare -a itfs
-declare -i rx_bytes rx_packets rx_errors rx_dropped rx_over_errors multicast
-declare -i tx_bytes tx_packets tx_errors tx_dropped tx_carrier_errors collisions
-declare -i rx_missed_errors rx_fifo_errors
-
-_usage ()
-{
- cat <<-EOF
- $progname [ INTERFACE ]
- EOF
-}
-
-_error ()
-{
- ecode=$1
- shift
- echo $@
- if [ $ecode -eq 1 ] ; then
- echo
- _usage
- fi
- exit $ecode
-}
-
-if [ $# -gt 0 ] ; then
- if [[ $1 == --+(usage|help) ]] ; then
- _usage
- exit 0
- else
- itfs=( $@ )
- fi
-else
- itfs=( ${full_itfs[@]##*/} )
-fi
-
-for itf in ${itfs[@]} ; do
- test -d /sys/class/net/$itf || \
- _error 2 $itf: no such interface\!
- for stat in \
- rx_bytes rx_packets rx_errors rx_dropped rx_over_errors multicast \
- tx_bytes tx_packets tx_errors tx_dropped tx_carrier_errors collisions
- do
- full_stat=/sys/class/net/${itf}/statistics/${stat}
- if [ -r $full_stat ] ; then
- eval $stat=$(cat $full_stat)
- else
- eval $stat=0
- fi
- done
- for stat in rx_missed_errors ; do
- full_stat=/sys/class/net/${itf}/statistics/${stat}
- if [ -r $full_stat ] ; then
- let $(( rx_dropped_errors += $(cat $full_stat) ))
- fi
- done
- for stat in rx_fifo_errors ; do
- full_stat=/sys/class/net/${itf}/statistics/${stat}
- if [ -r $full_stat ] ; then
- let $(( rx_over_errors += $(cat $full_stat) ))
- fi
- done
-
- printf -v rx_stats \
- '%10d %10d %10d %10d %10d %10d' \
- $rx_bytes \
- $rx_packets\
- $rx_errors \
- $rx_dropped \
- $rx_over_errors \
- $multicast
-
- printf -v tx_stats \
- '%10d %10d %10d %10d %10d %10d' \
- $tx_bytes \
- $tx_packets\
- $tx_errors \
- $tx_dropped \
- $tx_carrier_errors \
- $collisions
-
- ip -s addr show ${itf} | sed 's/^[0-9]*: //'
- cat <<-EOF
-
- RX: bytes packets errors dropped overrun mcast
- $rx_stats
- TX: bytes packets errors dropped carrier collisions
- $tx_stats
-
- EOF
-done
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 4
-# End:
diff --git a/scripts/show_interfaces_summary b/scripts/show_interfaces_summary
deleted file mode 100755
index 020ae2c..0000000
--- a/scripts/show_interfaces_summary
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/bin/bash
-# **** License ****
-# Version: VPL 1.0
-#
-# The contents of this file are subject to the Vyatta Public License
-# Version 1.0 ("License"); you may not use this file except in
-# compliance with the License. You may obtain a copy of the License at
-# http://www.vyatta.com/vpl
-#
-# Software distributed under the License is distributed on an "AS IS"
-# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
-# the License for the specific language governing rights and limitations
-# under the License.
-#
-# This code was originally developed by Vyatta, Inc.
-# Portions created by Vyatta are Copyright (C) 2007 Vyatta, Inc.
-# All Rights Reserved.
-#
-# Author: Tom Grennan
-# Date: 2007
-#
-# **** End License ****
-
-shopt -s extglob
-shopt -s nullglob
-
-declare -a full_itfs=( /sys/class/net/+(eth|vmnet|lo|sit|wan)* )
-declare -i rx_bytes rx_packets rx_errors rx_dropped rx_over_errors multicast
-declare -i tx_bytes tx_packets tx_errors tx_dropped tx_carrier_errors collisions
-
-printf '%10s %10s %10s %10s %10s\n' \
- interface packets bytes errors drops
-
-for itf in ${full_itfs[@]##*/} ; do
- for stat in \
- rx_bytes rx_packets rx_errors rx_dropped rx_over_errors multicast \
- tx_bytes tx_packets tx_errors tx_dropped tx_carrier_errors collisions
- do
- full_stat=/sys/class/net/${itf}/statistics/${stat}
- if [ -r $full_stat ] ; then
- eval $stat=$(cat $full_stat)
- else
- eval $stat=0
- fi
- done
- printf '%10s rx %10d %10d %10d %10d\n' \
- $itf $rx_packets $rx_bytes $rx_errors $rx_dropped
- printf '%10s tx %10d %10d %10d %10d\n' \
- '' $tx_packets $tx_bytes $tx_errors $tx_dropped
-done
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 4
-# End:
diff --git a/scripts/show_interfaces_system b/scripts/show_interfaces_system
deleted file mode 100755
index abc79d4..0000000
--- a/scripts/show_interfaces_system
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/bin/bash
-# **** License ****
-# Version: VPL 1.0
-#
-# The contents of this file are subject to the Vyatta Public License
-# Version 1.0 ("License"); you may not use this file except in
-# compliance with the License. You may obtain a copy of the License at
-# http://www.vyatta.com/vpl
-#
-# Software distributed under the License is distributed on an "AS IS"
-# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
-# the License for the specific language governing rights and limitations
-# under the License.
-#
-# This code was originally developed by Vyatta, Inc.
-# Portions created by Vyatta are Copyright (C) 2007 Vyatta, Inc.
-# All Rights Reserved.
-#
-# Author: Tom Grennan
-# Date: 2007
-#
-# **** End License ****
-
-test -f /etc/default/vyatta && source /etc/default/vyatta
-: ${vyatta_bindir:=/opt/vyatta/bin}
-
-shopt -s extglob
-shopt -s nullglob
-
-declare progname=${0##*/}
-declare -a full_itfs=( /sys/class/net/+(eth|vmnet|lo|sit|wan)* )
-declare -a itfs
-declare -i flags
-
-_usage ()
-{
- cat <<-EOF
- $progname [ enabled ]
- EOF
-}
-
-_error ()
-{
- ecode=$1
- shift
- echo $@
- if [ $ecode -eq 1 ] ; then
- _usage
- fi
- exit $ecode
-}
-
-if [ $# -gt 0 ] ; then
- if [[ $1 == --+(usage|help) ]] ; then
- _usage
- exit 0
- elif [[ $1 != enabled ]] ; then
- _error 1 Invalid option: $1
- else
- for itf in ${full_itfs[@]} ; do
- let -i flags="$(cat $itf/flags) & 1"
- [[ $flags -eq 1 ]] && \
- itfs[${#itfs[@]}]=${itf##*/}
- done
- fi
-else
- itfs=( ${full_itfs[@]##*/} )
-fi
-
-$vyatta_bindir/show_interfaces_statistics ${itfs[@]}
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 4
-# End:
diff --git a/scripts/show_interfaces_tunnel b/scripts/show_interfaces_tunnel
deleted file mode 100755
index d5df7b3..0000000
--- a/scripts/show_interfaces_tunnel
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/bin/bash
-# **** License ****
-# Version: VPL 1.0
-#
-# The contents of this file are subject to the Vyatta Public License
-# Version 1.0 ("License"); you may not use this file except in
-# compliance with the License. You may obtain a copy of the License at
-# http://www.vyatta.com/vpl
-#
-# Software distributed under the License is distributed on an "AS IS"
-# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
-# the License for the specific language governing rights and limitations
-# under the License.
-#
-# This code was originally developed by Vyatta, Inc.
-# Portions created by Vyatta are Copyright (C) 2007 Vyatta, Inc.
-# All Rights Reserved.
-#
-# Author: Tom Grennan
-# Date: 2007
-#
-# **** End License ****
-
-test -f /etc/default/vyatta && source /etc/default/vyatta
-: ${vyatta_bindir:=/opt/vyatta/bin}
-
-shopt -s extglob
-shopt -s nullglob
-
-declare progname=${0##*/}
-declare -a itfs
-
-_usage ()
-{
- cat <<-EOF
- $progname [ INTERFACE ]
- EOF
-}
-
-_error ()
-{
- ecode=$1
- shift
- echo $@
- if [ $ecode -eq 1 ] ; then
- echo
- _usage
- fi
- exit $ecode
-}
-
-if [ $# -gt 0 ] ; then
- if [[ $1 == --+(usage|help) ]] ; then
- _usage
- exit 0
- elif [[ $1 != sit* ]] ; then
- _error 2 \""$1"\" is not a tunnel device name\!
- elif ! test -d /sys/class/net/$1 ; then
- _error 2 $1: no such tunnel interface\!
- else
- itfs=( $1 )
- shift
- fi
-else
- declare -a full_sits=( /sys/class/net/sit* )
- test ${#full_sits[@]} -gt 0 || \
- _error 2 No tunnel interfaces\!
- itfs=( ${full_sits[@]##*/} )
-fi
-
-$vyatta_bindir/show_interfaces_statistics ${itfs[@]}
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 4
-# End:
diff --git a/scripts/vyatta-show-interfaces b/scripts/vyatta-show-interfaces
new file mode 100755
index 0000000..1a71c29
--- /dev/null
+++ b/scripts/vyatta-show-interfaces
@@ -0,0 +1,195 @@
+#!/bin/bash
+# **** License ****
+# Version: VPL 1.0
+#
+# The contents of this file are subject to the Vyatta Public License
+# Version 1.0 ("License"); you may not use this file except in
+# compliance with the License. You may obtain a copy of the License at
+# http://www.vyatta.com/vpl
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# This code was originally developed by Vyatta, Inc.
+# Portions created by Vyatta are Copyright (C) 2007 Vyatta, Inc.
+# All Rights Reserved.
+#
+# Author: Tom Grennan
+# Date: 2007
+#
+# **** End License ****
+
+shopt -s extglob
+shopt -s nullglob
+
+declare progname=${0##*/}
+declare -a full_itfs=( /sys/class/net/+(eth|vmnet|lo|sit|wan)* )
+declare -a itfs
+declare _do_show=_show_itf_stats
+
+_error ()
+{
+ ecode=$1
+ shift
+ echo $@
+ if [ $ecode -eq 1 ] ; then
+ echo
+ _usage
+ fi
+ exit $ecode
+}
+
+_show_itf_stats ()
+{
+ local -i rx_bytes rx_packets rx_errors rx_dropped rx_over_errors multicast
+ local -i tx_bytes tx_packets tx_errors tx_dropped tx_carrier_errors \
+ collisions
+ local -i rx_missed_errors rx_fifo_errors
+
+ for itf ; do
+ test -d /sys/class/net/$itf || \
+ _error 2 $itf: no such interface\!
+ for stat in \
+ rx_bytes rx_packets rx_errors rx_dropped rx_over_errors multicast \
+ tx_bytes tx_packets tx_errors tx_dropped tx_carrier_errors \
+ collisions
+ do
+ full_stat=/sys/class/net/${itf}/statistics/${stat}
+ if [ -r $full_stat ] ; then
+ eval $stat=$(cat $full_stat)
+ else
+ eval $stat=0
+ fi
+ done
+ for stat in rx_missed_errors ; do
+ full_stat=/sys/class/net/${itf}/statistics/${stat}
+ if [ -r $full_stat ] ; then
+ let $(( rx_dropped_errors += $(cat $full_stat) ))
+ fi
+ done
+ for stat in rx_fifo_errors ; do
+ full_stat=/sys/class/net/${itf}/statistics/${stat}
+ if [ -r $full_stat ] ; then
+ let $(( rx_over_errors += $(cat $full_stat) ))
+ fi
+ done
+
+ printf -v rx_stats \
+ '%10d %10d %10d %10d %10d %10d' \
+ $rx_bytes \
+ $rx_packets \
+ $rx_errors \
+ $rx_dropped \
+ $rx_over_errors \
+ $multicast
+
+ printf -v tx_stats \
+ '%10d %10d %10d %10d %10d %10d' \
+ $tx_bytes \
+ $tx_packets \
+ $tx_errors \
+ $tx_dropped \
+ $tx_carrier_errors \
+ $collisions
+
+ ip -s addr show ${itf} | sed 's/^[0-9]*: //'
+ cat <<-EOF
+
+ RX: bytes packets errors dropped overrun mcast
+ $rx_stats
+ TX: bytes packets errors dropped carrier collisions
+ $tx_stats
+
+ EOF
+ done
+}
+
+_show_itf_physical ()
+{
+ if type -t ethtool &>/dev/null ; then
+ for eth ; do
+ sudo ethtool $eth
+ echo
+ done
+ fi
+}
+
+_usage ()
+{
+ cat <<-EOF
+ $progname [ INTERFACE ]
+ $progname loopback [ INTERFACE ]
+ $progname tunnel [ INTERFACE ]
+ $progname system [ enabled ]
+ EOF
+}
+
+_add_itfs ()
+{
+ for itf ; do
+ if [[ $itf != +(eth|vmnet|lo|sit|wan)* ]] ; then
+ _error 2 \""$itf"\" is not an interface name\!
+ elif [ ! -d /sys/class/net/$itf ] ; then
+ _error 2 $itf: no such interface\!
+ else
+ itfs+=( $itf )
+ fi
+ done
+}
+
+if [ $# -gt 0 ] ; then
+ if [[ $1 == --+(usage|help) ]] ; then
+ _usage
+ exit 0
+ elif [[ $1 == +(ethernet|loopback|system|tunnel) ]] ; then
+ if [ $# -eq 1 ] ; then
+ case $1 in
+ ethernet )
+ full_itfs=( /sys/class/net/+(eth|vmnet)* ) ;;
+ loopback )
+ full_itfs=( /sys/class/net/lo* ) ;;
+ tunnel )
+ full_itfs=( /sys/class/net/sit* ) ;;
+ esac
+ itfs=( ${full_itfs[@]##*/} )
+ else
+ if [[ $1 == system ]] ; then
+ if [[ $2 == enabled ]] ; then
+ for full_itf in ${full_itfs[@]} ; do
+ let -i flags="$(cat $full_itf/flags) & 1"
+ [[ $flags -eq 1 ]] && _add_itfs ${full_itf##*/}
+ done
+ fi
+ else
+ _add_itfs $2
+ if [ $# -gt 2 ] ; then
+ if [[ $3 == physical ]] ; then
+ _do_show=_show_itf_physical
+ elif [[ $3 == vif ]] ; then
+ if [ $# -gt 3 ] ; then
+ itfs+=.$4
+ if [[ $# -gt 4 && $4 == physical ]] ; then
+ _do_show=_show_itf_physical
+ fi
+ else
+ _error 2 missing VIF number\!
+ fi
+ fi
+ fi
+ fi
+ fi
+ else
+ _add_itfs $*
+ fi
+else
+ itfs=( ${full_itfs[@]##*/} )
+fi
+
+eval $_do_show ${itfs[@]}
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 4
+# End: