| #!/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 |
| |