From e97573587aa1b7b241e7d0d74b9823c467ebe23c Mon Sep 17 00:00:00 2001 From: yinle Date: Sat, 5 May 2012 02:06:19 +0000 Subject: [PATCH] Fix some mistakes. git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@12539 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd --- perl-xCAT/xCAT/SLP.pm | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/perl-xCAT/xCAT/SLP.pm b/perl-xCAT/xCAT/SLP.pm index 61cd75662..739d9b5bc 100644 --- a/perl-xCAT/xCAT/SLP.pm +++ b/perl-xCAT/xCAT/SLP.pm @@ -332,11 +332,22 @@ sub get_interfaces { $_ =~ /UP(,|>)/ and $_ =~ /BROADCAST/ ) { my @ip = split /\n/; - foreach ( @ip ) { - if ( $_ =~ /^\s*inet\s+/ and - $_ =~ /broadcast\s+(\d+\.\d+\.\d+\.\d+)/ ) { - push @{$ifacemap{$nics[$i]}->{ipv4addrs}},$1; - + for my$entry ( @ip ) { + if ( $entry =~ /broadcast\s+/ and $entry =~ /^\s*inet\s+(\d+\.\d+\.\d+\.\d+)/) { + my $tmpip = $1; + if($entry =~ /netmask\s+(0x\w+)/) { + my $mask = hex($1); + my $co = 31; + my $count = 0; + while ($co+1) { + if((($mask&(2**$co))>>$co) == 1) { + $count++; + } + $co--; + } + $tmpip = $tmpip.'/'.$count; + } + push @{$ifacemap{$nics[$i]}->{ipv4addrs}},$tmpip; if( $nics[$i]=~ /\w+(\d+)/){ $ifacemap{$nics[$i]}->{scopeidx} = $1+2; } @@ -345,8 +356,8 @@ sub get_interfaces { } } } else { - my @ipoutput = `ip addr`; - foreach my $line (@ipoutput) { + my @ipoutput = `ip addr`; + foreach my $line (@ipoutput) { if ($line =~ /^\d/) { # new interface, new context.. if ($interface and not $keepcurrentiface) { #don't bother reporting unusable nics