File: Ports.pm

package info (click to toggle)
ocsinventory-agent 2%3A2.10.0-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 5,424 kB
  • sloc: perl: 26,492; xml: 773; objc: 528; sh: 386; ansic: 333; makefile: 12
file content (68 lines) | stat: -rw-r--r-- 1,434 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package Ocsinventory::Agent::Backend::OS::Solaris::Ports;

use strict;

sub run {
  my $params = shift;
  my $common = $params->{common};

  my $zone;
  my $SystemModel;
  my $aarch;

  my $flag;
  my $caption;
  my $description;
  my $name;
  my $type;

  if ( !$common->can_run("zonename") || `zonename` =~ /global/ ) {
    # Ether pre Sol10 or in Sol10/Sol11 global zone
    $zone = "global";
  } else {
    $zone = "";
  }

  if ($zone) {
    chomp($SystemModel = `uname -m`);
    chomp($aarch = `uname -p`);
    if( $aarch eq "i386" ){
      #
      # For a Intel/AMD arch, we're using smbios
      #
      foreach(`/usr/sbin/smbios -t SMB_TYPE_PORT`) {
        if(/\s+Internal Reference Designator:\s*(.+)/i ) {
          $flag = 1;
          $name = $1;
        }
        elsif ($flag && /^$/) { # end of section
          $flag = 0;

          $common->addPorts({
            CAPTION => $caption,
            DESCRIPTION => $description,
            NAME => $name,
            TYPE => $type,
          });

          $caption = $description = $name = $type = undef;
        }
        elsif ($flag) {
          $caption = $1 if /\s+External Connector Type:.*\((.+)\)/i;
          $description = $1 if /\s+External Reference Designator:\s*(.+)/i;
          $type = $1 if /\s+Port Type:.*\((.+)\)/i;
        }

      }
    }
    elsif( $aarch eq "sparc" ) {
      #
      # For a Sparc arch, we're done
      #
    }

  }
}

1;