#!/bin/sh # @(#)hmeforce 1.1 20030112 halvard halvorsen # # script to force hme ethernet interface settings. # # parameters explained in http://docs.sun.com/db/doc/806-5602-10 # # there are other ways of configuring this interface # a) change /etc/system # b) use a driver configuration file (/kernel/drv/hme.conf) # # cd /etc/rc2.d # ln -s ../init.d/hmeforce ./S31hmeforce # # PATH=/usr/bin:/usr/sbin thisone=`basename $0` instance=0 # # no real support for adv_100T4_cap # # 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/hme 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 hme$instance to 10 Mbit/sec half-duplex" /usr/sbin/ndd -set /dev/hme adv_10hdx_cap 1 /usr/sbin/ndd -set /dev/hme adv_10fdx_cap 0 /usr/sbin/ndd -set /dev/hme adv_100fdx_cap 0 /usr/sbin/ndd -set /dev/hme adv_100hdx_cap 0 /usr/sbin/ndd -set /dev/hme adv_100T4_cap 0 else echo "$thisone: forcing speed on hme$instance to 10 Mbit/sec full-duplex" /usr/sbin/ndd -set /dev/hme adv_10fdx_cap 1 /usr/sbin/ndd -set /dev/hme adv_10hdx_cap 0 /usr/sbin/ndd -set /dev/hme adv_100fdx_cap 0 /usr/sbin/ndd -set /dev/hme adv_100hdx_cap 0 /usr/sbin/ndd -set /dev/hme adv_100T4_cap 0 fi else if [ "$duplex" = "half" ] then echo "$thisone: forcing speed on hme$instance to 100 Mbit/sec half-duplex" /usr/sbin/ndd -set /dev/hme adv_100hdx_cap 1 /usr/sbin/ndd -set /dev/hme adv_100fdx_cap 0 /usr/sbin/ndd -set /dev/hme adv_10fdx_cap 0 /usr/sbin/ndd -set /dev/hme adv_10hdx_cap 0 /usr/sbin/ndd -set /dev/hme adv_100T4_cap 0 else echo "$thisone: forcing speed on hme$instance to 100 Mbit/sec full-duplex" /usr/sbin/ndd -set /dev/hme adv_100fdx_cap 1 /usr/sbin/ndd -set /dev/hme adv_100hdx_cap 0 /usr/sbin/ndd -set /dev/hme adv_10fdx_cap 0 /usr/sbin/ndd -set /dev/hme adv_10hdx_cap 0 /usr/sbin/ndd -set /dev/hme adv_100T4_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/hme adv_autoneg_cap 0 exit 0