# $Header: Ptdpm14.pm 31-dec-2003.11:38:36 skumar Exp $ # # Package : Ptdpm14.pm # # Copyright (c) 2002, 2003, Oracle Corporation. All rights reserved. # # NAME # Ptdpm14.pm # # DESCRIPTION # Collects Network Interface details # # NOTES # # MODIFIED (MM/DD/YY) # skumar 12/31/03 - AIX changes # mgoodric 09/27/04 - code cleanup # mgoodric 05/11/03 - added -debug tracing # mgoodric 04/08/03 - fix finding MAC address # goramamo 12/12/02 - Changes for SPARC III+ machines # goramamo 09/03/02 - goramamo_nic_flags_correction # goramamo 09/03/02 - Created by removing the code in Ptdpm1.pm # for better maintenance # ##************************************************************* use strict; package Ptdpm14; use Carp; require 5.005; #require 5.6.1; require Exporter; use Ptdpm0; use Ptdpm2; use Ptdpm3; #****************************************** # Export Subroutines #****************************************** @Ptdpm14::ISA = ('Exporter'); @Ptdpm14::EXPORT = qw( &getNetworkInterfaceDetails ); #****************************************** # Global Variables #****************************************** use constant NIL => ''; #****************************************** # Exported Subroutines #****************************************** sub getNetworkInterfaceDetails { debugTrace('Calling... getNetworkInterfaceDetails()'); my @nicdata = (); my $bcad = NIL; my $mac = NIL; my @nic1 = (); my @nic2 = (); my @nic3 = (); my @nic4 = (); my @nic5 = (); my @nic6 = (); my @nic7 = (); my @mac1 = (); my @mac2 = (); my $name = NIL; my $rest = NIL; my $inet = NIL; my $i = 0; my $j = 0; my $l = 0; my $k = 0; my $m = 0; my $n = 0; my $p = 0; my $q = 0; my $validEntry = 0; my $noOfNICs = 0; my $noOfMacAds = 0; my @nic = getNICDetails(); $noOfNICs = scalar(@nic); $q = $noOfNICs - 1; for ($i = 0 ; $i < $noOfNICs ; $i++) { #chomp($nic[$i]);$j++; $validEntry = 0; for ($p = $i ; $p < $noOfNICs ; $p++) { if (index($nic[$p], ':') > 0 && index($nic[$p], "flags=") > 0) { $i = $p; $validEntry = 1; last; } } if ($validEntry) { @nic1 = split ("flags", $nic[$i]); $nic1[0] = trim($nic1[0]); @nic5 = split (':', $nic1[0]); $name = join (':', @nic5); $nicdata[$j++] = joinValue($Ptdpm2::NIC_NAME_TAG, $name); # To sort the flags in alphabetical order to make comparison easier # in : flags=863 # out: BROADCAST,MULTICAST,NOTRAILERS,RUNNING,UP @nic3 = split ('=', $nic[$i]); ($rest, $nic3[1]) = split ('<', $nic3[1], 2); ($nic3[1], $rest) = split ('>', $nic3[1], 2); @nic6 = split (',', $nic3[1]); @nic7 = sort(@nic6); $nic3[1] = join (',', @nic7); $nic3[1] = trim($nic3[1]); $nicdata[$j++] = joinValue($Ptdpm2::FLAGS_TAG, $nic3[1]); $i++; @nic1 = split ("ipmtu", $nic[$i]); @nic4 = split (' ', $nic1[1]); $nic4[0] = int($nic4[0]); $nic4[0] = trim($nic4[0]); $nicdata[$j] = joinValue($Ptdpm2::MAX_TRANSFER_UNIT_TAG, $nic4[0]); @nic2 = split (' ', $nic[$i]); for ($k = 0 ; $k < 4 ; $k++) { if (!defined $nic2[$k]) { $nic2[$k] = NIL; } } $inet = trim($nic2[1]); $nicdata[$j++] = joinValue($Ptdpm2::INET_ADDRESS_TAG, $inet); $nicdata[$j++] = joinValue($Ptdpm2::MASK_TAG, $nic2[3]); if ($nic[$i] =~ /broadcast/) { $bcad = $nic2[5]; } else { $bcad = NIL; } $nicdata[$j++] = joinValue($Ptdpm2::BROADCAST_ADDRESS_TAG, $bcad); $mac = getMACAddress($inet); if (index($mac, "no entry") > -1 || index($mac, "unknown host") > -1 || $mac eq NIL) { $mac2[0] = NIL; } else { @mac1 = (); @mac2 = (); @mac1 = split (" at ", $mac); @mac2 = split (' ', $mac1[1]); } $nicdata[$j++] = joinValue($Ptdpm2::MAC_ADDRESS_TAG, $mac2[0]); #$inet = join (' ', 'hosts', $inet); getHostName(); my $aliases = getAdminEntries($Ptdpm0::hostname); my @hosts = split (' ', $aliases); my @hostnames = (); $m = scalar(@hosts); $n = 0; for ($l = 0 ; $l < $m ; $l++) { if (index($aliases, $Ptdpm0::hostname) > -1 && $n == 0) { $hostnames[0] = $Ptdpm0::hostname; $n++; } elsif ($hosts[$l] eq $nic2[1] || $hosts[$l] eq $Ptdpm0::hostname) { } else { $hostnames[$n++] = $hosts[$l]; } } $aliases = join (',', @hostnames); $nicdata[$j++] = joinValue($Ptdpm2::HOSTNAME_ALIASES_TAG, $aliases); } } return @nicdata; } 1; # End of the Program