#!/bin/sh # @(#) eriforce 1.1 20030112 halvard halvorsen # # script to force eri ethernet interface settings. # # parameters explained in http://docs.sun.com/db/doc/816-2127-05 # # there are other ways of configuring this interface # a) change /etc/system # b) use a driver configuration file (/kernel/drv/eri.conf) # c) use nvram to force the speed # ok nvedit # 0: probe-all install-console banner # 1: apply transfer-speed=10 full_ path_name_of_a_eri_device # # # install: # # cd /etc/rc2.d # ln -s ../init.d/eriforce ./S31eriforce # # PATH=/usr/bin:/usr/sbin thisone=`basename $0` instance=0 # speed is 10 or 100 speed=100 # duplex should be set to half or full duplex=full # # check that we are root # '/usr/xpg4/bin/id -u ' is more elegant - can't trust it's there # so use good old /usr/bin/id with some awk # uid=`id | awk -F= '{print $2}' | awk -F"(" '{print $1}' 2>/dev/null` if [ $uid -eq 0 ] then : else echo "$thisone: ERROR - you have to be root to run this script." echo "" exit 1 fi /usr/sbin/ndd -set /dev/eri instance $instance if [ -z "$speed" ] then echo "$thisone: WARNING - no speed set. interface settings not changed" echo "$thisone: please set the speed in $thisone" echo "" exit 2 fi if [ -z "$duplex" ] then echo "$thisone: WARNING - duplex not set. interface settings not changed" echo "$thisone: please change duplex settings in $thisone" echo "" exit 3 fi # # if the speed and duplex settings are not correctly spelt we end # up with 100 Mbit/sec full duplex. # if [ "$speed" = "10" ] then if [ "$duplex" = "half" ] then echo "$thisone: forcing speed on eri$instance to 10 Mbit/sec half-duplex" /usr/sbin/ndd -set /dev/eri adv_10hdx_cap 1 /usr/sbin/ndd -set /dev/eri adv_10fdx_cap 0 /usr/sbin/ndd -set /dev/eri adv_100fdx_cap 0 /usr/sbin/ndd -set /dev/eri adv_100hdx_cap 0 else echo "$thisone: forcing speed on eri$instance to 10 Mbit/sec full-duplex" /usr/sbin/ndd -set /dev/eri adv_10fdx_cap 1 /usr/sbin/ndd -set /dev/eri adv_10hdx_cap 0 /usr/sbin/ndd -set /dev/eri adv_100fdx_cap 0 /usr/sbin/ndd -set /dev/eri adv_100hdx_cap 0 fi else if [ "$duplex" = "half" ] then echo "$thisone: forcing speed on eri$instance to 100 Mbit/sec half-duplex" /usr/sbin/ndd -set /dev/eri adv_100hdx_cap 1 /usr/sbin/ndd -set /dev/eri adv_100fdx_cap 0 /usr/sbin/ndd -set /dev/eri adv_10fdx_cap 0 /usr/sbin/ndd -set /dev/eri adv_10hdx_cap 0 else echo "$thisone: forcing speed on eri$instance to 100 Mbit/sec full-duplex" /usr/sbin/ndd -set /dev/eri adv_100fdx_cap 1 /usr/sbin/ndd -set /dev/eri adv_100hdx_cap 0 /usr/sbin/ndd -set /dev/eri adv_10fdx_cap 0 /usr/sbin/ndd -set /dev/eri adv_10hdx_cap 0 fi fi # always turn off autoneg_cap (0="forced mode") # this is the _last_ step in the setup and _not_ the first one # (see the manual for more info). /usr/sbin/ndd -set /dev/eri adv_autoneg_cap 0 exit 0