blob: c97faa693c459bbbbd7d7e13098e802cf4f51789 [file] [log] [blame]
#!/bin/ksh
#egan@us.ibm.com
#(C)IBM Corp
#
if [ -z "$XCATROOT" ]
then
if [ -r /etc/sysconfig/xcat ]
then
. /etc/sysconfig/xcat
else
if [ -r /etc/rc.config ]
then
. /etc/rc.config
fi
fi
fi
if [ -z "$XCATROOT" ]
then
if [ -r "$(dirname $0)/../lib/xcatroot" ]
then
. $(dirname $0)/../lib/xcatroot
fi
fi
if [ -z "$XCATROOT" ]
then
echo "$(basename $0): env XCATROOT not defined!" >&2
exit 1
fi
if [ ! -d "$XCATROOT" ]
then
echo "$(basename $0): XCATROOT $XCATROOT does not exist!" >&2
exit 1
fi
. $XCATROOT/lib/functions
function setupnic {
NIC=$1
ETHNIC=eth$1
RESNAME=$(whatismyres2 $NODE)
PRINIC=$(tabdb $NODERESTAB $RESNAME $noderes_prinic)
if IP=$(
host $NODE-eth$NIC | \
head -1 | \
awk '{ if (/has address/) {print $NF} else exit 1}'
)
then
:
else
if IP=$(
host $NODE | \
head -1 | \
awk '{ if (/has address/) {print $NF} else exit 1}'
)
then
if [ "$ETHNIC" != "$PRINIC" ]
then
IP=""
fi
else
IP=""
fi
fi
if [ -n "$IP" ]
then
NM=$(whatsmynet $IP | awk '{print $2}')
GW=""
if GW=$(whatsmynet $IP | awk '{print $3}')
then
if [ "$GW" = "NA" ]
then
GW=""
fi
else
GW=""
fi
fi
if [ -n "$IP" -a -n "$NM" ]
then
NW=$(ipcalc.ksh --network $IP $NM | awk -F= '{print $2}')
BC=$(ipcalc.ksh --broadcast $IP $NM | awk -F= '{print $2}')
fi
if [ "$PRINIC" = "eth$NIC" ]
then
GATEWAY=$GW
fi
case $OSVER in
sles[89]|suse8*|suse9*|suse10|ul*)
if [ -n "$GATEWAY" ]
then
echo "default $GATEWAY - $PRINIC" >/etc/sysconfig/network/routes
fi
cd /etc/sysconfig/network
perl -pi -e 's/^FIREWALL="yes"/FIREWALL="no"/' /etc/sysconfig/network/config
;;
rh*)
if [ -n "$GATEWAY" ]
then
perl -pi -e 's/^GATEWAYDEV=.*\n//' /etc/sysconfig/network
perl -pi -e 's/^GATEWAY=.*\n//' /etc/sysconfig/network
# echo "GATEWAYDEV=$PRINIC" >>/etc/sysconfig/network
# echo "GATEWAY=$GATEWAY" >>/etc/sysconfig/network
fi
cd /etc/sysconfig/network-scripts
;;
esac
if [ -r ifcfg-eth$NIC ]
then
cp ifcfg-eth$NIC ../ifcfg-eth$NIC.ORIG
fi
>ifcfg-eth$NIC
if [ -n "$IP" -a -n "$NM" ]
then
echo "DEVICE=eth$NIC" >>ifcfg-eth$NIC
echo "BOOTPROTO=dhcp" >>ifcfg-eth$NIC
echo "STARTMODE=onboot" >>ifcfg-eth$NIC
echo "ONBOOT=yes" >>ifcfg-eth$NIC
echo "USERCTL=no" >>ifcfg-eth$NIC
# echo "IPADDR=$IP" >>ifcfg-eth$NIC
# echo "BROADCAST=$BC" >>ifcfg-eth$NIC
# echo "NETMASK=$NM" >>ifcfg-eth$NIC
else
echo "DEVICE=eth$NIC" >>ifcfg-eth$NIC
echo "BOOTPROTO=dhcp" >>ifcfg-eth$NIC
echo "STARTMODE=onboot" >>ifcfg-eth$NIC
echo "ONBOOT=yes" >>ifcfg-eth$NIC
fi
}
mv -f /etc/hosts /etc/hosts.hardeths
nic=0
PCITABLE=$XCATROOT/install/postscripts/data/pcitable.net
MOD=""
for i in $(lspci -n | sed 's/Class//' | perl -pi -e 's/^\d{4}://' | awk '{print $1 ":" $3}')
do
PCI=$(echo $i | awk -F: '{print $1 ":" $2}')
VID="0x$(echo $i | awk -F: '{print $3}')"
DID="0x$(echo $i | awk -F: '{print $4}')"
if egrep "^$VID $DID" $PCITABLE >/dev/null
then
TYPE=$(
lspci | \
perl -pi -e 's/^\d{4}://' | \
grep "^$PCI " | \
awk '{print $2}' | \
tr '[A-Z]' '[a-z]'
)
DESC=$(
lspci | \
perl -pi -e 's/^\d{4}://' | \
grep "^$PCI " | \
awk -F: '{print $3}' | \
sed 's/^ *//'
)
MOD=$(
egrep "^$VID $DID" $PCITABLE | \
head -1 | \
awk '{print $3}' | \
tr -d '"'
)
case "$TYPE" in
ethernet|network)
echo "Found ($MOD) $DESC"
if egrep "^alias eth$nic $MOD\b" /etc/modules.conf >/dev/null 2>&1
then
:
else
echo "#added by xCAT hardeths" >>/etc/modules.conf
echo "alias eth$nic $MOD" >>/etc/modules.conf
fi
if egrep "^alias eth$nic $MOD\b" /etc/modprobe.conf >/dev/null 2>&1
then
:
else
echo "#added by xCAT hardeths" >>/etc/modprobe.conf
echo "alias eth$nic $MOD" >>/etc/modprobe.conf
fi
;;
*)
continue
;;
esac
logger -t xcat "Install: found eth$nic as $MOD"
setupnic $nic
nic=$(($nic + 1))
fi
done
mv -f /etc/hosts.hardeths /etc/hosts
exit 0