Here are a couple scripts that I wrote. They're not pretty, but they might
help. The first will will give you various status, and the second will
create some ndd commands to set the adapters to what you want. They're free
and worth every penny. NOTE: if you set the adapters, then the last
statement should be  "ndd -set /dev/<adapter> adv_autoneg_cap 0", to force
it to reset the adapter, otherwise you need to do a "down" then an "up".
BTW, if anyone knows an easier way to convert the hex to the decimal, would
you let me know.  - Steve

---------------- CUT HERE -----------------

#!/usr/bin/ksh
#
# Author: Stephen McNaught
# Purpose:
#
#

USAGE="usage: es [-a adapter] [-v] [-e] [-n device]"
VERBOSEMODE=0
ELITEMODE=0
INTERFACECONFIG=0
numbits=
decinm=
netmask=

AWK=/usr/bin/awk
GREP=/usr/bin/grep
ZCAT=/usr/local/bin/zcat
CAT=/usr/bin/cat
SED=/usr/bin/sed
PS=/usr/bin/ps
PBIND=/usr/sbin/pbind
NDD=/usr/sbin/ndd
IFCONFIG=/usr/sbin/ifconfig



function get_netmask
{
deci[0]="0.0.0.0"
hexi[0]="00000000"
deci[1]="128.0.0.0"
hexi[1]="80000000"
deci[2]="192.0.0.0"
hexi[2]="c0000000"
deci[3]="224.0.0.0"
hexi[3]="e0000000"
deci[4]="240.0.0.0"
hexi[4]="f0000000"
deci[5]="248.0.0.0"
hexi[5]="f8000000"
deci[6]="252.0.0.0"
hexi[6]="fc000000"
deci[7]="254.0.0.0"
hexi[7]="fe000000"
deci[8]="255.0.0.0"
hexi[8]="ff000000"
deci[9]="255.128.0.0"
hexi[9]="ff800000"
deci[10]="255.192.0.0"
hexi[10]="ffc00000"
deci[11]="255.224.0.0"
hexi[11]="ffe00000"
deci[12]="255.240.0.0"
hexi[12]="fff00000"
deci[13]="255.248.0.0"
hexi[13]="fff80000"
deci[14]="255.252.0.0"
hexi[14]="fffc0000"
deci[15]="255.254.0.0"
hexi[15]="fffe0000"
deci[16]="255.255.0.0"
hexi[16]="ffff0000"
deci[17]="255.255.128.0"
hexi[17]="ffff8000"
deci[18]="255.255.192.0"
hexi[18]="ffffc000"
deci[19]="255.255.224.0"
hexi[19]="ffffe000"
deci[20]="255.255.240.0"
hexi[20]="fffff000"
deci[21]="255.255.248.0"
hexi[21]="fffff800"
deci[22]="255.255.252.0"
hexi[22]="fffffc00"
deci[23]="255.255.254.0"
hexi[23]="fffffe00"
deci[24]="255.255.255.0"
hexi[24]="ffffff00"
deci[25]="255.255.255.128"
hexi[25]="ffffff80"
deci[26]="255.255.255.192"
hexi[26]="ffffffc0"
deci[27]="255.255.255.224"
hexi[27]="ffffffe0"
deci[28]="255.255.255.240"
hexi[28]="fffffff0"
deci[29]="255.255.255.248"
hexi[29]="fffffff8"
deci[30]="255.255.255.252"
hexi[30]="fffffffc"
deci[31]="255.255.255.254"
hexi[31]="fffffffe"
deci[32]="255.255.255.255"
hexi[32]="ffffffff"
typeset -i nm
nm=0
while [ $nm -lt 33 ]
do
if [[ ${hexi[nm]} == $1 ]]
then
numbits=$nm
decinm=${deci[nm]}
fi
let nm=nm+1

done

}


function INTERFACE_status
{

i=$1
numbits=
decinm=
adapter=`echo ${i} | $AWK -F: '{print $1}'`
alias=`echo ${i} | $AWK -F: '{print $2}'`
ii=${adapter%?}
ia=${i#$ii}
fa=${adapter}
if [[ ${alias}. -ne . ]]
then
print -n ${adapter}:${alias} is an alias to ${adapter} "  "
fa=${adapter}:${alias}
fi
case $ii in
        lo)
          echo
          echo Adapter ${fa}${alias} is a loopback adapter.
         ipaddress=`$IFCONFIG  ${fa} | $GREP inet | $AWK '{print $2}'`
         netmask=`$IFCONFIG  ${fa} | $GREP inet | $AWK '{print $4}'`
         print -n ${fa}
         print -n " IP address is ${ipaddress}"
         print ", netmask is ${netmask}"
          echo
          return;;
esac

         ipaddress=`$IFCONFIG  ${fa} | $GREP inet | $AWK '{print $2}'`
         netmask=`$IFCONFIG  ${fa} | $GREP inet | $AWK '{print $4}'`
if [[ ${alias}. -eq . ]]
then
         print -n ${fa}
fi

         get_netmask  ${netmask}
         print -n " IP address is ${ipaddress}"
         print -n ", netmask is ${netmask} (/${numbits} aka ${decinm})"

if [[ ${alias}. -ne . ]]
then
echo
else
         ether=`$IFCONFIG  ${fa} | $GREP ether | $AWK '{print $2}'`
         print  ", the MAC is ${ether}"

fi
         return

}

