#!/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: