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
================================================================================