summaryrefslogtreecommitdiff
path: root/scripts/show_interfaces_ethernet
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/show_interfaces_ethernet')
-rwxr-xr-xscripts/show_interfaces_ethernet112
1 files changed, 112 insertions, 0 deletions
diff --git a/scripts/show_interfaces_ethernet b/scripts/show_interfaces_ethernet
new file mode 100755
index 0000000..d592018
--- /dev/null
+++ b/scripts/show_interfaces_ethernet
@@ -0,0 +1,112 @@
+#!/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: