mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-11-04 05:12:30 +00:00 
			
		
		
		
	configib support multiple ipv4 addresses and IPv6 addresses
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15312 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
		@@ -2,6 +2,7 @@
 | 
			
		||||
# IBM(c) 2013 EPL license http://www.eclipse.org/legal/epl-v10.html
 | 
			
		||||
 | 
			
		||||
# xCAT post script for configuring ib adaptors.
 | 
			
		||||
# Work for both IPv4 and IPv6
 | 
			
		||||
# The following are a sample of the env used:
 | 
			
		||||
# NIC_IBNICS=ib0,ib1
 | 
			
		||||
# NIC_IBAPORTS=1 (or 2)
 | 
			
		||||
@@ -74,7 +75,7 @@ then
 | 
			
		||||
        if [ $? -eq 1 ]
 | 
			
		||||
        then
 | 
			
		||||
            echo "Not found the driver dameon: rdma or openibd"
 | 
			
		||||
	    logger -p local4.info -t xcat "Not found the driver dameon: rdma or openibd"
 | 
			
		||||
        logger -p local4.info -t xcat "Not found the driver dameon: rdma or openibd"
 | 
			
		||||
            exit
 | 
			
		||||
        fi
 | 
			
		||||
    fi   
 | 
			
		||||
@@ -95,12 +96,12 @@ then
 | 
			
		||||
 | 
			
		||||
    if [ -f "/etc/modprobe.conf" ]
 | 
			
		||||
    then
 | 
			
		||||
	if [ "$portnum" == "1" ]; then
 | 
			
		||||
    if [ "$portnum" == "1" ]; then
 | 
			
		||||
            sed -i "/options ib_ehca nr_ports/d" /etc/modprobe.conf
 | 
			
		||||
            echo 'options ib_ehca nr_ports=1' >> /etc/modprobe.conf
 | 
			
		||||
	else
 | 
			
		||||
    else
 | 
			
		||||
            sed -i "/options ib_ehca nr_ports=1/d" /etc/modprobe.conf
 | 
			
		||||
	fi
 | 
			
		||||
    fi
 | 
			
		||||
        sed -i "/options ib_ehca lock_hcalls/d" /etc/modprobe.conf
 | 
			
		||||
        echo 'options ib_ehca lock_hcalls=0' >> /etc/modprobe.conf
 | 
			
		||||
    fi
 | 
			
		||||
@@ -120,7 +121,7 @@ then
 | 
			
		||||
        OS_name="suse"
 | 
			
		||||
    else
 | 
			
		||||
        echo "Unsupported to config IB on this OS!"
 | 
			
		||||
	logger -p local4.info -t xcat "Unsupported to config IB on this OS!"
 | 
			
		||||
        logger -p local4.info -t xcat "Unsupported to config IB on this OS!"
 | 
			
		||||
        exit
 | 
			
		||||
     fi
 | 
			
		||||
 
 | 
			
		||||
@@ -132,12 +133,14 @@ then
 | 
			
		||||
    fi
 | 
			
		||||
    for nic in `echo "$NIC_IBNICS" | tr "," "\n"`
 | 
			
		||||
    do     
 | 
			
		||||
	`rm -f $dir/ifcfg-$nic`
 | 
			
		||||
    `rm -f $dir/ifcfg-$nic` 2>&1 1>/dev/null
 | 
			
		||||
    # nic aliases
 | 
			
		||||
    `rm -f $dir/ifcfg-$nic:*` 2>&1 1>/dev/null
 | 
			
		||||
    done
 | 
			
		||||
else
 | 
			
		||||
    for nic in `echo "$NIC_IBNICS" | tr "," "\n"`
 | 
			
		||||
    do     
 | 
			
		||||
	`rmdev -d -l $nic >/dev/null 2>&1`
 | 
			
		||||
    `rmdev -d -l $nic >/dev/null 2>&1`
 | 
			
		||||
    done
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
@@ -145,197 +148,290 @@ fi
 | 
			
		||||
goodnics=""
 | 
			
		||||
for nic in `echo "$NIC_IBNICS" | tr "," "\n"`
 | 
			
		||||
do 
 | 
			
		||||
    #Get nic ip 
 | 
			
		||||
    nicip=""
 | 
			
		||||
    #Get nic ips 
 | 
			
		||||
    nicips=""
 | 
			
		||||
    for tmp in `echo "$NICIPS" | tr "," "\n"`
 | 
			
		||||
    do
 | 
			
		||||
	nic_tmp=`echo "$tmp" | awk -F"!" '{print $1}'`;
 | 
			
		||||
	if [ $nic_tmp == $nic ]; then
 | 
			
		||||
	    nicip=`echo "$tmp" | awk -F"!" '{print $2}'`;
 | 
			
		||||
	    break
 | 
			
		||||
	fi
 | 
			
		||||
        nic_tmp=`echo "$tmp" | awk -F"!" '{print $1}'`;
 | 
			
		||||
            if [ $nic_tmp == $nic ]; then
 | 
			
		||||
            # nicips=ip1|ip2|ip3
 | 
			
		||||
            nicips=`echo "$tmp" | awk -F"!" '{print $2}'`;
 | 
			
		||||
            break
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
   # echo "nic=$nic, nicip=$nicip"
 | 
			
		||||
    
 | 
			
		||||
   #get nic network name
 | 
			
		||||
    nicnet=""
 | 
			
		||||
   #get nic networks name
 | 
			
		||||
   nicnets=""
 | 
			
		||||
   for tmp in `echo "$NICNETWORKS" | tr "," "\n"`
 | 
			
		||||
   do
 | 
			
		||||
       nic_tmp=`echo "$tmp" | awk -F"!" '{print $1}'`;
 | 
			
		||||
       if [ $nic_tmp == $nic ]; then
 | 
			
		||||
	   nicnet=`echo "$tmp" | awk -F"!" '{print $2}'`;
 | 
			
		||||
	   break
 | 
			
		||||
          # nicnets=net1|net2|net3
 | 
			
		||||
          nicnets=`echo "$tmp" | awk -F"!" '{print $2}'`;
 | 
			
		||||
          break
 | 
			
		||||
       fi
 | 
			
		||||
   done
 | 
			
		||||
   #echo "nic=$nic, nicnet=$nicnet"
 | 
			
		||||
   
 | 
			
		||||
   if [ -z "$nicnet" ]; then
 | 
			
		||||
   if [ -z "$nicnets" ]; then
 | 
			
		||||
       echo "No network defined for $nic"
 | 
			
		||||
       logger -p local4.info -t xcat "No network defined for $nic"
 | 
			
		||||
       continue
 | 
			
		||||
   fi   
 | 
			
		||||
 | 
			
		||||
   #get netmask and gateway
 | 
			
		||||
   index=0;
 | 
			
		||||
   found=0
 | 
			
		||||
   while [ $index -lt $NETWORKS_LINES ]
 | 
			
		||||
   ipindex=0
 | 
			
		||||
   for nicip in `echo $nicips | tr "|" "\n"`
 | 
			
		||||
   do
 | 
			
		||||
       index=$((index+1))
 | 
			
		||||
       eval netline=\$NETWORKS_LINE$index
 | 
			
		||||
       if [[ -n "$netline" ]]; then
 | 
			
		||||
	   for tmp in `echo "$netline" | tr "\|" "\n"`
 | 
			
		||||
	   do
 | 
			
		||||
	       key=`echo "$tmp" | awk -F"=" '{print $1}'`;
 | 
			
		||||
	       case $key in
 | 
			
		||||
		   netname)
 | 
			
		||||
		       netname=`echo "$tmp" | awk -F"=" '{print $2}'`
 | 
			
		||||
		       if [ "$netname" != "$nicnet" ];
 | 
			
		||||
		       then
 | 
			
		||||
			   break;
 | 
			
		||||
		       fi
 | 
			
		||||
		       ;;
 | 
			
		||||
		   net)  
 | 
			
		||||
		       net=`echo "$tmp" | awk -F"=" '{print $2}'`
 | 
			
		||||
		       ;;
 | 
			
		||||
		   mask) 
 | 
			
		||||
		       netmask=`echo "$tmp" | awk -F"=" '{print $2}'`
 | 
			
		||||
		       ;; 
 | 
			
		||||
		   gateway) 
 | 
			
		||||
		       gateway=`echo "$tmp" | awk -F"=" '{print $2}'`
 | 
			
		||||
		       found=1
 | 
			
		||||
		       ;;
 | 
			
		||||
	       esac 
 | 
			
		||||
	       if [ $found -eq 1 ]; then
 | 
			
		||||
		   break;
 | 
			
		||||
	       fi
 | 
			
		||||
	   done
 | 
			
		||||
	   if [ $found -eq 1 ]; then
 | 
			
		||||
	       break;
 | 
			
		||||
	   fi
 | 
			
		||||
       fi
 | 
			
		||||
   done
 | 
			
		||||
   #echo "found=$found"
 | 
			
		||||
   #echo "index=$index netname=$nicnet net=$net mask=$netmask gateway=$gateway"
 | 
			
		||||
       ipindex=`expr $ipindex + 1`
 | 
			
		||||
       nicnet=`echo $nicnets | cut -d '|' -f$ipindex`
 | 
			
		||||
 | 
			
		||||
   if [ "$found" == "0" ]; then
 | 
			
		||||
       echo "Cannot find network $nicnet for $nic"
 | 
			
		||||
       logger -p local4.info -t xcat "Cannot find network $nicnet for $nic"
 | 
			
		||||
       continue
 | 
			
		||||
   else
 | 
			
		||||
       if [ -z "$goodnics" ]; then
 | 
			
		||||
	   goodnics=$nic
 | 
			
		||||
       #get netmask and gateway
 | 
			
		||||
       index=0;
 | 
			
		||||
       found=0
 | 
			
		||||
       while [ $index -lt $NETWORKS_LINES ]
 | 
			
		||||
       do
 | 
			
		||||
           index=$((index+1))
 | 
			
		||||
           eval netline=\$NETWORKS_LINE$index
 | 
			
		||||
           if [[ -n "$netline" ]]; then
 | 
			
		||||
               for tmp in `echo "$netline" | tr "\|" "\n"`
 | 
			
		||||
               do
 | 
			
		||||
                   key=`echo "$tmp" | awk -F"=" '{print $1}'`;
 | 
			
		||||
                   case $key in
 | 
			
		||||
                   netname)
 | 
			
		||||
                       netname=`echo "$tmp" | awk -F"=" '{print $2}'`
 | 
			
		||||
                       if [ "$netname" != "$nicnet" ];
 | 
			
		||||
                       then
 | 
			
		||||
                           break;
 | 
			
		||||
                       fi
 | 
			
		||||
                   ;;
 | 
			
		||||
                  net)  
 | 
			
		||||
                      net=`echo "$tmp" | awk -F"=" '{print $2}'`
 | 
			
		||||
                  ;;
 | 
			
		||||
                  mask) 
 | 
			
		||||
                       netmask=`echo "$tmp" | awk -F"=" '{print $2}'`
 | 
			
		||||
                       # remove the prefix "/" from ipv6 mask
 | 
			
		||||
                       if echo $netmask | grep "/" 2>&1 1>/dev/null
 | 
			
		||||
                       then
 | 
			
		||||
                           netmask=`echo $netmask | awk -F'/' '{print $2}'`
 | 
			
		||||
                       fi
 | 
			
		||||
                  ;; 
 | 
			
		||||
                  gateway) 
 | 
			
		||||
                       gateway=`echo "$tmp" | awk -F"=" '{print $2}'`
 | 
			
		||||
                       found=1
 | 
			
		||||
                  ;;
 | 
			
		||||
                 esac 
 | 
			
		||||
                 if [ $found -eq 1 ]; then
 | 
			
		||||
                    break;
 | 
			
		||||
                 fi
 | 
			
		||||
              done # end for tmp in `echo "$netline" | tr "\|" "\n"`
 | 
			
		||||
              if [ $found -eq 1 ]; then
 | 
			
		||||
                  break;
 | 
			
		||||
              fi
 | 
			
		||||
          fi # end if [[ -n "$netline" ]]
 | 
			
		||||
       done # end  while [ $index -lt $NETWORKS_LINES ]
 | 
			
		||||
 | 
			
		||||
       #echo "found=$found"
 | 
			
		||||
       #echo "index=$index netname=$nicnet net=$net mask=$netmask gateway=$gateway"
 | 
			
		||||
 | 
			
		||||
       # Setup goodnics list
 | 
			
		||||
       if [ "$found" == "0" ]; then
 | 
			
		||||
           echo "Cannot find network $nicnet for $nic"
 | 
			
		||||
           logger -p local4.info -t xcat "Cannot find network $nicnet for $nic"
 | 
			
		||||
           continue
 | 
			
		||||
       else
 | 
			
		||||
	   goodnics="$goodnics,$nic"
 | 
			
		||||
           if [ -z "$goodnics" ]; then
 | 
			
		||||
               goodnics=$nic
 | 
			
		||||
           else
 | 
			
		||||
               goodnics="$goodnics,$nic"
 | 
			
		||||
           fi
 | 
			
		||||
       fi
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
   #there should be only one gateway on a node and that should go through the to the xcat management node and would be set up from the install nic. Anything else should be a route
 | 
			
		||||
   if [ "$gateway" == "<xcatmaster>" ]; then
 | 
			
		||||
       gateway=''
 | 
			
		||||
   fi
 | 
			
		||||
       #there should be only one gateway on a node and that should go through the to the xcat management node and would be set up from the install nic. Anything else should be a route
 | 
			
		||||
       if [ "$gateway" == "<xcatmaster>" ]; then
 | 
			
		||||
           gateway=''
 | 
			
		||||
       fi
 | 
			
		||||
 | 
			
		||||
   
 | 
			
		||||
   if [ $PLTFRM == "Linux" ]
 | 
			
		||||
   then
 | 
			
		||||
       # Issue openibd for Linux at boot time
 | 
			
		||||
       
 | 
			
		||||
       if [ -f /etc/sysctl.conf ]
 | 
			
		||||
       if [ $PLTFRM == "Linux" ]
 | 
			
		||||
       then
 | 
			
		||||
           sed -i "/net.ipv4.conf.$nic.arp_filter=1/d" /etc/sysctl.conf
 | 
			
		||||
           sed -i "/net.ipv4.conf.$nic.arp_ignore=1/d" /etc/sysctl.conf
 | 
			
		||||
           echo "net.ipv4.conf.$nic.arp_filter=1" >> /etc/sysctl.conf
 | 
			
		||||
           echo "net.ipv4.conf.$nic.arp_ignore=1" >> /etc/sysctl.conf
 | 
			
		||||
       fi
 | 
			
		||||
           # Issue openibd for Linux at boot time
 | 
			
		||||
       
 | 
			
		||||
       # Write the info to the ifcfg file
 | 
			
		||||
       echo "DEVICE=$nic
 | 
			
		||||
BOOTPROTO=static
 | 
			
		||||
IPADDR=$nicip
 | 
			
		||||
NETMASK=$netmask" > $dir/ifcfg-$nic
 | 
			
		||||
       if [ -n "$gateway" ]; then
 | 
			
		||||
	   echo "GATEWAY=$gateway" >> $dir/ifcfg-$nic
 | 
			
		||||
       fi
 | 
			
		||||
       
 | 
			
		||||
       if [[ "$OSVER" == rhels6* ]]
 | 
			
		||||
       then 
 | 
			
		||||
           #get prefix from netmask, this is for IPv4 only
 | 
			
		||||
	   prefix=24
 | 
			
		||||
	   if [ -n "$netmask" ]; then
 | 
			
		||||
	        prefix=$(convert_netmask_to_cidr $netmask)
 | 
			
		||||
	   fi   
 | 
			
		||||
        
 | 
			
		||||
	   echo "DEVICE=$nic
 | 
			
		||||
BOOTPROTO=static
 | 
			
		||||
IPADDR=$nicip
 | 
			
		||||
PREFIX=$prefix" > $dir/ifcfg-$nic
 | 
			
		||||
	   if [ -n "$gateway" ]; then
 | 
			
		||||
	       echo "GATEWAY=$gateway" >>  $dir/ifcfg-$nic
 | 
			
		||||
	   fi
 | 
			
		||||
       fi
 | 
			
		||||
    
 | 
			
		||||
       if [ $OS_name == 'redhat' ]
 | 
			
		||||
       then
 | 
			
		||||
           echo "ONBOOT=yes" >> $dir/ifcfg-$nic
 | 
			
		||||
       else 
 | 
			
		||||
           echo "STARTMODE=auto" >> $dir/ifcfg-$nic
 | 
			
		||||
       fi
 | 
			
		||||
   elif [ $PLTFRM == "AIX" ]; then
 | 
			
		||||
       if ( pmatch $nic "ml*" ); then #for ml* interface
 | 
			
		||||
	   num=${nic##ml}
 | 
			
		||||
	   mlt="mlt$num"
 | 
			
		||||
           #Check whether the mlt is available
 | 
			
		||||
	   lsdev -C | grep $mlt | grep Available 2>&1 >/dev/null
 | 
			
		||||
	   if [ $? -ne 0 ]
 | 
			
		||||
	   then
 | 
			
		||||
               echo "$mltnum is not available."
 | 
			
		||||
	       logger -p local4.info -t xcat "$mltnum is not available."
 | 
			
		||||
	       continue
 | 
			
		||||
	   fi
 | 
			
		||||
	   
 | 
			
		||||
           #Check whether the ml0 is available
 | 
			
		||||
	   lsdev -C | grep $nic 2>&1 >/dev/null
 | 
			
		||||
	   if [ $? -ne 0 ]
 | 
			
		||||
	   then
 | 
			
		||||
               cfgmgr 2>&1 >/dev/null
 | 
			
		||||
	   fi
 | 
			
		||||
	   
 | 
			
		||||
	   chdev -l $nic -a state=detach 2>&1
 | 
			
		||||
	   chdev -l $nic -a netaddr=$nicip -a netmask=$netmask -a state=up 2>&1
 | 
			
		||||
       else #assume it is ib*
 | 
			
		||||
	   lsdev -C | grep icm | grep Available
 | 
			
		||||
	   if [ $? -ne 0 ]
 | 
			
		||||
	   then
 | 
			
		||||
               mkdev -c management -s infiniband -t icm
 | 
			
		||||
           if [ -f /etc/sysctl.conf ]
 | 
			
		||||
           then
 | 
			
		||||
               sed -i "/net.ipv4.conf.$nic.arp_filter=1/d" /etc/sysctl.conf 2>&1 1>/dev/null
 | 
			
		||||
               sed -i "/net.ipv4.conf.$nic.arp_ignore=1/d" /etc/sysctl.conf 2>&1 1>/dev/null
 | 
			
		||||
               cfg="net.ipv4.conf.$nic.arp_filter=1"
 | 
			
		||||
               grep "$cfg" /etc/sysctl.conf 2>&1 1>/dev/null
 | 
			
		||||
               if [ $? -ne 0 ]
 | 
			
		||||
               then
 | 
			
		||||
		   mkdev -l icm
 | 
			
		||||
		   if [ $? -ne 0 ]
 | 
			
		||||
		   then
 | 
			
		||||
                       exit $?
 | 
			
		||||
		   fi
 | 
			
		||||
                   echo "net.ipv4.conf.$nic.arp_filter=1" >> /etc/sysctl.conf
 | 
			
		||||
               fi
 | 
			
		||||
	   fi
 | 
			
		||||
	   
 | 
			
		||||
           #Configure the IB interfaces.  Customize the port num.
 | 
			
		||||
	   num=${nic##ib}   #this assumes that all the nics starts with 'ib'
 | 
			
		||||
	   if [ "$portnum" == "1" ]; then 
 | 
			
		||||
	       iba_num=$num
 | 
			
		||||
               ib_adapter="iba$iba_num"
 | 
			
		||||
               port=1
 | 
			
		||||
	   else
 | 
			
		||||
	       iba_num=`expr $num / 2`
 | 
			
		||||
	       ib_adapter="iba$iba_num"
 | 
			
		||||
	       if [ $(($num % 2)) == 0 ]
 | 
			
		||||
	       then
 | 
			
		||||
		   port=1
 | 
			
		||||
	       else
 | 
			
		||||
		   port=2
 | 
			
		||||
	       fi
 | 
			
		||||
	   fi
 | 
			
		||||
	   mkiba -a $nicip -i $nic -A $ib_adapter -p $port -P -1 -S up -m $netmask
 | 
			
		||||
       fi
 | 
			
		||||
   fi
 | 
			
		||||
done
 | 
			
		||||
               cfg="net.ipv4.conf.$nic.arp_ignore=1"
 | 
			
		||||
               grep "$cfg" /etc/sysctl.conf 2>&1 1>/dev/null
 | 
			
		||||
               if [ $? -ne 0 ]
 | 
			
		||||
               then
 | 
			
		||||
                   echo "net.ipv4.conf.$nic.arp_ignore=1" >> /etc/sysctl.conf
 | 
			
		||||
               fi
 | 
			
		||||
           fi
 | 
			
		||||
           
 | 
			
		||||
           if [ $OS_name == 'suse' ]
 | 
			
		||||
           then
 | 
			
		||||
               # First ip address 
 | 
			
		||||
               if [ $ipindex -eq 1 ]
 | 
			
		||||
               then
 | 
			
		||||
                   # Write the info to the ifcfg file
 | 
			
		||||
                   echo "DEVICE=$nic
 | 
			
		||||
BOOTPROTO=static
 | 
			
		||||
STARTMODE=onboot
 | 
			
		||||
IPADDR=$nicip" > $dir/ifcfg-$nic
 | 
			
		||||
                    # ipv6
 | 
			
		||||
                    if echo $nicip | grep : 2>&1 1>/dev/null
 | 
			
		||||
                    then
 | 
			
		||||
                        echo "PREFIXLEN=$netmask" >> $dir/ifcfg-$nic
 | 
			
		||||
                    else
 | 
			
		||||
                        echo "NETMASK=$netmask" >> $dir/ifcfg-$nic
 | 
			
		||||
                    fi
 | 
			
		||||
                   if [ -n "$gateway" ]; then
 | 
			
		||||
                       echo "GATEWAY=$gateway" >> $dir/ifcfg-$nic
 | 
			
		||||
                   fi
 | 
			
		||||
               else # not the first ip address
 | 
			
		||||
                   echo "LABEL_$ipindex=$ipindex
 | 
			
		||||
IPADDR_$ipindex=$nicip" >> $dir/ifcfg-$nic
 | 
			
		||||
                    # ipv6
 | 
			
		||||
                    if echo $nicip | grep : 2>&1 1>/dev/null
 | 
			
		||||
                    then
 | 
			
		||||
                        echo "PREFIXLEN_$ipindex=$netmask" >> $dir/ifcfg-$nic
 | 
			
		||||
                    else
 | 
			
		||||
                        echo "NETMASK_$ipindex=$netmask" >> $dir/ifcfg-$nic
 | 
			
		||||
                    fi
 | 
			
		||||
                fi # end if [ $ipindex -eq 1 ]
 | 
			
		||||
            elif [ $OS_name == 'redhat' ]
 | 
			
		||||
            then
 | 
			
		||||
               # First ip address 
 | 
			
		||||
               if [ $ipindex -eq 1 ]
 | 
			
		||||
               then
 | 
			
		||||
                   # Write the info to the ifcfg file
 | 
			
		||||
                   echo "DEVICE=$nic
 | 
			
		||||
BOOTPROTO=static
 | 
			
		||||
ONBOOT=yes
 | 
			
		||||
IPADDR=$nicip" > $dir/ifcfg-$nic
 | 
			
		||||
                    # ipv6
 | 
			
		||||
                    if echo $nicip | grep : 2>&1 1>/dev/null
 | 
			
		||||
                    then
 | 
			
		||||
                        echo "PREFIXLEN=$netmask" >> $dir/ifcfg-$nic
 | 
			
		||||
                    else
 | 
			
		||||
                        if [[ "$OSVER" == rhels6* ]]
 | 
			
		||||
                        then
 | 
			
		||||
                            #get prefix from netmask, this is for IPv4 only
 | 
			
		||||
                            prefix=24
 | 
			
		||||
                            prefix=$(convert_netmask_to_cidr $netmask)
 | 
			
		||||
                            echo "PREFIX=$prefix" >> $dir/ifcfg-$nic
 | 
			
		||||
                        else
 | 
			
		||||
                            echo "NETMASK=$netmask" >> $dir/ifcfg-$nic
 | 
			
		||||
                        fi
 | 
			
		||||
                    fi
 | 
			
		||||
                    if [ -n "$gateway" ]; then
 | 
			
		||||
                       echo "GATEWAY=$gateway" >> $dir/ifcfg-$nic
 | 
			
		||||
                    fi
 | 
			
		||||
               else # not the first ip address
 | 
			
		||||
                   # ipv6
 | 
			
		||||
                   if echo $nicip | grep : 2>&1 1>/dev/null
 | 
			
		||||
                   then
 | 
			
		||||
                       grep "IPV6INIT" $dir/ifcfg-$nic 2>&1 1>/dev/null
 | 
			
		||||
                       # The first ipv6 address
 | 
			
		||||
                       if [ $? -ne 0 ]
 | 
			
		||||
                       then
 | 
			
		||||
                           echo "IPV6INIT=yes
 | 
			
		||||
IPV6ADDR=$nicip/$netmask" >> $dir/ifcfg-$nic
 | 
			
		||||
                       else
 | 
			
		||||
                           echo "IPV6ADDR_SECONDARIES=$nicip/$netmask" >> $dir/ifcfg-$nic
 | 
			
		||||
                       fi
 | 
			
		||||
                    else # ipv4 address
 | 
			
		||||
                        echo "DEVICE=$nic:$ipindex
 | 
			
		||||
BOOTPROTO=static
 | 
			
		||||
ONBOOT=yes
 | 
			
		||||
IPADDR=$nicip" > $dir/ifcfg-$nic:$ipindex
 | 
			
		||||
                        if [[ "$OSVER" == rhels6* ]]
 | 
			
		||||
                        then
 | 
			
		||||
                            #get prefix from netmask, this is for IPv4 only
 | 
			
		||||
                            prefix=24
 | 
			
		||||
                            prefix=$(convert_netmask_to_cidr $netmask)
 | 
			
		||||
                            echo "PREFIX=$prefix" >> $dir/ifcfg-$nic:$ipindex
 | 
			
		||||
                        else
 | 
			
		||||
                            echo "NETMASK=$netmask" >> $dir/ifcfg-$nic:$ipindex
 | 
			
		||||
                        fi
 | 
			
		||||
 | 
			
		||||
                        if [ -n "$gateway" ]; then
 | 
			
		||||
                           echo "GATEWAY=$gateway" >> $dir/ifcfg-$nic:$ipindex
 | 
			
		||||
                        fi
 | 
			
		||||
                        # need to run ifup eth1:1 for RedHat
 | 
			
		||||
                        goodnics="$goodnics,$nic:$ipindex"
 | 
			
		||||
                    fi
 | 
			
		||||
                fi # end not the first ip address
 | 
			
		||||
            else
 | 
			
		||||
                echo "Unsupported operating system"
 | 
			
		||||
                logger -p local4.err -t xcat "Unsupported operating system"
 | 
			
		||||
            fi
 | 
			
		||||
 | 
			
		||||
       elif [ $PLTFRM == "AIX" ]; then
 | 
			
		||||
           if ( pmatch $nic "ml*" ); then #for ml* interface
 | 
			
		||||
           num=${nic##ml}
 | 
			
		||||
           mlt="mlt$num"
 | 
			
		||||
           #Check whether the mlt is available
 | 
			
		||||
           lsdev -C | grep $mlt | grep Available 2>&1 >/dev/null
 | 
			
		||||
           if [ $? -ne 0 ]
 | 
			
		||||
           then
 | 
			
		||||
               echo "$mltnum is not available."
 | 
			
		||||
               logger -p local4.info -t xcat "$mltnum is not available."
 | 
			
		||||
               continue
 | 
			
		||||
           fi
 | 
			
		||||
       
 | 
			
		||||
           #Check whether the ml0 is available
 | 
			
		||||
           lsdev -C | grep $nic 2>&1 >/dev/null
 | 
			
		||||
           if [ $? -ne 0 ]
 | 
			
		||||
           then
 | 
			
		||||
               cfgmgr 2>&1 >/dev/null
 | 
			
		||||
           fi
 | 
			
		||||
       
 | 
			
		||||
           chdev -l $nic -a state=detach 2>&1
 | 
			
		||||
           chdev -l $nic -a netaddr=$nicip -a netmask=$netmask -a state=up 2>&1
 | 
			
		||||
           else #assume it is ib*
 | 
			
		||||
               lsdev -C | grep icm | grep Available
 | 
			
		||||
               if [ $? -ne 0 ]
 | 
			
		||||
               then
 | 
			
		||||
                   mkdev -c management -s infiniband -t icm
 | 
			
		||||
                   if [ $? -ne 0 ]
 | 
			
		||||
                   then
 | 
			
		||||
                       mkdev -l icm
 | 
			
		||||
                       if [ $? -ne 0 ]
 | 
			
		||||
                       then
 | 
			
		||||
                           exit $?
 | 
			
		||||
                       fi
 | 
			
		||||
                   fi
 | 
			
		||||
                fi
 | 
			
		||||
       
 | 
			
		||||
               #Configure the IB interfaces.  Customize the port num.
 | 
			
		||||
               num=${nic##ib}   #this assumes that all the nics starts with 'ib'
 | 
			
		||||
               if [ "$portnum" == "1" ]; then 
 | 
			
		||||
                   iba_num=$num
 | 
			
		||||
                   ib_adapter="iba$iba_num"
 | 
			
		||||
                   port=1
 | 
			
		||||
               else
 | 
			
		||||
                   iba_num=`expr $num / 2`
 | 
			
		||||
                   ib_adapter="iba$iba_num"
 | 
			
		||||
                   if [ $(($num % 2)) == 0 ]
 | 
			
		||||
                   then
 | 
			
		||||
                       port=1
 | 
			
		||||
                   else
 | 
			
		||||
                       port=2
 | 
			
		||||
                   fi
 | 
			
		||||
               fi
 | 
			
		||||
               mkiba -a $nicip -i $nic -A $ib_adapter -p $port -P -1 -S up -m $netmask
 | 
			
		||||
           fi # end assume it is ib*
 | 
			
		||||
       fi # end if AIX
 | 
			
		||||
   done # end for nicip
 | 
			
		||||
done # end for nic
 | 
			
		||||
 | 
			
		||||
# echo "goodnics=$goodnics"
 | 
			
		||||
# Bringup all the ib interfaces
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user