Fix bug 3522940: FB->lsslp no response on aix71D
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@12500 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
		| @@ -2,6 +2,7 @@ package xCAT::SLP; | ||||
| use Carp; | ||||
| use IO::Select; | ||||
| use strict; | ||||
| use xCAT::Utils; | ||||
| my $ip6support = eval { | ||||
| 	require IO::Socket::INET6; | ||||
| 	require Socket6; | ||||
| @@ -307,11 +308,36 @@ sub send_service_request_single { | ||||
|  | ||||
| sub get_interfaces { | ||||
| 	#TODO: AIX tolerance, no subprocess, include/exclude interface(s) | ||||
| 	my @ipoutput = `ip addr`; | ||||
| 	my %ifacemap; | ||||
| 	my $payingattention=0; | ||||
| 	my $interface; | ||||
| 	my $keepcurrentiface; | ||||
|         # AIX part | ||||
|     if (xCAT::Utils->isAIX()) { | ||||
|         $ip6support = 0; | ||||
|         my $result = `ifconfig -a`; | ||||
|         my @nics = $result =~ /(\w+\d+)\: flags=/g; | ||||
|         my @adapter = split /\w+\d+:\s+flags=/, $result; | ||||
|         for (my $i=0; $i<scalar(@adapter); $i++) { | ||||
|             $_ = $adapter[$i+1]; | ||||
|             if ( !($_ =~ /LOOPBACK/ ) and | ||||
|                    $_ =~ /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; | ||||
|  | ||||
|                         if( $nics[$i]=~ /\w+(\d+)/){ | ||||
|                         $ifacemap{$nics[$i]}->{scopeidx} = $1+2; | ||||
|                        } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } else { | ||||
|             my @ipoutput = `ip addr`; | ||||
| 	foreach my $line (@ipoutput) { | ||||
| 		if ($line =~ /^\d/) { # new interface, new context.. | ||||
| 			if ($interface and not $keepcurrentiface) { | ||||
| @@ -336,6 +362,7 @@ sub get_interfaces { | ||||
| 			push @{$ifacemap{$interface}->{ipv4addrs}},$1; | ||||
| 		} | ||||
| 	} | ||||
|     } | ||||
| 	return \%ifacemap; | ||||
| } | ||||
| # discovery is "service request", rfc 2608  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user