function NIC_status
{

i=$1
if (( $INTERFACECONFIG ))
then
 INTERFACE_status ${i}
fi
adapter=`echo ${i} | $AWK -F: '{print $1}'`
alias=`echo ${i} | $AWK -F: '{print $2}'`
ii=${adapter%?}
ia=${i#$ii}

case $ii in
        lo)
          echo
          echo Adapter ${adapter}${alias} is a loopback adapter.
          echo
          return;;
        ie|qe|le)
          echo
          echo Adapter ${adapter}${alias} is not supported by the ndd
command.
          echo It only supports 10Mbps HALF duplex, and NO Auto-negotiation.
          echo
          return;;
esac
$NDD -set /dev/${ii} instance ${ia}
if (( $ELITEMODE ))
then
echo
if [[ ${alias}. -ne . ]]
then
echo Adapter: ${adapter}:${alias} is an alias to ${adapter}
else
echo Adapter: ${adapter}
fi
for i in `$NDD /dev/$ii \? | $GREP -v ? | $AWK '{print $1}'`
do
echo ${i} `$NDD -get /dev/$ii ${i}`
done
return
fi
$NDD -set /dev/${ii} instance ${ia}
link_status=`$NDD -get /dev/${ii} link_status `
link_speed=`$NDD -get /dev/${ii} link_speed `
link_mode=`$NDD -get /dev/${ii} link_mode`
adv_autoneg_cap=`$NDD -get /dev/${ii} adv_autoneg_cap `


if (( $VERBOSEMODE ))
then
echo
if [[ ${alias}. -ne . ]]
then
echo Adapter: ${adapter}:${alias} is an alias to ${adapter}
else
echo Adapter: ${adapter}
fi
instance=`$NDD -get /dev/${ii} instance `
adv_100T4_cap=`$NDD -get /dev/${ii} adv_100T4_cap `
adv_100fdx_cap=`$NDD -get /dev/${ii} adv_100fdx_cap `
adv_100hdx_cap=`$NDD -get /dev/${ii} adv_100hdx_cap `
adv_10fdx_cap=`$NDD -get /dev/${ii} adv_10fdx_cap `
adv_10hdx_cap=`$NDD -get /dev/${ii} adv_10hdx_cap `
lp_100T4_cap=`$NDD -get /dev/${ii} lp_100T4_cap `
lp_100fdx_cap=`$NDD -get /dev/${ii} lp_100fdx_cap `
lp_100hdx_cap=`$NDD -get /dev/${ii} lp_100hdx_cap `
lp_10fdx_cap=`$NDD -get /dev/${ii} lp_10fdx_cap `
lp_10hdx_cap=`$NDD -get /dev/${ii} lp_10hdx_cap `
lp_autoneg_cap=`$NDD -get /dev/${ii} lp_autoneg_cap `
echo link_status ${link_status}           \(0 = Link is Down / 1 = Link is
Up\)
echo link_speed ${link_speed}             \(0 = 10 Mbps / 1 = 100 Mbps\)
echo link_mode ${link_mode}               \(0 = Half-Duplex / 1 =
Full-Duplex\)
echo adv_100T4_cap ${adv_100T4_cap}
echo adv_100fdx_cap ${adv_100fdx_cap}
echo adv_100hdx_cap ${adv_100hdx_cap}
echo adv_10fdx_cap ${adv_10fdx_cap}
echo adv_10hdx_cap ${adv_10hdx_cap}
echo adv_autoneg_cap ${adv_autoneg_cap}
echo lp_100T4_cap ${lp_100T4_cap}
echo lp_100fdx_cap ${lp_100fdx_cap}
echo lp_100hdx_cap ${lp_100hdx_cap}
echo lp_10fdx_cap ${lp_10fdx_cap}
echo lp_10hdx_cap ${lp_10hdx_cap}
echo lp_autoneg_cap ${lp_autoneg_cap}
echo
else
print -n Adapter ${adapter}
if [[ ${alias}. -ne . ]]
then
print -n :${alias} is an alias to ${adapter}, and
fi
print -n " "is running at" "
if (( link_speed ))
then
print -n 100Mbps" "
else
print -n 10Mbps" "
fi
if (( link_mode ))
then
print -n FULL" "
else
print -n HALF" "
fi
print -n "duplex. Auto-negotiation is"
if ((  adv_autoneg_cap ))
then
print -n " ON"
else
print -n " OFF"
fi
print -n ", and the link is "
if (( ! link_status ))
then
print -n "NOT "
fi
print   UP.
fi
}


while getopts :a:en:vIi arguments
do
  case $arguments in
     a) a=$OPTARG
        NIC_status ${a}
        exit 0;;
     e) ELITEMODE=1;;
     n) echo
        echo options for /dev/$OPTARG :
        echo
        for i in `$NDD /dev/$OPTARG \? | $GREP -v ? | $AWK '{print $1}'`
        do
          echo ${i} `$NDD -get /dev/$OPTARG ${i}`
        done
        exit 0;;
     v) VERBOSEMODE=1;;
     i) INTERFACECONFIG=1;;
     I) echo
         for a in `$IFCONFIG -a | $GREP flags | $AWK '{print $1}'`
           do
              INTERFACE_status  ${a}
           done
        exit 0;;
     \?) print "$OPTARG is not a valid switch."
         print "$USAGE"
         exit 1;;
  esac
done

# $PBIND -b 1 `$PS -eaf | $GREP " es " | $GREP -v grep | $AWK '{print $2}'`

for a in `$IFCONFIG -a | $GREP flags | $AWK '{print $1}'`
do
NIC_status  ${a}
done


---------------- CUT HERE -----------------

#!/usr/bin/ksh
#
# Author: Stephen McNaught
# Purpose:
#

USAGE="usage: eb adapter 10/100 half/full"
VERBOSEMODE=0
ELITEMODE=0
adv_100fdx_cap=0
adv_100hdx_cap=0
adv_10fdx_cap=0
adv_10hdx_cap=0

AWK=/usr/bin/awk
GREP=/usr/bin/grep
ZCAT=/usr/local/bin/zcat
CAT=/usr/bin/cat
SED=/usr/bin/sed
PS=/usr/bin/ps
PBIND=/usr/sbin/pbind
NDD=/usr/sbin/ndd



function NIC_status
{

i=$1
adapter=`echo ${i} | $AWK -F: '{print $1}'`
alias=`echo ${i} | $AWK -F: '{print $2}'`
if [[ ${alias}. -ne . ]]
then
echo $i is an alias of ${adapter}, you should specify ${adapter}.
exit 0
fi
ii=${i%?}
ia=${i#$ii}

echo \#\!\/usr\/bin\/sh
echo \#
echo $NDD -set /dev/$ii instance $ia
echo $NDD -set /dev/$ii adv_100T4_cap 0
echo $NDD -set /dev/$ii adv_100fdx_cap ${adv_100fdx_cap}
echo $NDD -set /dev/$ii adv_100hdx_cap ${adv_100hdx_cap}
echo $NDD -set /dev/$ii adv_10fdx_cap ${adv_10fdx_cap}
echo $NDD -set /dev/$ii adv_10hdx_cap ${adv_10hdx_cap}
echo $NDD -set /dev/$ii adv_autoneg_cap 0
echo $NDD -get /dev/$ii adv_100T4_cap
echo $NDD -get /dev/$ii adv_100fdx_cap
echo $NDD -get /dev/$ii adv_100hdx_cap
echo $NDD -get /dev/$ii adv_10fdx_cap
echo $NDD -get /dev/$ii adv_10hdx_cap
echo $NDD -get /dev/$ii link_status
echo $NDD -get /dev/$ii link_speed
echo $NDD -get /dev/$ii link_mode
}

if [[ $3. = "." ]]
then
echo You need to specify the correct perameters.
echo $USAGE
exit 1
fi

if [[ $2 = "10" && $3 = "full" ]]
then
adv_10fdx_cap=1
adv_10hdx_cap=0
fi

if [[ $2 == "10" && $3 == "half" ]]
then
adv_10fdx_cap=0
adv_10hdx_cap=1
fi

if [[ $2 == "100" && $3 == "half" ]]
then
adv_100fdx_cap=0
adv_100hdx_cap=1
fi

if [[ $2 == "100" && $3 == "full" ]]
then
adv_100fdx_cap=1
adv_100hdx_cap=0
fi

NIC_status  $1

---------------- CUT HERE -----------------



================================================================================
     To unsubscribe from this mailing list, please see the instructions at
               http://www.checkpoint.com/services/mailing.html
================================================================================

Reply via email to