1,1,1,1,1,1,1,1,1 LIST General Configuration Information User @(#)$Name: 2_2_0_2 $ InvScout Logic Database $Revision: 1.5 $ $Date: 2002-09-03 17:00:48-05 $ /tmp /var/adm/invscout /var/adm/invscout/lib pal.so hsc.so 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 LIST uname -m values for machines with no fw required user 02 10 11 14 18 1c 20 2e 30 31 34 35 37 38 41 42 43 46 47 48 49 57 58 59 5C 63 64 66 67 70 71 72 75 76 77 79 80 81 82 89 90 91 94 F0 1,1,1 LIST uname -M values for machines with no fw required user 1,1,1,1,1,1,1,1,1 NVPLIST Model ID (uname -m) ==>> system name user 4D 7020-All 40P Models;6015-All 40P Models C0 E20-E30-F30 C4 E20-E30-F30 1,1,1,39 BLOB Script for last attempt to map Model ID to system name user Test_for_mc_smp_models() { if [[ $1 = A[01234567] ]] then if [[ -e /usr/lpp/ssp/install/bin/node_number ]] then print -n syname: echo "Microchannel-SMP-System 604 High Nodes" else Test_Line=$( \ /usr/sbin/lscfg -vl cpucard* | \ /usr/bin/grep "FRU Number" \ ) echo $Test_Line | /usr/bin/grep -q X4D 2>/dev/null Test_50_X4D=$? echo $Test_Line | /usr/bin/grep -q N4F 2>/dev/null Test_50_N4F=$? echo $Test_Line | /usr/bin/grep -q C4D 2>/dev/null Test_40_C4D=$? if [[ $Test_50_X4D -eq 0 ]] || \ [[ $Test_40_C4D -eq 0 ]] then print -n syname: echo "Microchannel-SMP-System Model 40/50" elif [[ $Test_50_N4F -eq 0 ]] then print -n syname: echo "7015-R50 W/RPQ 8A1091" else print -n syname: echo "Microchannel-SMP-System Model 30" fi fi exit 0 fi return } Test_for_mc_smp_models $1 exit 1 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 NVPLIST uname -M ==>> system name user ,7026-H10 F40-H10 ,7025-F50 F50-H50-B80-5X0-260-N8X-H70-260-170-270 ,7025-H50 F50-H50-B80-5X0-260-N8X-H70-260-170-270 ,7026-H50 F50-H50-B80-5X0-260-N8X-H70-260-170-270 ,7026-B80 F50-H50-B80-5X0-260-N8X-H70-260-170-270 ,9076-WCN F50-H50-B80-5X0-260-N8X-H70-260-170-270 ,9076-260 F50-H50-B80-5X0-260-N8X-H70-260-170-270 ,9076-N80 F50-H50-B80-5X0-260-N8X-H70-260-170-270 ,9076-N81 F50-H50-B80-5X0-260-N8X-H70-260-170-270 ,7025-H70 F50-H50-B80-5X0-260-N8X-H70-260-170-270 ,7026-H70 F50-H50-B80-5X0-260-N8X-H70-260-170-270 ,7043-260 F50-H50-B80-5X0-260-N8X-H70-260-170-270 ,7044-170 F50-H50-B80-5X0-260-N8X-H70-260-170-270 ,7043-270 F50-H50-B80-5X0-260-N8X-H70-260-170-270 ,7044-270 F50-H50-B80-5X0-260-N8X-H70-260-170-270 ,9076-270 F50-H50-B80-5X0-260-N8X-H70-260-170-270 ,7043-150 7043-150;7046-B50 ,7046-B50 7043-150;7046-B50 ,7013-S70 701(3,5,7)-S(7,8)x ,7013-S7A 701(3,5,7)-S(7,8)x ,7015-S70 701(3,5,7)-S(7,8)x ,7015-S7A 701(3,5,7)-S(7,8)x ,7017-S70 701(3,5,7)-S(7,8)x ,7017-S7A 701(3,5,7)-S(7,8)x ,7017-S80 701(3,5,7)-S(7,8)x ,7017-S85 701(3,5,7)-S(7,8)x ,7025-F80 Condor-Regatta ,7025-6F0 Condor-Regatta ,7025-6F1 Condor-Regatta ,7026-H80 Condor-Regatta ,7026-6H0 Condor-Regatta ,7026-6H1 Condor-Regatta ,7026-M80 Condor-Regatta ,7026-6M1 Condor-Regatta ,7028-6C4 Condor-Regatta ,7028-6E4 Condor-Regatta ,7038-6M2 Condor-Regatta ,7039-651 Condor-Regatta ,7040-681 Condor-Regatta ,7040-671 Condor-Regatta ,7028-6C1 7028-6E1-System ,7028-6E1 7028-6E1-System ,7028-6C2 7028-6E1-System ,7028-6E2 7028-6E1-System ,7038-6H2 7028-6E1-System 1,1,1,27 BLOB Script to pattern-match uname -M to system name user Match_string() { echo "$1" | grep -qi "$2" 2>/dev/null return_value=$? if [[ $return_value -eq 1 ]]; then return elif [[ $return_value -eq 0 ]]; then print -n syname: echo $3 print -n syname: echo $4 exit 0 else echo "grep syntax error">&2; exit 2 fi } Match_string "$1" "^.* PPS MODEL 7025" \ "PPS MODEL 7025" \ "F40-H10" Match_string "$1" "^.* MODEL 7042/7043" \ "MODEL 7042/7043" \ "7043-140" Match_string "$1" "^.* PPS MODEL 7248" \ "PPS MODEL 7248" \ "7248-100;7248-120;7248-132" exit 1 1,1,1,1 LIST System names for machines with no fw required user Microchannel-SMP-System Model 30 1,1,1,1,1,1,1,1,1 NVPLIST mainprocs fw type | uname -m | system name ==>> fw names (only) user system | 4D | 7020-All 40P Models;6015-All 40P Models 7020-40P-System service | C0 | E20-E30-F30 7024-Service service | C4 | E20-E30-F30 7024-Service 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 NVPLIST mainprocs fw type | uname -M | system name ==>> fw names (only) user system | PPS MODEL 7025 | F40-H10 7025-F40-System service | PPS MODEL 7025 | F40-H10 7024-Service system | ,7026-H10 | F40-H10 7025-F40-System service | ,7026-H10 | F40-H10 7024-Service system | MODEL 7042/7043 | 7043-140 7043-140-System system | PPS MODEL 7248 | 7248-100;7248-120;7248-132 7248-43P-System 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 NVPLIST mainprocs fw type | uname -m | system name ==>> fw names | level scripts user system | A0 | Microchannel-SMP-System Model 40/50 Microchannel-SMP-System | Determ.system.fw.lev.Mc_SMP system | A1 | Microchannel-SMP-System Model 40/50 Microchannel-SMP-System | Determ.system.fw.lev.Mc_SMP system | A2 | Microchannel-SMP-System Model 40/50 Microchannel-SMP-System | Determ.system.fw.lev.Mc_SMP system | A3 | Microchannel-SMP-System Model 40/50 Microchannel-SMP-System | Determ.system.fw.lev.Mc_SMP system | A4 | Microchannel-SMP-System Model 40/50 Microchannel-SMP-System | Determ.system.fw.lev.Mc_SMP system | A5 | Microchannel-SMP-System Model 40/50 Microchannel-SMP-System | Determ.system.fw.lev.Mc_SMP system | A6 | Microchannel-SMP-System Model 40/50 Microchannel-SMP-System | Determ.system.fw.lev.Mc_SMP system | A7 | Microchannel-SMP-System Model 40/50 Microchannel-SMP-System | Determ.system.fw.lev.Mc_SMP system | A3 | 7015-R50 W/RPQ 8A1091 A9.52 | Determ.system.fw.lev.Mc_SMP system | A4 | 7015-R50 W/RPQ 8A1091 A9.52 | Determ.system.fw.lev.Mc_SMP system | A5 | 7015-R50 W/RPQ 8A1091 A9.52 | Determ.system.fw.lev.Mc_SMP system | A4 | Microchannel-SMP-System 604 High Nodes Microchannel-SMP-System-RPQ | Determ.system.fw.lev.Mc_SMP system | A5 | Microchannel-SMP-System 604 High Nodes Microchannel-SMP-System-RPQ | Determ.system.fw.lev.Mc_SMP system | C0 | E20-E30-F30 7024-System | Determ.system.fw.lev.7024-System system | C4 | E20-E30-F30 7024-System | Determ.system.fw.lev.7024-System 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 NVPLIST mainprocs fw type | uname -M | system name ==>> fw names | level scripts user group | ,7025-F50 | F50-H50-B80-5X0-260-N8X-H70-260-170-270 7025-F50-System | Determ.group.fw.lev.Script.A group | ,7025-H50 | F50-H50-B80-5X0-260-N8X-H70-260-170-270 7026-H50-System | Determ.group.fw.lev.Script.A group | ,7026-H50 | F50-H50-B80-5X0-260-N8X-H70-260-170-270 7026-H50-System | Determ.group.fw.lev.Script.A group | ,7026-B80 | F50-H50-B80-5X0-260-N8X-H70-260-170-270 7026-B80-System | Determ.group.fw.lev.Script.A group | ,9076-WCN | F50-H50-B80-5X0-260-N8X-H70-260-170-270 9076-5X0-System | Determ.group.fw.lev.Script.A group | ,9076-260 | F50-H50-B80-5X0-260-N8X-H70-260-170-270 9076-260-System | Determ.group.fw.lev.Script.A group | ,9076-N80 | F50-H50-B80-5X0-260-N8X-H70-260-170-270 9076-N80-System | Determ.group.fw.lev.Script.A group | ,9076-N81 | F50-H50-B80-5X0-260-N8X-H70-260-170-270 9076-N81-System | Determ.group.fw.lev.Script.A group | ,7025-H70 | F50-H50-B80-5X0-260-N8X-H70-260-170-270 7026-H70-System | Determ.group.fw.lev.Script.A group | ,7026-H70 | F50-H50-B80-5X0-260-N8X-H70-260-170-270 7026-H70-System | Determ.group.fw.lev.Script.A group | ,7043-260 | F50-H50-B80-5X0-260-N8X-H70-260-170-270 7043-260-System | Determ.group.fw.lev.Script.A group | ,7044-170 | F50-H50-B80-5X0-260-N8X-H70-260-170-270 7044-170-System | Determ.group.fw.lev.Script.A group | ,7043-270 | F50-H50-B80-5X0-260-N8X-H70-260-170-270 7044-270-System | Determ.group.fw.lev.Script.A group | ,7044-270 | F50-H50-B80-5X0-260-N8X-H70-260-170-270 7044-270-System | Determ.group.fw.lev.Script.A group | ,9076-270 | F50-H50-B80-5X0-260-N8X-H70-260-170-270 9076-270-System | Determ.group.fw.lev.Script.A system | ,7043-150 | 7043-150;7046-B50 7043-150, 7046-B50 System | Determ.system.fw.lev.7043-150;7046-B50 system | ,7046-B50 | 7043-150;7046-B50 7043-150, 7046-B50 System | Determ.system.fw.lev.7043-150;7046-B50 group | ,7013-S70 | 701(3,5,7)-S(7,8)x 7017-S7X-System | Determ.group.fw.lev.S7x-S8x group | ,7013-S7A | 701(3,5,7)-S(7,8)x 7017-S7X-System | Determ.group.fw.lev.S7x-S8x group | ,7015-S70 | 701(3,5,7)-S(7,8)x 7017-S7X-System | Determ.group.fw.lev.S7x-S8x group | ,7015-S7A | 701(3,5,7)-S(7,8)x 7017-S7X-System | Determ.group.fw.lev.S7x-S8x group | ,7017-S70 | 701(3,5,7)-S(7,8)x 7017-S7X-System | Determ.group.fw.lev.S7x-S8x group | ,7017-S7A | 701(3,5,7)-S(7,8)x 7017-S7X-System | Determ.group.fw.lev.S7x-S8x group | ,7017-S80 | 701(3,5,7)-S(7,8)x 7017-S8x-System | Determ.group.fw.lev.S7x-S8x group | ,7017-S85 | 701(3,5,7)-S(7,8)x 7017-S8x-System | Determ.group.fw.lev.S7x-S8x system | ,7025-F80 | Condor-Regatta 7025-6F1-System | Determ.system.fw.lev.Condor-Regatta system | ,7025-6F0 | Condor-Regatta 7025-6F1-System | Determ.system.fw.lev.Condor-Regatta system | ,7025-6F1 | Condor-Regatta 7025-6F1-System | Determ.system.fw.lev.Condor-Regatta system | ,7026-H80 | Condor-Regatta 7026-6H1-System | Determ.system.fw.lev.Condor-Regatta system | ,7026-6H0 | Condor-Regatta 7026-6H1-System | Determ.system.fw.lev.Condor-Regatta system | ,7026-6H1 | Condor-Regatta 7026-6H1-System | Determ.system.fw.lev.Condor-Regatta system | ,7026-M80 | Condor-Regatta 7026-6M1-System | Determ.system.fw.lev.Condor-Regatta system | ,7026-6M1 | Condor-Regatta 7026-6M1-System | Determ.system.fw.lev.Condor-Regatta system | ,7028-6C4 | Condor-Regatta 7028-6C4-system | Determ.system.fw.lev.Condor-Regatta system | ,7028-6E4 | Condor-Regatta 7028-6C4-system | Determ.system.fw.lev.Condor-Regatta system | ,7038-6M2 | Condor-Regatta 7038-6M2-system | Determ.system.fw.lev.Condor-Regatta system | ,7039-651 | Condor-Regatta 7039-651-System | Determ.system.fw.lev.Condor-Regatta system | ,7040-681 | Condor-Regatta 7040-681-system | Determ.system.fw.lev.Condor-Regatta system | ,7040-671 | Condor-Regatta 7040-681-system | Determ.system.fw.lev.Condor-Regatta group | ,7028-6E1 | 7028-6E1-System 7028-6E1-System | Determ.group.fw.lev.7028-6E1-System group | ,7028-6C1 | 7028-6E1-System 7028-6E1-System | Determ.group.fw.lev.7028-6E1-System group | ,7028-6C2 | 7028-6E1-System 7028-6E1-System | Determ.group.fw.lev.7028-6E1-System group | ,7028-6E2 | 7028-6E1-System 7028-6E1-System | Determ.group.fw.lev.7028-6E1-System group | ,7038-6H2 | 7028-6E1-System 7028-6E1-System | Determ.group.fw.lev.7028-6E1-System 1,1,1,24 BLOB Determ.group.fw.lev.Script.A user VR=$(/usr/bin/oslevel | /usr/bin/cut -d. -f1,2) if [[ $VR = 4.1 ]]; then lscfg_opts=vr; fi if [[ $VR > 4.1 ]]; then lscfg_opts=vp; fi print -n fwlevl: /usr/sbin/lscfg -$lscfg_opts | \ /usr/bin/grep -p "System Firmware" | \ /usr/bin/grep ROM | \ /usr/bin/sed "s/.*(alterable)\.*\([^ ]*\).*$/\1/" N_Lines=$( \ /usr/sbin/lscfg -$lscfg_opts | \ /usr/bin/grep -p -E "SP_CARD|Service Processor" | \ /usr/bin/grep ROM | \ /usr/bin/grep "alterable)" | \ /usr/bin/wc -l \ ) if [[ $N_Lines -eq 1 ]]; then VarString="alterable)" else VarString="(alterable)" fi print -n fwlevl: /usr/sbin/lscfg -$lscfg_opts | \ /usr/bin/grep -p -E "SP_CARD|Service Processor" | \ /usr/bin/grep ROM | \ /usr/bin/grep $VarString | \ /usr/bin/sed "s/.*alterable)\.*\([^ ]*\).*$/\1/" 1,1,1,8 BLOB Determ.system.fw.lev.7043-150;7046-B50 user VR=$(/usr/bin/oslevel | /usr/bin/cut -d. -f1,2) if [[ $VR = 4.1 ]]; then lscfg_opts=vr; fi if [[ $VR > 4.1 ]]; then lscfg_opts=vp; fi print -n fwlevl: /usr/sbin/lscfg -$lscfg_opts | \ /usr/bin/grep -p openprom | \ /usr/bin/grep Model | \ /usr/bin/sed "s/.*Model:.*\(TCP[^ ]*\).*$/\1/" 1,1,1,5 BLOB Determ.system.fw.lev.Mc_SMP user print -n fwlevl: /usr/sbin/lscfg -vl ioplanar0 | \ /usr/bin/grep ".*Device Specific.*(RM)" | \ /usr/bin/sed \ "s/.*Device Specific.*(RM).* \(....\).*/\1/" 1,1,1,8 BLOB Determ.system.fw.lev.7024-System user VR=$(/usr/bin/oslevel | /usr/bin/cut -d. -f1,2) if [[ $VR = 4.1 ]]; then lscfg_opts=vr; fi if [[ $VR > 4.1 ]]; then lscfg_opts=vp; fi print -n fwlevl: /usr/sbin/lscfg -$lscfg_opts | \ /usr/bin/grep VIC | \ /usr/bin/sed \ "s/.*Device Specific.*(RM).*\(VIC[^ ]*\).*$/\1/" 1,1,1,47 BLOB Determ.group.fw.lev.S7x-S8x user VR=$(/usr/bin/oslevel | /usr/bin/cut -d. -f1,2) if [[ $VR = 4.1 ]]; then lscfg_opts=vr; fi if [[ $VR > 4.1 ]]; then lscfg_opts=vp; fi Line=$( \ /usr/sbin/lscfg -$lscfg_opts | \ /usr/bin/grep -p "System Firmware" | \ /usr/bin/grep -i "ROM.*alter" ) Sys_Level_A=$( \ echo $Line | \ /usr/bin/sed \ "s/.*ROM Level.*(alterable).*[. ]\([^ ]*\) (A).*$/\1/" \ ) Sys_Level_B=$( \ echo $Line | \ /usr/bin/sed \ "s/.*ROM Level.*(alterable).*[. ]\([^ ]*\) (B).*$/\1/" \ ) print -n fwlevl: echo $Sys_Level_A"|"$Sys_Level_B N_Lines=$( \ /usr/sbin/lscfg -$lscfg_opts | \ /usr/bin/grep -p -E "SP_CARD|Service Processor" | \ /usr/bin/grep -i "ROM.*alter" | \ /usr/bin/wc -l \ ) if [[ $N_Lines -eq 1 ]]; then VarString="alterable)" else VarString="(alterable)" fi Line=$( \ /usr/sbin/lscfg -$lscfg_opts | \ /usr/bin/grep -p -E "SP_CARD|Service Processor" | \ /usr/bin/grep -i "ROM.*alter" | \ /usr/bin/grep $VarString ) Srv_Level_A=$( \ echo $Line | \ /usr/bin/sed \ "s/.*ROM Level.*alterable).*[. ]\([^ ]*\) (A).*$/\1/" \ ) Srv_Level_B=$( \ echo $Line | \ /usr/bin/sed \ "s/.*ROM Level.*alterable).*[. ]\([^ ]*\) (B).*$/\1/" \ ) print -n fwlevl: echo $Srv_Level_A"|"$Srv_Level_B 1,1,1,8 BLOB Determ.system.fw.lev.Condor-Regatta user VR=$(/usr/bin/oslevel | /usr/bin/cut -d. -f1,2) if [[ $VR = 4.1 ]]; then lscfg_opts=vr; fi if [[ $VR > 4.1 ]]; then lscfg_opts=vp; fi print -n fwlevl: /usr/sbin/lscfg -$lscfg_opts | \ /usr/bin/grep -E -p "Platform Firmware|RS M BP CSP" | \ /usr/bin/grep ".*ROM.*(alterable)[\. ]*" | \ /usr/bin/sed "s/.*ROM.*(alterable)[\. ]*\([^ ]*\).*$/\1/" 1,1,1,11 BLOB Determ.group.fw.lev.7028-6E1-System user VR=$(/usr/bin/oslevel | /usr/bin/cut -d. -f1,2) if [[ $VR = 4.1 ]]; then lscfg_opts=vr; fi if [[ $VR > 4.1 ]]; then lscfg_opts=vp; fi print -n fwlevl: /usr/sbin/lscfg -$lscfg_opts | \ /usr/bin/grep ".*ROM Level.*(alterable)\.*CLT" | \ /usr/bin/sed "s/.*ROM Level.*(alterable)\.*\([^ ]*\).*$/\1/" print -n fwlevl: /usr/sbin/lscfg -$lscfg_opts | \ /usr/bin/grep ".*ROM Level.*(alterable)\.*ct" | \ /usr/bin/sed "s/.*ROM Level.*(alterable)\.*\([^ ]*\).*$/\1/" 1,1,1,596 BLOB Script to determine device firmware status user Get_VPD_Value() { Mnemonic_Code=$1;shift 1 while [[ $# -ge 2 ]] do if [[ $1 = $Mnemonic_Code ]]; then VPD_value=$2 return $No_error else shift 2 fi done return $VPD_value_not_found } Start_dev_func() { Device_in_database=TRUE Device_category=$1 Firmware_level_source=$2 Firmware_name=$3 Index=0 for Mnemo_code in $4; do Fw_level_mnemo_code[Index]=$Mnemo_code ((Index+=1)) done Query_code=$5 return } Handle_DC_A_Q1() { Query_number=1 print -n fwname: print $Firmware_name for Mnemo_code in ${Fw_level_mnemo_code[*]}; do print -n vpdkwd: print $Mnemo_code done return } Handle_DC_A_FLS_VPD() { if [[ $# -lt 4 ]]; then return $Not_enough_function_params fi set -A Parameter_list "$@" N_prerequisites=${Parameter_list[1]} ((Fw_level_mnemo_code_index=2 + 3*N_prerequisites)) ((Query_index=Fw_level_mnemo_code_index + 1)) ((Pairs_index=Query_index + 1)) if [[ $# -le $Query_index ]]; then return $Not_enough_function_params fi Start_dev_func A VPD "$1" \ "${Parameter_list[$Fw_level_mnemo_code_index]}" \ ${Parameter_list[$Query_index]} if [[ $Query_code = FIRST_QUERY ]] then Handle_DC_A_Q1 Count=1 Index=4 while [[ $Count -le $N_prerequisites ]] do print -n vpdkwd: print ${Parameter_list[$Index]} ((Count+=1)) ((Index+=3)) done elif [[ $Query_code = USE_VPD ]] then Query_number=2 (( \ N_args_expected = \ 2 + 3*N_prerequisites + 2 + 2*(N_prerequisites+1) \ )) if [[ $# -lt $N_args_expected ]]; then return $Not_enough_function_params fi shift $Pairs_index Get_VPD_Value $Fw_level_mnemo_code $@ if [[ $? = $VPD_value_not_found ]]; then return $VPD_value_not_found fi print -n fwlevl: print $VPD_value Prereq_status="tentative" Count=1 Index=2 while [[ $Count -le $N_prerequisites ]] do Prereq_Description=${Parameter_list[$Index]} Prereq_Required_Value=${Parameter_list[$Index+1]} Prereq_Mn_Code=${Parameter_list[$Index+2]} Get_VPD_Value $Prereq_Mn_Code $@ if [[ $? = $VPD_value_not_found ]]; then return $VPD_value_not_found fi if [[ $VPD_value != $Prereq_Required_Value ]]; then print -n prereq: print $Prereq_Description $Prereq_Required_Value Prereq_status="unsatisfied" fi ((Count+=1)) ((Index+=3)) done if [[ $Prereq_status = "unsatisfied" ]]; then return $Q_2_DC_A_Prereq_Unsat fi else return $Unexpected_condition fi return $No_error } Handle_Token_Ring_Adapters() { if [[ $# -lt 3 ]]; then return $Not_enough_function_params fi Start_dev_func A VPD "$1" "$2" "$3" if [[ $Query_code = FIRST_QUERY ]] then Handle_DC_A_Q1 elif [[ $Query_code = USE_VPD ]] then Query_number=2 if [[ $# -lt 5 ]]; then return $Not_enough_function_params fi print -n fwlevl: print $5 | /usr/bin/sed "s/.*\(......\)/\1/" else return $Unexpected_condition fi return $No_error } Handle_Fiber_Channel_Adapters() { if [[ $# -lt 3 ]]; then return $Not_enough_function_params fi Start_dev_func A VPD "$1" "$2" "$3" if [[ $Query_code = FIRST_QUERY ]] then Handle_DC_A_Q1 elif [[ $Query_code = USE_VPD ]] then Query_number=2 if [[ $# -lt 5 ]]; then return $Not_enough_function_params fi Z7=$5 typeset -R4 Z7_end=$Z7 typeset -L2 Z7_end_12=$Z7_end typeset -R2 Z7_end_34=$Z7_end typeset -L1 Z7_end_3=$Z7_end_34 typeset -R1 Z7_end_4=$Z7_end_34 ((Z7_end_3_decimal=16#${Z7_end_3})) ((Z7_end_3_hi_2_bits=($Z7_end_3_decimal>>2)&3)) ((Z7_end_3_lo_2_bits=$Z7_end_3_decimal&3)) ((Z7_end_4_decimal=16#${Z7_end_4})) typeset -RZ2 Z7_end_4_decimal_lZ=$Z7_end_4_decimal Answer=$Z7_end_12$Z7_end_3_hi_2_bits$Z7_end_3_lo_2_bits$Z7_end_4_decimal_lZ print -n fwlevl: print $Answer else return $Unexpected_condition fi return $No_error } Handle_DC_A_FLS_VPD_CONCAT_2() { if [[ $# -lt 4 ]]; then return $Not_enough_function_params fi Start_dev_func A VPD "$1" "$2 $3" "$4" if [[ $Query_code = FIRST_QUERY ]] then Handle_DC_A_Q1 elif [[ $Query_code = USE_VPD ]] then Query_number=2 if [[ $# -lt 8 ]]; then return $Not_enough_function_params fi print -n fwlevl: print ${6}${8} else return $Unexpected_condition fi return $No_error } Device_Not_In_Database=0 Q_1_DC_A_FLS_VPD_No_error=1 Q_1_DC_A_FLS_OCO_No_error=2 Q_1_DC_B_No_error=3 Q_2_DC_A_No_error=4 Q_2_DC_A_Prereq_Unsat=5 Not_enough_function_params=6 VPD_value_not_found=7 Unexpected_condition=8 Not_enough_script_params=9 No_error=10 if [[ $# -lt 10 ]]; then exit $Not_enough_script_params; fi Device_Name=$1 Device_Unique_Type=$2 OEM_LED_Value=$3 LL=$4 FN=$5 MF=$6 TM=$7 LI=$8 Z2=$9 Class=\ $(echo $Device_Unique_Type | /usr/bin/cut -f1 -d /) Subclass=\ $(echo $Device_Unique_Type | /usr/bin/cut -f2 -d /) Class_Subclass=\ $(echo $Device_Unique_Type | /usr/bin/cut -f1,2 -d /) shift 9 Device_in_database=UNKNOWN Firmware_Name=undetermined Script_code= if [[ $Firmware_Name = undetermined ]] then if [[ $Class = 'cdrom' ]] then case "$MF $TM $FN" in " "CDRM00203*" "97H7610) Firmware_Name="32XCD-ROM"; Script_code=1 ;; esac fi if [[ -n $Script_code ]] then Handle_DC_A_FLS_VPD \ "$Firmware_Name" 0 RL $@ fi Dev_func_ret_stat=$? fi if [[ $Firmware_Name = undetermined ]] then if [[ $Class = 'tape' ]] then case "$MF $TM $LI" in QUANTUM" "DLT8000" "*) Firmware_Name="40GB-DLT"; Script_code=1 ;; QUANTUM" "-7205" "*) Firmware_Name="35GB-DLT"; Script_code=1 ;; ARCHIVE" "-STL496000N" "*) Firmware_Name="7332-110"; Script_code=1 ;; *" "VXA-2" "*) Firmware_Name="80GB VXA-2"; Script_code=1 ;; HP" "C1553A" "*) Firmware_Name="HPDDS2autoloader"; Script_code=1 ;; *" "-STD224000N!D" "*) Firmware_Name="12GB4mm" ; Script_code=1 ;; *" "-20GB" "A000000[1234]) Firmware_Name="20gb-8mm"; Script_code=1 ;; *" "*( )4326NP*" "*) Firmware_Name="4gb-4mm" ; Script_code=1 ;; *" "-C568303030!D" "*) Firmware_Name="20GB4mm" ; Script_code=1 ;; EXABYTE" "@(-60GB|Mammoth2)" "*) Firmware_Name="60GB8mm" ; Script_code=1 ;; *" "@(-8505|-85XL)" "*) Firmware_Name="5GB & 7GB 8mm Tape Drive" Script_code=1 ;; HP" "-C571303030" "*) Firmware_Name="7332-220"; Script_code=1 ;; TANDBERG" "SLR5+( )!D" "*) Firmware_Name="7207-122"; Script_code=1 ;; TANDBERG" "-6100*" "*) Firmware_Name="13GB-QTR"; Script_code=1 ;; TANDBERG" "*( )" "4100" "*) Firmware_Name="7207-012"; Script_code=2 ;; esac fi case $Script_code in 1) Handle_DC_A_FLS_VPD \ "$Firmware_Name" 0 Z1 $@ ;; 2) Handle_DC_A_FLS_VPD_CONCAT_2 \ "$Firmware_Name" Z1 Z2 $@ ;; esac Dev_func_ret_stat=$? fi if [[ $Firmware_Name = undetermined ]] then case $TM in DDRS-34560W) Firmware_Name="DDRS-34560W" Script_code=RL;; DGHS09U) Firmware_Name="DGHS09U" Script_code=RL;; @(DCHS04U|DCHS04W|DCHS09U|DCHS09X|DCHS09W)) Firmware_Name="ultrastar 2XP" Script_code=Z1;; @(DRVS09V|DRVS09D)) Firmware_Name="Ultrastar 9LZX" Script_code=Z1;; DNES-@(304300W|@(309170|318350)@(W|Y))) Firmware_Name="Ultrastar DNES" Script_code=RL;; @(DMVS09D|DMVS18D|DMVS36D)) Firmware_Name="Oyster HDD Manta/Stingray/Thornback" Script_code=RL;; esac case "$TM $FN" in @(DMVS09V @(34L7393|00P1508)|DMVS09D @(34L7394|00P1517)|DMVS18V @(34L7391|00P1511)|DMVS18D @(34L7392|00P1520)|DMVS36V 34L7389|DMVS36D 00P1514)) Firmware_Name="Ultrastar DMVS" Script_code=RL;; IC35L@(018UWDY10-0 07N3179|018UCDY10-0 09P3921|018UWDY10-0 07N3174|018UCDY10-0 @(07N3178|00P3829|09P3823)|036UWDY10-0 07N3173|036UCDY10-0 @(07N3177|00P3831|09P3826)|073UWDY10-0 07N3172|073UCDY10-0 @(07N3176|00P3833|09P3928)|146UWDY10-0 07N3175|146UCDY10-0 @(00P3835|00P3837))) Firmware_Name="Ultrastar 146Z10" Script_code=RL;; IC35L@(009UWD210-0 @(07N4823|00P1508)|009UCD210-0 @(07N4853|09P3921)|018UWD210-0 @(07N4813|00P1511)|018UCD210-0 @(07N4843|09P3922|09P3823)|036UWD210-0 @(07N4803|00P1514)|036UCD210-0 @(07N4833|09P3923|09P3826)|073UWD210-0 @(07N4798|09P3929)|073UCD210-0 @(07N4799|09P3924|09P3928))) Firmware_Name="Ultrastar 73LZX" Script_code=RL;; @(ST31830 07K818@(0|1)|ST33660 07K8182|ST37340 07K8183)) Firmware_Name="Drive ucode for Seagate (ST3xxxx) drives in M/T 2104 DU3/TU3 (Scallop) Subsystem" Script_code=RL;; IC35L@(018UCDY10-0 55P4114|036UCDY10-0 55P4118|073UCDY10-0 55P4122|146UCDY10-0 55P4126)) Firmware_Name="Drive ucode for Daytona drives in M/T 2104 (Scallop) Subsystem" Script_code=RL;; ST@(318307LW 09P3061|318307LC @(09P4437|00P3063|00P3064|55P4086)|336607LW 00P3065|336607LC @(09P4447|00P3064|00P3068|55P4073)|373307LW 00P3069|373307LC @(09P4890|00P3071|00P3072|55P4078)|3146807LW 00P2671|3146807LC @(00P2669|00P2667|00P2665|55P4083))) Firmware_Name="Cheetah 146LP (Gemini)" Script_code=RL;; ST@(318453LW 55P4093|336753LW 00P2699|336753LC @(00P2693|00P2695|00P2697|55P4098)|373453LW 00P2691|373453LC @(00P2685|00P2687|00P2689|55P4103))) Firmware_Name="Cheetah 73LPX15 (Odyssey)" Script_code=RL;; @(DDYS-T09170M 07K7410|DDYS-T18350M 07K7406|DDYS-T36950M 07K7402)) Firmware_Name="Ucode for Scallop Discovery drives in M/T 2104 (Scallop) Subsystem" Script_code=RL;; @(DPSS-309170N @(07N3675|03N3873)|DPSS-309170M 03N3301|DPSS-318350N @(07N3674|07N3874)|DPSS-318350M 07N3302)) Firmware_Name="Ultrastar 36LP" Script_code=RL;; DDYS-T@(09170N @(07N3778|00P1508)|18350N @(07N3776|00P1511)|36950N @(07N3774|00P1514)|09170M @(00P1516|00P1517|07N3784)|18350M @(00P1518|00P1520|07N3782|09P3823)|36950M @(00P1519|07N3780|09P3826))) Firmware_Name="Ultrastar 36LZX" Script_code=RL;; @(ST318305LW 09P4868|ST318305LC 09P4874|ST318305LW 09P4429|ST318305LC @(09P4433|09P4435|09P4437)|ST336605LW 09P4439|ST336605LC @(09P4443|09P4445|09P4447)|ST373405LW 09P4882|ST373405LC @(09P4886|09P4888|09P4890))) Firmware_Name="Cheetah 73LP" Script_code=RL;; esac if [[ -n $Script_code ]] then Handle_DC_A_FLS_VPD \ "$Firmware_Name" 0 $Script_code $@ fi Dev_func_ret_stat=$? fi if [[ $Firmware_Name = undetermined ]] then if [[ $Class_Subclass = 'pdisk/ssar' ]] then case "$TM $Z2" in ST31830" "*) Firmware_Name="Brooklyn - 18GB Seagate" Script_code=1 ;; S53B018" "*) Firmware_Name="Brooklyn - 18GB Seagate X15" Script_code=1 ;; T53B018" "*) Firmware_Name="Brooklyn2 - 18GB Seagate X15" Script_code=1 ;; ST33660" "*) Firmware_Name="Brooklyn - 36GB Seagate" Script_code=1 ;; S53C036" "*) Firmware_Name="Brooklyn - 36GB Seagate X15" Script_code=1 ;; T53C036" "*) Firmware_Name="Brooklyn2 - 36GB Seagate X15" Script_code=1 ;; ST37340" "*) Firmware_Name="brooklyn - 73GB Seagate" Script_code=1 ;; S53D073" "*) Firmware_Name="Brooklyn - 73GB Seagate X15" Script_code=1 ;; T53D073" "*) Firmware_Name="Brooklyn2 - 73GB Seagate X15" Script_code=1 ;; UCPR" "*) Firmware_Name="Brooklyn - Piranha" Script_code=1 ;; UCDY*" "*) Firmware_Name="Brooklyn - Daytona" Script_code=1 ;; VCDY*" "*) Firmware_Name="Brooklyn2 - Daytona" Script_code=1 ;; UCD2*" "*) Firmware_Name="Brooklyn - Discovery" Script_code=1 ;; DRVC*" "CUSH*) Firmware_Name="ssa_ultrastar_ZX_DRVC" Script_code=1 ;; DGHC*" "CUS[JM]*) Firmware_Name="ssa_ultrastar_LP" Script_code=1 ;; DCHC09*" "*) Firmware_Name="ssa_ultrastar_XP_DCHC" Script_code=1 ;; DFHCC*" "RAMSC0*) Firmware_Name="ssa_ultrastar_XP_DFHCS" Script_code=1 ;; DFHCC*" "RAMST0*) Firmware_Name="ssa_ultrastar_XP_DFHC" Script_code=1 ;; DRHC*" "CUSSA*) Firmware_Name="ssa_ultrastar_XP_DRHC" Script_code=1 ;; esac elif [[ $Class_Subclass = 'container/ssa' ]]&& \ [[ $Device_Name = enclosure+([0-9]) ]] then Firmware_Name="7133 Controller Code" Script_code=1 fi if [[ -n $Script_code ]] then Handle_DC_A_FLS_VPD \ "$Firmware_Name" 0 RL $@ fi Dev_func_ret_stat=$? fi if [[ $Firmware_Name = undetermined ]] then if [[ $Device_Name = ssa+([0-9]) ]] then LL_STRING=$(printf "%02.2d" $LL) Firmware_Name="ssa_${Subclass}_${LL_STRING}" Script_code=1 if [[ $Subclass = 'pci' ]]&&\ [[ $LL_STRING = '05' ]] then Firmware_Name="Santa Cruz" Script_code=1 fi fi if [[ -n $Script_code ]] then Handle_DC_A_FLS_VPD \ "$Firmware_Name" 0 RL $@ fi Dev_func_ret_stat=$? fi if [[ $Firmware_Name = undetermined ]] then if [[ $Device_Unique_Type = 'adapter/pci/14102e00' ]]&&\ [[ $OEM_LED_Value = '0x751' ]] then case $FN in @(07L9287|93H4902)) Firmware_Name="SCSI-2 F/W PCI Raid Adapter (Cph)" Script_code=1 ;; 08L1319) Firmware_Name="SCSI-2 F/W PCI Raid Adapter (CphR)" Script_code=1 ;; esac elif [[ $Device_Unique_Type = 'adapter/pci/14102e00' ]]&&\ [[ $OEM_LED_Value = '0x667' ]] then Firmware_Name="PCI 3-Channel Ultra SCSI Raid FC 2494" Script_code=2 elif [[ $Device_Name = ent+([0-9]) ]]&&\ [[ $OEM_LED_Value = '0x2530' ]] then Firmware_Name="FC 4962 10/100 Mbps Ethernet PCI Adapter II" Script_code=4 elif [[ $Device_Name = ascsi+([0-9]) ]] then case $FN in *(0)@(93H7896|52G3380)) Firmware_Name="Enhanced SCSI-2 Differential Fast/Wide Adapter" Script_code=3 ;; *(0)@(93H8817|11H7660|11H3599|52G3304|65G7315)) Firmware_Name="SCSI-2 Differential Fast/Wide Adapter" Script_code=3 ;; *(0)@(93H8814|11H3600|52G4034)) Firmware_Name="SCSI-2 Single Ended Fast/Wide Adapter" Script_code=3 ;; esac else case $FN in 37L6892) Firmware_Name="Trombone" Script_code=1 ;; esac fi case $Script_code in 1) Handle_DC_A_FLS_VPD \ "$Firmware_Name" 0 LL $@ ;; 2) Handle_DC_A_FLS_VPD \ "$Firmware_Name" 1 \ 'Part Number' 28L1004 PN LL $@ ;; 3) Handle_DC_A_FLS_VPD \ "$Firmware_Name" 0 RL $@ ;; 4) Handle_DC_A_FLS_VPD \ "$Firmware_Name" 0 RM $@ ;; esac Dev_func_ret_stat=$? fi if [[ $Firmware_Name = undetermined ]] then if [[ $Device_Unique_Type = 'adapter/pci/14103e00' ]]&&\ [[ $OEM_LED_Value = '0x646' ]] then Firmware_Name="F/C 4959 PCI Token Ring" Script_code=1 elif [[ $Device_Unique_Type = 'adapter/pci/14103e00' ]]&&\ [[ $OEM_LED_Value = '0x776' ]] then Firmware_Name="F/C 2920 PCI Token-Ring" Script_code=1 fi if [[ -n $Script_code ]] then Handle_Token_Ring_Adapters \ "$Firmware_Name" LL $@ fi Dev_func_ret_stat=$? fi if [[ $Firmware_Name = undetermined ]] then if [[ $Device_Name = fcs+([0-9]) ]] then case $FN in *( )@(09P1173|09P4039|03N4167|24L0023)) Firmware_Name="Gigabit Fibre Channel PCI Adapter - FC 6227" Script_code=1 ;; *( )@(09P0102|09P5080|00P2996|00P4495|80P3389)) Firmware_Name="Gigabit Fibre Channel PCI Adapter for 64 bit PCI Bus - FC 6228" Script_code=1 ;; esac fi if [[ -n $Script_code ]] then Handle_Fiber_Channel_Adapters \ "$Firmware_Name" Z7 $@ fi Dev_func_ret_stat=$? fi if [[ $Firmware_Name = undetermined ]] then if [[ $Device_Name = ses+([0-9]) ]] then case $TM in "HSBP06E RSU2SCSI") Firmware_Name="SES Ucode for SCSI Backplane in Condor LE, LE+ (6 pack), and Conan (4 pack)" Script_code=RL;; HSBP@(D4H?+( )?U3|D6X+( )PU4|M2+( )PU2|D4M+( )PU3|D4E+( )PU3|D2M+( )PU4)SCSI) Firmware_Name="SCSI Enclosure Services (ses)" Script_code=RL;; 2104-DU3) Firmware_Name="Scallop Enclosure" Script_code=RL;; esac fi if [[ -n $Script_code ]] then Handle_DC_A_FLS_VPD \ "$Firmware_Name" 0 $Script_code $@ fi Dev_func_ret_stat=$? fi if [[ $Device_in_database = TRUE ]]; then if [[ $Dev_func_ret_stat = $No_error ]]; then if [[ $Query_number = 1 ]]; then if [[ $Device_category = A ]]; then if [[ $Firmware_level_source = VPD ]]; then Exit_status=$Q_1_DC_A_FLS_VPD_No_error elif [[ $Firmware_level_source = OSC_Output ]] then Exit_status=$Q_1_DC_A_FLS_OCO_No_error else Exit_status=$Unexpected_condition fi elif [[ $Device_category = B ]]; then Exit_status=$Q_1_DC_B_No_error else Exit_status=$Unexpected_condition fi elif [[ $Query_number = 2 ]]; then if [[ $Device_category = A ]]; then Exit_status=$Q_2_DC_A_No_error else Exit_status=$Unexpected_condition fi else Exit_status=$Unexpected_condition fi else Exit_status=$Dev_func_ret_stat fi else Exit_status=$Device_Not_In_Database fi exit $Exit_status