Add support for e_name() in Psuedo ENTITY-MIB methods

This commit is contained in:
Eric Miller
2007-11-26 03:32:11 +00:00
parent 8b5ba1e959
commit 004de3d29b
4 changed files with 116 additions and 14 deletions

View File

@@ -391,6 +391,13 @@ sub e_descr {
return $stack->ns_e_descr($partial); return $stack->ns_e_descr($partial);
} }
sub e_name {
my $stack = shift;
my $partial = shift;
return $stack->ns_e_name($partial);
}
sub e_fwver { sub e_fwver {
my $stack = shift; my $stack = shift;
my $partial = shift; my $partial = shift;

View File

@@ -367,6 +367,13 @@ sub e_descr {
return $stack->SUPER::e_descr($partial) || $stack->ns_e_descr($partial); return $stack->SUPER::e_descr($partial) || $stack->ns_e_descr($partial);
} }
sub e_name {
my $stack = shift;
my $partial = shift;
return $stack->SUPER::e_name($partial) || $stack->ns_e_name($partial);
}
sub e_fwver { sub e_fwver {
my $stack = shift; my $stack = shift;
my $partial = shift; my $partial = shift;

View File

@@ -623,10 +623,10 @@ sub e_class {
if ($iid == 1) { if ($iid == 1) {
$rc_e_class{$iid} = 'chassis'; $rc_e_class{$iid} = 'chassis';
} }
elsif ($iid =~/^9/) { elsif ($iid =~/^9(\d)/ and length $iid > 5) {
$rc_e_class{$iid} = 'powerSupply'; $rc_e_class{$iid} = 'powerSupply';
} }
elsif ($iid =~/00$/) { elsif ($iid =~/0000$/) {
$rc_e_class{$iid} = 'container'; $rc_e_class{$iid} = 'container';
} }
else { else {
@@ -665,7 +665,7 @@ sub e_descr {
my $type = $rc_c_t->{$idx}; my $type = $rc_c_t->{$idx};
next unless $type; next unless $type;
my $index = "$idx"."0000"; my $index = "$idx"."0000";
$rc_e_descr{$index} = "slot"."$idx"; $rc_e_descr{$index} = "Slot "."$idx";
$index++; $index++;
$rc_e_descr{$index} = $type; $rc_e_descr{$index} = $type;
} }
@@ -683,7 +683,7 @@ sub e_descr {
my $cb = $rc2_cb->{$idx}; my $cb = $rc2_cb->{$idx};
my $index = "$idx"."0000"; my $index = "$idx"."0000";
$rc_e_descr{$index} = "slot"."$idx"; $rc_e_descr{$index} = "Slot "."$idx";
$index++; $index++;
$rc_e_descr{$index} = $cf; $rc_e_descr{$index} = $cf;
$index++; $index++;
@@ -769,6 +769,45 @@ sub e_type {
return \%rc_e_type; return \%rc_e_type;
} }
sub e_name {
my $passport = shift;
my $model = $passport->model();
my $rc_e_idx = $passport->e_index() || {};
my %rc_e_name;
foreach my $iid (keys %$rc_e_idx){
if ($iid == 1) {
$rc_e_name{$iid} = 'Chassis';
next;
}
my $mod = int (substr($iid, -4, 2));
my $slot = substr($iid, -6, 2);
if ($iid =~/^9(\d)/ and length $iid > 5) {
$rc_e_name{$iid} = "Power Supply $1";
}
elsif ($iid =~/(00){2}$/) {
$rc_e_name{$iid} = "Slot $slot";
}
elsif ($iid =~/(00){1}$/) {
$rc_e_name{$iid} = "Card $slot, MDA $mod";
}
elsif (defined $model and $model =~ /(105|11[05]0|12[05])/ and $iid =~ /1$/) {
$rc_e_name{$iid} = "Card $slot";
}
elsif ($iid =~ /1$/) {
$rc_e_name{$iid} = "Card $slot (front)";
}
elsif ($iid =~ /2$/) {
$rc_e_name{$iid} = "Card $slot (back)";
}
}
return \%rc_e_name;
}
sub e_hwver { sub e_hwver {
my $passport = shift; my $passport = shift;
@@ -915,11 +954,15 @@ sub e_pos {
$rc_e_pos{$iid} = -1; $rc_e_pos{$iid} = -1;
next; next;
} }
my $sub = substr($iid, -1); my $sub = int (substr($iid, -2, 2));
my $mod = int (substr($iid, -4, 2));
my $slot = substr($iid, -6, 2); my $slot = substr($iid, -6, 2);
if ($iid =~/(00){1,2}$/) { if ($iid =~/(00){2}$/) {
$rc_e_pos{$iid} = $slot; $rc_e_pos{$iid} = $slot;
} }
elsif ($iid =~/(00){1}$/) {
$rc_e_pos{$iid} = $mod * 100;
}
else { else {
$rc_e_pos{$iid} = $sub; $rc_e_pos{$iid} = $sub;
} }
@@ -939,14 +982,10 @@ sub e_parent {
$rc_e_parent{$iid} = 0; $rc_e_parent{$iid} = 0;
next; next;
} }
my $mod = substr($iid, -4, 2);
my $slot = substr($iid, -6, 2); my $slot = substr($iid, -6, 2);
if ($iid =~/(00){1,2}$/) { if ($iid =~/(00){1,2}$/) {
$rc_e_parent{$iid} = 1; $rc_e_parent{$iid} = 1;
} }
elsif ($mod != 0) {
$rc_e_parent{$iid} = "$slot"."$mod"."00";
}
else { else {
$rc_e_parent{$iid} = "$slot"."0000"; $rc_e_parent{$iid} = "$slot"."0000";
} }

View File

@@ -229,6 +229,55 @@ sub ns_e_descr {
return \%ns_e_descr; return \%ns_e_descr;
} }
sub ns_e_name {
my $stack = shift;
my $partial = shift;
my $ns_class = $stack->ns_e_class() || {};
my $ns_e_idx = $stack->ns_e_index() || {};
my $ns_grp_enc = $stack->s5ChasGrpEncodeFactor($partial) || {};
my $is_virtual = $stack->ns_e_is_virtual();
my %ns_e_name;
foreach my $iid (keys %$ns_e_idx){
my ($grp, $idx, $sub) = split (/\./,$iid);
my $class = $ns_class->{$iid};
next unless defined $class;
my $enc = $ns_grp_enc->{$grp};
if ((!$is_virtual) and ($grp == 1)) {
$ns_e_name{$iid} = 'Supervisory Module';
}
elsif ($class eq 'stack') {
$ns_e_name{$iid} = 'Stack Master Unit';
}
elsif ($class eq 'chassis') {
if ($is_virtual) {
my $unit = $idx / $enc;
$ns_e_name{$iid} = "Switch Unit $unit";
}
else {
$ns_e_name{$iid} = "Chassis";
}
}
elsif ($class eq 'module') {
if ($is_virtual) {
my $unit = int ($idx / $enc);
my $mda = $idx % $enc;
$ns_e_name{$iid} = "Switch Unit $unit, MDA $mda";
}
elsif ($sub != 0) {
$ns_e_name{$iid} = "Module Slot $idx, Subcomponent $sub";
}
else {
$ns_e_name{$iid} = "Module Slot $idx";
}
}
}
return \%ns_e_name;
}
sub ns_e_hwver { sub ns_e_hwver {
my $stack = shift; my $stack = shift;
my $partial = shift; my $partial = shift;
@@ -325,15 +374,15 @@ sub ns_e_pos {
} }
elsif ($grp == 3 and $idx == 0 ) { elsif ($grp == 3 and $idx == 0 ) {
my $enc = $ns_grp_enc->{$grp}; my $enc = $ns_grp_enc->{$grp};
if ($is_stack and ($pos % $enc)) { if ($is_virtual and ($pos % $enc)) {
$pos = int ($pos % $enc); $pos = int ($pos % $enc);
} }
elsif ($is_stack and !($pos % $enc)) {
$pos = ($pos / $enc);
}
elsif ($is_virtual and !$is_stack and !($pos % $enc)) { elsif ($is_virtual and !$is_stack and !($pos % $enc)) {
$pos = -1; $pos = -1;
} }
elsif ($is_virtual and !($pos % $enc)) {
$pos = ($pos / $enc);
}
} }
elsif (!$is_stack and $grp == 3) { elsif (!$is_stack and $grp == 3) {
$pos = $idx; $pos = $idx;