handle different auth type in getnetinfo in ipmi.pm

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@996 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
linggao 2008-04-08 02:08:01 +00:00
parent 9613d2f9c0
commit 557cecaf8e

View File

@ -944,16 +944,34 @@ sub getnetinfo {
\@returnd
);
if($error) {
$rc = 1;
$text = $error;
}
else {
# response format:
# 4 bytes (RMCP header)
# 1 byte (auth type)
# 4 bytes (session sequence)
# 4 bytes (session id)
# 16 bytes (message auth code, not present if auth type is 0, $authoffset=16)
# 1 byte (ipmi message length)
# 1 byte (requester's address
# 1 byte (netfun, req lun)
# 1 byte (checksum)
# 1 byte (Responder's slave address)
# 1 byte (Sequence number, generated by the requester)
# 1 byte (command)
# 1 byte (return code)
# 1 byte (param revision)
# N bytes (data)
# 1 byte (checksum)
if($subcommand eq "garp") {
$code = $returnd[36];
$code = $returnd[36-$authoffset];
if($code == 0x00) {
$code = $returnd[38] / 2;
$code = $returnd[38-$authoffset] / 2;
$text = sprintf("$format %d","Gratuitous ARP seconds:",$code);
}
else {
@ -962,7 +980,7 @@ sub getnetinfo {
}
}
elsif($subcommand eq "alert") {
if ($returnd[39] & 0x8) {
if ($returnd[39-$authoffset] & 0x8) {
$text = "SP Alerting: enabled";
} else {
$text = "SP Alerting: disabled";
@ -971,50 +989,50 @@ sub getnetinfo {
elsif($subcommand =~ m/^snmpdest(\d+)/ ) {
$text = sprintf("$format %d.%d.%d.%d",
"SP SNMP Destination $1:",
$returnd[41],
$returnd[42],
$returnd[43],
$returnd[44]);
$returnd[41-$authoffset],
$returnd[42-$authoffset],
$returnd[43-$authoffset],
$returnd[44-$authoffset]);
}
elsif($subcommand eq "ip") {
$text = sprintf("$format %d.%d.%d.%d",
"BMC IP:",
$returnd[38],
$returnd[39],
$returnd[40],
$returnd[41]);
$returnd[38-$authoffset],
$returnd[39-$authoffset],
$returnd[40-$authoffset],
$returnd[41-$authoffset]);
}
elsif($subcommand eq "netmask") {
$text = sprintf("$format %d.%d.%d.%d",
"BMC Netmask:",
$returnd[38],
$returnd[39],
$returnd[40],
$returnd[41]);
$returnd[38-$authoffset],
$returnd[39-$authoffset],
$returnd[40-$authoffset],
$returnd[41-$authoffset]);
}
elsif($subcommand eq "gateway") {
$text = sprintf("$format %d.%d.%d.%d",
"BMC Gateway:",
$returnd[38],
$returnd[39],
$returnd[40],
$returnd[41]);
$returnd[38-$authoffset],
$returnd[39-$authoffset],
$returnd[40-$authoffset],
$returnd[41-$authoffset]);
}
elsif($subcommand eq "backupgateway") {
$text = sprintf("$format %d.%d.%d.%d",
"BMC Backup Gateway:",
$returnd[38],
$returnd[39],
$returnd[40],
$returnd[41]);
$returnd[38-$authoffset],
$returnd[39-$authoffset],
$returnd[40-$authoffset],
$returnd[41-$authoffset]);
}
elsif ($subcommand eq "community") {
$text = sprintf("$format ","SP SNMP Community:");
my $l = 38;
my $l = 38-$authoffset;
while ($returnd[$l] ne 0) {
$l = $l + 1;
}
my $i=38;
my $i=38-$authoffset;
while ($i<$l) {
$text = $text . sprintf("%c",$returnd[$i]);
$i = $i + 1;